我正在嘗試使用 Python 從我的電腦 (192.168.0.2) 發送 1 位到西門子網絡輸入 (IP: 192.168.0.11:504)。但我無法讓它工作。目標是通過 modbus 連接發送位以觸發 BO31 條件。我的 Python 代碼:import socketfrom umodbus import conffrom umodbus.client import tcp # Enable values to be signed (default is False).conf.SIGNED_VALUES = True ### Creating connectionsock = 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")
1 回答

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
根據我的評論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_coil
或tcp.write_multiple_coils(slave_id=1, starting_address=1, values=[1])
(這最好取決于您的設備;并非所有設備都實現這兩種功能,但我建議從 開始write_single_coil
)。
添加回答
舉報
0/150
提交
取消