Добрый день. Подскажите можно ли считать данные с ТРМки без opc-сервера, без всяких scada систем.
А считать скриптом? Вот мой набросок скрипта, который успешно подключается, но ничего не считывает (COM-порт COM2 успешно открыт для Modbus RTU. Произошло исключение: Slave reported illegal data address). При всех этих же настройках в SimpLight данные считываются.
import minimalmodbus
import serial
# Настройки COM-порта
port_name = "COM2"
baud_rate = 19200
data_bits = 8
stop_bits = 1
parity = serial.PARITY_NONE
rtscts = True
xonxoff = False
# Создаем объект для работы с COM-портом
ser = serial.Serial(
port=port_name,
baudrate=baud_rate,
bytesize=data_bits,
stopbits=stop_bits,
parity=parity,
rtscts=rtscts,
xonxoff=xonxoff
)
# Ожидание установки соединения с COM-портом
while not ser.is_open:
pass
# Успешное подключение к COM-порту
print(f"COM-порт {ser.port} успешно открыт для Modbus RTU.")
# Адрес устройства (0x0010)
device_address = 16
# Создаем объект Modbus с указанными параметрами
instrument = minimalmodbus.Instrument(ser, device_address)
# Таймаут ожидания (в миллисекундах)
instrument.serial.timeout = 1 # Устанавливаем таймаут в 1 секунду
# Количество повторов при ошибке
instrument.serial.retries = 3
# Количество регистров в запросе
num_registers = 125
try:
# Чтение данных с устройства
data = instrument.read_registers(0, num_registers)
# Ваша логика обработки данных
print(f"Прочитанные данные: {data}")
except Exception as e:
print(f"Произошло исключение: {e}")
# Закрываем COM-порт
ser.close()