Section 8.  Operation 
 
 
Term: input registers 30001 to 39999 
Hold values resulting from an analog measurement. Input registers in the 
Modbus domain are read-only. In the Campbell Scientific domain, the 
leading digit in Modbus registers is ignored, and so are assigned together to a 
single Dim- or Public- variable array (read / write). 
 
Term: holding registers 40001 to 49999 
Hold values resulting from a programming action. Holding registers in the 
Modbus domain are read / write. In the Campbell Scientific domain, the 
leading digit in Modbus registers is ignored, and so are assigned together to a 
single Dim or Public variable array (read / write). 
 
Term: RTU / PLC 
Remote Telemetry Units (RTUs) and Programmable Logic Controllers 
(PLCs) were at one time used in exclusive applications. As technology 
increases, however, the distinction between RTUs and PLCs becomes more 
blurred. A CR800 fits both RTU and PLC definitions. 
 
8.10.3.2 Programming for Modbus 
8.10.3.2.1  Declarations (Modbus Programming) 
Table Modbus Registers: CRBasic Port, Flag, and Variable Equivalents (p. 438) 
shows the linkage between terminals configured for control, flags and Boolean 
variables and Modbus registers. Modbus does not distinguish between terminals 
configured for control, flags, or Boolean variables. By declaring only terminals 
configured for control, or flags, or Boolean variables, the declared feature is 
addressed by default. A typical CRBasic program for a Modbus application 
declares variables and ports, or variables and flags, or variables and Boolean 
variables. 
 
 
 Modbus Registers: CRBasic Port, Flag, and Variable 
Equivalents 
CRBasic Port, 
Flag, or Variable 
Example CRBasic 
Declaration 
Equivalent Example 
Modbus Register 
C terminal configured 
for control 
Public Port(4)  00001 to 00004 
Flag  Public Flag(17)  00001 to 00017 
Boolean variable 
Public ArrayB(56) as 
Boolean 
00001 to 00056 
Variable 
Public ArrayV(20)
1
 
40001 to 40040
1
 
30001 to 30040
1
 
1
 Because of byte-number differences, each CR800 domain variable translates 
to two Modbus domain input / holding registers.