Section 8. Operation
352
RTU/PLC
RemoteTelemetryUnits(RTUs)andProgrammableLogicControllers
(PLCs)wereatonetimeusedinexclusiveapplications.Astechnology
increases,however,thedistinctionbetweenRTUsandPLCsbecomes
moreblurred.ACR800fitsbothRTUandPLCdefinitions.
8.6.2.3 Programming for Modbus
8.6.2.3.1 Declarations
Table CRBasic Ports, Flags, Variables, and Modbus Registers
(p. 352) shows the
linkage between CR800 ports, flags and Boolean variables and Modbus registers.
Modbus does not distinguish between CR800 ports, flags, or Boolean variables.
By declaring only ports, or flags, or Boolean variables, the declared feature is
addressed by default. A typical CRBasic program for a Modbus application will
declare variables and ports, or variables and flags, or variables and Boolean
variables.
Table 85. CRBasic Ports, Flags, Variables, and, Modbus Registers
CR800 Feature
Example CRBasic
Declaration
Equivalent Example
Modbus Register
Control Port (Port)
Public Port(8)
00001 to 00009
Flag
Public Flag(17)
00001 to 00018
Boolean Variable
Public ArrayB(56) as
Boolean
00001 to 00057
Variable
Public ArrayV(20)*
40001 to 40041* or
30001 to 30041*
*Because of byte-number differences, each CR800 domain variable translates to two Modbus
domain input / holding registers.
8.6.2.3.2 CRBasic Instructions - Modbus
Complete descriptions and options of commands are available in CRBasic Editor
Help.
ModbusMaster()
SetsupaCR800asaModbusmastertosendorretrievedatafromaModbus
slave.
Syntax
ModbusMaster(ResultCode, ComPort, BaudRate, ModbusAddr,
Function, Variable, Start, Length, Tries, TimeOut)
ModbusSlave()
SetsupaCR800asaModbusslavedevice.
Syntax
ModbusSlave(ComPort, BaudRate, ModbusAddr, DataVariable,
BooleanVariable)
MoveBytes()
Movesbinarybytesofdataintoadifferentmemorylocationwhentranslating
big‐endiantolittle‐endiandata.