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