Jump to content
Форум по продукции MOXA

Recommended Posts

Добрый день. Подскажите можно ли считать данные с ТРМки без 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()


 

 

Link to comment

Добрый день!

Какое устройство Moxa используется? Что выводится в терминале при запуске скрипта? COM-порт в системе создан? Через какую утилиту?

Link to comment
21 минуту назад, Markus сказал:

Добрый день!

Какое устройство Moxa используется? Что выводится в терминале при запуске скрипта? COM-порт в системе создан? Через какую утилиту?

Использую Moxa 5150. Запускаю скрипт через Python , выводится  (COM-порт COM2 успешно открыт для Modbus RTU. Произошло исключение: Slave reported illegal data address) , что говорит о неверном регистре. Да, com port создан и в диспетчере устройств отображается как Nport Com2.

1.png

2.png

3.png

Link to comment

Так переписал код вроде получилось (COM-порт COM2 успешно открыт для Modbus RTU.
Прочитанные данные: [16818])

import serial
from pymodbus.client.sync import ModbusSerialClient as ModbusClient

# Настройки COM-порта
port_name = "COM2"
baud_rate = 19200
data_bits = 8
stop_bits = 1
parity = 'N'

# Создайте экземпляр Modbus RTU клиента
client = ModbusClient(method="rtu", port=port_name, stopbits=stop_bits,
                      bytesize=data_bits, parity=parity, baudrate=baud_rate)

# Откройте соединение с устройством
if client.connect():
    print(f"COM-порт {port_name} успешно открыт для Modbus RTU.")

    # Адрес устройства
    device_address = 16  # 0x0010

    # Чтение регистров
    read_start_address = 4105  # 0x1009
    read_count = 1  # Количество регистров для чтения

    # Прочитайте регистры
    response = client.read_holding_registers(read_start_address, read_count, unit=device_address)

    if response.isError():
        print(f"Произошла ошибка при чтении регистра: {response}")
    else:
        print(f"Прочитанные данные: {response.registers}")

    # Закройте соединение
    client.close()
else:
    print(f"Не удалось открыть COM-порт {port_name} для Modbus RTU.")

# Закрытие COM-порта
client.close()


 

Link to comment
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...