AstraRegul
Релиз 2024.08.31.00
×

4.1.1.2.3.2.2. Функциональные возможности

 

Обмен данными по протоколу Modbus

 
Обмен данными по протоколу Modbus основан на архитектуре Master – Slave. Модуль Modbus RTU Master выполняет обмен данными с подчиненными станциями, реализуя функции Master в соответствии со спецификацией MODBUS APPLICATION PROTOCOL SPECIFICATION.
 
Модуль инициирует обмен данными, отправляя запрос подчиненной станции. Подчиненная станция отвечает на запрос, предоставляя запрошенные данные или выполняя команду модуля. Самостоятельно подчиненная станция данные не передаёт.
 
Запросы и ответы представляют собой кадры данных. Для модуля Modbus RTU Master запрос, отправляемый подчиненной станции, является исходящим кадром, а ответ, полученный от подчиненной станции – входящим кадром.
 
Исходящий кадр содержит код функции и данные, необходимые для выполнения функции. Входящий кадр содержит код функции и данные, полученные в результате выполнения функции. Подробное описание кадров данных модуля Modbus RTU Master приведено в разделе Журнал работы модуля.
 
Код функции определяет сегмент памяти подчиненной станции и действие, которое требуется выполнить в данном сегменте.
 

Сегменты памяти подчиненной станции

 
Модуль Modbus RTU Master выполняет чтение и запись данных в четыре основных сегмента памяти, а также чтение данных из файлов расширенной памяти подчиненной станции. В таблице приведены сегменты памяти подчиненной станции, тип и размер элементов сегмента, а также действия, допустимые для сегментов.
 
Сегмент
Описание
Тип и размер элемента
Действия
Coils
Дискретные выводы (Телеуправление)
Ячейка 1 бит
Запись и чтение
Discrete Inputs
Дискретные вводы (Телесигнализация)
Ячейка 1 бит
Чтение
Holding Registers
Регистры хранения (Телерегулирование)
Регистр 2 байта
Запись и чтение
Input Registers
Регистры ввода (Телеизмерения)
Регистр 2 байта
Чтение
Files
16-битные регистры, организованные в файлы, состоящие из записей произвольной длинны
Регистр 2 байта
Чтение
 
Каждый сегмент памяти содержит 65 536 элементов, адреса которых от «0» до «65535». Расширенная память содержит файлы с номерами от «1» до «65535», каждый из которых содержит от 0 до 9999 записей.
 
 

Поддерживаемые функции протокола Modbus

 
Стандартные функции протокола Modbus, используемые модулем Modbus RTU Master для обмена данными с подчиненной станцией, приведены в таблице.
 
Код функции
Название
Действие
Сегмент
01 (0x01)
Read Coils
Чтение состояния дискретных выводов
Coils
02 (0x02)
Read Discrete Inputs
Чтение состояния дискретных вводов
Discrete Inputs
03 (0x03)
Read Holding Registers
Чтение регистров хранения
Holding Registers
04 (0x04)
Read Input Registers
Чтение входных регистров
Input Registers
05 (0x05)
Write Single Coil
Запись одного дискретного вывода
Coils
06 (0x06)
Write Single Register
Запись одного регистра хранения
Holding Registers
16 (0x10)
Write Multiple registers
Запись нескольких регистров хранения
Holding Registers
20 (0x14)
Read File Record
Чтение данных из файла
Files
 

Чтение данных

 
Для чтения данных из сегментов памяти подчиненной станции используются стандартные функции протокола Modbus:
«01 (0х01) Read Coils» – чтение состояния дискретных выводов;
«02 (0х02) Read Discrete Inputs» – чтение состояния дискретных вводов;
«03 (0х03) Read Holding Registers» – чтение регистров хранения;
«04 (0х04) Read Input Registers» – чтение входных регистров;
«20 (0х14) Read File Record» – чтение данных из файла.
 
Максимальное количество считываемых элементов за один запрос для каждого сегмента задаётся в параметрах модуля. Чтобы полученные от подчиненной станции данные записывались в сигнал сервера, в адресе сигнала (свойство 5000) необходимо указать параметры:
номер подчиненной станции;
сегмент памяти, из которого считываются данные;
адрес элемента сегмента памяти (для сегмента Files – номер файла и номер записи);
протокольный тип.
 

Запись одного значения

 
Для записи одного значения в сегмент памяти подчиненной станции используются стандартные функции протокола Modbus:
«05 (0х05) Write Single Coil» – запись значения одного дискретного вывода;
«06 (0х06) Write Single Register» – запись значения в один регистр хранения.
 
