Персональная ЭВМ обнаруживает замыкание выключателя на расстоянии


Брюс Трамп. Фирма Burr-Brown Corp. (Тусон, шт. Аризона)

Часто системам, управляющим персональными ЭВМ, приходится обнаруживать замыкание удаленных выключателей или контактов в различные моменты времени. Такие замыкания могут быть обнаружены ЭВМ фирмы IBM или совместимой с ней персональной ЭВМ двумя простыми способами, каждый из которых основан на применении схемы и программы на языке Бейсик. В обоих случаях используется последовательный порт персональной ЭВМ и не требуется дополнительных к ЭВМ устройств или изменений в ее схеме.

В первом способе программа исполняется постоянно. При каждом исполнении по команде строки 130 происходит попытка передачи команды на распечатку на порт связи. Удаленный выключатель управляет линией "Сброс для передачи" порта (рис. 1).

rk-151.gif
РИС. 1

При разомкнутом выключателе команда на печать, передаваемая в порт, принимается к исполнению во время действия основной программы. Когда выключатель замкнут, при выдаче команды на печать требуемый сигнал "Сброс для передачи" не воспринимается, что вызывает ошибку, связанную с истечением времени ожидания подключения устройства.

Программа обработки:

100 	' Обнаружение замыкании выключателя
105 	' Установка corn1: port. Установка длительности импульса "Сброс передачи
	  "1 мс
110 	OPEN "com1:9600,n.8,1,rs,cs1,cd,ds" AS #1 ,
115 	ON ERROR GOTO 150 ' Установка ловушки ошибок 120 '
125 	' Основная программа
130 	PRINT #1 ' Попытка выдачи команды на печать порту связи
135 	PRINT " Основная программа "
140 	GOTO 125 ' обратный ход в основной программе
145 	'
150 	' Цикл при замкнутом ключе
155 	PRINT " Выключатель замкнут "
160 	RESUME NEXT Конец подпрограммы, действующей при замкнутом выключателе

	При разомкнутом выключателе в программе на языке Бейсик используется
	принятый  сигнал  "Сброс для передачи".      При замкнутом выключателе
	программа на Бейсике обнаруживает ошибку  в  работе  порта  при приеме
	данных в последовательном коде и направляет ход исполнения программы
	к строке 150.

Устройство обработки ошибок (введенное в строке 115) направляет исполнение программы к подпрограмме, начинающейся строчкой 150, которая обрабатывается при замкнутом выключателе. Эта подпрограмма завершается оператором Resume next, переводящим ход исполнения программы к строке 135 на выполнение основной программы. Этот цикл будет действовать каждый раз, пока оператор Print # 1 будет встречаться в программе. При размыкании выключателя будет снова выполняться команда строки 130, а цикл, связанный с режимом замыкания, останется невостребованным.

Усовершенствование схемы и программы обеспечивает точный подсчет замыканий выключателя. При этом используется КМОП-таймер серии 555, подключенный к линии с подтверждением связи, генерирующий действующий символ интерфейса RS-232 стандарта ASCII. При каждом замыкании выключателя схема вырабатывает 300-мкс импульс (что равно длительности одного стартового бита и двух битов данных). Генерированный дополнительный символ не является существенным для исполнения программы.

В буфере связей, используемом программой на языке Бейсик, накапливается каждый символ, генерированный таймером, так что количество замыканий ключа может быть точно подсчитано. Каждый раз, когда в ходе исполнения программы встречается строка 225, производится контроль состояния буфера. Если им были приняты какие-либо символы, они считываются и подсчитываются подпрограммой, начинающейся строкой 245. Единственным условием является то, что строка 225 должна исполняться достаточно часто, чтобы буфер не переполнялся. По умолчанию объем буфера задается 128 символами, но может в случае необходимости изменяться оператором Open в строке 210.

Привередливые пользователи могут передавать информацию за время действия импульса одновибратора и контролировать прием специального символа стандарта ASCII. Длительность этого импульса может лежать в пределах от длительности одного стартового бита (104 мкс при 9600 Бод) до длительности стартового бита плюс восемь информационных битов (937 мкс). Возможно использование 9-уровневого (а не 9-разрядного) кода. Длительность импульса, генерируемого таймером, может изменяться подбором резистора R3 и конденсатора С3 или изменением напряжения на выводе 5 таймера. Хотя программа подтвердила свою состоятельность при работе с Бейсиком и Квик Бейсиком, достаточные возможности для управления портом связи, обеспечиваемые описанными приемами, могут быть получены и при использовании других языков.

Вгисе С. Trump. PC detects remote switch closures, ED, 1990, No. 13. pp. 73, 74.

Электроника № 15, 1990