Попробовать пока нет возможности.
И считать их как два регистра получится?
А почему udint один регистр занимают ?
Переменная то четырехбайтная. Одну, две конечно можно и ручками поразбивать. Ну а если их сто нужно будет?
Dimensy, спасибо за ответы.
И двести таких картинок на схеме? Или можно как-то попроще ?
Снимок.JPG
Вижу тут только вариант с постепенным укрупнением макросов: самый первый - для одного числа, второй макрос - для 8 чисел, третий - для 64 чисел...
Но Вы посмотрите лог обмена - в каком порядке передаются данные - не гарантируется последовательный запрос одного числа из двух регистров.
Или заменить ПР на ПЛК с его более широкими возможностями по типам данных, обмену сразу массивами, а не регистрами - которые помогут сэкономить время программирования, которое тоже превращается в деньги.
Что за ерунда.
udint это 32 битная переменная, отправлять её в сеть надо 2 регистрами, если вы выделяете 1 регистр, то нечего удивляться,
что отправлена только 16 битная переменная.
Тут проблема не в Овен, а головах программистов. А вот сделать возможность в слейве задать 2 регистра, для целого числа, это уже Овен.
Последний раз редактировалось kondor3000; 10.06.2025 в 08:43.
Подскажите, как организовать для ПР205 (slave) возможность изменения параметра и по записи в регистр модбас и с кнопок ПР205 ?
Скажем, есть энергонезависимая переменная "температура", хочу чтобы была возможность изменять ее и вручную и по модбас.
Создаю сетевую переменную (ПР205-slave), соединяю на схеме с "температура", при этом элемент управления на экране перестает менять значение переменной.
Примерно понимаю из-за чего - значением сетевой в следующем цикле перезаписывается, не соображу как сделать правильно.
Флагов обновления, да и просто корректности, у slave переменной нет.
Кто-то делал похожее ?
много раз уже обсуждалось
function_block fb_udint_update2 //имя функционального блока.
var_input //объявление входных переменных
inp1_udint : udint; //входная переменная1
inp2_udint : udint; //входная переменная2
end_var
var_output //объявление выходных переменных
out_udint : udint; //выходная переменная
end_var
var //объявление локальных переменных
inp1_old:udint; // предыдушее значение входа1
inp2_old:udint; // предыдушее значение входа2
end_var
if inp1_old<>inp1_udint then
inp1_old:=inp1_udint;
out_udint:=inp1_udint;
end_if
if inp2_old<>inp2_udint then
inp2_old:=inp2_udint;
out_udint:=inp2_udint;
end_if
end_function_block
Последний раз редактировалось Васильев; 10.06.2025 в 14:39.