Чтобы использовать функцию «06 (0х06) Write Single Register» для записи значений в регистры хранения, в настройках станции параметру Используемая функция записи значений в регистры установите значение «0x06 Write Single Register».
 
Чтобы значение сигнала сервера записывалось в сегмент данных подчиненной станции, в адресе сигнала (свойство 5000) необходимо указать параметры:
номер подчиненной станции;
сегмент памяти, в который требуется записать данные;
адрес изменяемого элемента сегмента памяти;
протокольный тип.

Запись нескольких значений

 
Для записи значений в несколько регистров памяти подчиненной станции используется стандартная функция протокола Modbus «16 (0х10) Write Multiple Registers».
 
Чтобы использовать функцию «16 (0х10) Write Multiple Registers» для записи значений в регистры хранения, в настройках станции параметру Используемая функция записи значений в регистры установите значение «0x10 Write Multiple Registers».
 
Максимальное количество записываемых элементов за одну команду задаётся в параметрах модуля.
Чтобы значение сигнала сервера записывалось в сегмент данных подчиненной станции, в адресе сигнала (свойство 5000) необходимо указать параметры:
номер подчиненной станции;
сегмент памяти, в который требуется записать данные;
адрес первого элемента сегмента памяти, значение которого требуется изменить;
протокольный тип.
 

Стратегия формирования запросов на чтение

 
Модуль Modbus RTU Master предоставляет выбор варианта составления таблицы поллинга, т.е. возможность регулировки максимальной длины запроса на чтение, и выбор варианта учитывать или не учитывать разрывы данных в адресном пространстве протокола.
 
Существуют два варианта формирования таблицы поллинга. Один из них позволяет оптимизировать количество запросов, другой объем запрашиваемых данных. Выбор варианта формирования таблицы поллинга производится при конфигурировании модуля:
По максимуму - строится карта запросов максимальной длины, не учитывая фрагментацию запрашиваемых данных – объединение в один запрос расположенных не подряд данных. Например, если есть 2 сигнала с адресом 1 и 125, они объединяются в один запрос, лишние данные при получении игнорируются (т.е. игнорируются данные с адресами от 2 до 124). Таким образом, оптимизируется количество отправляемых запросов за счет увеличения трафика (количества переданной информации);
На сплошные данные - строится карта запросов только по необходимым данным. Таким образом, оптимизируется трафик за счет потери времени. Потеря времени происходит из-за необходимости построения и отправки нескольких запросов.
 
Максимальная длина запроса равна 125 регистров. Длина запроса задается в параметрах конфигурации модуля.
Формирование карты поллинга
 
Если заданы адреса на чтение 1, 7-25, 47, 130 то для стратегии формирования запросов:
"по максимуму" будут сформированы два запроса. Один из запросов по адресам от 1 до 125, второй запрос от 126 до 130;
"на сплошные данные" будет сформировано 3 запроса: по адресу 1, по адресам от 7 до 25, по адресу 47 и по адресу 130.
 
Максимальная длина запроса равна 125 регистров. Длина запроса задается в параметрах конфигурации модуля. Сигналы с типами больше одного регистра отправляются и принимаются за один запрос независимо от настроек длины запроса.
 

Опрос подчиненной станции

 
Опрос нескольких подчиненных станций ведется модулем по очереди, порядок станций определяется таблицей поллинга.
 
Модуль отправляет запросы каждой подчиненной станции последовательно, то есть отправляет станции один запрос и ждет ответа на запрос. Время между отправкой запросов задается в параметрах конфигурации.
 
При запуске модуля, он находится в состоянии Покоя – служебный сигнал состояния связи со станцией принимает значение 2 – соединение есть, т.е. не отправляет запросов и не ожидает ответов. Запрос может быть отправлен только из состояния Покоя. После отправки запроса модуль выходит из состояния Покоя (служебный сигнал состояния связи со станцией принимает значение 3 запрашиваются или передаются данные) и не может отправлять повторные запросы.
 
Когда запрос отправлен подчиненной станции, модуль переходит в состояние Ожидание ответа и запускается счетчик Времени ожидания ответа от станции. При получении ответа от подчиненной станции модуль проверяет его на ошибки. В случае ошибки Время ожидания ответа от станции истекает и выставляется состояние потеря связи со станцией качество сигнала принимает значение COMM_FAILURE. Затем модуль переходит в состояние Покоя, что позволяет ему повторить запрос.
 
Для того чтобы выдержать паузу между приемом и передачей предусмотрен параметр Пауза между запросами. Функция предназначена для устройств, не отвечающих на запросы без паузы, т.е. параметр является устройство зависимым.
 
Максимальное количество повторов запросов на чтение и максимальное количество повторов на отправку команд задается в конфигурации модуля. Когда количество повторов превышает заданное максимальное количество, то регистрируется потеря связи со станцией.
 
