Section 8. Operation
Q: Can I make some registers read-only and other registers writable?
A: Yes. By default all registers mapped to ModbusSlave() are writable. You may
make individual registers read-only with the ReadOnly() instruction in the
CR800 CRBasic program.
The following example demonstrates how to report data by Modbus but not allow
a Modbus client to change register or coil values in the Modbus host:
• Var can be viewed and changed
• Reg() and Coil() can only be viewed
• The CRBasic program can read from and write to all variables
Public Var
Public Reg(4), Coil(4) as Boolean
ReadOnly Reg, Coil
BeginProg
'setup modbus tcp/ip slave
'readonly instruction above makes reg and coil read only / not
writable
ModbusSlave(502,0,1,Reg,Coil,2)
Scan(5,Sec,0,0)
var = var + 1 ' increment var
MBReg() = MBReg() + 0.1 'increment all the registers
MBCoil() = (NOT MBCoil()) 'toggle all the coils
NextScan
EndProg
8.10.3.6 Modbus Over RS-232 7/E/1
Q: Can Modbus be used over an RS-232 link, 7 data bits, even parity, one stop
bit?
A: Yes. Precede ModBusMaster() / ModBusSlave() with SerialOpen() and set
the numeric format of the COM port with any of the available formats, including
the option of 7 data bits, even parity. SerialOpen() and ModBusMaster() can
be used once and placed before Scan().
8.10.3.7 Converting Modbus 16-Bit to 32-Bit Longs
Concatenation of two Modbus long 16-bit variables to one Modbus long 32
bit number is shown in the following example: