Переменные устройства для Modbus -------------------------------- .. contents:: Содержание: Для работы с сетями Modbus в контроллере имеется несколько специализированных переменных. Они разбиты на две группы: * для работы в режиме мастера и * работы в режиме подчиненного. Работа порта в режиме мастера ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Для диагностики ошибок в главном устройстве, кроме выходов соответствующих блоков чтения-записи, имеются переменные устройства, отдельные для каждого порта. Эти переменные автоматически получают значения с блоков чтения-записи порта, находящегося в режиме главного. Если порт находится в режиме подчиненного, эти переменные равны 0. Переменные диагностики: .. figure:: ../../zwb/lib/modbus_vars_err1.png :align: center Состав переменных: * Ошибка modbus - логический признак получения ошибки в предыдущем шаге FBD-программы. В этом шаге начинается отправка следующей команды, если она имеется. В процессе отправки, ожидания и получения ответа эта переменная равна 0, т.е. эта переменная имеет «игольчатые» 1; * Частые ошибки - логический признак наличия многочисленных ошибок, по которому определенно требуется выполнение какой-либо обработки. Признак равен 1 при наличии более пяти ошибок с частотой более чем одна за 10 секунд. Для реализации этого признака создается счетчик ошибок, увеличиваемый при ошибке и уменьшаемый по таймеру. Таким образом, значение этой переменной меняется не чаще одного раза в секунду; * Код ошибки - последний полученный код ошибки с блока чтения-записи. Если 0 – с момента включения контроллера не было ни одной ошибки; * Адрес подчиненного - адрес подчиненного устройства в последней команде, завершившейся ошибкой; * Регистр подчиненного - адрес регистра в последней команде, завершившейся ошибкой. Последние 3 переменные записываются при наличии ошибки, и не изменяются ни в процессе выполнения команд, ни при удачном их завершении. При отсутствии ошибок с момента включения контроллера все эти переменные равны 0. Переменные диагностики на сцене: .. figure:: ../../zwb/lib/modbus_vars_err2.png :align: center Работа порта в режиме подчиненного ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. figure:: ../../zwb/lib/modbus_vars.png :align: center Состав переменных: * **Выполняющий команду порт** - определяет номер порта на который поступил запрос. Диапазон значений строго регламентирован и соответствует следующим значениям. Значения 16 — 31 — номера физических СОМ портов с номерами от 0 до 15. Количество и номера портов определяется схемотехникой устройства и этот параметр можно увидеть после добавления необходимого контроллера в программу ZWB, вызвав свойство контроллера и перейдя во вкладку «Устройства». В качестве примера приведены свойства контроллера N100: .. figure:: ../../zwb/lib/modbus_vars4.png :align: center В этом контроллере определены два порта СОМ0 и СОМ1 и значение переменной будет принимать или 16 или 17. Дальнейшие значения относятся к Ethernet запросам. Значение переменной 32 означает, что устройство получило пакет по ModbusTCP. Значение переменной 64 — MQTT. Ethernet порт устройства отображается в панели свойств как ETH. * **Функция запроса** - код функции чтения или записи в запросе, полученном от главного устройства. * **Начальный регистр** - номер регистра с которого происходит чтение или запись в запросе, полученном от главного устройства. * **Количество регистров** - количество регистров запрашиваемых или записываемых в запросе, полученном от главного устройства. Все вышеперечисленные переменные выставляют свое значение на один шаг программы, поэтому для фиксации их нужно использовать дополнительные переменные. Пример использования переменной **Выполняющий команду порт** для определения опроса по порту COM0: .. figure:: ../../zwb/lib/modbus8.png :align: center При установке переменной в значение 16 (это означает что пришел пакет от главного в порт СОМ0) происходит сброс счетчика. Если счетчик не сбросится в течении одной секунды, в переменную error будет записано значение 1.