Периодический опрос приборов


Главная / ЭКВМ / Программы для ЭКВМ / Работа с оборудованием

Программа предназначена получения результатов измерений от одного или нескольких приборов МУЛЬТИТЕСТ через последовательный порт с заданной пользователем периодичностью. Отличается от аналогичной программы наличием графического интерфейса.

Опрос приборов

Результаты измерений записываются в энергонезависимый электронный блокнот ЭКВМ и могут быть перенесены из него в компьютер для последующей обработки. В блокноте сохраняется также и время каждой произведённой записи, полученное от встроенных часов ЭКВМ.

Вывод результатов в виде графика

Одновременно с опросом приборов и журналированием программа выводит результаты измерений на индикатор. Вывод может проводиться как в числовом виде, так и в виде графика. График выводится отдельными точками. Разрешение по горизонтали - одна точка на запись. Разрешение по вертикали устанавливается автоматически и определяется содержимым регистров с границами диапазонов. При установке одинаковых значений верхней и нижней границы график для данного параметра не выводится.

График выводится слева-направо. При достижении правой границы экрана начинается плавная прокрутка экрана влево по мере дальнейшего рисования графика.

Опрос приборов

Программа может использоваться не только для опроса приборов (мониторинга), но и для автоматизации экспериментов. При выходе результатов измерений за предварительно заданные границы ЭКВМ формирует звуковой сигнал и переключает состояние соответствующей линии параллельного порта.

Верхняя и нижняя граница диапазона задаются для каждого из трёх измиеряемых параметров отдельно. Выход за верхнюю или нижнюю границу может переключать состояние одной или разных линий порта. Звуковые сигналы параметров разтличаются высотой тона. Значение параметра, вышедшего за допустимые границы, выводится на индикатор в инвертированном виде - на тёмном фоне.

Программа может считывать с приборов любые числовые данные. Для настройки необходимо указать в программе соответствующие параметры Z и R команды протокола и нужным образом изменить текстовые строки. В программе для примера приведены ЭДС и pH первого канала в мВ и ед. pH, а также значение температуры в градусах Цельсия.

Начало работы

Перед началом работы необходимо ввести в регистры начальные значения:

  • R9 - сетевой номер прибора. Если требуется опрашивать одновременно несколько приборов, следует добавить их номера непосредственно в программу.
  • RB - период опроса, сек., не более 655. Максимальный период опроса - около 10 минут - ограничен таймером. Для увеличения возможно изменить алгоритм и синхронизироать запись не по таймеру, а по встроенным часам реального времени.
  • RC - максимальное число записей, число не более 16384. Число записей ограничено размером электронного блокнота ЭКВМ. Продолжительность мониторинга зависит от числа записей и установленного в RB значения периода. При периоде 10 минут максимальное число записей достигается примерно за 11,5 дней; при периоде 1 сек. - за 4,5 часа.
  • R20, R21 - нижняя и верхняя границы для первого опрашиваемого параметра.
  • R23, R24 - нижняя и верхняя границы для второго опрашиваемого параметра.
  • R26, R27 - нижняя и верхняя границы для третьего опрашиваемого параметра.

Для запуска программы нажать клавиши "В/О", "С/П".

Окончание работы

Программа автоматически заканчивает работу при достижении указанного в RC числа записей.

Для немедленного выхода из программы следует нажать клавишу "Выход", при этом выполняется корректное завершение работы. При принудительном останове программы клавишей "С/П" состояние последовательного порта не восстанавливается и связь с ЭКВМ через последовательный порт будет возможна только после очистки регистра функции R9070 вручную, либо после выключения и последующего включения питания ЭКВМ.

Для временной приостановки работы можно использовать клавишу "С/П", но состояние стека, регистров данных и текущего адреса при этом не должно изменяться. Для просмотра записанных в блокнота результатов измерений следует воспользоваться режимом "Просмотр/Очистка" - "Блокнот". Продолжение работы после входа в режим калькулятора - повторным нажатием "С/П". При этом возможно нарушение длительности задержки между двумя записями - до и после момента останова.

