Version 30 (modified by 6 years ago) ( diff ) | ,
---|
Протокол обмена данными с устройствами MC04
1. Формат пакета
|FLAG | ADDR | CMND | DATA | CSUM | FLAG |
- Поле FLAG имеет размер 1 байт, предназначено для определения приемником границ пакета, значение поля фиксированное 0x7E. Флаги могут постоянно передаваться в сети между пакетами. Если сетевой элемент обнаруживает байт, не являющийся флагом, он тем самым уведомляется о начале пакета. При обнаружении следующего флага, элемент будет знать, что поступил полный пакет.
- Поле ADDR имеет размер 1 байт, предназначено для передачи адресной информации и трактуется по-разному в зависимости от направления движения пакета. Для пакета исходящего от сетевого модуля ADDR=0. Для пакета исходящего из MC04 ADDR=0x7F.
- Поле CMND имеет размер 1 байт, предназначено для кодирования команд или ответов. Значения 0x00-0x7F кодируют команды, значения 0x80-0xFF - ответы. Кодировка поддерживаемых команд и ответов приведена ниже.
- Поле DATA может быть размером 0-74 байт, содержимое зависит от значения поля CMND
- Поле CSUM имеет размер 1 байт, предназначено для контроля полей ADDR, CMND и DATA. Вычисляется как ИСКЛЮЧАЮЩЕЕ ИЛИ всех байтов в контролируемых полях.
2. Кодирование
Для предотвращения ложного распознавания границ пакета, все передаваемые данные, кроме полей FLAG, должны подвергаться следующей процедуре:
- если значение байта данных есть 0x7E, то он заменяется двумя байтами 0x7D и 0x5E;
- если значение байта данных есть 0x7D, то он заменяется двумя байтами 0x7D и 0x5D.
Все размеры полей приведены без учета описанных выше замен. После распознавания пакета производится:
- обратная замена байтов. Если длина пакета после замены больше 77 байт, пакет не обрабатывается;
- проверка контрольной суммы пакета. Если контрольная сумма не совпадает, то пакет не обрабатывается;
- проверка поля адреса
- обработка команды, если адрес совпадает. Если код команды не известен устройству MC04, пакет не обрабатывается;
- посылается ответ.
Команды запроса состояния устройств MC04 посылаются периодически, поэтому единичная потеря ответа на эти команды допустима (произойдет задержка отображения состояния).
3. Команды
Команды мониторинга(запрос на чтение данных)
- CMND = 0x00 (ответ 0x80) - основная команда, в ответе передаются основные параметры устройства MC04. Формат команды: "7E 00 00 00 7E".
- CMND = 0x01 (ответ 0x81) - опрос составных частей(модулей, плат, портов) устройств MC04. Формат команды: "7E 00 01 NUM CSUM 7E". В байте NUM команды передаётся номер модуля(порта или платы), в зависимости от значения которого команда имеет разное назначение и ответ.
Конфигурационные команды(чтение/запись параметров конфигурации в ПЗУ устройства)
- CMND = 0x07 (ответ 0x87) - чтение байта данных конфигурации. Формат команды: "7E 00 07 ADRLO ADRHI CSUM 7E". ADRLO - младший байт адреса байта, ADRHI - старший байт адреса. Ответ на команду "7E 7F 87 ADRLO ADRHI BYTE CSUM 7E", BYTE - прочитанный байт данных.
- CMND = 0x08 (ответ 0x88) - запись байта данных конфигурации. Формат команды: "7E 00 08 ADRLO ADRHI BYTE CSUM 7E", BYTE - записываемый байт данных. Ответ на команду "7E 7F 88 ADRLO ADRHI BYTE CSUM 7E", BYTE - записанный байт данных.
- CMND = 0x11 (ответ 0x91) - чтение 32 байта данных конфигурации. Формат команды: "7E 00 11 ADRLO ADRHI CSUM 7E", ADRLO - младший байт начального адреса, ADRHI - старший байт начального адреса. Ответ на команду "7E 7F 91 ADRLO ADRHI <BYTE32> СS CSUM 7E", BYTE - прочитанный байт данных, <BYTE32> - прочитанные 32 байта данных, CS- контрольная сумма для поля <BYTE32> (алгебраическая сумма всей байт по модулю $FF с переполнением).
- CMND = 0x12 (ответ 0x92) - запись 32 байта данных конфигурации. Формат команды: "7E 00 12 ADRLO ADRHI <BYTE32> CS CSUM 7E", <BYTE32> - записываемые 32 байта данных, CS- контрольная сумма для поля <BYTE32> (алгебраическая сумма всей байт по модулю $FF с переполнением). Ответ на команду "7E 7F 92 ADRLO ADRHI CS CSUM 7E", CS- контрольная сумма для записанных 32 байт(алгебраическая сумма всей байт по модулю $FF с переполнением).
Перезапуск
- CMND = 0x09 (ответа на команду нет) - перезапуск устройства MC04. Формат команды: "7E 00 09 AA BB CC CSUM 7E".
Note:
See TracWiki
for help on using the wiki.