Третий человеко-час. Точно сформированный детальный запрос.

Запрос для GPT:
настройки ПЛК ПР205
ModBUS Master, адрес 100, тайм-аут 100мс, Старшим байтом вперёд, Старшим регистром вперёд, регистры с номерами 12,16,20,2056,24,28,32,36,40,44,48,52,56,84,88,92, 96 с плавающей запятой, регистры 520 и 524 целочисленные, у всег регистров период чтения 50мс.
ПЛК связан с ПК по сети LAN, IP 192.168.1.249, Маска подсети 255.255.254.0, IP адрес шлюза 192.168.1.105,
DNS сервер 1 194.158.196.137, DNS сервер 2 194.158.196.141


ModBUS Slaver, регистры целочисленные
16384,16385,16386,16389,16390,16391,16392,16393,16 402,16403,16405,16406,16408,16413,16416,16417,1642 2
регистры с плавающей запятой 16394,16396,16398,16409,16414,16418,16420
IP-адрес "192.168.1.249" доступен в сети. Команда `ping 192.168.1.249`, порт 502.
из командной строки компьютера - хост отвечает на ICMP-запросы.
Python в среде Visual Studio Win10 x64.

Напиши программу: вывести значения Slaver всех регистров.

Ответ GPT:

Код:
# -- coding: cp1251 --
from pymodbus.client import ModbusTcpClient

# Установка соединения с ПЛК по протоколу Modbus TCP
client = ModbusTcpClient('192.168.1.249', port=502)

# Чтение целочисленных регистров (Slaver)
int_registers = [16384, 16385, 16386, 16389, 16390, 16391, 16392, 16393, 16402, 16403, 16405, 16406, 16408, 16413, 16416, 16417, 16422]
for reg_address in int_registers:
    response = client.read_input_registers(reg_address, count=1, unit=0x01)
    if response.isError():
        print(f'Error reading Register {reg_address}: {response.function_code}')
    elif len(response.registers) > 0:
        print(f'Slaver, Register {reg_address}: {response.registers[0]}')
    else:
        print(f'No data returned for Register {reg_address}')


client.close()
Результат:

Код:
Slaver, Register 16384: 0
Error reading Register 16385: 132
Slaver, Register 16386: 16
Slaver, Register 16389: 0
Slaver, Register 16390: 0
Slaver, Register 16391: 3
Slaver, Register 16392: 0
Slaver, Register 16393: 0
Slaver, Register 16402: 0
Slaver, Register 16403: 0
Slaver, Register 16405: 0
Error reading Register 16406: 132
Error reading Register 16408: 132
Slaver, Register 16413: 0
Slaver, Register 16416: 23
Slaver, Register 16417: 1
Slaver, Register 16422: 0
В нужных регистрах время тикает.