Обработка данных

После окончания работы возможен перенос данных из электронного блокнота в компьютер. Для этого требуется считать данные блокнота и записать их в файл как текст. Поля текста при записи будут разделены табуляцией. Для примера ниже приведен файл opros.mkn и результаты его обработки программой OpenOffice.org Calc. Для переноса диаграммы в изображение использована программа OpenOffice.org Draw. При желании можно использовать аналогичные программы из пакета MS Office.

Файлы:

  • opros.mkn - исходный файл с данными блокнота ЭКВМ;
  • opros.txt - текстовый файл с данными, разделёнными табуляцией;
  • opros.ods - электронная таблица в формате OpenDocument;
  • opros.xls - таблица, конвертированная в формат MS Excel;
  • opros.odg - диаграмма в формате OpenDocument;
  • opros.pdf - диаграмма в формате PDF.
Диаграмма с результатами опроса pH-метра ИПЛ-301 при помощи ЭКВМ Электроника МК

Программа "Опрос приборов"

Файл opros.mkp от 17.01.2011 (КС 152182/104)

  0 1 2 3 4 5 6 7 8 9
0000 Cx П D P ПП 03 44 P ПП 12 72 P ИП 21
0010 P ИП 20 - F x<0 25 P ИП 21 P ИП 20 P П
0020 21 P П 20 - P П 22 P ИП 24 P ИП
0030 23 - F x<0 44 P ИП 24 P ИП 24 P П 24
0040 P П 23 - P П 25 P ИП 27 P ИП 26
0050 - F x<0 63 P ИП 27 P ИП 26 P П 27
0060 P П 26 - P П 28 ИП C F x<0 74 P БП 03
0070 33 P ПП 05 00 1 6 3 8 4 -
0080 F x≥0 88 1 6 3 8 4 П C Cx PP П
0090 90 60 ИП B 6 5 6 - P x≥0 01 04
0100 6 5 5 П B ИП B ВП 2 П B ИП B PP П
0110 90 51 P ПП 09 00 ИП C 1 - П C P x≥0
0120 03 33 PP ИП 90 51 F x≠0 08 5 0 -
0130 F x<0 39 PP ИП 90 51 F x≠0 32 БП 08 PP ИП
0140 90 51 5 0 ÷ K {x} F x=0 22 PP ИП 90
0150 29 1 9 - F x=0 70 ИП D F x=0 63 1
0160 П D БП 78 Cx П D P ПП 03 44 БП 78
0170 1 3 - F x=0 78 P БП 03 33 P ПП 05
0180 00 P x=0 01 22 P ПП 07 14 ИП D F x≠0 95
0190 P ПП 05 98 БП 22 4 PP П 90 01 1
0200 4 B↑ 6 4 PP П 90 00 3 8 B↑
0210 6 3 PP П 90 13 5 5 B↑ 5 0
0220 PP П 90 00 8 B↑ 7 7 PP П 90 13
0230 0 PP П 90 01 1 4 B↑ 6 4 PP П
0240 90 00 4 B↑ 2 PP ИП 90 55 PP П 90
0250 24 2 4 B↑ 6 4 PP П 90 00 P ИП
0260 30 PP П 90 01 2 B↑ 4 ИП 4 PP П 90
0270 24 3 4 B↑ 6 4 PP П 90 00 P ИП
0280 31 PP П 90 01 3 B↑ 4 ИП 5 PP П 90
0290 24 4 4 B↑ 6 4 PP П 90 00 P ИП
0300 32 PP П 90 01 2 B↑ 4 ИП 6 PP П 90
0310 24 5 6 B↑ 5 0 PP П 90 00 0
0320 PP П 90 01 PP ИП 90 60 PP П 90 23 K ГРФ
0330 P БП 01 22 P ПП 12 99 ИП B ВП 2 ÷
0340 - ÷ П B С/П 2 PP П 90 10 9 0
0350 2 1 П E 1 0 0 3 K П E ИП A PP П
0360 90 23 1 0 B↑ 0 PP П 90 00 1
0370 0 B↑ 1 2 7 PP П 90 12 1 4
0380 B↑ 0 PP П 90 00 1 0 2 2 K П E
0390 2 4 B↑ 0 PP П 90 00 1 0 2
0400 8 K П E 3 4 B↑ 0 PP П 90 00 1
0410 0 3 2 K П E 4 4 B↑ 0 PP П 90
0420 00 1 0 3 5 K П E 5 4 B↑ 0
0430 PP П 90 00 5 4 B↑ 1 2 7 PP П
0440 90 12 5 6 B↑ 0 PP П 90 00 1
0450 0 4 7 K П E В/О FFh FFh FFh FFh FFh
0460 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh
0470 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh
0480 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh
0490 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh
0500 1 6 П 7 1 6 П 8 P ПП 11 00 F x=0
0510 41 П 4 1 6 П 7 4 8 П 8 P ПП
0520 11 00 F x=0 41 П 5 2 6 П 7 3
0530 2 П 8 P ПП 11 00 F x=0 41 П 6 0
0540 В/О П E 1 0 0 B↑ PP П 90 52 ИП D
0550 F x=0 96 4 PP П 90 01 1 4 B↑ 6
0560 4 PP П 90 00 3 8 B↑ 6 3 PP П
0570 90 13 0 PP П 90 01 1 4 B↑ 6
0580 4 PP П 90 00 1 0 5 5 PP П 90
0590 21 ИП E PP П 90 23 K ГРФ 1 В/О 2 PP П
0600 90 10 Cx П 2 PP ИП 90 60 П E 1 2
0610 7 - F x≥0 21 П 1 1 2 7 П 0 БП
0620 27 PP ИП 90 60 П 0 Cx П 1 ИП 1 PP П 90
0630 60 PP ИП 90 62 P ИП 20 - P ИП 22 F x≠0
0640 53 ÷ 6 3 × 6 3 - ИП 2
0650 PP П 90 11 PP ИП 90 63 P ИП 23 - P ИП
0660 25 F x≠0 75 ÷ 6 3 × 6 3
0670 - ИП 2 PP П 90 11 PP ИП 90 64 P ИП 26
0680 - P ИП 28 F x≠0 97 ÷ 6 3 × 6
0690 3 - ИП 2 PP П 90 11 ИП 2 1 +
0700 П 2 ИП 1 1 + П 1 PF L0 06 27 K ГРФ ИП E
0710 PP П 90 60 В/О Cx P П 30 P П 31 P П
0720 32 P П 33 1 PP П 90 90 PP П 90 93
0730 P ИП 21 ИП 4 - F x<0 57 P ИП 33 2 +
0740 P П 33 4 P П 30 2 0 0 B↑ 1
0750 0 0 PP П 90 52 БП 71 ИП 4 P ИП 20
0760 - F x<0 71 P ИП 33 1 + P П 33 БП
0770 42 P ИП 24 ИП 5 - F x<0 99 P ИП 33 8
0780 + P П 33 4 P П 31 3 0 0 B↑
0790 1 0 0 PP П 90 52 P БП 08 14 ИП 5
0800 P ИП 23 - F x<0 14 P ИП 33 4 + P П
0810 33 P БП 07 83 P ИП 27 ИП 6 - F x<0 42
0820 P ИП 33 3 2 + P П 33 4 P П 32
0830 4 0 0 B↑ 1 0 0 PP П 90 52
0840 БП 57 ИП 6 P ИП 26 - F x<0 57 P ИП 33
0850 1 6 + P П 33 БП 27 P ИП 33 PP П
0860 90 91 В/О FFh FFh FFh FFh FFh FFh FFh
0870 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh
0880 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh
0890 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh
0900 PP ИП 90 55 PP П 90 61 PP ИП 90 65 F x=0
0910 52 ИП 4 PP П 90 62 PP ИП 90 65 F x=0 52
0920 ИП 5 PP П 90 63 PP ИП 90 65 F x=0 52 ИП 6
0930 PP П 90 64 PP ИП 90 65 F x=0 52 PP ИП 90
0940 60 1 + PP П 90 60 PP ИП 90 65 F x=0
0950 52 В/О 1 0 0 B↑ PP П 90 52 ИП D
0960 P x=0 10 02 4 PP П 90 01 5 5 B↑
0970 5 0 PP П 90 00 8 B↑ 7 7 PP П
0980 90 13 0 PP П 90 01 5 5 B↑ 5
0990 0 PP П 90 00 1 0 5 5 PP П 90
1000 21 K ГРФ В/О 88h A7h ACh A5h E0h A5h ADh
1010 A8h A5h 2Ch 20h AFh E0h A8h A1h AEh E0h
1020 20h 00h 82h E0h A5h ACh EFh 00h 9Dh 84h
1030 91h 00h 70h 48h 00h 92h A5h ACh AFh A5h
1040 E0h A0h E2h E3h E0h A0h 00h 87h A0h AFh
1050 A8h E1h ECh 20h 00h 8Eh E8h A8h A1h AAh
1060 A0h 00h FFh FFh FFh FFh FFh FFh FFh FFh
1070 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh
1080 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh
1090 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh
1100 9 0 8 2 П E Cx PP П 90 80 K П E
1110 ИП 9 K П E 4 K П E Cx K П E 1 6 K П E ИП 7
1120 K П E ИП 8 K П E 7 П 0 Cx PP П 90 80 K ИП E
1130 + F L0 29 P ПП 12 60 K П E 8 PP П 90
1140 77 PP ИП 90 77 F x=0 41 3 0 PP П 90
1150 50 PP ИП 90 75 F x=0 67 PP ИП 90 50 F x=0
1160 51 Cx B↑ 2 5 6 В/О PP ИП 90 76
1170 F x=0 67 9 0 8 5 П E Cx K П E PP ИП
1180 90 87 F x=0 61 PP ИП 90 87 ИП 9 - F x=0
1190 61 PP ИП 90 86 3 + П 0 Cx K П E PP ИП
1200 90 87 + PF L0 11 99 P ПП 12 60 PP ИП
1210 90 87 - P x=0 11 61 4 K П E PP ИП 90
1220 86 3 3 - F x≥0 34 7 K П E PP ИП 90
1230 86 0 В/О Cx PP П 90 31 PP П 90
1240 30 4 П 0 7 PP П 90 85 PP ИП 90 87
1250 PP П 90 34 F L0 47 PP ИП 90 38 0 В/О
1260 B↑ B↑ 2 5 6 П 0 ÷ K [x] ИП 0 ×
1270 - В/О 1 PP П 90 70 9 PP П 90 71
1280 0 PP П 90 72 5 PP П 90 73 0 PP П
1290 90 74 2 4 0 PP П 90 78 В/О 0
1300 PP П 90 70 В/О            

