Показано с 1 по 2 из 2

Тема: трм138 + Modbus

  1. #1

    По умолчанию трм138 + Modbus

    Что за ошибка при связи с ТРМ138 по протоколу MODBUS?
    Проявляется при чтении состояния выходных устройств.
    Чтение текущей температуры идет нормально.
    Кусок лога OPC сервера:
    Чтение температуры - ОК
    17:00:20:281 | serio(COM1): >>> 08 04 00 03 00 02 81 52
    17:00:20:296 | serio(COM1): передача блока заняла 47175 мкс
    17:00:20:312 | serio(COM1): <<< 08 04 04 41 cb 22 b8 1f 94
    17:00:20:312 | serio(COM1): приём блока занял 90683 мкс
    17:00:20:312 | serio(COM1): принят правильный кадр
    17:00:20:312 | modbus_var(COM1/TRM138-1(addr=8)/Temp1) - прочитано 25.391953
    Чтение состояния ВУ - Облом
    17:00:20:734 | serio(COM1): >>> 08 01 00 00 00 08 3d 55
    17:00:20:734 | serio(COM1): передача блока заняла 47712 мкс
    17:00:20:750 | serio(COM1): <<< 08 01 01 01 93 d4
    17:00:20:765 | serio(COM1): приём блока занял 36239 мкс
    17:00:20:765 | serio(COM1): принят правильный кадр
    17:00:20:781 | modbus_var(COM1/TRM138-1(addr=8)/OutputState1): ошибка декодирования блока данных

    Состояние тегов соответственно Bad.
    Citect скада с MODBUS драйвером также не может считать эти переменные.

    В чём ошибка и можно ли исправить?

  2. #2

    Unhappy

    Уважаемые разработчики!

    Почему-то у Вас ТРМ на любые запросы чтения функцией 01 даёт один и тот же ответ: 08 01 01 01 93 D4 (отдаёт состояние 8 сигналов), а Citect даже если в нем тег использует только один сигнал - запрашивает сразу 16. Естественно получив такой ответ на запрос 08 01 00 00 00 10 3D 5F
    считает его ошибочным. Ответ ожидается типа 08 01 02 00 00 + CRC. Мало того при запросе 32 сигналов мы получаем тот же ответ, а по идее должны получить исключение с кодом 2 (неверное количество).

    OPC сервер MODBUS у Вас может запрашивать 8 сигналов (при теге типа BYTE) и получает корректный ответ.Но почему не может его интерпретировать - загадка. Кстати где тип BOOL???? Он тут как раз нужен.

    Вобщем разобравшись в чем дело, пришел к выводу что Citect с ТРМ мне по MODBUSу не связать. Придется через OPC-OWEN, а так не хотелось .

    + Запись не работает
    14:33:55:718 | modbus_var(COM1/TRM138-1(addr=8)/OutputState7): запись 1
    14:33:55:734 | serio(COM1): >>> 08 05 00 00 ff 00 8c a3
    14:33:55:765 | serio(COM1): передача блока заняла 47281 мкс
    14:33:55:781 | serio(COM1): <<< 08 85 03 d2 93
    14:33:55:796 | serio(COM1): приём блока занял 363 мкс
    14:33:55:828 | serio(COM1): принят правильный кадр

    Тут уж либо разрешить запись либо это Discrete Input и функция 02
    Последний раз редактировалось Ярослав; 22.07.2010 в 11:40.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •