LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Modbus RTU over RS485 with CRC16

Hi everyone,

I try for the first time to communicate with a Joy-It DPS 5005 power supply with Modbus RTU.

But somehow I am missing something and fail. Therefore I would like to ask for your help.

The device requires the address code (1 byte), the function code (1 byte), the register starting address (2 bytes), the number of registers to read (2 bytes) and the CRC checksum (2 bytes)

The device address is 10. I want to read a holding register. So the function code should be 3. The register starting address is 0 and I want to read 2 bytes.

The CRC checksum of 0A 03 00 00 00 02 is C5 70.

My first trial was simply using Visa write and send the string 0A0300000002C570 followed by Visa Read. But I always got timeouts and no answer.

JoachimH_0-1732098410702.png

 

Then I thought of using the Modbus API library, created a Modbus instance as new serial slave and then used the Read Holding Registers VI. This didn't work, either. Is it because of the CRC checksum? I don't know how to send it

JoachimH_1-1732098449297.png

 

 

I would appreciate every help.

 

 

0 Kudos
Message 1 of 5
(103 Views)

Why are you using the slave API? Usually the device being communicated is the slave and you use a Master to communicate with it.

-------------------------------------------------------
Control Lead | Intelline Inc
0 Kudos
Message 2 of 5
(97 Views)

Have you in any way confirmed that the hardware is connected correctly?

 

Modbus connectors come in all sorts and sizes, and there's not really a standard wiring.

 

Some devices use Sub9 connectors, and Rx\Tx on 2\3, some use 5\8... You really have to read the manuals of both ends of the connection...

 

And I do agree that you should make a master, the device is a slave (answering to commands).

0 Kudos
Message 3 of 5
(41 Views)

It was a first shot.

I was not sure if the Slave API is meant to communicate with a slave although knowing that my computer is the master.

I retried with the Master API and could at least send a command. 

JoachimH_0-1732269269890.png

The device also sends an answer. But the computer does not get it: Error 56 occurred at RTU Data Unit.lvclass:Read ADU Packet.vi:5030001

0 Kudos
Message 4 of 5
(16 Views)

I am aware of the mess with connecting devices to RS485. But the communication with another device not using Modbus RTU works fine. And I am also able to communicate with the Jo-Its if I use the app of the manufacturer.

Nevertheless I seem to have still hardware issues. If I connect the Joy-It directly tot the RS485 interface of the computer I can send commands but do not receive a reply. If I use an RS485 to USB converter everthing works fine.

 

But coming back to Labview. Is the CRC16 checksum automatically calculated by the Modbus VIs?

 

0 Kudos
Message 5 of 5
(11 Views)