MATRIX (OSCAT)

<< Click to Display Table of Contents >>

Navigation:  Приложения > Библиотека OSCAT > OSCAT.Функциональные блоки > OSCAT.ФБ.Логические модули >

MATRIX (OSCAT)

Вид ФБ в редакторе программ языка FBD:

MATRIX_OSCAT

Входы и выходы ФБ:

Название

Тип

Описание

Входы

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):

MATRIX_OSCAT_1

Контроллер опрашивает линии последовательно, поэтому в течение 1 цикла только один из выходов  Y1 .. Y4 имеет значение TRUE:

MATRIX_OSCAT_2

При опросе линии считываются входы X1 .. X5, и если клавиша нажата, соответствующий код генерируется на выходе CODE. При этом, если значение CODE изменяется, выход TP на 1 цикл принимает значение TRUE. Если RELEASE=TRUE, спустя 4 цикла на выходе дополнительно генерируется код отжатия клавиши.

Пример

Пусть на некотором цикле N при опросе линии 2 (line=2, Y3=1) детектируется X4=1. В этом случае  CODE принимает значение 164:

MATRIX_OSCAT_3

На циклах N+1, N+2 и N+3 CODE=0, а на цикле N+4 CODE=36, поскольку RELEASE=TRUE:

MATRIX_OSCAT_4