4.1.4.3.1. Опросчик Modbus TCP

Модуль Modbus TCP Master работает в составе Astra.Server, который является частью системы для сбора, анализа и регулирования параметров технологического процесса.
Модуль Modbus TCP Master предназначен для опроса подчиненных станций в сетях TCP/IP по протоколу Modbus в соответствии со спецификацией Modbus Application Protocol Specification. Astra.Server поддерживает до 64-х модулей Modbus TCP Master.

Основными функциями модуля Modbus TCP Master являются сбор данных и подача управляющих воздействий подчиненным станциям.
Модуль Modbus TCP Master опрашивает подчиненные станции, циклически отправляя им запросы. Полученные данные через интерфейсы ядра сохраняются в оперативную базу данных (ОБД). Протокол Modbus не поддерживает передачу качества и метки времени. Ядро Astra.Server при получении изменившихся сигналов уведомляет об изменениях сигналов другие модули, которые обслуживают эти сигналы, в том числе модуль OPC DA Server. Далее модуль OPC DA Server передает данные клиентам, подписанным на изменившиеся сигналы.

Модуль Modbus TCP Master отправляет запросы подчиненным станциям, т.е. выполняет роль ТСР клиента, а станция поставляет данные в ответ на запрос, то есть выполняет роль ТСР сервера. Обмен данными всегда инициируется модулем Modbus TCP Master.
При старте модуля происходит инициализация модуля:
чтение конфигурационных данных модуля;
подписка у ядра на получение уведомлений об изменениях сигналов;
проверка корректности настройки адресов для сигналов уведомлений и постановка их на обслуживание;
формирование таблицы поллинга.
Затем в соответствии с режимом работы модуль устанавливает соединение и начинает работу в соответствии со своими настройками.
Адресное пространство протокола Modbus представляет собой четыре массива данных:
Coils - ячейки. Одиночный бит. Тип доступа на чтение и запись;
Discrete Inputs - дискретные входы. Одиночный бит. Тип доступа только на чтение;
Holding Registers - регистры хранения. 16-битное слово. Тип доступа на чтение и запись;
Input Registers - входные регистры. 16-битное слово. Тип доступа только на чтение.
Опрос каждой подчиненной станции ведется по таблице поллинга, сформированной при старте модуля. Формирование таблицы поллинга ведется по использованным при конфигурировании адресам в массивах данных.
В модуле реализовано расширение стандартных функций протокола Modbus:
для передачи времени возникновения данных.
для увеличения производительности при работе с оборудованием от ЭМИКОН.
Опрос станций модулем Modbus TCP Master может производиться по резервируемым каналам связи.
|
Режимы работы модуля
Модуль Modbus TCP Master может работать в двух режимах: РАБОТА или РЕЗЕРВ. Режим работы модуля в Astra.Server устанавливает ядро. Режим работы модуля напрямую зависит от режима работы Astra.Server. В процессе работы режим работы Astra.Server может измениться.
Время перехода модуля между режимами максимально оптимизировано. Время перехода увеличивается при использовании функций ограничения работы в режиме РЕЗЕРВ.
В режиме РАБОТА модуль выполняет функции:
ведет опрос подчиненной станции;
отправляет команды управления подчиненным станциям.
Отличия режима РЕЗЕРВ от режима РАБОТА:
управляющие воздействия подчиненным станциям не отправляются;
есть возможность регулирования ограничений нагрузки работы на подчиненную станцию. Нагрузка на подчиненную станцию увеличивается при множественных подключениях, а также при выполнении функций опроса и управления по множественным подключениям.
Ограничение режима работы в режиме РЕЗЕРВ предназначено для того, чтобы обеспечить корректную работу с устройствами, которые не поддерживают множественных подключений или не обеспечивают необходимой скорости работы с транзакциями в режиме постоянного опроса несколькими мастерами.
Скорость переключения между модулями зависит от настроек работы модуля в режиме РЕЗЕРВ. Имеются три варианта работы модуля в режиме РЕЗЕРВ:
"вести опрос" - в данном режиме модуль устанавливает связь с подчиненной станцией и отправляет запросы на чтение данных с подчиненной станции. При переключении между режимами не теряется время на установку соединения со станцией, а также на полный опрос этой станции. Рекомендованный вариант работы резервного модуля;
"поддерживать соединение" – в данном режиме модуль устанавливает связь с подчиненной станцией и проводит проверку соединения. При переключении между режимами не теряется время на установку соединения с подчиненной станцией;
"закрыть соединение" - в данном режиме модуль не устанавливает соединение и не проверяет состояние связи с подчиненной станцией, пока не перейдет в режим РАБОТА. Такой вариант работы используется, если подчиненная станция не поддерживает множественных подключений.
Стратегия формирования запросов на чтение
Модуль Modbus TCP Master предоставляет выбор варианта составления таблицы поллинга, т.е. возможность регулировки максимальной длины запроса на чтение, и выбор варианта учитывать или не учитывать разрывы данных в адресном пространстве протокола.
Существуют два варианта формирования таблицы поллинга. Один из них позволяет оптимизировать количество запросов, другой объем запрашиваемых данных. Выбор варианта формирования таблицы поллинга производится при конфигурировании модуля:
"По максимуму" - строится карта запросов максимальной длины, не учитывая фрагментацию запрашиваемых данных – объединение в один запрос расположенных не подряд данных. Например, если есть 2 сигнала с адресом 1 и 125, они объединяются в один запрос, лишние данные при получении игнорируются (т.е. игнорируются данные с адресами от 2 до 124). Таким образом, оптимизируется количество отправляемых запросов за счет увеличения трафика (количества переданной информации);
"На сплошные данные" - строится карта запросов только по необходимым данным. Таким образом, оптимизируется трафик за счет потери времени. Потеря времени происходит из-за необходимости построения и отправки нескольких запросов.
Максимальная длина запроса равна 125 регистров. Длина запроса задается в параметрах конфигурации модуля.
Опрос подчиненной станции
Опрос нескольких подчиненных станций ведется модулем независимо. При опросе подчиненной станции модуль отправляет запросы на чтение, сформированные в таблице поллинга.
Модуль имеет четыре состояния связи со станцией: соединение отсутствует, ожидание подключения, соединение есть, запрашиваются или передаются данные. Отображение состояния связи ведется в служебном сигнале связи. Значениям служебного сигнала связи соответствуют следующие состояния связи:
соединение со станцией отсутствует, значение сигнала связи равно 0. Состояние устанавливается при запуске модуля и при разрыве связи со станцией;
ожидание подключения, значение сигнала связи равно 1. Это значение служебного сигнала связи принимается при попытках установить связь и при кратковременной потери связи. Если связь установлена, то выполняется переход в следующее состояние со значением сигнала связи 2, иначе выполняется переход в состояние со значением сигнала связи 0;
соединение со станцией установлено, значение сигнала связи равно 2. Значение устанавливается при появлении соединения со станцией;
запрашиваются или передаются данные, значение сигнала связи равно 3. Значение принимается при опросе станции или при отправке команд управления подчиненной станции. При кратковременной потери связи сигнал состояния связи принимает значение 1.
Если полученные данные с подчиненной станции не успевают обрабатываться и очередь данных достигает максимального размера, то опрос станции приостанавливается, происходит запись в журнал работы модуля об этом событии. Опрос подчиненной станции продолжается, когда уменьшится размер очереди данных.
Функция изменения порядка байт необходима для работы с определенными устройствами, которые на аппаратном уровне меняют местами байты в словах.
При опросе и выдаче управляющих воздействий модуль имеет возможность изменять порядок байт, параметры настраиваются в конфигурации модуля:
Байт в слове - включает/отключает изменение порядка следования байтов в регистре. В случае если флаг установлен, то байты регистра меняются местами.
Слов в сигналах ТМС, TR4 — включает/отключает изменение порядка следования слов в сигналах ТМС, TR4. В случае если флаг установлен, то слова данных меняются местами.
Если одновременно установлены флаги Слов в сигналах ТМС, TR4 и Байт в слове, то слова данных меняются местами и байты в словах меняются местами;