Для изменения опрашиваемых данных следует изменить числа по адресам 500, 501, 503, 504 для Z и R первого параметра; 513, 514, 516, 517 для второго; 526, 527, 529, 530 для третьего. В таблице они отмечены цветом, аналогичным цвету данных на диаграмме.

Команды по адресам 455-499, 863-899, 1062-1099 не используются. Они вставлены компилятором для выравнивания по номеру страницы - в исходном тексте стоит псевдооператор ".PAGE".


Исходный текст для кросс-компилятора

Файл opros.mkl от 30.11.2010

.CHARSET 1251

; Программа опроса нескольких результатов измерений
; по протоколу приборов Мультитест

; Версия 1.1 от 17.01.2011
; Вывод данных в виде чисел или графика (переключение по <->)
; Проверка на выход за границы: звук, инверсия вывода, управление линиями параллельного порта

; Записать перед началом работы:
; RB - период опроса (сек <= 655)
; RC - продолжительность опроса (число записей < 16384)
; R9 - сетевой номер прибора
; R20, R21, R23, R24, R26, R27 - границы диапазонов для R4, R5, R6

; Используются

; R7,R8 - текущие Z,R

; R4,R5,R6 - В базовом варианте - ЭДС, pH, температура 

; RD - вид отображения: 0-числа, 1 - график (после запуска 0)
; RE - используется для косвенной адресации и временного хранения

