Управление прибором реализовано с помощью следующих функций:
3 (0x03) — Read Holding Registers/ чтение нескольких регистров;
16 (0x10) — Write Multiple registers/ запись нескольких регистров;
17 (0x11) (report slave ID), чтение имени прибора и версии прошивки;
71 (0x47) (пользовательская функция), Команды работы с картой памяти.
На широковещательный адрес 0 и адреса большие 247 прибор реагировать не будет.
Время ожидания ответа на команду должно быть равно 1 секунде, плюс двойное время передачи данных, зависящее от скорости передачи данных в канале, и плюс двойное время задержки передачи данных в канале GSM при работе через модем (задается при настройке).
Время выполнения команды прибором может достигать 30 секунд (время удаления файла объемом 1 Гбайт равно 30 секундам). Если в течение 1 секунды прибор не успел выполнить команду, он возвращает ошибку с номером 7. На последующие команды до завершения выполнения текущей команды прибор отвечает ошибкой с номером 8 (занят) и кодом функции запущенной команды. Прервать выполнение длинной команды нельзя. После завершения выполнения команды прибор на любой запрос ответит результатом выполненной команды с кодом функции выполненной команды.
Если к прибору подключается «Конфигуратор МСД-200» по каналу USB, то на любые запросы «Конфигуратора МСД-200», подключенного к каналу RS-485, отправляется ошибка с номером 9.
Для функций 03 и 16 допускается запись или чтение регистров, относящихся только к одной команде. При попытке записать или прочитать регистры нескольких команд возвращается ошибка 3 (VALIDATA DATA VALUE). Исключение составляют команды группы чтения оперативных параметров прибора, которые могут быть все считаны одной командой. При этом начальный адрес регистра может быть любым в пределах адресов оперативных параметров (учитывать ограничение длины пакета 256 байт).
Для функции 03, при попытке прочитать регистры, предназначенные только для записи, или при попытке обращения к несуществующим регистрам возвращается ошибка 2 (ILLEGAL DATA ADDRESS).
Для функции 16, при попытке записать регистры, предназначенные только для чтения, или при попытке обращения к несуществующим регистрам возвращается ошибка 1 (ILLEGAL FUNCTION).
Используемый в приборе контроллер имеет особенность: в канале USB нельзя передавать и принимать пакеты кратные 64 байтам. Для решения этой проблемы предлагается передавать пакеты только нечетной длины при использовании USB. При передаче четной длины пакета в конце пакета (после CRC) нужно добавить дополнительный байт 0х00.
При приеме положение CRC определяют по содержимому пакета, а не как два последних байта.
Назначение регистров, используемых для функций 03 и 16:
Адрес | Функция | Длина параметров в байтах | Контрольная сумма |
12 | 0х47 | Длина параметров в байтах | ZZ |
Структура запроса и ответа для функции 17: функция позволяет получить имя прибора и версию программного обеспечения. В таблице представлен запрос на чтение имени и версии программного обеспечения прибора с адресом 12:
Адрес | Функция | Контрольная сумма |
12 | 17 | ZZ |
Ответ на функцию 17:
Адрес | Функция | Количество байт данных | Данные 13 байт | Контрольная сумма |
12 | 17 | 13 | MSD-200 VX.YY | ZZ |
Поля X и YY определяются предприятием-изготовителем.
Структура запроса и ответа для пользовательской функции 71 (0x47): функция 71 (0x47) используется для работы с картой памяти. Пример запроса функции 71 для устройства с сетевым адресом 12:
Адрес | Функция | Длина параметров в байтах | Контрольная сумма |
12 | 0х47 | Длина параметров в байтах | ZZ |
Ответ на функцию:
Адрес | Функция | Кол. байт данных | Контрольная сумма |
12 | 0х47 | Длина данных в байтах | ZZ |
Структура данных, возвращаемая на запрос xxxDir
§ struct DIR (выравнивание вструктуре 1 байт)
{
//счетчик элементов оглавления,
WORDuсhar CntItem.H uсhar
CntItem.L uсhar Attr // атрибут: бит 0 -только чтение
// бит 1 -скрытый
// бит 2 -системный
// бит 3 -метка тома
// бит 4 -папка
// бит 5 –архивный размер файла в байтах, DWORD (для папки недействительный)
uсhar FileSize_H
uсhar FileSize_M
uсhar FileSize_M
uсhar FileSize_L время последней модификации файла
uсhar Seconds ; //0…59
uсhar Minutes ; //0…23
uсhar Hours; //0…23
uсhar Day ; //1…31
uсhar Month ; //1…12
uсhar Year ; // (0…255) 2000…2255
годы уменьшенные на 2000 массив char с именем папки или файла
uсhar Name[]; //строка переменной длины с завершающим нулем
}; Структура данных функции 0х47
Структура данных функции 0х47
Описание | Код функции Modbus | Запрос /ответ | Данные |
|---|---|---|---|
FirstDir Чтение оглавления директории | 0x01 | Запрос | BYTE[] – массив char Полный путь к папке , например \ааа\ввв\ссс\*.* \0x00 Корневая директория \*.*0x00 |
Ответ | struct DIR При ошибке устанавливается 7 бит кода функции и возвращается 1 байт данных (номер ошибки). 4 – ошибка чтения оглавления 6 – SD карта пустая | ||
NextDir Чтение оглавления директории | 0x02 | Запрос | WORD16 - номер запрашиваемого элемента оглавления (1…) |
Ответ | struct DIR Элемент оглавления При ошибке устанавливается 7 бит кода функции и возвращается 1 байт данных (номер ошибки) 4 – ошибка чтения оглавления 6 – нет больше элементов оглавления | ||
ReadFileFirst Чтение файла | 0x03 | Запрос | DWORD32 – смещение от начала файла запрашиваемого блока в байтах. BYTE[] Полный путь к файлу (строка заканчивающаяся нулем), например \ааа\ввв\ссс.cvs \0
|
Ответ | DWORD32 – смещение от начала файла присланного блока в байтах. BYTE[] - принятый блок данных При ошибке устанавливается 7 бит кода функции и возвращается 1 байт данных (номер ошибки) 4 – ошибка 5 – нет данных для указанного смещения | ||
ReadFileNext Чтение файла | 0x04 | Запрос | DWORD32 – смещение от начала файла запрашиваемого блока в байтах. |
Ответ | DWORD32 – смещение от начала файла присланного блока в байтах. BYTE[] - принятый блок данных При ошибке устанавливается 7 бит кода функции и возвращается 1 байт данных (номер ошибки) 4 – ошибка 5 – нет данных для указанного смещения | ||
Delete Удаление файла или папки (папка должна быть пустая) | 0x05 | Запрос | Полный путь к файлу, например \ааа\ввв\ссс.cvs \0 – для файла Полный путь к папке, например \ааа\ввв\ \0 – для папки |
Ответ | BYTE – 0х00 Один байт равный нулю При ошибке устанавливается 7 бит кода функции и возвращается 1 байт данных (номер ошибки) 4 – ошибка удаления файла/папки | ||
GetStatusSD Запрос состояния карты памяти | 0x06 | Запрос | Данных нет (длина данных = 0) |
Ответ | BYTE - тип карты: Биты 0…3 0 – карта отсутствует; 1 – ММС; 2 – SD; 3 – SD.V2; 4 – SDHC. Бит 7: - карта памяти не имеет свободного места BYTE[8] - объем карточки в байтах, целое 64 бита, little-endian BYTE[8] - свободное место карточки в байтах, целое 64 бита, little-endian Младший значащий байт передается первым. При ошибке устанавливается 7 бит кода функции и возвращается 1 байт данных (номер ошибки) 4 – ошибка чтения состояния карты памяти |
Команды управления конфигурационными параметрами и чтения состояния прибора
Запись конфигурационных параметров выполняется с помощью функции 0x10 (Write Multiple registers), запись нескольких регистров.
Чтение конфигурационных параметров выполняется с помощью функции 0x03 (Read Holding Registers), чтение нескольких регистров.
Параметры команд управления конфигурационными параметрами
Команда | Адрес регистра | Данные записи | Данные чтения | Примечание |
|---|---|---|---|---|
Сетевые параметры канала конфигурирования (Запись/Чтение, количество регистров - 3) | ||||
1.Скорость 2.Адрес 3.Задержка ответа | 0x0000 0x0001 0x0002 | Word_16: Скорость обмена по умолчанию - 3 0 - 1,2 кБит/с; 1 - 2,4 кБит/с; 2 – 4,8 кБит/с; 3 – 9,6 кБит/с; 4 – 14,4 кБит/с; 5 – 19,2 кБит/с; 6 – 28,8 кБит/с; 7 – 38,4 кБит/с; 8 – 57,6 кБит/с; 9 – 115,2 кБит/с. Word_16:Адрес прибора по умолчанию–16(0х10) 1…247 Word_16: Задержка передачи квитанции. По умолчанию -1 0 … 50 мс. | Запись/Чтение | |
Ответ на команды изменения сетевых параметров канала конфигурирования передается со старыми настройками, далее работа продолжается с новыми настройками.
Описание обмена
Команда | Адрес регистра | Данные записи | Данные чтения | Примечание |
|---|---|---|---|---|
Общие параметры канала архивирования (Запись/Чтение, количество регистров - 13) | ||||
Скорость | 0x0040 | Word_16 : По умолчанию - 3 0 - 1,2 кБит/с; 1 - 2,4 кБит/с; 2 – 4,8 кБит/с; 3 – 9,6 кБит/с; 4 – 14,4 кБит/с; 5 – 19,2 кБит/с; 6 – 28,8 кБит/с; 7 – 38,4 кБит/с; 8 – 57,6 кБит/с; 9 – 115,2 кБит/с. | ||
Кол. стоп-бит | 0x0041 | Word_16 : По умолчанию - 0 0 – один; 1 – два. | ||
Паритет | 0x0042 | Word_16 : По умолчанию - 0 0 – контроля нет; 1 – четность; 2 – нечетность | ||
Адрес | 0x0043 | Word_16: По умолчанию – 16 (0х10) 1…247 | Для режима Slave протокола Modbus | |
Задержка ответа | 0x0044 | Word_16: По умолчанию -1 0 … 50 мс. | Для режима Slave протокола Modbus, для режима Master протоколов Modbus, Овен | |
Режим | 0x0045 | Word_16 : По умолчанию - 0 0 – Master; 1 – SPY; 2 – Slave; 3 – Slave Ext. | SPY – только для протокола Owen Slave - только для протокола Modbus Slave Ext - только для протокола Modbus | |
Период опроса | 0x0046 | Word_16: 1…0xffff По умолчанию – 1000 мс 2 … 65535 мс. | ||
Период архивирования | 0x0047 | Word_16: 0…0xffff По умолчанию – 10 с 1 … 65535 с. | ||
Поведение прибора при полном заполнении карты памяти | 0x0048 | Word_16 : По умолчанию - 0 0 – Остановка архивирования; 1 – Стирание самого старого файла и продолжение архивирования; | ||
Коррекция хода часов | 0x0049 | Int_16 По умолчанию - 0 - 10 000… +10 000 | От -10000 до +10000 с за 10 суток При превышении предела диапазона коррекции возвращается ошибка 90 | |
Переключение SPY → MASTER | 0x004A | Word_16 : 0 – отключено 1..65535 – таймаут отсутствия в сети мастера, c | После заданного таймаута МСД-200 меняет режим работы со SPY в Master | |
Цифровая подпись | 0x004B | Word_16 : 0 – отключена 1 - включена | ||
13. Запрет архивирования ошибок | 0x004C | Word_16 : 0 – все ошибки архивируются, 1...100 - число повторов последнего корректного значения | ||
Время, календарь (Запись/Чтение, количество регистров - 6) | ||||
Секунды | 0x0080…
0x0085 | Word_16 – секунды (0…59); По умолчанию – 0 | ||
Минуты | Word_16 – минуты (0…59); По умолчанию – 0 | |||
Часы | Word_16 – часы (0…23). По умолчанию – 0 | |||
Дата | Word_16 – число (1…31) По умолчанию – 1 | |||
Месяц | Word_16 – месяц (1…12); По умолчанию – 1 | |||
Год | Word_16 – год (2010…2100). По умолчанию – 2011 | |||
Ключ цифровой подписи (Запись, количество регистров - 8) | ||||
Ключ цифровой подписи | 0x00C0… 0x00C7 | Word_16[8] | Только запись | По умолчанию 0 Ключ длиной 128 бит |
Параметры индивидуальных параметров каналов архивирования:
Команда | Адрес регистра | Данные записи | Данные чтения | Примечание |
|---|---|---|---|---|
Индивидуальные параметры каналов архивирования (Запись/Чтение, кол-во регистров - 31) | ||||
Команды записи /чтения работают
с одним каналом! | ||||
Архивирование | 0x0100 + K * 64 | Word_16 : Бит 0 (Архивир.) : 0 – откл.; 1 – вкл. По умолчанию 0 Бит 1 (Статус): 0 – откл; 1 – вкл. По умолчанию 0 | ||
Имя канала | 0x0101... 0x0111 | char[32] По умолчанию: “Channel N» (N = “01”… “64”) Строка ASCII символов длиной 1…31 завершающаяся 0x00 после завершающего нуля может быть «мусор». | ||
Сетевой адрес | 0x0112 | Word_16 : По умолчанию 0x10 0…2039 для Овен пр длине адреса 11 бит 0…254 для Овен пр длине адреса 8 бит 1…247 для Modbus | ||
Максимальное время ожидания ответа на запрос | 0x0113 | Word_16 : 10…0xffff , мс По умолчанию 1000 мс | ||
Тип данных канала | 0x0114 | Word_16 : По умолчанию 0 Little-endian (младшие байты в младших адресах) 0, 1, 2, 3 0 – Int_16 1 – WORD_16 2 – LongInt_32 3 – DWORD_32 4 – Float_32 Big-endian (старшие байты в младших адресах) 3, 2, 1, 0 5 – Int_16 6 – WORD_16 7 – LongInt_32 8 – DWORD_32 9 – Float_32 Нестандартный порядок 1, 0, 3, 2 10 – LongInt_32 11 – DWORD_32 12 – Float_32 | ||
Количество знаков дробной части для формата Float, Word, Int | 0x0115 | Для формата Float :Word_16 : 0… 5 По умолчанию - 0 Для формата Int,Word: Word_16 : –5… 5 По умолчанию - 0 | ||
Аварийное архивирование | 0x0116 | Word_16 : 0 – отключено;1 – включено По умолчанию - 0 | ||
Порог архивирования | 0x0117... 0x0118 | Float_32: По умолчанию 0.0 0.0 – динамическое архивирование отключено При использовании, должен переводится в формат указанный в параметре Тип данных канала | ||
Номер функции для режимa Master. В режимах Slave и Slave Ext всегда 0x10 | 0x0119 | Word_16: По умолчанию 0 0 – функция 3 1 - функция 4 | Имеют смысл только для протокола Modbus | |
Адрес регистра | 0x011A | Word_16: 0…0xffff По умолчанию 0 | ||
Номер группы одновременного считывания нескольких каналов | 0x011B | Word_16: 0…0x20 По умолчанию 0 0 – отсутствие цепочки 1…32 – номер цепочки При наличии цепочки, каналы одной цепочки, если у них последовательные адреса регистров, запрашиваются одной командой | ||
Длина адреса | 0x011C | Word_16: 0 – 8 бит; 1 – 11 бит По умолчанию - 0 | ||
HASH | 0x011D | Word_16: 0…0xffff По умолчанию 0 | ||
Индекс | 0x011E | Word_16: 0…0xffff По умолчанию 0xffff (без индекса) | ||
Параметры конфигурационных параметров каналов измерения тока:
Команда | Адрес регистра | Данные записи | Данные чтения | Примечание |
|---|---|---|---|---|
Конфигурационные параметры каналов измерения тока(Запись/Чтение, количество регистров - 6* 4 = 24) | ||||
На все каналы одна команда записи или чтения | ||||
Диапазон | Начальный адрес блока 0x1100 1 к - 0x1100 - 0x1105 | Word_16: По умолчанию 0 0 – 4…20 мА; 1 – 0…20 мА; 2 – 0…5 мА; | ||
Фильтр | 2 к - 0x1106 - 0x110B | Word_16: 100 … 65535 мс По умолчанию 100 | ||
Минимум физической величины | 3 к - 0x110C - 0x1111 | Float_32 По умолчанию 0.0 | ||
Максимум физической величины | 4 к - 0x1112 - 0x1117 | Float_32 По умолчанию 100.0 | ||
Параметры команд чтения оперативных данных каналов архивирования:
Команда | Адрес регистра | Данные записи | Данные чтения | Примечание |
|---|---|---|---|---|
Команда чтения оперативных данных каналов архивирования (Чтение, количество регистров - 3 * 64 = 192). Допускается считывание одной командой от 1 до 40 каналов расположенных последовательно. | ||||
Настройки и состояние | Рассчитываются по формуле: 0x2000 + K* 3 — 0x20BF , где K– канал архивирования 0…63 | Нет | Word_16: Младший байт Биты 0…5 состояние канала: 0 – канал норма; 1 – канал отключен; 2 – таймаут канала 3 – перегрузка канала (для встроенных измерителей тока) 4 – обрыв (для встроенных измерителей тока 4…20 мА) 5 – код ошибки пришел по сети и указан в следующем байте Биты 6…7 формат: 0 – Int_16 1 – WORD_16 2 – LongInt_32 3 – DWORD_32 4 – Float_32 Старший байт: код ошибки принятый по сети Float32/DWORD – результат измерения (при ошибках «мусор»). Для коротких форматов старшие биты обнуляются. | |
Результат измерения | ||||
Команда чтения оперативного состояния прибора | ||||
Причина последнего старта программы прибора | 0x20С0 | Нет | Word_16: бит0 – аппаратный сброс; бит1 – сброс по включению питания; бит2 – программный сброс; бит3 – независимый сторожевой таймер; бит4 – window сторожевой таймер; бит5 – сброс по снижению питания; | |
Код последней сетевой ошибки | 0x20C1 | Word_16: 0…255 После включения прибора - 0 | ||
Сигнатура памяти программ | 0x20C2-0x20D1 | WORD[16] | ||
Флаги статуса прибора | 0x20D2 | Word_16: бит 0 –Kонф. парам. установлены по умолчанию бит 1 – Отказ FLASH конфигурационных параметров бит 2 - состояние переключателя Арх. бит 3 - Потеря данных архивирования
бит 15 – нет карты памяти | ||
Параметры команды чтения оперативных данных каналов измерения тока:
Команда | Адрес регистра | Данные записи | Данные чтения | Примечание |
|---|---|---|---|---|
Команда чтения оперативных данных каналов измерения тока (Чтение, количество регистров 8). Технологическая команда (в конфигураторе не нужна) | ||||
Значение | 0x3000- 0х3007 | Нет | Float[4]: | |
Параметры команды юстировки каналов измерения тока:
Команда | Адрес регистра | Данные записи | Данные чтения | Примечание |
|---|---|---|---|---|
Команда юстировки каналов измерения тока (Чтение, количество регистров 5). Технологическая команда (в конфигураторе нужна) | ||||
Значение | 0x3010 | Нет | WORD: 0 – ОК; 1 – ErrRMS 2 - ErrValue 3 - ErrFlash 4 - Таймаут float – RMS float – Value | |