Использование шифратора и дешифратора ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Задача:** Необходимо передать несколько значений логических переменных, полученных главным контроллером, в подчиненный контроллер по сети MODBUS. Для экономии сетевого трафика будем передавать не каждую переменную отдельно, а передадим одно число, используя блоки шифратора и дешифратора. Для этого выполним следующие действия: *1.* В дереве :guilabel:`Обозреватель проекта` добавим шаблон программы для главного контроллера ``Панель Z036 A0``. Подадим значения ``логических`` переменных на входы блока шифратора. Напомним, что количество входов шифратора можно изменять от 2 до 16. На выходе имеем десятичное число, которое и передадим по сети MODBUS, используя блок :guilabel:`Запись` (:guilabel:`slave`). На вход ``en`` установим **1** (константу), чтобы запись произошла. На вход ``port`` подаем номер порта главного контроллера, с которого будет отправлена команда на запись. На вход ``dev`` – адрес подчиненного контроллера, в который будет передано значение. На вход ``reg`` – адрес регистра сетевой переменной, в которую передаем значение, полученное на вход ``val``. Вход ``val`` соединяем с выходом блока :guilabel:`Шифратор`. *2.* Создание сетевых переменных. В дереве :guilabel:`Обозреватель проекта` добавим шаблон программы для подчиненного контроллера ``Z036 B1``. «Ловим» переданное значение в сетевую переменную :guilabel:`proizv3` с указанным адресом на входе ``reg``. Передаем ее значение в :guilabel:`Дешифратор`, а уже из :guilabel:`Дешифратора` происходит побитовое разделение в логические переменные: .. figure:: ../../zwb/lib/zadacha_coder_decoder.png :align: center *3.* Настройка шаблонов контроллеров. В дереве :guilabel:`Обозреватель проекта` щелкнем ПКМ по ``Панель Z036 B1`` –> ``Свойства`` –> вкладка :guilabel:`Устройство` –> выберем ``Протокол MODBUS RTU подчиненный`` для порта ``COM1``. Аналогично поступим с ``Панель Z036 A0``. Только выберем ``Протокол MODBUS RTU главный`` для порта ``COM0``. При симуляции нескольких контроллеров, подключенных к одному порту, необходимо разделять порт для нескольких задач. Для этого в свойствах порта нужно включить соответствующую опцию: .. figure:: ../../zwb/lib/zadacha_coder_decoder1.png :align: center