; R22, R25, R28 - ширина диапазона (для отрисовки графика)
; R30, R31, R32 - признак выхода за границу диапазона для R4, R5, R6 (атрибут: 4 - выход, 0 - нет)
; R33 - данные в параллельный порт (D0:R4<R20; D1:R4>R21; D2:R5<R23; D3:R5>R24; D4:R6<R26; D5:R6>R27)

.ORG 0
	; Графика
	CX 
	MD
	P GSB INITGR0
	P GSB PORT_I	; Инициализация порта
			; Проверка границ диапазонов
	P RM 21
	P RM 20
	-
	F X<0 B1
	P RM 21
	P RM 20	
	P M 21
	<->
	P M 20
	-
B1:	P M 22

	P RM 24
	P RM 23
	-
	F X<0 B2
	P RM 24
	P RM 24	
	P M 24
	<->
	P M 23
	-
B2:	P M 25

	P RM 27
	P RM 26
	-
	F X<0 B3
	P RM 27
	P RM 26	
	P M 27
	<->
	P M 26
	-
B3:	P M 28

	RMC	
	F X<0 A0
	P GOTO A_END

	P GSB IZM	; Считать данные с прибора 

A0:	16384 -
	F X>=0 A00
	16384 MC
A00:
	CX PP M 9060	; Группа записей блокнота 

	RMB 656 -	; Период записи должен быть меньше 65600 секунд
	P X>=0 A01
	655 MB

