Формат ответного пакета зонда ЗГП

advertisement
Формат ответного пакета зонда ЗГП-2004
0xAA
0x55
HB1
HB0
DH2
DM2
DL2
CRC8H
DH1
DM1
DL1
DH0
DM0
DL0
CRC8L
7
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
6
0
1
TO_ADC
CRC8H_7
DH2_6
DM2_6
DL2_6
CRC8H_6
DH1_6
DM1_6
DL1_6
DH0_6
DM0_6
DL0_6
CRC8L_6
Таблица 1
5
1
0
0
CRC8L_7
DH2_5
DM2_5
DL2_5
CRC8H_5
DH1_5
DM1_5
DL1_5
DH0_5
DM0_5
DL0_5
CRC8L_5
4
0
1
0
DM1_7
DH2_4
DM2_4
DL2_4
CRC8H_4
DH1_4
DM1_4
DL1_4
DH0_4
DM0_4
DL0_4
CRC8L_4
3
1
0
DH2_7
DL1_7
DH2_3
DM2_3
DL2_3
CRC8H_3
DH1_3
DM1_3
DL1_3
DH0_3
DM0_3
DL0_3
CRC8L_3
2
0
1
DM2_7
DH0_7
DH2_2
DM2_2
DL2_2
CRC8H_2
DH1_2
DM1_2
DL1_2
DH0_2
DM0_2
DL0_2
CRC8L_2
1
1
0
DL2_7
DM0_7
DH2_1
DM2_1
DL2_1
CRC8H_1
DH1_1
DM1_1
DL1_1
DH0_1
DM0_1
DL0_1
CRC8L_1
TO_ADC – ошибка таймаута АЦП (предыдущий пакет данных потерян),
0xAA(H) = 170(D) – первый байт преамбулы пакета,
0xAA(H) = 85(D) – второй байт преамбулы пакета,
HBx – старшие разряды байтов пакета,
DHn – данные канала n (прямой двоичный формат с весовым значением младшего разряда 2.9810-7 В), старший байт,
DMn - данные канала n (прямой двоичный формат с весовым значением младшего разряда 2.9810-7 В), средний байт,
DLn - данные канала n (прямой двоичный формат с весовым значением младшего разряда 2.9810-7 В), младший байт,
CRC8H – контрольный избыточный код передачи для байтов с 0xAA по DL2,
CRC8L – контрольный избыточный код передачи для байтов с DH1 по DL0,
1 – лог. “1”,
0 – лог. “0”,
xxxxx_m – (m=0…7) – номер разряда кода в прямом двоичном представлении.
0
0
1
DH1_7
DL0_7
DH2_0
DM2_0
DL2_0
CRC8H_0
DH1_0
DM1_0
DL1_0
DH0_0
DM0_0
DL0_0
CRC8L_0
Формат пакета команды зонда ЗГП-2004
CMD
CMDCRC
7
CMD_7
CMDCRC_7
6
CMD_6
CMDCRC_6
Таблица 2
5
CMD_5
CMDCRC_5
4
CMD_4
CMDCRC_4
3
CMD_3
CMDCRC_3
2
CMD_2
CMDCRC_2
1
CMD_1
CMDCRC_1
0
CMD_0
CMDCRC_0
CMD – код команды (один из [0x74, 0x72, 0x65]),
CMDCRC - контрольный избыточный код команды (CMD+<фантом(7 байт 0xFF)>),
xxxxx_m – (m=0…7) – номер разряда кода в прямом двоичном представлении.
Полный пакет команды зонда ЗГП-2004
CMD
PHANTOM5
PHANTOM4
PHANTOM3
PHANTOM2
PHANTOM1
PHANTOM0
CMDCRC
7
CMD_7
1
1
1
1
1
1
CMDCRC_7
6
CMD_6
1
1
1
1
1
1
CMDCRC_6
Таблица 3
5
CMD_5
1
1
1
1
1
1
CMDCRC_5
4
CMD_4
1
1
1
1
1
1
CMDCRC_4
3
CMD_3
1
1
1
1
1
1
CMDCRC_3
2
CMD_2
1
1
1
1
1
1
CMDCRC_2
1
CMD_1
1
1
1
1
1
1
CMDCRC_1
0
CMD_0
1
1
1
1
1
1
CMDCRC_0
Вычисление CMDCRC осуществляется с байта CMD до байта PHANTOM0 включительно. Байты PHANTOM0 – PHANTOM5 передаче
на зонд не подлежат.
Протокол обмена между зондом ЗГП-2004 и ПЭВМ.
1. Параметры интерфейса
Связь между контроллером зонда и ПЭВМ осуществляется по протоколу
последовательного интерфейса RS-485.
Скорость передачи – 57600 Бод.
Длина информационного слова – 8 бит.
Количество стоп-бит – 1.
Контроль на чётность - отсутствует.
Циклический избыточный контроль – присутствует.
Формат пакетов команд – 2 байта, двоичный.
Формат пакетов ответа – 15 байт, двоичный с перемежением разрядов.
Тип пакетов команд – однократный.
Тип пакетов ответа – поток.
2. Порядок обмена.
ПЭВМ передаёт контроллеру зонда пакет команды, содержащий одну из трёх
команд:
- t (0x74) – запрос идентификационной строки контроллера.
- r (0x72) – рабочий режим опроса аналого-цифрового преобразователя (АЦП).
- e (0x65) – режим функционального контроля (ФК) АЦП
Формат пакета команды должен соответствовать приведённому в табл.2.
Вычисление избыточного кода контроля производится согласно алгоритму,
приведённому в Приложении 1. При вычислении кода контроля двух байтов для
получения корректного значения кода на фиксированной блоковой длине,
равной 7 байтам вводится дополнительный блок информации, не подлежащий
передаче по каналу связи (фантом). Для пакета команды он составляет 6 байт,
содержащих код 0xFF. Полученное вычислением значение заносится в байт
CMDCRC (табл. 2), и совместно с командой передаётся в двух байтах
контроллеру зонда.
2.1 При получении команды и совпадении кода контроля, вычисляемого по
аналогичному алгоритму контроллером, происходит её исполнение. Получение
команды “t” приведёт к передаче на ПЭВМ идентификационной строки зонда,
содержащей имя прибора и краткую характеристику АЦП. Строка состоит из
ASCII – символов и не снабжена кодом контроля. Для зонда ЗГП-2004 она
имеет вид:
ZHP-2004 v1.0 VrefADC=2.5V; Fdiskr=50Hz; N=24; K=3.
2.2 Исполнение команды “r” приводит к переключению интерфейса в режим
потокового обмена. Информация из зонда с периодом опроса 20 мс (50 Гц),
синхронизированная по всем трём каналам измерения упаковывается в пакеты,
формат которых приведён в табл. 1 и передаётся на ПЭВМ, где происходит их
декодирование и последующие вычисления гидрофизических величин при
помощи градуировочных формул. Пакеты снабжены избыточным кодом
контроля (2 байта) для двух половин пакета. Вычисление избыточности
происходит по алгоритму, аналогичному использованному при приёме
команды. Особенность декодирования заключается во введении после приема
14 байта пакета (по счёту от первого байта преамбулы перед вычислением
значения байта CRC8L) фантома, содержащего один байт с кодом 0xFF.
Невыполнение этого условия приведёт к несовпадению кода контроля CRC8L.
Преамбула служит для определения начала пакета и защиты циклического кода
контроля от данных, содержащих нулевые значения.
2.3 Команда “e” служит для контроля функционирования АЦП и канала связи.
При её исполнении и нормальной работе аппаратуры аналого-цифрового канала
обработки данных должно регистрироваться значение преобразованного
сигнала амплитудой 2.50.001 В и периодом 0.50.05 Гц прямоугольной формы.
Передача данных осуществляется в потоковом режиме аналогично работе
команды “r”.
2.4 Для остановки действия команд “r” и “e” ПЭВМ должна осуществлять
выдачу команды “t” до момента регистрации в приёмном буфере
идентификационной строки зонда согласно п. 2.1. Поток при этом будет
остановлен.
Приложение 1
Генерация избыточного циклического кода контроля
Защита командных последовательностей избыточным кодом контроля
необходима для уменьшения вероятности приёма ложной команды вследствии
действия помех в канале связи и возможности непреднамеренного изменения
задаваемых временных параметров контроллеров.
Генератор 8-разрядных циклических контрольных кодов на основе многочлена
Хэмминга X8+X5+X4+1 рекомендован международными стандартами ISO, IEEE
и CCITT для организации обмена последовательностями данных длиной до 64
разрядов по последовательным каналам связи в условиях повышенного уровня
импульсных помех. Код позволяет выявлять следующие дефекты потока:
1) Любое нечётное число ошибок в пределах 64-разрядного «окна»,
2) Все двойные ошибки в пределах 64-разрядного «окна»,
3) Любую пачку ошибок (1-8 искажений) в пределах 8-разрядного «окна».
Разряды генератора вычисляются по рекурсивной схеме на основе следующих
зависимостей:
b0  b7  I ;
b4  b0  b3;
b5  b0  b4;
b4  (b7  I )  b3  ((b7  I )  (b7  I ))  b3  (((b7  I )  (b7  I ))  b3)  (((b7  I )  (b7  I ))  b3) 
(((b7  I )  (b7  I ))  b3)  (((b7  I )  (b7  I ))  b3)  (((b7  I )  (b7  I )  b3 
 (((b7  I )  (b7  I ))  b3)  b7  b3  I  b7  b3  I  b7  b3  I  b7  b3  I ;
b5  b7  I  b3  b7  b3  I  b7  I  b3  b7  I  b3,
где I – очередной разряд входного потока в данный момент времени, b0 – b7 –
состояния внутренних разрядов генератора.
Генератор может быть представлен блок-схемой (рис. 1).
X0
X1
X2
X3
X4
X5
X6
X7
I
Рис. 1
Алгоритм работы генератора может быть представлена в виде графа (рис. 2)
X8
Ï ðî âåðêà âõî äí î ãî áèò à
0
1
0
CRC 80h
1
1
1
(CRC 18h) è
ñäâèã âëåâî
(CRC 80h) 80h
2
1
0
3
5
0
4
0
6
Ñäâèã âëåâî
7
Í î âî å
çí à÷åí èå
CRC
Рис. 2
Существуют два метода нахождения значения избыточного циклического кода
контроля: вычислительный и табличный. Первый характеризуется малым
занимаемым объёмом памяти, и потому применяется в контроллере. Его
недостатком является неоптимальность по времени исполнения. Второй имеет
лучший показатель быстродействия, но требует больший объём памяти для
хранения заранее вычисленной таблицы значений.
Download