使用 Python 向 Siemens Logo 8 发送位(modbus 连接)

Send bit to Siemens Logo 8 with Python (modbus connection)

我正在尝试使用 Python 从我的电脑 (192.168.0.2) 发送 1 位到西门子网络输入 (IP: 192.168.0.11:504)。但我无法让它工作。目标是通过 modbus 连接发送位以触发 BO31 条件。

我的Python代码:

import socket
from umodbus import conf
from umodbus.client import tcp
 
# Enable values to be signed (default is False).
conf.SIGNED_VALUES = True
 
### Creating connection
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('192.168.0.11', 504))
 
message = tcp.write_multiple_coils(slave_id=1, starting_address=1, values=[1, 0, 0, 0])
 
# Response depends on Modbus function code. This particular returns the
# amount of coils written, in this case it is.
response = tcp.send_message(message, sock)
print(response)
sock.close()
print("Transfer finished")

根据我的评论 tcp.write_multiple_coils(slave_id=1, starting_address=1, values=[1, 0, 0, 0]) 写入四个线圈(1/true 到线圈 1,然后 0/false 到线圈 2,3 & 4);写一个线圈使用 write_single_coiltcp.write_multiple_coils(slave_id=1, starting_address=1, values=[1]) (这最好取决于您的设备;并非所有设备都实现这两个功能,但我建议从 write_single_coil 开始)。