我正在使用 modbus_tk 库作为 Modbus RTU 从站。我有一个现成的 Modbus RTU 主模拟器,通过 USB 到 485 转换器在另一台 PC 上运行。我在 Master 中看不到我的持有登记册。
我已经验证了串行链路是好的,因为我可以使用串行程序向从机发送字符串。我尝试为 16 位和 32 位整数设置主控,响应始终为 83 04。我尝试使用几个不同的主控,起始地址为 0,这个恰好默认为第一个寄存器 40001。波特率和串行端口设置匹配。
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
import serial
import time
modbusServ = modbus_rtu.RtuServer(serial.Serial('/dev/ttyS0'),baudrate= 9600,
bytesize=8, parity='N', stopbits=1, xonxoff=0)
print("start")
modbusServ.start()
slave_1 = modbus_tk.modbus.Slave(1)
slave_1.add_block("BlockName", modbus_tk.defines.HOLDING_REGISTERS, 40001, 10)
aa= (1,2,3,4,5,6,7,8,9,10) # data in the register
while True:
slave_1.set_values ("BlockName", 40001, aa)
time.sleep(0.5)