Добрый день! Добавил прибор ПЛК110-32 в облако через TCP. В Слейве 7 переменных real. Так вот 5 переменных видит а 6.7-я Нули. В чём подводный камень? в OPC есть данные в этом же слейве.
Мы с нескрываемым интересом изучили представленный код.
Оригинально названы переменные, имя "_" умилило.
Поступила жалоба на неправильное считывание float-ов из облака.
В ModBus Slave float-ов обнаружено не было. Хм...
Зато есть ФБ, в котором есть 8 входов типа REAL и нет начинки... Интригует.
Адрес первой переменной присваивается указателю на ФБ. ЧЕГО
И далее в коде
PSlave^.A := PSlave^.A + 1 + k;
PSlave^.B := PSlave^.B + 2 + l;
PSlave^.C := PSlave^.C + 3 + k;
PSlave^.D := PSlave^.D + 4 + l;
PSlave^.E := PSlave^.E + 5 + k;
PSlave^.F := PSlave^.F + 6 + l;
PSlave^.G := PSlave^.G + 7 + k;
PSlave^.H := PSlave^.H + 8 + l;
где l и k - константы REAL.
Я, конечно понимаю, что пытались сделать, но во первых, забыли про middleendian выравнивание в modbus
И зачем ТАК извращённо то?
Вставить флоат в modbus slave религия не позволяет или почему?
Идем дальше - настройки тучки:
Почему адреса float -ов нечётные? Естественно читает пол флоата от одного и половину от другого.
Далее:
Адреса идут 16-ти ричные. А задаются как будто они десятичные. Вот последние 3 и нули.
Последний раз редактировалось Филоненко Владислав; 08.12.2017 в 11:45.
Тролль-наседка, добрый, нежный и ласковый