Слов в сигналах TMF4, TMF8, TRF4 — включает/выключает изменение порядка слов в сигналах TMF4, TMF8, TRF4. В случае если флаг установлен, изменение порядка следования слов происходит аналогично изменению порядка следования слов в сигналах ТМС, TR4. Если одновременно установлены флаги Слов в сигналах TMF4, TMF8, TRF4 и Байт в слове, то пары байтов меняются местами и в каждой паре байты меняются местами (рисунок выше).
При переходе между резервными каналами и кратковременными пропаданиями связи качество сигналов не изменяется, так как предусмотрен параметр Таймаут потери связи (параметр конфигурации, рисунок ниже). Если связь со станцией потеряна, то начинается отчет времени, в течение которого модуль пытается восстановить соединение с подчиненной станцией – таймаут потери связи Т0. По истечению этого времени если соединение не удалось установить, то сигналам выставляется качество COMM_FAILURE.

Модуль имеет возможность обрабатывать ошибки, для того чтобы не выставлять плохое качество данных при возникновении единичных сбоев в поведении устройства, а также чтобы сохранить целостную картину при резервных переходах устройств. Алгоритмы обработки ошибок следующие:
если устройство при запросе данных возвращает строку SLAVE DEVICE BUSY (запись строки происходит в поле Качество сигнала), то запрос данных не повторяется, связь со станцией не меняется, модуль переходит к запросу следующих данных. Недоставленные данные перезапрашиваются в следующем цикле опроса;
если устройство при запросе данных возвращает строку ILLEGAL DATA ADDRESS (запись строки происходит в поле Качество сигнала), то по данному запросу инкрементируется счетчик ошибочных запросов. Если в течение трех циклов опроса устройства подряд возвращается ошибка ILLEGAL DATA ADDRESS, то данным запроса выставляется качество OPC_QUALITY_BAD. Любой корректный ответ по этим данным обнуляет счетчик. Счетчик взводится отдельно для каждого запроса в карте поллинга;
если устройство при запросе данных возвращает любой другой код ошибки, то по данному запросу инкрементируется счетчик ошибочных запросов. Если в течение трех циклов опроса устройства подряд возвращается данная ошибка, то данным запроса выставляется качество OPC_QUALITY_BAD и инкрементируется счетчик неуспешных запросов. При достижении максимального количества неуспешных запросов связь со станцией считается потерянной. Любой корректный ответ по этим данным обнуляет счетчик.
Метка времени
Протокол Modbus не оперирует понятием время возникновения данных, обычно сигналам присваивается время сервера на момент получения данных, свойство 4 (TimeStamp).
Модуль Modbus TCP Master реализует расширение спецификации в части передачи метки времени. Эта возможность может быть использована как для формирования в контроллере времени изменения значения, так и для формирования однозначной последовательности событий, возникающих на уровне контроллера, что невозможно в обычных условиях, так как опросчик может не успеть прочитать данные, если они очень быстро изменяются.
Для передачи метки времени параметров вводятся дополнительные типы данных в модуле Modbus TCP Master: TM2_TIME, TMF4_TIME, TMC_TIME, TMF8_TIME. Протокольные типы данных с меткой времени представляются логической структурой, представленной в таблице:
|
Рег./Поз.
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
|
1-4
|
Данные занимают от 1 до 4 регистров в зависимости от типа сигнала
| |||||||||||||||
|
5
|
секунды
|
миллисекунды
| ||||||||||||||
|
6
|
час
|
минуты
| ||||||||||||||
|
7
|
год
|
месяц
|
день
| |||||||||||||
Для возможности взаимодействия модуля и контроллера на стороне контроллера следует поддержать формирование описанной структуры.
|
Модуль, работая с сигналом, который имеет тип с меткой времени, формирует запрос на чтение с учетом типа сигнала и дополнительной структуры длиной три регистра. При получении данных метка времени, лежащая в дополнительной структуре, преобразуется к стандартному времени и записана в свойство 4 (TimeStamp) одновременно с записью значения в свойство 2 (Value).
Для получения метки времени, у подчиненной станции должен быть поддержан формат структур (таблица выше) по сигналам, которые должны содержать метку времени. Поля структуры должны заполняться на стороне подчиненной станции. В Astra.Server должны быть указаны протокольные типы данных с меткой времени для сигналов.
Отправка управляющих и регулирующих воздействий
Отправка команд телеуправления и телерегулирования выполняется, только когда пара резервируемых серверов активна и Astra.Server находится в режиме РАБОТА.
|
Отправка управляющих воздействий имеет больший приоритет, чем опрос станций. При необходимости отправки управляющего воздействия модуль вставляет пакет, содержащий команду в начало очереди запросов на отправку подчиненной станции.
Модуль позволяет указать количество повторов отправки команд в случае неуспешной отправки. Повторы отправки команд происходят, если:
устройство вернуло в ответ исключение с кодом SLAVE DEVICE BUSY. Если в итоге запись так и не была выполнена, состояние связи не меняется;
устройство вернуло в ответ исключение с кодом ILLEGAL DATA ADDRESS, ILLEGAL DATA VALUE, состояние связи не меняется.
Если устройство вернуло в ответ исключение с любым кодом, кроме кодов, перечисленных выше, то отправка команд не повторяется, счетчик количества неуспешных запросов увеличивается на 1.
Если вышел таймаут ожидания ответа от станции, то отправка команд не повторяется, увеличивается счетчик количества неуспешных запросов.
Качество данных является показателем достоверности информации. Управляющие сигналы с недостоверной информацией отправлять недопустимо. Сигналы плохого качества не отправляются.
Для исходящих сигналов модуль позволяет настраивать сигналы доставки управляющих и регулирующих воздействий до подчинённой станции, которые формируются по правилам из таблицы:
|
Значение
|
Описание
|
|
2
|
Доставка подтверждена
|
|
1
|
Ожидание подтверждения доставки
|
|
-1
|
Нет связи со станцией
|
|
-2
|
Вышел таймаут подтверждения запроса
|
|
-1000 + код исключения
|
Устройство вернуло код исключения
|
Модуль имеет возможность отправлять все сигналы телерегулирования, при проявлении подчиненной станции на связи. При этом может произойти отправка сигнала, содержащего устаревшую информацию, из-за этого функцию необходимо использовать осторожно.
Отправка сигнала телеуправления (ТС) может проводиться в сегменте Holding Registers адресного пространства. Для возможности подачи телеуправления при конфигурировании сигнала следует указать номер бита, который будет устанавливаться в 1 при отправке телеуправления. При подаче телеуправления модуль формирует регистр для записи в устройство таким образом, что все биты, кроме указанного в настройках адреса сигнала телеуправления, будут сброшены в ноль. Например, если в адресе сигнала записано
"BitPosition=(5)", то при отправке ТС в Holding Registers запишется число "00000000 00010000" или "32" в зависимости от настроек подчиненной станции.
"BitPosition=(5)", то при отправке ТС в Holding Registers запишется число "00000000 00010000" или "32" в зависимости от настроек подчиненной станции.
Резервируемые каналы связи
Резервирование каналов связи с устройством является одним из способов повышения надежности системы автоматизации. Разные производители устройств строят системы работы с резервируемыми каналами по-разному. В связи с этим модуль реализует несколько вариантов работы с подчиненными станциями по резервируемым каналам. Максимальное количество каналов связи Master-Slave равно 4. Количество настраивается в параметрах конфигурации.
Режимы работы резервных каналов следующие:
все каналы выполняют опрос станции. Для каждого канала, по которому ведется опрос устройства, модуль резервирует максимальное количество одновременно возможных транзакций. В данном режиме работы модуль считает все резервные каналы единым каналом с большой пропускной способностью. Количество свободных транзакций суммируется (рисунок ниже). При отказе работы одного из каналов весь трафик делится между оставшимися каналами;
один канал выполняет опрос, по остальным каналам поддерживается связь со станцией. Этот вариант используется для того, чтобы не перегружать устройство. В тоже время при переключении между каналами время переключения минимально. При отказе работы канала, выполняющего опрос, функция опроса передается другому каналу, выбор которого осуществляет модуль;
один канал выполняет опрос, связь со станцией по остальным каналам не поддерживается. Этот вариант используется в случае, когда устройство не поддерживает множественные подключения опросчиков, при необходимости переключения между каналами время перехода будет больше чем в предыдущих случаях.

