Nitc писал(а):Раздобыл содержание макроса. Это селектор который выбирает из какой LW записать для передачи через "глобальная передача данных" в ПЛК.
Начнем с того, что вы изначально некорректно диагностируете и описываете проблему. Данный макрос ни как не взаимодействует с ПЛК. Он лишь переносит данные из одних переменных локальной памяти панели в другие.
Оставьте макрос в покое, он ни при чем.
Nitc писал(а):Чтобы понять как работает эта железяка сделал следующее:
1.Создал пустой новый проект.
2.Создал на экране объект А"число" чтение/запись одной переменной по адресу 41984 в ПЛК, адрес 4х формат float.
3.Копирую этот объект -пусть будет Б, и адрес присваиваю LW10.
4.Создаю в "Передача данных Глобальный" новое правило/настройку с параметрами: word, 1 слово, интервал 3.0, Источник Local HMI, адрес LW10. Назначение: modbusRTU (zero...) адрес 4х 41984.
Запускаю онлайн, объект с прямым адресом выдает показание 22, второй объект выдает показание "18".
Реальное значение в ПЛК - 22. Тыкаешь в А - меняешь. меняется в ПЛК, тыкаешь в Б - меняешь, остается "18", а в ПЛК как и было 22.
Что я делаю не так?
И вот тут мы похоже подходим к сути вашей проблемы. Несоответствие типов. У вас в ПЛК переменные типа float, а значит занимают два регистра типа word, вы же если верить вашим описаниям копируете одно слово, вместо двух.
Возвращаясь к изначальной проблеме. Исходя из ваших слов вы берете переменные LW1,2,3 и записываете их в ПЛК. Если в ПЛК переменные имеют тип float, то вам нужно брать LW1,3,5 и записывать 6 слов, а не 3, как вы делаете.
В общем попробуйте разобраться с типами переменных. Это ваша основная проблема.