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}")