В вычислительной технике и автоматике принято записывать переменные в наборе справа налево, т.е. не x 1, x 2, x 3, …, xn, а xn, xn-1, …, x2, x1, и нумеровать переменные, начиная с i = 0, т.е. xn-1, xn-2, …, x2, x1, x0. В этом случае упорядоченный набор xi, который называется кортеж, можно рассматривать как число в двоичной позиционной системе счисления, в которой вес каждого последующего разряда в кортеже в два раза больше предыдущего*, а само число N определяется по формуле
(1)
Для трехразрядного кортежа x2, x1, x0 получим табл. 1.
Таблица 1
N | ||||||||
x 2, x 1, x 0 |
В данном случае номеру N соответствует определенное значение переменных в наборе, другими словами, код. Способ кодирования по формуле (1), которому соответствует табл. 1, называется двоичным позиционным кодом, или сокращенно ДПК. Кроме ДПК в системах управления широкое применение нашел так называемый соседний код, или код Грея (ДКГ), который от ДПК отличается тем, что при переходе от цифры N j к N j + 1 изменения происходят только в одном разряде кода (табл. 2). Используется также унитарный код (код с одной «1» в n разрядах), код с фиксированным m – числом единиц в n разрядах, а также большая группа кодов, допускающих обнаружение и исправление ошибки при передаче информации. Все эти коды, оставаясь двоичными, не являются позиционными, т.к. к ним не применима формула (1). Поэтому в ряде случаев отступают от этого правила обозначения и перечисляют переменные начиная с j = 1, 2, …, n.
|
|
Таблица 2
N | ||||||||
ДПК | ||||||||
ДКГ |
Заметим, что ДКГ, будучи двоичным, не относится к позиционной системе счисления, как ДПК, т.к. для ДКГ не применима формула (1), хотя, как видно из табл. 2, легко найти соответствие между ДПК и ДКГ.
В данном пособии приведены только примеры кодов, соответствующих целым числам. Дробные числа, а также числа с плавающей запятой подробно рассмотрены в учебной литературе [37].
В цифровой технике используется много типов кодов, которые будут рассматриваться далее в соответствующих разделах пособия. В частности, сигналы двоичные по форме могут иметь основание не 2, а 3, если они представлены в виде –1, 0, +1, например, напряжение –5 В, 0, +5 В. Такая система представления сигналов используется при передаче информации по каналам связи (квазитроичный код). При импульсном представлении двоичных сигналов (+1 соответствует импульс положительной полярности, а –1 – импульс отрицательной полярности) код называется ЧПИ, т.е. код с чередованием полярности.
Троичные коды и троичная система счисления используются и в вычислительной технике, однако в теории дискретных устройств принято иметь дело с двоичными переменными xi {0, 1}.
|
|
Двоичные наборы переменных xn, xn- 1, …, x 2, x 1 могут рассматриваться как комплекс двоичных переменных некоторой функции y = ƒ (xn, …, x 2, x 1), которая называется переключательной или булевой функцией, так как и { x } и y . Один и тот же набор xi, может «порождать» систему булевых функций y1, y2, …, ym. Двоичные переменные называют булевыми переменными.
1.2.1. Этот раздел параграфа, который приводится здесь, очень хорошо изложен в учебнике А.Я. Савельева (стр. 167–169) [37].
Две функции равносильны друг другу, если принимают на всех возможных наборах переменных одни и те же значения f1 (x 1, х 2,..., xп) = = f 2(х 1, х 2, ..., хп).
Булевы переменные могут быть действительными или фиктивными.
Переменная xi действительна, если значение функции f (x 1, х 2, ..., xi, ...
..., хп) существенно изменяется при изменении xi.
Переменная xi фиктивна, если значение функции f (x 1, ..., xi,..., хп) не изменяется при изменении xi.
Логическая функция от трех переменных показана в табл. 3.
Из таблицы видно, что переменные х1 и х2 – действительные, а переменная x3 – фиктивная, так как f (x 1, x 2,0) = f (x 1, x 2,1) для всех наборов x 1, x 2.
Таблица 3
x 3 | x 2 | x 1 | f (x 1, x 2, x 3) | x 3 | x 2 | x 1 | f (x 1, x 2, x 3) |
Таким образом, появляется возможность сокращать или расширять количество переменных для логических функций удалением или введением фиктивных переменных. Так как число значений переменных хi ограничено, то можно определить количество N функций от любого числа переменных: N= , где n – количество переменных xi.
Пример. Предположим, что имеется система кондиционирования воздуха для помещения, где установлена ЭВМ, состоящая из двух кондиционеров малой и большой мощности и работающая при таких условиях:
1) кондиционер малой мощности включается, если температура воздуха в помещении достигает 19 °С;
2) кондиционер большой мощности включается, если температура воздуха достигает 22 °С (малый кондиционер при этом отключается);
3) оба кондиционера включаются при температуре воздуха 30 °С.
Пусть информация о температуре воздуха поступает от датчиков, которые соответственно срабатывают при достижении температуры 19, 22, 30 °С. Каждый из этих датчиков выдает входную информацию для устройства управления кондиционерами. Первые три датчика определяют рабочие режимы, и их можно представить как входы управляющего автомата. Используя двоичный алфавит для задания состояний датчика (0 – нет сигнала о достижении заданного уровня температуры, 1 – есть сигнал), функционирование системы управления кондиционерами можно описать следующим образом (табл. 4):
Таблица 4
z 3 | z 2 | z 1 | ω 2 | ω 1 |
Здесь z 1 – датчик, срабатывающий при t = 19 °C; z 1= 0, если температура меньше 19 °С; z 1 = l, если температура равна или больше 19 °С; z 2–датчик, срабатывающий при t = 22 °С, z 2 = 0, если t < 22 °C, z 2= l при t ≥ 22 °С; z 3 – датчик, срабатывающий при t = 30 °С; z 3 = 0 при t < 30 °C, z 3 = l при t ≥ 30 °С; ω 1и ω 2 – соответственно управление маломощным и мощным кондиционерами (ω = 0 – кондиционер выключен, ω = 1 – кондиционер включен). Таблица описывает функционирование системы управления без нарушений работы.
Впервые теория Дж. Буля была применена русским ученым П.С. Эренфестом к анализу контактных цепей (1910 г.). Возможность описания переключательных схем с помощью логических формул оказалась весьма ценной по двум причинам. Во-первых, с помощью формул удобнее проверять работу схем. Во-вторых, задание условий работы любой переключательной схемы в виде формул упрощает процесс построения самой переключательной схемы, так как оказалось, что существует ряд эквивалентных преобразований, в результате которых логические формулы упрощаются. При описании переключательных схем замкнутый контакт принимается за истинное высказывание, а разомкнутый – за ложное, поэтому последовательное соединение контактов можно рассматривать как функцию И, а параллельное – как функцию ИЛИ.
|
|
Использование логических функций оказалось особенно полезным для описания работы логических элементов ЭВМ.
ФУНКЦИИ АЛГЕБРЫ ЛОГИКИ
Булевы функции, или функции алгебры логики (ФАЛ), могут быть заданы непосредственно в виде логического выражения, объединяющего логические переменные со значением x или с помощью знаков конъюнкции () и дизъюнкции (). Эти логические выражения могут быть получены также из таблиц, в строках которых перечислены все возможные комбинации значений переменных, от которых зависит функция, и в столбце напротив каждой строки указано значение этой функции. Такие таблицы называются таблицами истинности. Если для одних и тех же комбинаций переменных определяется несколько функций, то значения этих функций записываются в независимых столбцах.
Пусть задан набор двоичных (булевых) переменных x 1, x 2, x 3, …, xn. Функция y = ƒ (x 1, x 2, x 3, …, xn) называется булевой функцией, если она принимает значение 0 или 1 на любом из наборов переменных x 1, x 2, x 3, …, xn. Поскольку любая переменная xi (i = ) принадлежит множеству из 0 и 1 (xi {0, 1}), то количество наборов переменных равно 2n.
Рассмотрим правило определения булевой функции на конкретном небольшом примере, приведенном в работе [12] на стр. 136.
Пример. Насос принудительного водоснабжения должен быть включен автоматически, если сработает по крайней мере один из двух датчиков (аварийного или предупредительного падения давления на объекте) и датчик понижения температуры охлаждающей воды ниже 5 °С. Кроме того, включение насоса должно быть осуществлено автоматически, если срабатывает датчик понижения уровня воды в системе при условии отсутствия сигналов от обоих датчиков давления и от датчика температуры. В остальных случаях включение насоса не происходит.
|
|
Требуется спроектировать логическое устройство, выполняющее это предписание (алгоритм).
I этап. Выделим и обозначим входные переменные:
x 1– сигнал от датчика, предупреждающего о снижении давления;
x 2 – сигнал от датчика аварийного снижения давления;
Таблица 5
№ п/п | Наборы входных переменных | Значения выходной функции y 1 | |||
x 1 | x 2 | x 3 | x 4 | ||
x 3 – сигнал от датчика температуры при t < 5 °С;
x 4 – сигнал от датчика снижения уровня воды.
Выпишем возможные наборы переменных столбиком в табл. 5.
Как следует из этой таблицы, зависимости значений выходной функции от последовательности поступления входных сигналов нет.
Запишем аналитическое выражение для y 1 в виде логической суммы (дизъюнкции) конъюнкций тех переменных, которые определяют единичное значение булевой функции:
II этап. Упростим эту функцию, исключив x 4 из двух последних конъюнкций, из первой и второй, а также из четвертой и пятой. После этого уберем повторяющиеся конъюнкции. Тогда получим:
На рис. 3 представлены два варианта реализации булевой функции y 1 с помощью комбинационной схемы на элементах логики и с помощью ПЗУ. Несколько хороших примеров даны в работе [49].
Двоичные булевы переменные могут быть сигналами от специальных датчиков. Например, при штамповке изделий из металлических листов манипулятор извлекает листы из загрузочного устройства и подает их под штамп в том случае, если штамп находится в крайнем верхнем положении. При этом формируются следующие логические сигналы: α1 – в загрузочном устройстве листы есть;
α2 – рука манипулятора выдвинулась до крайнего положения;
α3 – рука в левом положении;
α4 – поворот руки осуществился;
α5 – захват листа произошел;
α6 – штамп находится в верхнем положении;
α7 – штамповка осуществилась.
Рис. 3. Схема включения насоса
Вторым способом формирования логических сигналов является сравнение каких-либо величин (например напряжений) и выработка сигнала U(t) > K (питающее напряжение U(t) больше установленного максимального значения K).
В системах управления различают логические переменные α и команды на исполнение каких-либо действий, например «включить электромагнит захвата листов». Чаще всего их обозначают буквами латинского алфавита: логические сигналы в алгоритмах – символом α, а команды – символом C или А. Однако и команда также имеет два значения: она есть – «1», ее нет – «0». Т.о., в общем случае в системах управления можно говорить о наборе двоичных (булевых) переменных, которые будем обозначать символом x, т.е. x 1, x 2, x 3, …, xn. При «абстрактном» подходе не различаются переменные α или С.