Терминал Сириус-T версия 3.03. Описание работы по протоколу MODBUS.

АННОТАЦИЯ

Данный документ описывает специфику работы терминалов Сириус-3 и Сириус-2 (вер.3) по протоколу MODBUS. Описание самого протокола MODBUS можно найти в интернет по адресу www.modbus.org.

СОДЕРЖАНИЕ

1. ОБЩЕЕ

1.1. ПАРОЛЬ

1.2. СИНХРОНИЗАЦИЯ

2. НАСТРОЙКИ

3. ТЕКУЩИЕ ПАРАМЕТРЫ

4. УСТАВКИ

5. СРАБАТЫВАНИЯ

6. СОБЫТИЯ

7. ОСЦИЛЛОГРАММЫ

8. ТЕЛЕУПРАВЛЕНИЕ


1. ОБЩЕЕ

Для работы с терминалами могут использоваться порты RS-485 и USB. Для того чтобы терминалы работали по порту USB необходимо установить драйвера с сайта компании FTDI.
Терминалы РЗА производства ЗАО "РАДИУС Автоматика" имеют следующие объекты данных: - Настройки
- Параметры
- Уставки
- Срабатывания
- События
- Осциллограммы
- Телеуправление
Работа с этими объектами описывается данным документом.
Все регистры терминала имеют уровни доступа: чтение, запись, чтение с паролем, запись с паролем. Если для доступа к регистру требуется пароль, то необходимо провести процедуру авторизации, которая описана ниже. Для записи регистров доступны следующие команды MODBUS: 0x06, 0x10. Для чтения регистров доступны команды 0x03, 0x04. Для записи битовых параметров 0x05, 0x0F. Для чтения битовых параметров 0x01, 0x02. Для 32-х разрядных регистров по младшему адресу лежит старшая часть регистра, по старшему адресу - младшая часть.
Время терминалов может быть синхронизированно с помощью широковещательных сообщений с внешним импульсом синхронизации (с точностью до 1 мс) и без него (с точностью 30 мс).

1.1. ПАРОЛЬ

Для ввода пароля необходимо произвести запись в ячейку пароля PVars.Settings.Password серийный номер терминала. Если записываемое значение совпадет с серийным номером устройства, то пароль будет считаться введенным и на определенное время (порядка 3х минут) станут доступными действия, которые могут совершаться только при введенном пароле (изменение уставок и др.). По истечении 3х минут статус введенного пароля будет снят, поэтому если необходимо удерживать статус введенного пароля продолжительное время (более 3х минут) необходимо примерно раз в 1-2 минуты производить вышеописанную процедуру ввода пароля, которая автоматически продлевает время действия статуса на 3 минуты.
Если значение, записываемое в ячейку пароля, не совпадает со значением серийного номера, статус не устанавливается и возвращается исключение «ILLEGAL_DATA_VALUE, 0x03» (смотри описание MODBUS).
Таблица 1. Пароль

1.1. СИНХРОНИЗАЦИЯ

Терминалы РЗА поддерживают два вида синхронизации с внешним синхроимпульсом и без него. В первом случаем точность синхронизации будет не менее 1мс. Во втором 30мс. Для поддержания режима с внешней синхронизацией необходимо использовать устройство "ОРИОН-УСВ", которое посылает на все терминалы импульсы синхронизации в зависимости от уставки раз в секунду, раз в минуту или раз в час. Для синхронизации времени терминала необходимо записать в ячейки структуры UVars.Settings.SetTime текущее время согласно формату типа "48 разрядное время в мс", а затем подать синхроимпульс на соответствующий вход терминала. Команда задания времени может быть широковещательной.
Тип "48 разрядное время в мс" содержит в себе время в миллисекундах начиная с 1900 года. В первых четырех байтах содержится время с точностью до секунды. В последних двух байтах миллисекунды.
Для задания времени без импульса синхронизации необходимо подать широковещательную команду записи параметра UVars.Settings.CurrTime
Таблица 2. Синхронизация

1. НАСТРОЙКИ

Каждый терминал РЗА имеет блок настроек. Адреса параметров данного блока фиксированы для всех терминалов. Настройки позволяют узнать по последовательному каналу тип терминала, задать режимы работы портов связи, время, настроить параметры осциллографирования.
Синхронизация времени была описана в предыдущем пункте. Для поддержки процедуры синхронизации времени старых терминалов в новых сериях введены регистры с 0х0 по 0х3. С их помощью можно синхронизировать терминалы разных серий одной широковещательной командой.
Параметр PVars.Settings.SIRIUS_ID содержит уникальный идентификационный номер терминала.
Затем следуют настройки подсветки индикатора, настройки всех трех портов связи и осциглофирования. Описание этих настроек можно найти в руковдстве по эксплуатации терминала.
Таблица 3. Настройки

