Случается, что разное оборудование, зачастую панель оператора с ПЛК по разному общаются между собой.
Приветствую всех, на связи Семен, делаю объект, и в который раз при обмене данными требуется перестановка байт. Напишу зачем и как это вылечить.
Как передать REAL и сделать энергонезависимым?
Сейчас работаю со связкой ПЛК100+Weintek MT8072iP.
Задача такая, панель является мастером, передаем данные по Modbus TCP, нужно записывать уставку с плавающей запятой, в моем случае температура.
Для того чтобы уставка не пропадала при обрыве питания, мне нужно занести в регистры панели, а с панели передать на ПЛК.
Делается это так:
Создаем переменную - температура - Float
Заходим в объекты, передача данных(глобально).
Создаем новый.
Указываем откуда и куда будем передавать. Передаем на Slave ПЛК100.
Как поменять байты в регистре REAL?
Открываем Codesys 2.3.
Функция перекидывания байтов называем Swap_real.
Применяем указатели для прямой адресации в области памяти, то есть из регистров напрямую вытаскиваем байты, меняем их между собой и обратно склеиваем.
Так мы лепим функцию
Так мы получаем результаты, на входе абра-кадабра, на выходе понятная температура 60,5 градусов.
На этом всё, друзья, с вами был автор канала.
С уважением, Гридин Семен.