Campbell Scientific PS200/CH200 12 V Charging Regulators User Manual
Page 100

Appendix A. Advanced Programming Techniques
Alias CH200_M0(6)=Chg_TmpC
'Charging state: Cycle, Float, Current Limited, or None
Alias CH200_M0(7)=Chg_State
'Charging source: None, AC, or Solar
Alias CH200_M0(8)=Chg_Source
'Check battery error: 0=normal, 1=check battery
Alias CH200_M0(9)=Ck_Batt
'Arrays to hold the associated words for the charge state, charge source,
'and check battery values.
Dim ChargeStateArr(6) As String
Dim ChargeSourceArr(3) As String
Dim CheckBatteryArr(2) As String
'Variables to hold the words for charge state, charge source, and check
'battery.
Public ChargeState As String
Public ChargeSource As String
Public CheckBattery As String
'Stored hourly data.
DataTable (Hour,1,-1)
DataInterval (0,1,Hr,10)
Minimum (6,CH200_M0(),FP2,0,False)
Maximum (6,CH200_M0(),FP2,False,False)
Minimum (1,PanelTempC(),FP2,0,False)
Maximum (1,PanelTempC(),FP2,False,False)
EndTable
'Main Program
BeginProg
'Load arrays with words to associate with the charge state, charge source
'and check battery values from the PS/CH200.
ChargeStateArr(1) = "Regulator Fault"
ChargeStateArr(2) = "No Charge"
ChargeStateArr(3) = "Current Limited"
ChargeStateArr(4) = "Cycle Charging"
ChargeStateArr(5) = "Float Charging"
ChargeStateArr(6) = "Battery Test"
ChargeSourceArr(1) = "None"
ChargeSourceArr(2) = "Solar"
ChargeSourceArr(3) = "Continuous"
CheckBatteryArr(1) = "Normal"
CheckBatteryArr(2) = "Check Battery"
new_sdi12_address = "3"
'Set this to your desired SDI-12 address. For this
'example use a 3.
'Get current SDI-12 address.
SDI12Recorder (sdi12_address,3,sdi12_address,"?!",1.0,0)
Scan (5,Sec,0,0)
PanelTemp(PanelTempC,_60Hz) 'Measure datalogger panel temperature.
CallTable Hour
NextScan
'Test the PS200/CH200 at the new SDI-12 address.
SlowSequence
Scan (10,Sec,0,0)
If new_sdi12_address <> sdi12_address Then
SDI_Addr_Chng = "A" + new_sdi12_address + "!"
SDI12Recorder (sdi12_address,3,sdi12_address,SDI_Addr_Chng,1.0,0)
EndIf
A-38