4. Структура пакета
4.1. В общем случае передаваемый пакет представляет собой последовательность байтов и имеет следующий вид:
NA, A, L1, L2, K, Z, R, D1...DN, KS
- Где: NA - адрес группы;
- A - адрес устройства в группе;
- L1, L2 - длина пакета;
- K - код типа пакета (команда);
- Z - код группы параметров;
- R - код параметра в группе;
- D1...DN - данные;
- KS - контрольная сумма.
Заголовок пакета, состоящий из адреса группы, адреса устройства в группе, длины пакета, команды, кода группы параметров и кода параметра, является обязательным, поле данных может отсутствовать, контрольная сумма также является обязательным параметром.
4.2. Адрес группы (NA) предназначен для подключения локальной СПД к сетям более высокого уровня, для связи с отдельным устройством внутри локальной СПД адрес группы должен равняться нулю.
Адрес устройства (A) или сетевой номер предназначен для идентификации в составе СПД и должен быть уникален для каждого устройства, подключенного к СПД. В ЭВМ сетевой номер устанавливается записью соответствующего числа в регистр функции R9049.
4.3. Длина пакета (L1, L2) может принимать значения от 4 до 65535. В поле учитывается длина полей K, Z, R, D1...DN и KS. Общая длина пакета, с учетом NA, A, L1 и L2, составляет величину 256*L2+L1+4.
В ЭВМ общая длина пакета ограничена величиной 255, то есть параметр L2 всегда равен 0, параметр L1 может принимать значения от 4 до 251.
4.4. Код команды K определяет назначение пакета. Используемые значения приведены в таблице 1.
Таблица 1
Код типа |
Назначение |
Устройство, формирующее пакет |
HEX |
DEC |
10h |
16 |
Запрос данных |
Ведущее |
20h |
32 |
Передача данных |
Подчиненное |
30h |
48 |
Запись данных |
Ведущее |
40h |
64 |
Подтверждение о приеме или сообщение об ошибке |
Подчиненное |
4.5. Код группы параметров (Z) и код параметра (R) определяют назначение и формат данных в пакете. Используемые сочетания значений кодов (спецификация кодов) для ЭВМ приведены в таблице 2.
Таблица 2
Номер |
Z HEX(DEC) |
R HEX(DEC) |
Формат данных |
Длина данных, байт |
Доступность |
Описание параметра |
1. Идентификационная информация |
1.1 |
0h (0) |
0h (0) |
S |
5 |
Запрос |
Краткое название ЭВМ |
1.2 |
0h (0) |
1h (1) |
S |
51 |
Запрос |
Полное название ЭВМ |
1.3 |
1h (1) |
0h (0) |
S |
6 |
Запрос |
Дата последней модификации программы |
1.4 |
1h (1) |
1h (1) |
S |
24 |
Запрос |
Версия программы и дата последней модификации |
1.5 |
2h (2) |
0h (0) |
S |
6 |
Запрос |
Краткое наименование предприятия-изготовителя |
1.6 |
2h (2) |
1h (1) |
S |
84 |
Запрос |
Полное наименование предприятия-изготовителя |
2. Память программ |
2.1 |
80h (128) |
0h (0) |
B |
2 |
Запись/запрос |
Установить/считать текущий адрес памяти программ (от 0 до 9999) |
2.2 |
80h (128) |
1h (1) |
B |
1 |
Запись/запрос |
Установить/считать текущий номер страницы памяти программ (от 0 до 99) |
2.3 |
80h (128) |
10h (16) |
B |
1 |
Запись/запрос |
Записать/считать один байт программы по установленному адресу из ОЗУ памяти программ |
2.4 |
80h (128) |
11h (17) |
B |
100 |
Запись/запрос |
Записать/считать страницу памяти программ из ОЗУ памяти программ |
2.5 |
80h (128) |
80h (128) |
- |
0 |
Запись |
Восстановить ОЗУ памяти программ из ЭСППЗУ |
2.6 |
80h (128) |
81h (129) |
- |
0 |
Запись |
Сохранить содержимое ОЗУ памяти программ в ЭСППЗУ |
3. Десятичные данные |
3.1 |
81h (129) |
0h (0) |
B |
2 |
Запись/запрос |
Установить/считать текущий номер регистра десятичных данных (от 0 до 999) |
3.2 |
81h (129) |
1h (1) |
B |
1 |
Запись/запрос |
Установить/считать текущий номер блока десятичных данных (от 0 до 124) |
3.3 |
81h (129) |
10h (16) |
B |
8 |
Запись/запрос |
Записать/считать десятичное число из ОЗУ памяти десятичных данных |
3.4 |
81h (129) |
11h (17) |
B |
64 |
Запись/запрос |
Записать/считать блок десятичных чисел (8 чисел) из ОЗУ памяти десятичных данных |
3.5 |
81h (129) |
80h (128) |
- |
0 |
Запись |
Восстановить ОЗУ памяти десятичных данных из ЭСППЗУ |
3.6 |
81h (129) |
81h (129) |
- |
0 |
Запись |
Сохранить содержимое ОЗУ памяти десятичных данных в ЭСППЗУ |
4. Двоичные данные |
4.1 |
82h (130) |
0h (0) |
B |
2 |
Запись/запрос |
Установить/считать текущий номер регистра двоичных данных (от 0 до 4095) |
4.2 |
82h (130) |
1h (1) |
B |
1 |
Запись/запрос |
Установить/считать текущий номер блока двоичных данных (от 0 до 63) |
4.3 |
82h (130) |
10h (16) |
B |
1 |
Запись/запрос |
Записать/считать двоичное число из ОЗУ памяти двоичных данных |
4.4 |
82h (130) |
11h (17) |
B |
64 |
Запись/запрос |
Записать/считать блок двоичных чисел из ОЗУ памяти двоичных данных |
4.5 |
82h (130) |
80h (128) |
- |
0 |
Запись |
Восстановить ОЗУ памяти двоичных данных из ЭСППЗУ |
4.6 |
82h (130) |
81h (129) |
- |
0 |
Запись |
Сохранить содержимое ОЗУ памяти двоичных данных в ЭСППЗУ |
5. Текст |
5.1 |
83h (131) |
0h (0) |
B |
2 |
Запись/запрос |
Установить/считать текущий номер символа текста (от 0 до 3071) |
5.2 |
83h (131) |
1h (1) |
B |
1 |
Запись/запрос |
Установить/считать текущий номер строки текста (от 0 до 127) |
5.3 |
83h (131) |
10h (16) |
B |
1 |
Запись/запрос |
Записать/считать символ из ОЗУ памяти текста |
5.4 |
83h (131) |
11h (17) |
B |
24 |
Запись/запрос |
Записать/считать строку символов из ОЗУ памяти текста |
5.5 |
83h (131) |
80h (128) |
- |
0 |
Запись |
Восстановить ОЗУ памяти текста из ЭСППЗУ |
5.6 |
83h (131) |
81h (129) |
- |
0 |
Запись |
Сохранить содержимое ОЗУ памяти текста в ЭСППЗУ |
6. Графический экран |
6.1 |
84h (132) |
0h (0) |
B |
2 |
Запись/запрос |
Установить/считать текущий номер байта графического экрана (от 0 до 1023) |
6.2 |
84h (132) |
1h (1) |
B |
1 |
Запись/запрос |
Установить/считать текущий номер строки графического экрана (от 0 до 7) |
6.3 |
84h (132) |
10h (16) |
B |
1 |
Запрос |
Считать байт графического экрана |
6.4 |
84h (132) |
11h (17) |
B |
128 |
Запрос |
Считать строку графического экрана |
6.5 |
84h (132) |
20h (32) |
B |
1 |
Запрос |
Считать байт основного экрана |
6.6 |
84h (132) |
21h (33) |
B |
128 |
Запрос |
Считать строку основного экрана |
7. Журнал событий |
7.1 |
85h (133) |
0h (0) |
B |
1 |
Запрос |
Считать текущий указатель журнала |
7.2 |
85h (133) |
1h (1) |
B |
64 |
Запрос |
Считать группу последних записей журнала |
8. Электронный блокнот |
8.1 |
88h (136) |
1h (1) |
B |
2 |
Запись/запрос |
Установить/считать текущий номер группы записей (от 0 до 16383) электронного блокнота |
8.2 |
88h (136) |
11h (17) |
B |
32 |
Запись/запрос |
Записать/считать группу записей электронного блокнота |
9. Файловая структура |
9.1 |
90h (144) |
0h (0) |
B |
1 |
Запись/запрос |
Установить/считать номер активного диска (0 или 1) |
9.2 |
90h (144) |
1h (1) |
B |
1 |
Запись/запрос |
Установить/считать текущий номер строки каталога (от 0 до 63) |
9.3 |
90h (144) |
10h (16) |
B |
38 |
Запрос |
Считать информацию о диске |
9.4 |
90h (144) |
11h (17) |
B |
32 |
Запрос |
Считать строку каталога |
9.5 |
90h (144) |
80h (128) |
- |
0 |
Запись |
Загрузить файл/каталог по номеру строки каталога |
9.6 |
90h (144) |
81h (129) |
- |
0 |
Запись |
Удалить файл/каталог по номеру строки каталога |
9.7 |
90h (144) |
82h (130) |
B |
32 |
Запись |
Создать каталог |
9.8 |
90h (144) |
83h (131) |
B |
32 |
Запись |
Создать файл |
10. Команды управления |
10.1 |
A0h (160) |
0h (0) |
B |
2 |
Запрос |
ТЕСТ |
10.2 |
A0h (160) |
1h (1) |
B |
1 |
Запись/запрос |
Установить/считать скорость обмена |
10.3 |
A0h (160) |
80h (128) |
- |
0 |
Запись |
Установить блокировку клавиатуры |
10.4 |
A0h (160) |
81h (129) |
- |
0 |
Запись |
Снять блокировку клавиатуры |
10.5 |
A0h (160) |
82h (130) |
- |
0 |
Запись |
Запустить программу на исполнение |
10.6 |
A0h (160) |
83h (131) |
- |
0 |
Запись |
Остановить исполнение программы |
Примечание:
- S - строка символов ASCII (кодовая страница 866);
- B - последовательность двоичных данных;
- ЭСППЗУ - энергонезависимая память ЭВМ.
4.6. Контрольная сумма (KS) вычисляется как арифметическая сумма всех байтов пакета по модулю 256.
4.7. Пакет запроса данных формируется внешним устройством и служит для получения от ЭВМ значения параметра, определяемого полями Z и R.
Структура пакета запроса данных, с учётом предопределённых значений полей: NA, A, 4, 0, 10h, Z, R, KS.
4.8. Пакет передачи данных формируется ЭВМ в ответ на пакет запроса данных при условии возможности передачи корректного значения параметра. В противном случае формируется пакет сообщения об ошибке (п. 4.10).
Структура пакета передачи данных, с учётом предопределённых значений полей: NA, A, (N+4)mod256, (N+4)/256, 20h, Z, R, D1,...DN, KS.
Символом "/" обозначена операция цельночисленного деления.
4.9. Пакет записи данных формируется внешним устройством и служит для записи в ЭВМ значения параметра, определяемого полями Z и R.
Если запись переданного параметра произведена корректно, формируется пакет подтверждения приёма (п. 4.11). В противном случае формируется пакет сообщения об ошибке (п. 4.10).
Структура пакета записи данных, с учётом предопределённых значений полей: NA, A, (N+4)mod256, (N+4)/256, 30h, Z, R, D1,...DN, KS.
Символом "/" обозначена операция цельночисленного деления.
4.10. Сообщение об ошибке формируется ЭВМ в ответ на пакеты запроса или записи данных в случае, если ЭВМ не может выполнить соответствующее действие.
Структура пакета сообщения об ошибке, с учётом предопределённых значений полей: NA, A, 5, 0, 40h, Z, R, D1, KS.
Байт данных D1 пакета является кодом возникшей ошибки. Возможные значения кода ошибки приведены в п. 5.
4.11. Сообщение об приёме формируется ЭВМ в ответ на пакет записи данных в случае корректного выполнения.
Структура пакета подтверждения приёма, с учётом предопределённых значений полей: NA, A, 5, 0, 40h, Z, R, 0, KS.
Пакет подтверждения приёма является частным случаем пакета сообщения об ошибке с кодом ошибки 0 (ноль).
|