DO. Работа с дискретными выходными каналами. Запись значений в каналы. Функциональный блок WRITE_DO. ===================================================================================================== В BRIC-IDE существует 2 способа записи значения в канал DO ПЛК BRIC. Первый способ: для записи значения реализован функциональный блок WRITE_DO. |write_do| .. |write_do| image:: images/write_do.png Данный функциональный блок имеет 2 входа: DO_VALUE (значение состояния дискретных выходов) и DO_MASK (маска, разрешающая изменять состояние дискретных выходов). Запись значения в DO_VALUE влияет на значение **выходов контроллера**. Запись значения в DO_MASK влияет на **разрешение** записи в выходы контроллера. В DO_VALUE и DO_MASK необходимо передавать целочисленные значения, соответствующие степени числа 2. +---------+---------+---------+---------+ | DO-0 | DO-1 | DO-2 | DO-3 | +=========+=========+=========+=========+ | 2^0 = 1 | 2^1 = 2 | 2^2 = 4 | 2^3 = 8 | +---------+---------+---------+---------+ .. important:: DO_VALUE и DO_MASK имеют тип данных UINT с диапазоном от 0...65535, занимая 2 байта информации. Если на DO_MASK передать все 0, то запись во все каналы будет запрещена. Если передать все 1, то запись будет разрешена во все каналы, можно запретить запись в определенные каналы путем передачи в DO_MASK соответствующего значения. Рекомендуется использовать диапазон значений 0..15 См. Таблицу. .. figure:: images/inputs_diagram.png :align: center :width: 300 *Запись состояния дискретного выхода* То есть, чтобы "включить" дискретные выходы, например, DO_2 и DO_3 необходимо прописать в DO_VALUE значение 12, так как это сумма значений 4 и 8. В значение DO_MASK запишем 15 так как это сумма значений всех каналов (1+2+4+8) контроллера, чтобы разрешить запись во все каналы. Создаём программу на языке FBD. Функциональный блок WRITE_DO добавляется из "Библиотеки" во вкладке "DO Function Blocks". .. figure:: images/28.png :align: center :width: 600 *Программа на FBD для записи состояния DO_2 и DO_3* Для каналов DO реализована функция диагности короткого замыкания (Далее КЗ). В случае отсутствия подключения нагрузки к каналу DO, на который подается сигнал, загорится соответствующий светодиод SHORT. После загрузки программы в ПЛК загораются зеленые светодиоды на дискретных выходах DO_2 и DO_3. .. figure:: images/plc_3.gif :width: 600 :align: center *DO_2 и DO_3 на ПЛК BRIC* Для того, чтобы подробнее узнать о независимом управлении несколькими дискретными выходами напишем проект. В него буду входить две программы на языке ST. Допустим, что при появлении одного сигнала, например, "start" должны включиться выходы DO_0 и DO_3. А при появлении сигнала "start2" должен включиться дискретный выход DO_2. При отсутствии данных сигналов каналы должны выключиться. Допустим первая наша программа будет отвечать за управление дискретных выходов DO_0 и DO_3. Программа будет иметь вид, представленный на рисунке ниже. .. figure:: images/30.png :width: 600 :align: center Вторая программа, отвечающая за дискретный выход DO_2 представлена на рисунке ниже. Дискретный выход DO_2 управляется внешним сигналом "start2". .. figure:: images/31.png :width: 600 :align: center Добавляем программы в ресурсы, компилируем. Далее загружаем наш проект в контроллер. Заходим в WEB-страницу и открываем вкладку "USER". При изменении переменной "start" из 0 в 1 - дискретные выходы DO_0 и DO_3 "включаются". .. figure:: images/plc_4.gif :width: 600 :align: center *DO_0 и DO_3 на ПЛК BRIC* При изменении переменной "start2" из 0 в 1 включается дискретный выход DO_2. Заметьте, что включенные дискретные каналы DO_0 и DO_3 остаются без изменений. .. figure:: images/plc_5.gif :width: 600 :align: center *Состояние дискретных выходов ПЛК BRIC* Поставленная задача решена, для того, чтобы выключить все дискретные выходы контроллера в данном случае необходимо "выключить" сигналы "start" и "start2". Для чтения значения состояния дискретных выходов ПЛК BRIC в BRIC-IDE реализован функциональный блок READ_DO (при включенном канале DO логическая 1 информирует о протекании в цепи тока более 2 мА, а логический 0 – об обрыве цепи). Добавим функциональный блок READ_DO и переменную do_read в предыдущую программу. .. figure:: images/32.png :width: 600 :align: center .. figure:: images/34.png :width: 600 :align: center *Программа для чтения состояния дискретных каналов* .. figure:: images/33.png :width: 600 :align: center *Результат вывода программы в WEB-странице* Если в каком-либо из задействованных каналов будет обрыв или короткое замыкание, то значение переменной do_read поменяется. .. seealso:: Подробно о дискретных выходах ПЛК BRIC можно узнать по ссылке_ .. _ссылке: https://bric-plc.readthedocs.io/ru/latest/digital_outputs.html