Если в ответ на запрос подчиненная станция вернула строку SLAVE_DEVICE_BUSY, то повтор отправки запроса будет произведен после Паузы опроса занятого устройства. При этом необходимо чтобы Пауза опроса занятого устройства была меньше, чем Время ожидания ответа от станции.
 
Модуль Modbus RTU Master динамически создает служебные сигналы для каждой станции, предназначенные для обеспечения контроля работы модуля. Через служебные сигналы созданные модулем пользователь имеет возможность наблюдать за работой модуля.
 
При опросе и выдаче управляющих воздействий модуль имеет возможность изменять порядок байт:
Байт в слове - включает/отключает изменение порядка следования байтов в регистре. В случае если флаг установлен, то байты регистра меняются местами.
Действие флага распространяется на все протокольные типы сигналов, кроме TS и TC.
Слов в сигналах ТМС, TR4 — включает/отключает изменение порядка следования слов в сигналах ТМС, TR4. В случае если флаг установлен, то слова данных меняются местами.
 
 
Если одновременно установлены флаги Слов в сигналах ТМС, TR4 и Байт в слове, то слова данных меняются местами и байты в словах меняются местами;
 
Слов в сигналах TMF4, TMF8, TRF4 — включает/выключает изменение порядка слов в сигналах TMF4, TMF8, TRF4. В случае если флаг установлен, изменение порядка следования слов происходит аналогично изменению порядка следования слов в сигналах ТМС, TR4. Если одновременно установлены флаги Слов в сигналах TMF4, TMF8, TRF4 и Байт в слове, то пары байтов меняются местами и в каждой паре байты меняются местами (рисунок выше).
 
Функция изменения порядка байт необходима для работы с определенными устройствами, которые на аппаратном уровне меняют местами байты в словах.

Качество сигналов

 
В протоколе Modbus отсутствует понятие качества данных, и поэтому качество устанавливается модулем, исходя из результатов выполнения запросов. При старте модуля все сигналы имеют плохое качество.
 
Качества сигналов, выставляемых коммуникационным модулем, приведены в таблице:
 
Значение качества
Идентификатор качества
Расшифровка
4
CONFIG_ERROR
Сигнал неправильно сконфигурирован
8
NOT_CONNECTED
Сигнал принят на обслуживание, но устройство еще не инициализировано
12
DEVICE_FAILURE
Ошибка инициализации устройства
20
LAST_KNOWN
КП нет на связи, последнее пришедшее значение
24
COMM_FAILURE
КП нет на связи
28
OUT_OF_SERVICE
Модуль не запущен
64
UNCERTAIN
Связь установлена, но значения еще не пришли
192
GOOD
Значение сигнала достоверно
216
LOCAL_OVERRIDE
Значение достоверно, введено вручную
 
Пропадание связи регистрируется, если за Время ожидания ответа от станции подчиненная станция не отвечает. При отсутствии ответа от подчиненной станции происходит повтор отправки команд (запросов). По истечению максимального числа повторов связь с подчиненной станцией считается потерянной и выставляется плохое качество сигналов (COMM_FAILURE). При кратковременном пропадании связи станция успевает ответить за отведенное Количество повторов отправки команд (запросов) и качество сигналов при кратковременном пропадании связи не изменяется.
 
 
Модуль имеет возможность обрабатывать ошибки, чтобы не выставлять плохое качество данных при возникновении единичных сбоев в поведении устройства и чтобы сохранить целостную картину при резервных переходах устройств. Алгоритмы обработки ошибок следующие:
если устройство при запросе данных возвращает строку SLAVE DEVICE BUSY (запись строки происходит в поле качество сигнала), то запрос данных не повторяется, связь со станцией не меняется, модуль переходит к запросу следующих данных. Недоставленные данные будут перезапрошены в следующем цикле опроса;
если устройство при запросе данных возвращает строку ILLEGAL DATA ADDRESS (запись строки происходит в поле качество сигнала), либо другой код ошибки, то по данному запросу выставляется качество OPC_QUALITY_BAD;
если подчиненная станция не отвечает и количество повторов отправки команд (запросов) достигло максимального, то сигналам по данному запросу выставляется качество OPC_QUALITY_BAD.
 

Метка времени

 
Протокол Modbus не оперирует понятием время возникновения данных, обычно сигналам присваивается время сервера на момент получения данных, свойство 4 (TimeStamp).
 
Модуль Modbus RTU Master реализует расширение спецификации в части передачи метки времени. Метка времени может быть использована как для формирования в контроллере времени изменения значения, так и для формирования однозначной последовательности событий, возникающих на уровне контроллера, что невозможно в обычных условиях, так как опросчик может не успеть прочитать данные, если данные очень быстро изменяются.
 