Отправка управляющих и регулирующих воздействий
Отправка команд телеуправления и телерегулирования выполняется, только когда пара резервируемых серверов активна и Astra.Server находится в режиме РАБОТА.
Отправка управляющих воздействий имеет больший приоритет, чем опрос станций. При необходимости отправки управляющего воздействия модуль вставляет пакет, содержащий команду в начало очереди запросов на отправку подчиненной станции.
Отправка команд по резервным каналам происходит также как при опросе станций.
Модуль позволяет указать количество повторов отправки команд в случае неуспешной отправки. Повторы отправки команд происходят, если:
устройство вернуло в ответ исключение с кодом SLAVE DEVICE BUSY. Если в итоге запись так и не была выполнена, состояние связи не меняется;
устройство вернуло в ответ исключение с кодом ILLEGAL DATA ADDRESS, ILLEGAL DATA VALUE, состояние связи не меняется.
Если устройство вернуло в ответ исключение с любым кодом, кроме кодов, перечисленных выше, то отправка команд не повторяется, счетчик количества неуспешных запросов увеличивается на 1.
Если вышел таймаут ожидания ответа от станции, то отправка команд не повторяется, увеличивается счетчик количества неуспешных запросов.
Качество данных является показателем достоверности информации. Управляющие сигналы с недостоверной информацией отправлять недопустимо. Сигналы плохого качества не отправляются.
Для исходящих сигналов модуль позволяет настраивать сигналы доставки управляющих и регулирующих воздействий до подчинённой станции, которые формируются по правилам из таблицы:
|
Значение
|
Описание
|
|
2
|
Доставка подтверждена
|
|
1
|
Ожидание подтверждения доставки
|
|
-1
|
Нет связи со станцией
|
|
-2
|
Вышел таймаут подтверждения запроса
|
|
-1000 + код исключения
|
Устройство вернуло код исключения
|
Модуль имеет возможность отправлять все сигналы телерегулирования, при проявлении подчиненной станции на связи. При этом может произойти отправка сигнала, содержащего устаревшую информацию, из-за этого функцию необходимо использовать осторожно.
Отправка сигнала телеуправления (ТС) может проводиться в сегменте Holding Registers адресного пространства. Для возможности подачи телеуправления при конфигурировании сигнала следует указать номер бита, который будет устанавливаться в 1 при отправке телеуправления. При подаче телеуправления модуль формирует регистр для записи в устройство таким образом, что все биты, кроме указанного в настройках адреса сигнала телеуправления, будут сброшены в ноль. Например, если в адресе сигнала записано "BitPosition=(5)", то при отправке ТС в Holding Registers запишется число "00000000 00010000" или "32" в зависимости от настроек подчиненной станции.
Модуль позволяет настроить сигналы доставки, которые необходимы для подтверждения доставки исходящих сигналов до подчиненной станции и содержат результат выполнения операции.
Модуль позволяет использовать сегмент адресного пространства Holding Registers для передачи сигналов телеуправления и телесигнализации. Регистр адресного пространства протокола Modbus используется как набор в качестве 16 сигналов телеуправления или телесигнализации. При конфигурировании такого способа доставки сигналов в адресе сигнала указывается номер бита (BitPosition).
Так как элементы адресного пространства Holding Registers и Coils имеют тип доступа на чтение и запись данных, то имеется возможность отправлять сигналы телерегулирования (телеуправления) и получать сигналы телеизмерения (телесчет, телесигнализация) на один регистр памяти. Для этого необходимо создать два сигнала типов – входящий и исходящий. При этом не будет ошибки пересечения адресов. Запись и чтение с одного регистра применяется для проверки полученных данных подчиненной станцией и для проверки текущих значений параметров объекта телерегулирования.