| 1 | |
| 2 | == Протокол обмена данными c UPS-1200 == |
| 3 | |
| 4 | === 1. Формат пакета === |
| 5 | |
| 6 | |FLAG | ADDR | CMND | DATA | CSUM | FLAG | |
| 7 | |
| 8 | Рис 1. |
| 9 | |
| 10 | - Поле FLAG имеет размер 1 байт, предназначено для определения приемником границ пакета, значение поля фиксированное $7E. Флаги могут постоянно передаваться в сети между пакетами. Если сетевой элемент обнаруживает байт, не являющийся флагом, он тем самым уведомляется о начале пакета. При обнаружении следующего флага, элемент будет знать, что поступил полный пакет. |
| 11 | - Поле ADDR имеет размер 1 байт, предназначено для передачи адресной информации и трактуется по-разному в зависимости от направления движения пакета. Для пакета исходящего от сетевого модуля ADDR=0. Для пакета исходящего из UPS-1200 ADDR=0x7F. |
| 12 | - Поле CMND имеет размер 1 байт, предназначено для кодирования команд или ответов. Значения $00-$7F кодируют команды, значения $80-$FF - ответы. Кодировка команд и ответов приведена ниже. |
| 13 | - Поле DATA может быть размером 0-74 байт, содержимое зависит от значения поля CMND (см. п. 5). |
| 14 | - Поле CSUM имеет размер 1 байт, предназначено для контроля полей ADDR, CMND и DATA. Вычисляется как ИСКЛЮЧАЮЩЕЕ ИЛИ всех байтов в контролируемых полях. |
| 15 | |
| 16 | === 2. Кодирование === |
| 17 | Для предотвращения ложного распознавания границ пакета, все передаваемые данные, кроме полей FLAG, должны подвергаться следующей процедуре: |
| 18 | - если значение байта данных есть $7E, то он заменяется двумя байтами $7D и $5E; |
| 19 | - если значение байта данных есть $7D, то он заменяется двумя байтами $7D и $5D. |
| 20 | Все размеры полей приведены без учета описанных выше замен. |
| 21 | После распознавания пакета производится: |
| 22 | 1. обратная замена байтов. Если длина пакета после замены больше 77 байт, пакет не обрабатывается; |
| 23 | 2. проверка контрольной суммы пакета. Если контрольная сумма не совпадает, то пакет не обрабатывается; |
| 24 | 3. проверка поля адреса, как описано в п.2. и п.3.2.; |
| 25 | 4. обработка команды, если пакет адресован данному сетевому элементу. Если код команды не известен сетевому элементу, пакет не обрабатывается; |
| 26 | 5. посылается ответ. |
| 27 | |
| 28 | Команды запроса состояния сетевого элемента посылаются периодически, поэтому единичная потеря ответа на эти команды допустима (произойдет задержка отображения состояния). |