A01:	RMB EE 2 MB	

A1:	RMB
	PP M 9051	; Таймер 1
	
	P GSB ZAP	; Записать в блокнот

	RMC 1 - MC
	P X>=0	A_END	; Количество записей достигнуто

A2:	PP RM 9051
	F X!=0 A1	; Повторить запись

	50 -
	F X<0 A21

A22:	PP RM 9051	; За 0,5 секунды - больше ничего не измерять и не выводить
	F X!=0 A22	
	GOTO A1		

A21:	PP RM 9051
	50 /
	K FRAC
	F X=0 A2	; Цикл ожидания 0,5 сек

	PP RM 9029
	19 -		; 19 "<->"
	F X=0 A24
	RMD
	F X=0 A25
	1 MD
	GOTO A23
A25:	CX MD
	P GSB INITGR0
	GOTO A23
A24:	13 -		; 19+13=32 "Выход"
	F X=0 A23
	P GOTO A_END

A23:	P GSB IZM	; Считать новые данные
	P X=0 A2	; Если ошибка - вернуться	

	P GSB PROV	; Проверка выхода за диапазон

			; Вывести их на экран
	
A3:	RMD
	F X!=0 A31
	P GSB GRAF	; Вывести график
	GOTO A2

			; Вывод числовых результатов измерений
