
CRBasic Example 1: CR1000X program that measures the CS325DM using Modbus
'the following data points are useful but not always necessary
Average
(1,CS325DM_Isc,IEEE4,CS325DM_Isc = NAN)
StdDev
(1,CS325DM_Isc,IEEE4,CS325DM_Isc = NAN)
Average
(1,CS325DM_PVTemp,IEEE4,CS325DM_PVTemp = NAN)
StdDev
(1,CS325DM_PVTemp,IEEE4,CS325DM_PVTemp = NAN)
EndTable
Function
MBDecode (Code)
As String
If
(Code > 0)
Then
MBDecode =
"Offline: "
+ Code
ExitFunction
EndIf
Select Case
Code
Case
0
MBDecode =
"Success"
Case
-1
MBDecode =
"Illegal function"
Case
-2
MBDecode =
"Illegal data address"
Case
-3
MBDecode =
"Illegal data value"
Case
-4
MBDecode =
"Slave device failure"
Case
-5
MBDecode =
"Acknowledge error"
Case
-6
MBDecode =
"Slave device busy"
Case
-8
MBDecode =
"Memory parity error"
Case
-9
MBDecode =
"Gateway path unavailable"
Case
-10
MBDecode =
"ModbusMaster error (unexpected func. code response from slave)"
Case
-11
MBDecode =
"ComPort error"
Case
-16
MBDecode =
"ModbusMaster error (Out of Comms Memory)"
Case
-20
MBDecode =
"ModbusMaster error (Variable dim. too small to store result)"
Case
Else
MBDecode =
"Unknown Error"
EndSelect
EndFunction
BeginProg
'Delay keeps traffic off serial ports for a second after sensors power on.
Delay
(0,1000,msec)
CS325DM Silicon Irradiance Reference Sensor
10