I am facing an problem to communicate Modbus slave device through Mod scan. I have followed the details which is provided by vendor, even though i failed to get data from device.
Vendor has given the format for reading the data like 01030000000105. They mentioned error check will be LRC. Here only I have confused if LRC is error check, then its suppose to be an ASCII . But the document says that RTU mode.
Please guide me how to get data from that device through modscan.
Is the example message an RTU message (in hex) or Modbus ASCII, (also in hex)?
It could be that the single byte error checksum is an LRC value, as opposed to a Modbus RTU 16 bit, two byte CRC error checksum.
The example might be the 'basic Modbus polling' message in ASCII with a single byte LRC value, where the Modbus ASCII start character (a colon ":") and the end-of-message characters, CR LF, are not included (who knows why?).
If 010300000001 were a Modbus RTU message, it would be
01 slave #1
03 Function Code 03 Read Holding Register
0000 start address = 0000 (4)0001
0001 quantity of registers = 1
xxxx 16 bit CRC value
The equivalent Modbus ASCII message would be (in ASCII characters):
: start character
0 1 slave #1
0 3 FC 03
0 0 high order start address
0 0 low order start address
0 0 high order qty of registers
0 1 low order qty of registers
0 5 LRC error checksum (the single byte LRC value is converted to two ASCII characters)
CR LF end-of-message
In Modscan, one can select either RTU or ASCII. Modscan program calculates the LRC or CRC, depending on the protocol, so you don't have to.
To select ASCII mode in Modscan:
Connection > connect (Connection Details window) > Protocol Selections button (center bottom) > Transmission mode = Standard ASCII radio button
I recommend that you do not use the traffic view, but use the data view.
Setup > Display options > Show Data and then select whichever number format makes sense