A31:	4 PP M 9001	; Атрибуты вывода NOT
	14 ENT 64
	PP M 9000	; Начальные координаты
	38 ENT 63
	PP M 9013	; Вывод прямоугольника
	55 ENT 50
	PP M 9000	; Начальные координаты
	8 ENT 77
	PP M 9013	; Вывод прямоугольника
	0 PP M 9001	; Атрибуты вывода 0

	14 ENT 64
	PP M 9000
	4 ENT 2
	PP RM 9055	; Часы
	PP M 9024	; Вывод форматированного числа	

	24 ENT 64
	PP M 9000
	P RM 30
	PP M 9001	; Атрибуты
	2 ENT 4 
	RM4		; ЭДС
	PP M 9024	; Вывод форматированного числа	

	34 ENT 64
	PP M 9000
	P RM 31
	PP M 9001	; Атрибуты
	3 ENT 4 
	RM5		; pH
	PP M 9024	; Вывод форматированного числа	

	44 ENT 64
	PP M 9000
	P RM 32
	PP M 9001	; Атрибуты
	2 ENT 4 
	RM6		; Температура
	PP M 9024	; Вывод форматированного числа	

	56 ENT 50
	PP M 9000
	0 PP M 9001	; Атрибуты вывода 0

	PP RM 9060	; Текущая группа записи
	PP M 9023	; Вывод числа	

	K GRPH		; Перерисовка
	P GOTO A2

A_END:	
	P GSB PORT_UI	; запрет использования порта
	RMB EE 2 /-/ MB	; Вернуть значение RB
	R/S

;------------------------- Инициализация экрана для вывода результатов в виде чисел
INITGR0:

	2 PP M 9010	; Сброс экрана
	9021 ME
	.NUM TXT1	
	KME		; PP M 9021 - Вывод строки
	RMA
	PP M 9023	; Номер прибора

	10 ENT 0
	PP M 9000
	10 ENT 127
	PP M 9012	; Линия

	14 ENT 0
	PP M 9000
	.NUM TXT2
	KME

	24 ENT 0
	PP M 9000
	.NUM TXT3
	KME

	34 ENT 0
	PP M 9000
	.NUM TXT4
	KME

	44 ENT 0
	PP M 9000
	.NUM TXT5
	KME

	54 ENT 0
	PP M 9000
	54 ENT 127
	PP M 9012	; Линия

	56 ENT 0
	PP M 9000
	.NUM TXT6
	KME

	RTN

;----------------------------- Измерение
.PAGE
IZM:	16 M7
	16 M8
	P GSB PORT_K	
	F X=0 IZM_E
	<->
	M4

	16 M7
	48 M8
	P GSB PORT_K
	F X=0 IZM_E
	<->
	M5
	
	26 M7
	32 M8
	P GSB PORT_K
	F X=0 IZM_E
	<->
	M6
	0
	RTN

IZM_E:  ME
	100 ENT PP M 9052

	RMD
	F X=0 IZM_E1	; Если график - перейти
	
	4 PP M 9001	; Атрибуты вывода NOT
	14 ENT 64
	PP M 9000	; Начальные координаты
	38 ENT 63
	PP M 9013	; Вывод прямоугольника
	0 PP M 9001	; Атрибуты вывода 0
	
	14 ENT 64
	PP M 9000
	.NUM TXT7
	PP M 9021

	RME
	PP M 9023
	K GRPH

IZM_E1:	1
	RTN

;-------------------- Вывод графика

GRAF:   2 PP M 9010
	CX M2

	PP RM 9060
	ME
	127
	-
	F X>=0 GRAF1
	M1
	127
	M0
	GOTO GRAF2	

GRAF1:	PP RM 9060
	M0
	CX
	M1
	
GRAF2:	RM1
	PP M 9060
	PP RM 9062
	P RM 20
	-
	P RM 22
	F X!=0 GRAF3
	/
	63 *
	63 <-> -
	RM2
	PP M 9011

GRAF3:	PP RM 9063
	P RM 23
	-
	P RM 25
	F X!=0 GRAF4
	/
	63 *
	63 <-> -
	RM2
	PP M 9011

GRAF4:	PP RM 9064
	P RM 26
	-
	P RM 28
	F X!=0 GRAF5
	/
	63 *
	63 <-> -
	RM2
	PP M 9011

GRAF5:	RM2 1 +	M2
	RM1 1 + M1
	PFL0 GRAF2

	K GRPH
	RME
	PP M 9060
	RTN

;-------------------- Проверка выхода за границы диапазонов

