Hi Kevin,
- There is another command to open the device, which should write " \x01 \x05 \x00 \x00 \xFF \x00 \x8C \x3A" to the device.
That is a standard Modbus command. It uses function code 5 (write single coil) using data="" to address=0. The value 0xff00 is what the Modbus standard requires to be written to a single coil for the bit value 1.
You need to create another driver with this command:
drvModbusAsynConfigure("V1","Init", 1,5,0,1,0,0, "Init")
You can create a template file called modbusInit.template in the same directory with your startup script.
record(bo,"$(P)$(R)") {
field(DTYP,"asynUInt32Digital")
field(OUT,"@asynMask($(PORT) 0 0x1)")
field(VAL, “1”)
field(PINI, “YES”)
}
That record will process during iocInit (because PINI=YES). It will write the value 0xff00 to address 0 using function code 5.
Load that file in your startup script with the command
dbLoadRecords(modbusInit.template”, “P=power:,R=init,PORT=V1”)
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of
Amber via Tech-talk
Sent: Tuesday, July 11, 2023 3:04 AM
To: tech-talk <tech-talk at aps.anl.gov>
Subject: A question on modbus
I am using a device with Modbus-RTU protocol. The communication data is transmitted in hexadecimal words.
I want to use the modbus module in epics to solve this problelm.
When reading device data, the follwing sentence is used in the .cmd file:
drvModbusAsynConfigure("V1","Power", 1,3,0,1,0,1000, "Power")
and in the substitution file:
file "../../db/ai.template" { pattern
{P, R, PORT, OFFSET, BITS, EGUL, EGUF, PREC, SCAN}
{power:, V_read, V1, 0, 16, 0., 655.35, 2, "I/O Intr"}
There is another command to open the device, which should write " \x01 \x05 \x00 \x00 \xFF \x00 \x8C \x3A" to the device.
Command
|
01
|
05
|
00
|
00
|
FF
|
00
|
8C
|
3A
|
|
Address
|
Function code
|
Register address 0
|
Data 0
|
CRC
|
Reply
|
Be same with command
|
After reading all the examples I still don't know how to send this command with modbus module correctly. I think I didn't understand them clearly.
Would you like to give me some advice? Is it suitable
to use modbus module? How to realize it?
|