2. ТЕКУЩИЕ ПАРАМЕТРЫ

Блок текущих параметров терминала содержит информацию о состоянии дискретных входов/выходов, измеренные и вычисленные значения.
Таблица 4. Параметры

3. УСТАВКИ

Поскольку все уставки, а так же некоторые другие ячейки имеющие возможность изменения по ЛС защищены паролем, процедура изменения уставок начинается с ввода пароля (см. пункт 1.1 Пароль). Если пытаться изменять защищенные ячейки без предварительной удачно прошедшей процедуры ввода пароля, то на каждый запрос об изменении будет возвращаться исключение «ILLEGAL_DATA_ADDRESS, 0x02». После корректного вода пароля появляется возможность изменения уставок. После изменения необходимых уставок по ЛС для их сохранения и ввода в действие новых измененных значений, необходимо подать команду «DONE» (осуществляется путем записи в ячейку UVars.Glob_var.MB_psram_done_cancel значения 0x01). После приема команды «DONE» будет произведены ввод в действие новых значений и запись уставок в энергонезависимую память. Если необходимо отменить сохранение и ввод в действие новых значений уставок, то подается команда «CANCEL» (осуществляется путем записи в ячейку UVars.Glob_var.MB_psram_done_cancel значения 0x02). Если в режиме введенного пароля осуществлялось изменение уставок (изменением уставок считается любая запись в защищенную паролем ячейку, даже если туда записывается то же самое значение, которое там и находится) и вышел таймаут действия введенного пароля (см. пункт 1.1 Пароль), то одновременно со сбросом режима будет автоматически отменено изменение уставок.
Таблица 5. Уставки

4. СРАБАТЫВАНИЯ

Срабатывания терминала представляют собой срез аналоговых и дискретных сигналов терминала при аварийном отключении выключателя. Они хранятся в кольцевом буфере. Новые срабатывания затирают старые. Для каждого из портов терминала необходимо использовать следующие регистры описания:
UVars.TracePort.0.Srab_num - количество активных флагов состояний срабатываний;
UVars.TracePort.0.Srab_status - флаги (признаки наличия) состояний срабатываний;
В массиве регистров UVars.TracePort.0.Srab_status в битовых полях находятся флаги статусов срабатываний. Эти флаги считываются стандартными командами чтения битовых полей. Флагов может быть выделено с запасом, неиспользуемые всегда равны «0». Количество активных на данный момент флагов срабатываний можно узнать из соответствующего регистра UVars.TracePort.0.Srab_num. Сами флаги нужно считывать командой чтения битов Read Coil Status - 01 или Read Input Status – 02.
В структуре SrabRoot располагаются вспомогательные данные для считывания данных срезов событий находящихся в массиве структур Srab. Максимально возможное количество записанных структур данных (т.е. количество элементов массива Srab) расположено в UVars.SrabRoot.all_srab_num.
Элемент структуры UVars.SrabRoot.rec_srab_num указывает на количество заполненных на данный момент элементов массива Srab и принимает значение от 0 до UVars.SrabRoot.all_srab_num по мере первого прохода заполнения массива Srab. Далее это число не изменяется ввиду того, что запись ведется по принципу кольцевого буфера.
В UVars.SrabRoot.new_srab_idx находится номер (индекс) ячейки массива данных срабатываний Srab следующий за последним из заполненных по принципу кольцевого буфера. Т.е. если индекс равен N [0-8], это означает, что последняя запись срабатывания расположена в N-1 элементе массива. После записи в 8-й элемент индекс принимает значение 0 и при следующей записи происходит “затирание” самых старых данных.
Таблица 6. Структура описания срабатываний
Таблица 7. Массив флагов
Таблица 8. Параметры срабатывания

5. СОБЫТИЯ

