Today is...
Sunday, August 25, 2019
Welcome to Control.com, the global online
community of automation professionals.
Featured Video...
Featured Video
A tutorial introduction to programming using the QuickBuilder Programming Environment.
Our Advertisers
Help keep our servers running...
Patronize our advertisers!
Visit our Post Archive
Modbus Device Not Responding
Cannot communicate to Modbus slave device through Mod scan.

Hi,

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

According to the Lammertbies CRC calculator, the CRC should be 0A84
https://www.lammertbies.nl/comm/info/crc-calculation.html

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

My guess is that the single byte error checksum indicates it's an ASCII 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