Для передачи метки времени параметров вводятся дополнительные типы данных в модуле Modbus RTU 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. Если в итоге запись так и не была выполнена, то состояние связи выставляется в положение отсутствует;
вышло время ожидания ответа от станции, т.е. произошел разрыв связи. После истечения максимального количества повторов отправки команд (запросов) сигналам выставляется плохое качество.
 
Качество данных является показателем достоверности информации. Управляющие сигналы с недостоверной информацией отправлять недопустимо. Сигналы управления плохого качества не отправляются.
 
Для исходящих сигналов модуль позволяет настраивать сигналы доставки управляющих и регулирующих воздействий до подчинённой станции, которые формируются по правилам из таблицы:
 
Значение
Описание
2
Доставка подтверждена
1
Ожидание подтверждения доставки
-1
Нет связи со станцией
-2
Вышел таймаут подтверждения запроса
-1000 + код исключения
Устройство вернуло код исключения
 
В случае если подчиненная станция получает запрос, но не может его обработать (например, чтение несуществующей ячейки или регистра), то подчиненная станция возвращает ответ модулю с кодом ошибки.
 
Модуль имеет возможность отправлять все сигналы телерегулирования, при проявлении подчиненной станции на связи. При этом может произойти отправка сигнала, содержащего устаревшую информацию, из-за этого функцию необходимо использовать осторожно.
 
Отправка сигнала телеуправления (ТС) может проводиться в сегменте Holding Registers адресного пространства. Для возможности подачи телеуправления при конфигурировании сигнала следует указать номер бита, который будет устанавливаться в 1 при отправке телеуправления. При подаче телеуправления модуль формирует регистр для записи в устройство таким образом, что все биты, кроме указанного в настройках адреса сигнала телеуправления, будут сброшены в ноль. Например, если в адресе сигнала записано 
"BitPosition=(5)", то при отправке ТС в Holding Registers запишется число "00000000 00010000" или "32" в зависимости от настроек подчиненной станции.
 

Параметры COM порта

 
Для подключения к подчиненной станции необходимо настроить параметры СОМ порта, при этом значения параметров СОМ порта подчиненной станции должны совпадать со значениями параметров СОМ порта модуля. Настройка параметров производится в конфигураторе.
 
К параметрам СОМ порта относятся:
 
Номер СОМ порта - параметр предназначен для определения СОМ порта;
 
Скорость (бит/с) - параметр предназначен для установки максимальной скорости передачи данных;
 
Четность - параметр предназначен для обнаружения ошибок при приеме/передаче данных. Для обнаружения ошибок производится подсчет бита четности, т.е. определяется устанавливать бит при четном или нечетном числе единиц. Проверка на четность позволяет определить возникновение ошибок в одном бите, при наличии ошибок в двух битах ошибка не обнаружится. Контроль на четность не указывает на ошибочный бит;
 
Стоповые биты - параметр предназначен для обнаружения ошибок при приеме/передаче данных, позволяет провести синхронизацию при возникновении сбоев. Например, помеха на линии скрыла Старт бит. Период между старт и стоп битами постоянен, согласно значению скорости обмена, числу бит данных и бита четности. Стоп бит всегда включен. Если приемник определяет выключенное состояние, когда должен присутствовать стоп бит, фиксируется появление ошибки;
 
Управление потоком. Управление потоком позволяет управлять передаваемыми данными. Если при приеме/передаче данные не могут обработаться приемным устройством, то используется управление потоком для прекращения передачи данных. Модуль имеет возможность использовать аппаратное или программное управление потоком:
 
Аппаратное управление потоком. При аппаратном управлении потоком используется дополнительно два провода в кабеле. Поэтому аппаратное управление потоком не замедляет обмен. При необходимости послать данные передатчик устанавливает сигнал на линии RTS. Если приемник готов к приему данных, то он отвечает установкой сигнала на линии CTS, и передатчик начинает посылку данных. При неготовности к приему сигнал CTS не устанавливается.
 
Программное управление потоком. При этом используется два символа: Xon и Xoff. Код ASCII символа Xon 17, а ASCII код Xoff 19. Если принимающее устройство не успевает обрабатывать данные, то посылает символ Xoff передающему для прекращения посылки данных. При появлении возможности приема данных посылается символ Xon и передающий продолжит пересылку данных. Этот тип управления имеет преимущество в том, что не требует дополнительных линий, т.к. символы передаются по линиям TD/RD. Но на медленных соединениях приводит к значительному замедлению соединения, т.к. каждый символ требует 10 бит.