PROV:	CX
	PM 30
	PM 31
	PM 32
	PM 33

	1 
	PP M 9090	; Статический режим параллельного порта
	PP M 9093	; запись

	PRM 21
	RM 4 
	-
	F X<0 PROV2
	PRM 33
	2 +
	PM 33
PROV1:	4
	PM 30
	200 ENT 100 PP M 9052
	GOTO PROV3
PROV2:  RM 4
	PRM 20
	-
	F X<0 PROV3
	PRM 33
	1 +
	PM 33
	GOTO PROV1
 	
PROV3: 
	PRM 24
	RM 5 
	-
	F X<0 PROV5
	
	PRM 33 
	8 + 
	PM 33
PROV4:	4
	PM 31
	300 ENT 100 PP M 9052
	P GOTO PROV6
PROV5:  RM 5
	PRM 23
	-
	F X<0 PROV6
	PRM 33
	4 +
	PM 33
	P GOTO PROV4 

PROV6:
	PRM 27
	RM 6 
	-
	F X<0 PROV8
	PRM 33
	32 +
	PM 33

PROV7:	4
	PM 32
	400 ENT 100 PP M 9052
	GOTO PROV9
PROV8:  RM 6
	PRM 26
	-
	F X<0 PROV9 
	PRM 33
	16 +
	PM 33
	GOTO PROV7

PROV9:	PRM 33
	PP M 9091	; Запись в порт
	RTN

;---------------------- Запись в блокнот
.PAGE
ZAP:	PP RM 9055
	PP M 9061
	PP RM 9065
	F X=0 ZAP_E
	RM4
	PP M 9062
	PP RM 9065
	F X=0 ZAP_E
	RM5
	PP M 9063
	PP RM 9065
	F X=0 ZAP_E
	RM6
	PP M 9064
	PP RM 9065
	F X=0 ZAP_E
	PP RM 9060
	1 +
	PP M 9060
	PP RM 9065
	F X=0 ZAP_E
	RTN

ZAP_E:  100 ENT PP M 9052	; звук
	RMD 
	P X=0 ZAP_E1
			; Если числа - вывести ошибку на экран
	4 PP M 9001	; Атрибуты вывода NOT
	55 ENT 50
	PP M 9000	; Начальные координаты
	8 ENT 77
	PP M 9013	; Вывод прямоугольника
	0 PP M 9001	; Атрибуты вывода 0
	
	55 ENT 50
	PP M 9000
	.NUM TXT7
	PP M 9021

	K GRPH
ZAP_E1:
	RTN


TXT1:	.TEXT "Измерение, прибор \0"
TXT2:	.TEXT "Время\0"
TXT3:	.TEXT "ЭДС\0"
TXT4:	.TEXT "pH\0"
TXT5:	.TEXT "Температура\0"
TXT6:	.TEXT "Запись \0"
TXT7:	.TEXT "Ошибка\0"




.PAGE
; Драйвер протокола приборов Мультитест используются R0 и RE (RЕ если понадобится можно убрать)

; Инициализация последовательного порта

PORT_K:	
	; Команда протокола - запрос данных в формате float. Используется регистр R0
			; Формирование команды в буфере
	9082 ME		; Для косвенной адресации регистра 9082

	CX PP M 9080	; Индексный регистр буфера передачи. Запись нуля - заполнение буфера с начала
	KME		; PP M 9082	Запись с автоинкрементом. Первое число =0
	RM9 KME		; Сетевой номер
	4 KME		; Длина мл
	CX KME		; Длина ст
	16 KME		; K
	RM7 KME		; Z
	RM8 KME		; R

	7 M0
	CX PP M 9080	; Индесный регистр буфера передачи (Последовательный порт)

PORT_K1:	
	KRME		; Подсчёт КС
	+
	F L0 PORT_K1
	P GSB MOD_256	; По модулю 256
	KME		; Запись КС в буфер
	
	8 PP M 9077	; Передача команды запроса Z=R7, R=R8, адрес=R9 (8 байт)
