使用Python的Modbus TCP

l7wslrjt  于 2023-02-01  发布在  Python
关注(0)|答案(1)|浏览(163)

我正在尝试通过TCP与Modbus通信。我想使用这种类型的代码而不使用库。
代码运行如下:

sudo python3 modbus_master.py

当我用这个代码运行程序时,我看到我的Modbus连接在Wireshark中定义。我也在使用从Modbus程序(不止一个),但没有与我的主机连接。

在下面的代码中我做错了什么?

#!/usr/bin/python3           
# This is client.py file

import socket
import struct
import time

# Create a TCP/IP socket
TCP_IP = '192.168.0.107'
TCP_PORT = 502
BUFFER_SIZE = 39
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((TCP_IP, TCP_PORT))

try:

    unitId = 16
    functionCode = 5
    print("\n,Switching plug on")
    coilId = 1
    req = struct.pack('12B', 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, int(unitId), int(functionCode), 0x00, int(coilId),
                      0xff,
                      0x00)
    sock.send(req)
    print("TX: (%s)" % req)

    time.sleep(2)

finally:
    print('\nCLOSING SOCKET')
    sock.close()
brqmpdu1

brqmpdu11#

我认为您的问题是防火墙的 IP 或 * 端口
因此,如果代码在同一台机器上运行,可以使用localhost127.0.0.1 IP代替机器IP。
注解】:
如果您的操作系统基于
nix系统,并且您有ufw防火墙,请执行以下命令:

$ sudo ufw disable

相关问题