Использование шифратора и дешифратора

Задача: Необходимо передать несколько значений логических переменных, полученных главным контроллером, в подчиненный контроллер по сети MODBUS. Для экономии сетевого трафика будем передавать не каждую переменную отдельно, а передадим одно число, используя блоки шифратора и дешифратора.

Для этого выполним следующие действия:

1. В дереве Обозреватель проекта добавим шаблон программы для главного контроллера Панель Z036 A0. Подадим значения логических переменных на входы блока шифратора. Напомним, что количество входов шифратора можно изменять от 2 до 16. На выходе имеем десятичное число, которое и передадим по сети MODBUS, используя блок Запись (slave).

На вход en установим 1 (константу), чтобы запись произошла.

На вход port подаем номер порта главного контроллера, с которого будет отправлена команда на запись.

На вход dev – адрес подчиненного контроллера, в который будет передано значение.

На вход reg – адрес регистра сетевой переменной, в которую передаем значение, полученное на вход val.

Вход val соединяем с выходом блока Шифратор.

2. Создание сетевых переменных.

В дереве Обозреватель проекта добавим шаблон программы для подчиненного контроллера Z036 B1. «Ловим» переданное значение в сетевую переменную var с указанным адресом на входе reg. Передаем ее значение в Дешифратор, а уже из Дешифратора происходит побитовое разделение в логические переменные:

_images/task_coder_decoder.png

3. Настройка шаблонов контроллеров.

В дереве Обозреватель проекта щелкнем ПКМ по Панель Z036 B1 –> Свойства –> вкладка Устройство –> выберем Протокол MODBUS RTU подчиненный для порта COM1.

Аналогично поступим с Панель Z036 A0. Только выберем Протокол MODBUS RTU главный для порта COM0.

При симуляции нескольких контроллеров, подключенных к одному порту, необходимо разделять порт для нескольких задач. Для этого в свойствах порта нужно включить соответствующую опцию:

_images/task_coder_decoder1.png