<< Click to Display Table of Contents >> Navigation: Приложения > Библиотека OSCAT > OSCAT.Функциональные блоки > OSCAT.ФБ.Логические модули > MATRIX (OSCAT) |
Вид ФБ в редакторе программ языка FBD:
Входы и выходы ФБ:
Название |
Тип |
Описание |
Входы |
||
x1 .. x5 |
BOOL |
Входы линий Y1 .. Y4. |
RELEASE |
CONSTANT BOOL |
Если RELEASE=TRUE, генерируется код нажатия и отжатия клавиши, в противном случае генерируется только код нажатия. |
Выходы |
||
code |
BYTE |
Выход (генерируемый код).Значение CODE формируется следующим образом: • бит 7 – 1, если клавиша нажата, 0 – если отжата; • бит 6 – бит 2 номера линии (*); • бит 5 – бит 1 номера линии (*); • бит 4 – бит 0 номера линии (*); (*) Номер линии line принимает значение от 0 до 3. При опросе линии 0 Y1=1, линии 1 – Y2=1 и т.д. • бит 3 – всегда 0; • бит 2 – бит 2 номера строки (**); • бит 1 – бит 1 номера строки (**); • бит 0 – бит 0 номера строки (**). (**) Номер строки row принимает значение от 0 до 4. Для строки X1 row=0, для X2 row=1 и т.д. Важно! Teкущий код кoнтpoллepa нe aнaлизиpуeт удepжaниe клaвиши, т.e. длинa импульca oт нaжaтия клaвиши нe дoлжнa пpeвышaть длитeльнocть циклa, в пpoтивнoм cлучae будут "cчитывaтьcя" coceдниe пo cтpoкe клaвиши.Пpи нaжaтии двуx клaвиш oднoй линии кoppeктнo cчитывaeтcя клaвишa c нaимeньшим нoмepoм cтpoки. |
TP |
BOOL |
TRUE в течение 1 цикла при изменении CODE. |
y1 .. y4 |
BOOL |
TRUE, если линия считывается. |
MATRIX – это матричный контроллер (энкодер) клавиатуры (4 линии/столбца Y1 .. Y4 и 5 входов/строк X1 .. X5):
Контроллер опрашивает линии последовательно, поэтому в течение 1 цикла только один из выходов Y1 .. Y4 имеет значение TRUE:
При опросе линии считываются входы X1 .. X5, и если клавиша нажата, соответствующий код генерируется на выходе CODE. При этом, если значение CODE изменяется, выход TP на 1 цикл принимает значение TRUE. Если RELEASE=TRUE, спустя 4 цикла на выходе дополнительно генерируется код отжатия клавиши.
Пусть на некотором цикле N при опросе линии 2 (line=2, Y3=1) детектируется X4=1. В этом случае CODE принимает значение 164:
На циклах N+1, N+2 и N+3 CODE=0, а на цикле N+4 CODE=36, поскольку RELEASE=TRUE: