Переменные устройства для Modbus

Для работы с сетями Modbus в контроллере имеется несколько специализированных переменных.

Они разбиты на две группы:

  • для работы в режиме мастера и
  • работы в режиме подчиненного.

Работа порта в режиме мастера

Для диагностики ошибок в главном устройстве, кроме выходов соответствующих блоков чтения-записи, имеются переменные устройства, отдельные для каждого порта. Эти переменные автоматически получают значения с блоков чтения-записи порта, находящегося в режиме главного. Если порт находится в режиме подчиненного, эти переменные равны 0.

Переменные диагностики:

_images/modbus_vars_err1.png

Состав переменных:

  • Ошибка modbus - логический признак получения ошибки в предыдущем шаге FBD-программы. В этом шаге начинается отправка следующей команды, если она имеется. В процессе отправки, ожидания и получения ответа эта переменная равна 0, т.е. эта переменная имеет «игольчатые» 1;
  • Частые ошибки - логический признак наличия многочисленных ошибок, по которому определенно требуется выполнение какой-либо обработки. Признак равен 1 при наличии более пяти ошибок с частотой более чем одна за 10 секунд. Для реализации этого признака создается счетчик ошибок, увеличиваемый при ошибке и уменьшаемый по таймеру. Таким образом, значение этой переменной меняется не чаще одного раза в секунду;
  • Код ошибки - последний полученный код ошибки с блока чтения-записи. Если 0 – с момента включения контроллера не было ни одной ошибки;
  • Адрес подчиненного - адрес подчиненного устройства в последней команде, завершившейся ошибкой;
  • Регистр подчиненного - адрес регистра в последней команде, завершившейся ошибкой.

Последние 3 переменные записываются при наличии ошибки, и не изменяются ни в процессе выполнения команд, ни при удачном их завершении. При отсутствии ошибок с момента включения контроллера все эти переменные равны 0.

Переменные диагностики на сцене:

_images/modbus_vars_err2.png

Работа порта в режиме подчиненного

_images/modbus_vars.png

Состав переменных:

  • Выполняющий команду порт - определяет номер порта на который поступил запрос. Диапазон значений строго регламентирован и соответствует следующим значениям. Значения 16 — 31 — номера физических СОМ портов с номерами от 0 до 15. Количество и номера портов определяется схемотехникой устройства и этот параметр можно увидеть после добавления необходимого контроллера в программу ZWB, вызвав свойство контроллера и перейдя во вкладку «Устройства». В качестве примера приведены свойства контроллера N100:
_images/modbus_vars4.png

В этом контроллере определены два порта СОМ0 и СОМ1 и значение переменной будет принимать или 16 или 17. Дальнейшие значения относятся к Ethernet запросам. Значение переменной 32 означает, что устройство получило пакет по ModbusTCP. Значение переменной 64 — MQTT. Ethernet порт устройства отображается в панели свойств как ETH.

  • Функция запроса - код функции чтения или записи в запросе, полученном от главного устройства.
  • Начальный регистр - номер регистра с которого происходит чтение или запись в запросе, полученном от главного устройства.
  • Количество регистров - количество регистров запрашиваемых или записываемых в запросе, полученном от главного устройства.

Все вышеперечисленные переменные выставляют свое значение на один шаг программы, поэтому для фиксации их нужно использовать дополнительные переменные.

Пример использования переменной Выполняющий команду порт для определения опроса по порту COM0:

_images/modbus8.png

При установке переменной в значение 16 (это означает что пришел пакет от главного в порт СОМ0) происходит сброс счетчика. Если счетчик не сбросится в течении одной секунды, в переменную error будет записано значение 1.