Измерение временного интервала
Задача. Требуется измерить с заданной точностью временный интервал между двумя событиями в объекте управления. Предполагается, что в устройстве сопряжения МП с объектом имеются датчики, которые вырабатывают импульсные сигналы начала t0 и окончания t1 процесса, время которого необходимо измерить. Для упрощения примем, что в качестве датчиков применяются концевые переключатели, а измеряемый параметр есть время перемещения подвижного органа объекта управления от места расположения датчика 1 к датчику 2 (рис. 59,а). Требуется также отобразить время процесса в десятичной системе счисления на четырехпозиционном линейном дисплее, а кроме того, сравнить реальное время перемещения объекта с эталонной установкой и отобразить на пульте оператора результат сравнения. Допустим, что реальный процесс в объекте управления может превышать по времени 99 с, а требуемая точность измерения равна 0,01 с.
На рисунке 59.б представлена схема интерфейса МП, предназначенного для решения поставленной задачи.
Порт 1 по линии D0 через промежуточный триггер со счетным входом использован для ввода в МП информации о начале t0 и окончании t1 процесса.
Если триггер Q в исходном состоянии имел сигнал 0, то под воздействием входного сигнала t0 он придет в состояние Q=1 и будет находиться в этом состоянии до момента прихода второго подсчитываемого сигнала t1. Порты 2, 3, и 4 используются для вывода информации.
Каждый байт в портах 2 и 3 предназначен для вывода информации, а также для представления двух десятичных двоичнокодированных знаков так, что через порт 2 осуществляется вывод на дисплей десятков и единиц секунд, а через порт 3 – десятых и сотых долей секунд. К выходам D0 и D1 порта 4 через усилители мощности подключены светоиндикаторы и источники звукового сигнала для сигнализации об отклонениях времени процесса от требуемого значения. По окончании процесса разработки интерфейса МП-контроллера необходимо определить области адресов памяти МП-контроллера для размещения программы, данных и специфицировать рабочие регистры МП, а затем разработать БСА. Допустим, рабочая программа начинается с адреса 0000Х и объем ее не должен превышать емкости одного корпуса БИС ПЗУ со структурой 256 х 8.
Контроллер имеет и ОЗУ (64 х 8), используемое в качестве памяти данных и для реализации стека. Загрузка программного стека в МП К580 осуществляется в порядке убывания адресов.
Рисунок 59 – Схема интерфейса МП контроллера
Регистровой паре ВС присвоим функции счетчика для подсчета длительности временного интервала. В паре DE будем представлять величину установки для сравнения фактического времени с эталонным.
Но так как сравнение времен должно выполняться только после окончания процесса измерения, то эту же регистровую пару можно использовать и для программной реализации временной задержки, равной заданной точности измерений временного интервала длительностью 0,01 с.
Допустим, что эталонное время перемещения подвижного органа от позиции датчика 1 до 2 в регулируемом устройстве равно 7,70 с Д2 и хранится в ячейках ОЗУ с адресами 0400Н и 0401Н.
Рисунок 60 – Схема алгоритма измерения и индикации временного интервала
На рисунке 60 представлена БСА работы МП-контроллера, предназначенного для измерения и индикации временного интервала. После включения системы, т.е. после нажатия кнопки «сброс», счетчик команд (и триггер Q) обнуляются и МП выполняет обращение к ПЗУ по адресу ООООН, который является начальным адресом программы. Программа начинается с процедуры инициализации контроллера, которая содержит команды загрузки регистра - указателя стека и записи в ОЗУ кода эталонной установки. После этого МП-контроллер переходит в состояние ожидания события, постоянно опрашивая входной порт 1 и анализируя состояние входного сигнала Q на линии DO. После того, как 0=1, содержимое регистра-аккумулятора увеличивается на 1 через каждые 0,01 с до тех пор, пока на выходе триггера Q сигнал не приобретает нулевое значение. Число X, загружаемое в регистровую пару DE, имеет значение, обеспечивающее временную задержку 0,01 с при выполнении соответствующей подпрограммы (DELAY).
Программа, реализующая алгоритм для МП-контроллера, имеющего интерфейс, представленный на рис. 59, и БИС ПЗУ и ОЗУ, подключенные к шине адреса в соответствии с оговоренной ранее таблицей адресов, имеет следующий вид:
INIT: | LXI | SP,0438H ; | установка начального адреса стека |
LXI | H,0400H ; | загрузка в HL адреса ОЗУ | |
MVI | A.07H ; | загрузка в А старшего байта установки | |
MOV | M,A ; | запоминание в ЗУ старшего байта | |
INR | L ; | инкремент указателя памяти HL | |
MVI | A.69H ; | загрузка в А младшего байта установки | |
MOV | M,A ; | запоминание в ОЗУ | |
SPEED: | LXI | B,0000H ; | гашение счетчика ВС |
WAIT: | IN | 01H ; | ввод из порта 1 |
ANI | 01H ; | маскирование линии D | |
JZ | WAIT ; | цикл ожидания начала процесса | |
COUNT: | CALL | DELAY ; | временная задержка 0,01 с |
MOV | A.C ; | инкремент С | |
ADY | 01H ; | через каждую 0,01 с | |
DAA | ; | десятичная коррекция | |
MOV | C,A ; | фиксация нового значения в С | |
MOV | A,B ; | ||
ACI | ООН ; | (АЖВ)+(С) | |
DAA | ; | ||
MOV | B,A ; | фиксация нового значения в С | |
IN | 01H ; | ввод из порта 1 | |
ANI | 01H ; | проверка Q | |
JNZ | COUNT ; | переход, если Q=/Q | |
MOV | A,B | ||
OUT | 02H ; | вывод старшего байта на дисплей | |
MOV | A,C | ||
OUT | 03H ; | вывод младшего байта на дисплей | |
MOV | E,M ; | загрузка в Е младшего байта установки | |
DCR | L ; | модификация указателя | |
MOV | D,M ; | ОЗУ загрузка в D старшего байта установки | |
MOV | A,B ; | ||
CMP | D ; | сравнение старших байтов | |
JNC | MORE ; | переход, если (B)>(D) | |
MOV | A,C ; | ||
CMP | E ; | сравнение младших байтов | |
JNC | MORE ; | переход, если (С)>(Е) | |
MVI | A.01H ; | ||
OUT | 04H ; | вывод сигнала МЕНЬШЕ УСТАНОВКИ | |
JMP | SPEED ; | ; вывод сигнала БОЛЬШЕ УСТАНОВКИ | |
MORE: | MVI | A.01H | |
OUT | 04H | ||
JMP | SPEED ; | переход в исходное состояние | |
DELAY: | MVI | D0.3H ; | ; подпрограмма задержки 0,01 с. |
LOOP2: | MVI | E.OFFH | |
LOOP1: | NOP | ||
NOP | |||
NOP | |||
NOP | |||
DCR | E | ||
JNZ | LOOP1 | ||
DCR | D | ||
JNZ | LOOP2 | ||
RET |
Выводы и пояснения:
1. Регистровая пара HL применяется как регистр адреса установки в ОЗУ, запись в которое производится, начиная со старшего байта, а считывание в регистровую пару DE - с младшего. Это позволяет исключить одну операцию модификации содержимого HL.
2. В качестве установки используется не заданное значение (7,70 с), а уменьшенное на 1 заданной точности измерения, а именно 7,69 с. Это вызвано тем, что в соответствии с БСА программа построена таким образом,
что она сначала выполняет операцию инкрементирования счетчика сотых долей секунды, а вслед за этим - проверку окончания процедуры измерения временного интервала.
3. Использование команды суммирования содержимого аккумулятора с содержимым признака переноса АС1 необходимо для учета переноса из младшего байта счетчика в старший.
4. Анализ написанной программы показывает, что процедура сравнения фактически измеренного времени и установки начинается со сравнения старших байтов, и только в этом случае, если содержимое регистра В окажется равно содержимому регистра D, то выполняется сравнение и младших байтов, расположенных в регистрах С и Е.
Дата добавления: 2019-02-07; просмотров: 407;