Работа с FBD программой ======================= .. contents:: Содержание: Пример использования в FDB-программе ------------------------------------ После настройки устройств, мы можем начинать разрабатывать логику работы с ними, для этого нужно перетащить блоки устройств на FBD-схему панели. Настроим :guilabel:`Увлажнитель воздуха` следующим образом: .. figure:: images/alice_program_humidifier.png :align: center Всё остальное оставим по умолчанию. Вытащим на схему блок устройства :guilabel:`Увлажнитель воздуха`, для этого достаточно выделить нужный объект и, зажав ЛКМ, перетащить на поле FBD-схемы: .. figure:: images/alice_program_fbd_humidifier.png :align: center Входы и выходы блока для свойств и умений формируются следующим образом: * Для каждого свойства создается один вход, на который необходимо подать из схемы соответствующее значение. * Для каждого умения создаются два выхода и два входа. 1. Выход, предназначенный для установки значения, полученного от сервера Алисы. 2. Выход **rdy**, на который выдается логический сигнал в течение одного такта при получении запроса от сервера. Выход **rdy** всегда располагается непосредственно под выходом значения и нумеруется последовательно сверху вниз, начиная с rdy0, затем rdy1 и так далее. 3. Вход для установки текущего значения, аналогичный входу для установки свойства, но относящийся к текущему значению умения. В начале имени данного входа добавляется символ **w**. 4. Вход для установки ошибки записи значения от сервера Алисы. В начале имени данного входа указывается строка **err_**. Данный вход может использоваться для проверки допустимых диапазонов значений или разрешенных режимов функционирования. Для генерации ошибки необходимо в течение того же такта программы, на котором приходит соответствующий сигнал на выходе **rdy**, подать на данный вход значение «1». Теперь добавим переменные, с помощью которых будем реализовывать работу устройства: .. figure:: images/alice_program_vars.png :align: center Имеем следующие 3 переменные: * :guilabel:`Режим` - для установки режима работы вентилятора. * :guilabel:`Влажность` - для хранения и передачи информации о влажности воздуха. * :guilabel:`Вкл/Выкл` - для передачи состояния включения/выключения. Далее нужно подключить к входам и выходам соответствующие блоки: .. figure:: images/alice_program_fbd.png :align: center На входы подаём значения нужных переменных, которые передадим **Алисе**, а к выходам подключим блоки записи в соответствующие переменные. Замечания --------- **!!Важно** - программа запрещает нам использование нескольких FBD-блоков одного и того же устройства, иначе возникнет ошибка: .. figure:: images/alice_program_duplicate_error.png :align: center Значит, такие ситуации: .. figure:: images/alice_program_duplicate_block.png :align: center **Нужно строго исключать!** При редактировании свойств виртуального устройства нужно иметь ввиду, что блок, уже используемый на схеме, не будет автоматически обновлен в соответствии с новыми настройками. Для его обновления можно использовать команду :guilabel:`Обновить` или нажать клавишу **F3**. Порядок обновления блока: * 1. Выделить FBD-блок со старой конфигурацией настройки и щёлкнуть ПКМ по нему, затем щёлкнуть :guilabel:`Обновить` или нажать клавишу **F3**: .. figure:: images/alice_program_update_block.png :align: center * 2. Теперь наш FBD-блок обновлён и соответствует нынешней настройке, как и нижний блок: .. figure:: images/alice_program_update_block2.png :align: center