PORT_K2:
	PP RM 9077
	F X=0 PORT_K2
	30 PP M 9050	; Тайм-аут приёма - 300 мс (таймер 0)

PORT_K3:
	PP RM 9075	; Счетчик посылок 
	F X=0 PORT_K5	; Приём начался
	PP RM 9050	; Таймер 0
	F X=0 PORT_K3	; Ожидание 

PORT_K4:
	CX ENT 256	; Выход с кодом 256 - тайм-аут
	RTN		

PORT_K5:
	PP RM 9076
	F X=0 PORT_K5	; Ожидание окончания приёма

	9085 ME		; Для косвеной адресации регистра 9085

	CX KME		; PP M 9085 Индексный регистр буфера приема (Последовательный порт)
	PP RM 9087	; Байт буфера приёма, автоинкремент 
	F X=0 PORT_K4	; Первый байт не 0 - выход с ошибкой 256
	PP RM 9087	; Байт буфера приёма, автоинкремент
	RM 9
	-
	F X=0 PORT_K4	; Сетевой номер не совпадает - выход с ошибкой 256
	PP RM 9086	; Байт буфера передачи (Последовательный порт)
	3
	+
	M 0		; Длина пакета
	CX KME		; PP M 9085 Индесный регистр буфера приема (Последовательный порт)

PORT_K6:
	PP RM 9087	; Байт буфера приёма, автоинкремент
	+		; КС принятого пакета
	PF L0 PORT_K6		
	P GSB MOD_256
	PP RM 9087	; Байт буфера приёма, автоинкремент (Последовательный порт)
	-
	P X=0 PORT_K4	; Сравнение КС, выход с ошибкой при несовпадении
	4 KME		; PP M 9085 Индесный регистр буфера приема (Последовательный порт)
	PP RM 9086	; Байт буфера передачи (Последовательный порт)
	33 -
	F X>=0 PORT_K7	; Проверка кода команды K>20h, переход на обработку ошибки протокола
			
	7 KME 		; PP M 9085 Индесный регистр буфера приема (Последовательный порт)
	PP RM 9086	; Байт буфера передачи (Последовательный порт)
	0
	<->		; В RX - код ошибки протокола
	RTN

PORT_K7:
	CX
	PP M 9031	; Индексный регистр 1 (Универсальный байтовый буфер)
	PP M 9030	; Индексный регистр 0 (Универсальный байтовый буфер)
	4 M0
	7 PP M 9085	; Индесный регистр буфера приема (Последовательный порт)

PORT_K8:
	PP RM 9087	; Байт буфера передачи, автоинкремент (Последовательный порт)
	PP M 9034	; Запись и чтение по индексному регистру 1, автоинкремент (Универсальный байтовый буфер)
	F L0 PORT_K8	; перенос принятых данных float в универсальный буфер
	PP RM 9038	; Преобразование числа в float и обратно (В индексном регистре 0 - 0)
	0
	RTN

MOD_256:	; Нахождение суммы по модулю 256
	
	ENT
	ENT
	256 M0
	/
	KINT
	RM0
	*
	-
	RTN

PORT_I:
	1 PP M 9070	; Разрешение порта, запись 1 - разрешение использования порта ЭКВМ
	9 PP M 9071	; Установить скорость 9600
	0 PP M 9072	; Установить режим 8 бит
	5 PP M 9073	; Задержка между байтами в ответе 5*1,25=6 мс.
	0 PP M 9074	; Режим автоматического приёма разрешён
	240 PP M 9078	; Время ожидания ответа 240*1,25=300 мс.
	RTN	

PORT_UI:
	0 PP M 9070	; Регистр разрешения порта, запись 0 - запрет использования порта программой ЭКВМ
	RTN
; конец драйвера протокола

.END 


НПП "СЕМИКО" (383) 271-01-25 (многоканальный)