Периодический опрос приборов - программа без графического интерфейса |
Главная / ЭКВМ / Программы для ЭКВМ / Работа с оборудованием |
Программа предназначена получения результатов измерений от одного или нескольких приборов МУЛЬТИТЕСТ через последовательный порт с заданной пользователем периодичностью. Отличается от аналогичной программы отсутствием графического интерфейса (далее - ГИ). Результаты измерений записываются в энергонезависимый электронный блокнот ЭКВМ и могут быть перенесены из него в компьютер для последующей обработки. В блокноте сохраняется также и время каждой произведённой записи, полученное от встроенных часов ЭКВМ. Одновременно с опросом приборов и журналированием программа выводит результаты измерений на индикатор в регистры X, Y, Z, T стека. Программа может использоваться не только для опроса приборов (мониторинга), но и для автоматизации экспериментов. При выходе результатов измерений за предварительно заданные границы ЭКВМ формирует звуковой сигнал и переключает состояние соответствующей линии параллельного порта. Верхняя и нижняя граница диапазона задаются для каждого из трёх измиеряемых параметров отдельно. Выход за верхнюю или нижнюю границу может переключать состояние одной или разных линий порта. Звуковые сигналы параметров разтличаются высотой тона. Значение параметра, вышедшего за допустимые границы, выводится на индикатор в инвертированном виде - на тёмном фоне. Программа может считывать с приборов любые числовые данные. Для настройки необходимо указать в программе соответствующие параметры Z и R команды протокола и нужным образом изменить текстовые строки. В программе для примера приведены ЭДС и pH первого канала в мВ и ед. pH, а также значение температуры в градусах Цельсия. Начало работыПеред началом работы необходимо ввести в регистры начальные значения:
Для запуска программы нажать клавиши "В/О", "С/П". Окончание работыПрограмма автоматически заканчивает работу при достижении указанного в RC числа записей. Для немедленного выхода из программы следует нажать клавишу "Выход", при этом выполняется корректное завершение работы. При принудительном останове программы клавишей "С/П" состояние последовательного порта не восстанавливается и связь с ЭКВМ через последовательный порт будет возможна только после очистки регистра функции R9070 вручную, либо после выключения и последующего включения питания ЭКВМ. Для временной приостановки работы можно использовать клавишу "С/П", но состояние стека, регистров данных и текущего адреса при этом не должно изменяться. Для просмотра записанных в блокнота результатов измерений следует воспользоваться режимом "Просмотр/Очистка" - "Блокнот". Продолжение работы после входа в режим калькулятора - повторным нажатием "С/П". При этом возможно нарушение длительности задержки между двумя записями - до и после момента останова. Обработка данныхПосле окончания работы возможен перенос данных из электронного блокнота в компьютер. Для этого требуется считать данные блокнота и записать их в файл как текст. Поля текста при записи будут разделены табуляцией. Для примера ниже приведен файл opros.mkn и результаты его обработки программой OpenOffice.org Calc. Для переноса диаграммы в изображение использована программа OpenOffice.org Draw. При желании можно использовать аналогичные программы из пакета MS Office. Файлы:
Программа "Опрос приборов (без ГИ)"Файл opros1.mkp версия 1.0 от 17.02.2011 (КС 71713/49)
Для изменения опрашиваемых данных следует изменить числа по адресам 174, 175, 177, 178 для Z и R первого параметра; 188, 189, 191, 192 для второго; 2026, 203, 205, 206 для третьего. В таблице они отмечены цветом, аналогичным цвету данных на диаграмме. Исходный текст для кросс-компилятораФайл opros1.mkl от 17.02.2011 .CHARSET 1251 ; Программа опроса нескольких результатов измерений ; по протоколу приборов Мультитест ; Вариант без графической оболочки ; Версия 1.0 от 17.02.2011 ; Проверка на выход за границы: звук, управление линиями параллельного порта ; Записать перед началом работы: ; RB - период опроса (сек <= 655) ; RC - продолжительность опроса (число записей < 16384) ; R9 - сетевой номер прибора ; R20, R21, R23, R24, R26, R27 - границы диапазонов для R4, R5, R6 ; Используются ; R7,R8 - текущие Z,R ; R4,R5,R6 - В базовом варианте - ЭДС, pH, температура ; 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 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 RM 24 P RM 23 - F X<0 B2 P RM 24 P RM 24 P M 24 <-> P M 23 B2: P RM 27 P RM 26 - F X<0 B3 P RM 27 P RM 26 P M 27 <-> P M 26 B3: 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 P X!=0 A1 ; Повторить запись 50 - F X<0 A21 A22: PP RM 9051 ; За 0,5 секунды - больше ничего не измерять и не выводить F X!=0 A22 P GOTO A1 A21: PP RM 9051 50 / K FRAC F X=0 A2 ; Цикл ожидания 0,5 сек PP RM 9029 32 - ; 32 "Выход" F X=0 A23 GOTO A_END A23: P GSB IZM ; Считать новые данные F X=0 A2 ; Если ошибка - вернуться P GSB PROV ; Проверка выхода за диапазон ; вывод в стек PP RM 9055 ; Часы RM4 ; ЭДС RM5 ; pH RM6 ; Температура K SCR GOTO A2 A_END: P GSB PORT_UI ; запрет использования порта RMB EE 2 /-/ MB ; Вернуть значение RB R/S ;----------------------------- Измерение IZM: 16 M7 16 M8 P GSB PORT_K P X=0 IZM_E <-> M4 16 M7 48 M8 P GSB PORT_K P X=0 IZM_E <-> M5 26 M7 32 M8 P GSB PORT_K F X=0 IZM_E <-> M6 0 RTN IZM_E: 1 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 - P 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 ;---------------------- Запись в блокнот ZAP: PP RM 9055 PP M 9061 PP RM 9065 P X=0 ZAP_E RM4 PP M 9062 PP RM 9065 P X=0 ZAP_E RM5 PP M 9063 PP RM 9065 P 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 ; звук RTN ; Драйвер протокола приборов Мультитест используются 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 P X=0 PORT_K5 ; Ожидание окончания приёма 9085 ME ; Для косвеной адресации регистра 9085 CX KME ; PP M 9085 Индексный регистр буфера приема (Последовательный порт) PP RM 9087 ; Байт буфера приёма, автоинкремент P X=0 PORT_K4 ; Первый байт не 0 - выход с ошибкой 256 PP RM 9087 ; Байт буфера приёма, автоинкремент RM 9 - P 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 (многоканальный) |