Команда 0x10. Установить значение регистров настроек.
Команда 0x10 служит для установки значений регистров настроек.
Регистры настройки SLAVE могут иметь статус “только чтение”, при попытке установить в них новое значение остаются без изменений.
ЗАПРОС определяет адрес SLAVE, начальный адрес, число регистров настроек, поле регистров настроек и число байт в поле регистров настроек.
Адреса регистров настроек приведены в приложении А (таблица А1).
На рисунке 7 приведен пример ЗАПРОСА на установку значений регистров настроек 2-4 “ SLAVE ” c адресом 17 (0x11).
ЗАПРОС | |
Название поля | |
Адрес SLAVE | 0x11 |
Код команды | 0x10 |
Начальный адрес HI | 0x00 |
LO | 0x01 |
Число регистров HO | 0x00 |
LO | 0x03 |
Число байт | 0x06 |
Регистр настройки 02h HI | 0x00 |
LO | 0x0А |
Регистр настройки 03h HI | 0x00 |
LO | 0x0B |
Регистр настройки 04h HI | 0x00 |
LO | 0x0C |
КС | -- |
Рисунок 7- Структура ЗАПРОСА команды 0x10.
ОТВЕТ cодержит адрес SLAVE, код команды, начальный адрес и число регистров в поле регистров настроек. На рисунке 8 приведен пример ОТВЕТА на ЗАПРОС.
ОТВЕТ | |
Название поля | |
Адрес slave | 11h |
Код команды | 10h |
Начальный адрес HI | 00h |
LO | 01h |
Число регистров HI | 00h |
LO | 03h |
КС | -- |
Рисунок 8 – Структура ОТВЕТА команды 10h.
Данный протокол поддерживает операции чтения / записи переменных следующих форматов:
- float – формат с плавающей запятой, длина 4 байта;
- int – целое число, длина 2 байта;
- byte – число, длиной 1 байт.
Пример чтения / записи float -числа -12.5, расположенного по адресам 0x31 - 0x32 регистров настроек:
Регистр: | 0х32 (LO) | 0х32 (HI) | 0х31 (LO) | 0х31 (HI) |
Адрес: | +3 | +2 | +1 | +0 |
Формат: | SEEEEEEE | EMMMMMMM | MMMMMMMM | MMMMMMMM |
Двоичный вид: | 11000001 | 01001000 | 00000000 | 00000000 |
Hex вид: | C1h | 48h | 00h | 00h |
S – Бит знака числа с плавающей точкой:
1 – отрицательное число, 0 – положительное число;
E – Показатель экспоненты числа с плавающей точкой;
M – Показатель мантиссы числа с плавающей точкой;
- Читаем / записываем 2 регистра, начиная с адреса 0х31 (HI).
- Полученное значение: 0xC1480000.
- Показатель мантиссы числа 10000010 = 130dec. Вычитанием 127 из этого числа получаем реальное значение экспоненты: 3.
- Мантисса представлена следующим двоичным числом: 10010000000000000000000.
- Дописываем 1 слева от мантиссы, отделяя ee десятичной точкой: 1.10010000000000000000000.
- Сдвигаем десятичную точку на значение экспоненты (вправо, если значение положительное, иначе влево). В результате получаем двоичное представление числа с плавающей точкой: 1100.10000000000000000000.
- Переводим целую и дробную часть в десятичный вид, учитывая знак числа. Получаем число с плавающей точкой: 0xC1480000= -12.5.
3.1.2 Тип int
Пример считывания переменной, расположенной по адресу 0x26, имеющей тип Int:
а) читаем один регистр по адресу 0x26.
б)считанное значение 0х3Е7 = 999.
Регистр: | 0x26 (LO) | 0x26 (HI) |
Адрес: | +1 | +0 |
Двоичный вид: | 11101110 | 00101010 |
Hex вид: | 0х03 | 0хЕ7 |
3.1.3 Тип byte
Пример считывания переменной, расположенной по адресу 0х24, имеющей тип Byte:
Регистр: | 0х24 (HI) | 0х24 (LO) |
Адрес: | +1 | +0 |
Двоичный вид: | 01000100 | 00110011 |
Hex вид: | 0x44 | 0xFF |
Читаем один регистр по адресу 0х24. Значение переменной, согласно протоколу, находится в старшем разряде считанного слова - 0x44.
Данные процесса измерения периодически записываются в энерго-независимую память (Flash) – архив. Период записи данных в секундах определяется содержимым регистра 0х33 (смотри - таблицу А1). Длина архива составляет 2097153 байта, что соответствует 190650 записям. Длина одной записи – 11 байт (таблица 2).
Таблица 2
0 | 1 | 2 | 3 | 4 | 5 | 6 7 8 9 | 10 |
час | мин | с | дата | месяц | год | Flot - данные | Регистр состояния реле |
младший байт | старший байт |
Архив организован по кольцевому принципу. Это означает, что в случае его заполнения новая (последняя) запись будет размещена на месте старой, начиная с первой записи. Распределение номеров байт записи по адресам регистров рассмотрены на примере группы регистров данных
0x10 - 0x15 «Получить последнюю запись архива» (см. таблицу A2).
0x10 - HI | 0x10 - LO | 0x11 - HI | 0x11 - LO | 0x12 - HI | 0x12 - LO |
час | мин | с | дата | месяц | год |
0x13 – HI 0x13 – LO 0x14 – HI 0x14 - LO | 0x15 - HI | 0x15 - LO |
данные float* | Регистр состояния реле | резерв |
* - в случае ситуации обрыва датчика в поле «данные» записывается число 1010. При этом факт самого первого обнаружения обрыва фикси-руется в архиве, независимо от значения периода записи.
В случае копирования архива на SD-карту создается файл с уникальным именем и расширением ARH. Имя файла содержит информацию о дате и времени его создания. Например, файл “14111351.ARH” означает, что копирование архива производилось 14 ноября в 13 час, 51 мин.
Вся информация записывается в файл в двоичном виде и представляет собой последовательность 11-байтных записей (смотри - таблицу 2). Все записи в файле расположены в строгой хронологической последовательности.
3.2 Структура программ регулирования
Программа регулирования позволяет реализовать программный режим управления объектом. В энергонезависимой памяти прибора хранится четыре программы. Количество циклов перепрограммирования не ограничено.
Каждая программа регулирования состоит из шагов, максимальное количество которых не должно превышать 32. Данные о шагах последовательно размещаются в регистрах 4-х программ регулирования, начиная с адреса 0x52 (см. таблицу А1).
Структура программы регулирования имеет следующий вид:
1 байт | 7 байт | 7 байт | 7 байт | 1 байт | 1 байт |
Масштаб | Шаг 1 | Шаг 2 | … Шаг 32 | Программа перехода | шаг перехода |
Масштаб – параметр, определяющий временной масштаб каждого шага программы и принимающий значения: 0 – час:мин. 1 – м ин:сек.
Один шаг программы содержит информацию о значениях параметра регулирования, времени и типе шага. Ниже приведена структура одного шага.
Программа перехода – номер программы (0 - 3), на которую осуществляется переход.
Шаг перехода – номер шага (0 - 31) программы, на который осуществляется переход.
Структура шага программы:
1 байт | 1 байт | 4 байта | 1 байт |
Час(мин) | Мин (с) | данные | Р егистр шага |
Время (2 байта) – длительность текущего шага программы. В зависимости от выбранного масштаба может принимать значения: час:мин или мин:с.
Данные – значение параметра во float- формате в конечной точке шага.
Регистр шага – определяет тип шага и логику перехода на следующий шаг. Описание регистра шага приведено в таблице 3.
Таблица 3