Modbus TCP с Python - PullRequest
       15

Modbus TCP с Python

0 голосов
/ 25 октября 2018

Я пытаюсь связаться с Modbus через TCP.Я хочу использовать этот тип кода без библиотеки.

Код запускается так:

 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()

1 Ответ

0 голосов
/ 30 октября 2018

Я думаю, что ваша проблема в IP или Порт с брандмауэром.

Так что, если ваши коды работают на той же машине, вы можете использовать localhostили 127.0.0.1 IP вместо IP машины.


[ ПРИМЕЧАНИЕ ]:

Если ваша ОС * nix основана на системе, и у вас установлен брандмауэр ufw, выполнитеследующая команда:

$ sudo ufw disable
...