Changes between Version 4 and Version 5 of AdcProtocol


Ignore:
Timestamp:
Apr 22, 2019, 6:59:32 PM (6 years ago)
Author:
san
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdcProtocol

    v4 v5  
    88Рис 1.
    99
    10 - Поле FLAG имеет размер 1 байт, предназначено для определения приемником границ пакета, значение поля фиксированное $7E. Флаги могут постоянно передаваться в сети между пакетами. Если сетевой элемент обнаруживает байт, не являющийся флагом, он тем самым уведомляется о начале пакета. При обнаружении следующего флага, элемент будет знать, что поступил полный пакет.
     10- Поле FLAG имеет размер 1 байт, предназначено для определения приемником границ пакета, значение поля фиксированное 0x7E. Флаги могут постоянно передаваться в сети между пакетами. Если сетевой элемент обнаруживает байт, не являющийся флагом, он тем самым уведомляется о начале пакета. При обнаружении следующего флага, элемент будет знать, что поступил полный пакет.
    1111- Поле ADDR имеет размер 1 байт, предназначено для передачи адресной информации и трактуется по-разному в зависимости от направления движения пакета. Для пакета исходящего от сетевого модуля ADDR=0. Для пакета исходящего из UPS-1200 ADDR=0x7F.
    12 - Поле CMND имеет размер 1 байт, предназначено для кодирования команд или ответов. Значения $00-$7F кодируют команды, значения $80-$FF - ответы. Кодировка команд и ответов приведена ниже.
    13 - Поле DATA может быть размером 0-74 байт, содержимое зависит от значения поля CMND (см. п. 5).
     12- Поле CMND имеет размер 1 байт, предназначено для кодирования команд или ответов. Значения 0x00-0x7F кодируют команды, значения 0x80-0xFF - ответы. Кодировка поддерживаемых команд и ответов приведена ниже.
     13- Поле DATA может быть размером 0-74 байт, содержимое зависит от значения поля CMND
    1414- Поле CSUM имеет размер 1 байт, предназначено для контроля полей ADDR, CMND и DATA. Вычисляется как ИСКЛЮЧАЮЩЕЕ ИЛИ всех байтов в контролируемых полях.
    1515
    1616=== 2. Кодирование ===
    1717Для предотвращения ложного распознавания границ пакета, все передаваемые данные, кроме полей FLAG, должны подвергаться следующей процедуре:
    18 - если значение байта данных есть $7E, то он заменяется двумя байтами $7D и $5E;
    19 - если значение байта данных есть $7D, то он заменяется двумя байтами $7D и $5D.
     18- если значение байта данных есть 0x7E, то он заменяется двумя байтами 0x7D и 0x5E;
     19- если значение байта данных есть 0x7D, то он заменяется двумя байтами 0x7D и 0x5D.
    2020Все размеры полей приведены без учета описанных выше замен.
    2121После распознавания пакета производится: