beautypg.com

Campbell Scientific PS200/CH200 12 V Charging Regulators User Manual

Page 64

background image

Appendix A. Advanced Programming Techniques

Public CH200_M0(6)

'Array to hold data coming from the PS200/CH200

'Alias names for array elements.

Alias CH200_M0(1)=VBatt

'Battery voltage: VDC

Alias CH200_M0(2)=IBatt

'Current going into, or out of, the battery: Amps

Alias CH200_M0(3)=ILoad

'Current going to the load: Amps

Alias CH200_M0(4)=V_in_chg

'Voltage coming into the charger: VDC

Alias CH200_M0(5)=I_in_chg

'Current coming into the charger: Amps

Alias CH200_M0(6)=Chg_TmpC

'Charger temperature: Celsius


Public PanelTempC

'Datalogger panel temperature: Celsius

Public ExtBatTempC

'Battery temperature from an external source.


'SDI-12 formatted external battery temperature value.

Public SDI12Command As String
'Response from PS/CH200. Returns the address of the unit and "OK" if
'all went well.

Public SDI12Result 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


BeginProg

'Set SetBattTemp to TRUE to have ExtBatTempC overwrite internal
'CH200 temperature.
SetBattTemp = True

Scan (5,Sec,0,0)
PanelTemp (PanelTempC,250)
'Measure battery temp with TC attached to external battery

TCDiff (ExtBatTempC,1,mV2_5C,1,TypeT,PanelTempC,True ,0,_60Hz,1.0,0)
CallTable Hour
NextScan


'Put SDI-12 measurements in a SlowSequence to avoid any missed main
'scans if there are any sensor problems

SlowSequence
Scan (30,Sec,0,0)

SDI12Recorder(CH200_M0(),3,0,"MC!",1.0,0)
If SetBattTemp = True Then

'Overwrite CH200 internal temperature

SDI12Command = "XT" & FormatFloat (ExtBatTempC,"%4.2f") & "!"

Else
'Set the CH200 back to using its internal temperature.
SDI12Command = "XTR!"

EndIf
SDI12Recorder (SDI12Result,3,0,SDI12Command,1.0,0)
NextScan
EndProg

A-2