Загрузка данных


import socket

HOST = "192.168.1.201"
PORT = 5007  # стандартный порт SLMP для FX5U

# Читаем регистр D0 — 1 слово
request = bytearray([
    0x50, 0x00,  # субзаголовок
    0xFF, 0xFF,  # сеть/PC номер
    0x03, 0xFF,  # номер модуля
    0x00, 0x00,  # IO номер
    0x0C, 0x00,  # длина данных
    0x10, 0x00,  # таймаут
    0x01, 0x04,  # команда чтения
    0x00, 0x00,  # подкоманда (пословно)
    0x00, 0x00, 0x00, 0x00,  # адрес D0
    0x01, 0x00   # читать 1 регистр
])

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.settimeout(5)
    s.connect((HOST, PORT))
    s.send(request)
    response = s.recv(1024)
    print("Ответ:", response.hex())
    
    # Значение D0
    if len(response) > 11:
        value = int.from_bytes(response[11:13], byteorder='little')
        print(f"D0 = {value}")