События терминала - это срез дискретных сигналов функциональной схемы терминала. Они хранятся в кольцевом буфере, который описывается следующими регистрами:
UVars.TracePort.0.Event _num - количество активных флагов состояний событий;
UVars.TracePort.0.Event_status - флаги (признаки наличия) состояний событий;
В массиве регистров UVars.TracePort.0.Event_status в битовых полях находятся флаги статусов событий. Эти флаги считываются стандартными командами чтения битовых полей. Флагов может быть выделено с запасом, неиспользуемые всегда равны «0». Количество активных на данный момент флагов срабатываний можно узнать из соответствующего регистра UVars.TracePort.0.Event_num. Сами флаги нужно считывать командой чтения битов Read Coil Status - 01 или Read Input Status – 02.
В структуре EventRoot располагаются вспомогательные данные для считывания данных срезов событий находящихся в массиве структур Event. Максимально возможное количество записанных структур данных (т.е. количество элементов массива Event) расположено в UVars.Event_root.all_event_num.
Элемент структуры UVars.Event_root.rec_event_num указывает на количество заполненных на данный момент элементов массива Event и принимает значение от 0 до UVars.Event_root.all_event_num по мере первого прохода заполнения массива Event. Далее это число не изменяется ввиду того, что запись ведется по принципу кольцевого буфера.
В UVars.Event_root.new_event_idx находится номер (индекс) ячейки массива данных событий Event следующий за последним из заполненных по принципу кольцевого буфера. Т.е. если индекс равен N [0-8], это означает, что последняя запись события расположена в N-1 элементе массива. После записи в 8-й элемент индекс принимает значение 0 и при следующей записи происходит “затирание” самых старых данных.
Таблица 9. Структура описания событий
Таблица 10. Массив флагов
Таблица 11. Параметры события

6. ОСЦИЛЛОГРАММЫ

Информация об осциллограммах находится регистрах статуса, которые имеют следующую структуру:
UVars.TracePort.0.OSC_num - количество активных флагов состояний осциллограмм;
UVars.TracePort.0.OSC_status - флаги (признаки наличия) состояний осциллограмм.
В массиве регистров UVars.TracePort.0.OSC_status в битовых полях находятся флаги статусов осциллограмм. Cчитываются стандартными командами чтения битовых полей. Количество активных на данный момент флагов осциллограмм можно узнать из соответствующего регистра UVars.TracePort.0.OSC_num.
Таблица 12. Регистры наличия осциллограмм
В UVars.OSC_root находится вся информация о состоянии осциллограмм и свободной памяти под осциллограммы. В памяти осциллограммы уже лежат в формате COMTRADE ASCII с соответствующими заголовками. Для считывания осциллограммы необходимо в ячейку UVars.TracePort.0.read_osc_num записать номер считываемой осциллограммы (1 – 100, 100 – максимальное количество возможных записей). Считывание осциллограммы осуществляется обращением по MODBUS с помощью команды «20 (14Hex) Read General Reference» с указанием в поле номера файла номера сегмента-блока файла осциллограммы (поскольку файл может быть больше чем максимально адресуемое пространство одного файла внешней памяти по стандарту протокола 0xFFFF). Осциллограмма логически делится на N сегментов по 0xFFFF 16-ти разрядных слов (Физически в памяти осциллограмма располагается непрерывно и никак не сегментируется). После установки номера считываемой осциллограммы чтение производится считыванием сегментов этой осциллограммы. Первые N-1 сегментов будут полными (0xFFFF слов), последний содержит “остаток” несчитанных данных. Количество сегментов и размер последнего блока рассчитывается исходя из общего объёма памяти занятой конкретной осциллограммой.
Размер заголовка в байтах (для Сириус-3) хранится в поле UVars.OSC_root.cfg_length (это значение не меняется в течение работы терминала, соответственно длина в регистрах будет [cfg_length]/2. Размер основных данных (состоящей из данных миллисекундных аналоговых и дискретных срезов) осциллограммы можно узнать из заголовка COMTRADE. Размер данных вычисляется, учитывая, что один срез данных занимает количество байт, определяемое значением регистра srez_size и это значение не меняется в течение работы терминала, соответственно длина в регистрах будет [srez_size]/2.
Таблица 13. Описание осциллограмм

7. ТЕЛЕУПРАВЛЕНИЕ

Команды телеуправления требуют предварительной процедуры записи пароля. Для отключения выключателя необходимо последовательно записать следующие регистры:
Glob_var.MB_otkl_comand1 = 0х1111
Glob_var.MB_otkl_comand2 = 0х2222
Glob_var.MB_otkl_comand3 = 0х3333
Для включения выключателя необходимо последовательно записать следующие регистры:
Glob_var.MB_vkl_comand1 = 0хAAAA
Glob_var.MB_vkl_comand2 = 0хBBBB
Glob_var.MB_vkl_comand3 = 0хCCCC
Таблица 14. Регистры телеуправления