Просмотр полной версии : Перезапись сетевых переменных
Друзья, добрый вечер!
Подскажите пожалуйста. Столкнулся с такой проблемой, если использовать сетевую переменную с макросом SelChgB то при смене значения этой сетевой переменной начинается болтанка (переменные меняются с 0 на 1 бесконечно)
77291
Если использовать локальные переменные все норм. В чем может быть подвох.
77290
Спасибо
А с чего это у вас линия желтым подсветилась? Думаю в этом и проблема
Внутренняя переменная тоже нужна энергонезависимой. Если подключена к экрану, то можно поставить " запись в конце цикла " в свойствах переменной
Не знаю. Все проверил. В другом проекте тоже сетевая переменная, но желтой линии нет и все работает (не скачет).
77292
Скорее всего дело не в том что переменная сетевая, а в чем то другом.
Подскажите, а где этот параметр задается. Чет я его никогда не встречал.
Внутренняя переменная тоже нужна энергонезависимой. Если подключена к экрану, то можно поставить " запись в конце цикла " в свойствах переменной
Подскажите, а где этот параметр задается. Чет я его никогда не встречал.
Сергей0308
14.07.2024, 22:01
Сетевая переменная в режиме мастер не энергонезависимая, в смысле надо задержку на цикл ставить, короче, зачем эти гадания, Вы поговорить хотите или проблему решить, в смысле где проект или часть проекта с проблемой?
Я же прислал чать проекта в вопросе. Это все что касается вопроса.
Попробую более подробно описать проблему.
Есть "главный контроллер (ПР200)", есть "доп контроллер (ПР200)" Имеем 2 переменные 1 локальную "Сист_Полива_Режим" и 2 сетевую - "20.2.1.Poliv_mode". Локальная меняется с экрана, с помощью макроса передается на сетевую переменную и на другой контроллер. На другом котроллере тоже есть возможность поменять локальную переменную которая также через макрос меняет сетевую и сетевая в свою очередь меняет значение на главном контроллере.
При отладке программы запускал на ПК. Пробовал менять значения локальной переменной, все меняется. Как только начинаешь менять значение сетевой переменной, то начинаются скакания значений, и его уже не остановить.
Я пробовал менять желтую линию связи на линию задержки. Тоже самое - значения скачут.
Удаляйте из проекта все что считаете тайной и выкладывайте здесь. По картинке вам никто ничего не подскажет
Я же прислал чать проекта в вопросе. Это все что касается вопроса.
Попробую более подробно описать проблему.
Есть "главный контроллер (ПР200)", есть "доп контроллер (ПР200)" Имеем 2 переменные 1 локальную "Сист_Полива_Режим" и 2 сетевую - "20.2.1.Poliv_mode". Локальная меняется с экрана, с помощью макроса передается на сетевую переменную и на другой контроллер. На другом котроллере тоже есть возможность поменять локальную переменную которая также через макрос меняет сетевую и сетевая в свою очередь меняет значение на главном контроллере.
При отладке программы запускал на ПК. Пробовал менять значения локальной переменной, все меняется. Как только начинаешь менять значение сетевой переменной, то начинаются скакания значений, и его уже не остановить.
Я пробовал менять желтую линию связи на линию задержки. Тоже самое - значения скачут.
Попробуйте вариант с макросом Exchange (обмен 0-м битом сетевой переменной с булевой переменной)
77293
в доп.настройках OnOff обязательно поставьте "Да" в "Запись в конце цикла".
function_block Exchange
var_input
NetIn : udint;
In : bool;
end_var
var_output
NetOut : udint;
Out : bool;
end_var
if In <> Out then
Out := In; NetOut.0 := In;
elsif NetOut <> NetIn then
NetOut := NetIn; Out := NetIn.0;
end_if
end_function_block
Удаляйте из проекта все что считаете тайной и выкладывайте здесь. По картинке вам никто ничего не подскажет
Прикладываю проект, в нем выделил два блока, в одном работает в другом нет.
Попробуйте вариант с макросом Exchange (обмен 0-м битом сетевой переменной с булевой переменной)
77293
в доп.настройках OnOff обязательно поставьте "Да" в "Запись в конце цикла".
function_block Exchange
var_input
NetIn : udint;
In : bool;
end_var
var_output
NetOut : udint;
Out : bool;
end_var
if In <> Out then
Out := In; NetOut.0 := In;
elsif NetOut <> NetIn then
NetOut := NetIn; Out := NetIn.0;
end_if
end_function_block
Спасибо конечно, но я вообще ничего не понял. Я, к сожалению не знаю как работать с кодом. и куда его добавлять. Мои знания пока ограничены только использованием ФБ.
Прикладываю проект, в нем выделил два блока, в одном работает в другом нет.
Можете попробовать с этой настройкой?
77299
Можете попробовать с этой настройкой?
77299
Спасибо. С такой настройкой все работает нормально. Не скачет. Остается вопрос, почему в зеленом блоке без такой настройки работает сразу нормально.
Спасибо. С такой настройкой все работает нормально. Не скачет. Остается вопрос, почему в зеленом блоке без такой настройки работает сразу нормально.
А OL там принудительно линию задержки поставил (жёлтая) - это по действию аналогично
А OL там принудительно линию задержки поставил (жёлтая) - это по действию аналогично
Это выкрутасы Лоджика. У меня наоборот, в красной зоне нормально работает, а в зеленой мигает, да и ниже еще один выбор с трех мест - тоже мигает.
А OL там принудительно линию задержки поставил (жёлтая) - это по действию аналогично
Я пробовал вместо желтой линии связи ставить линию с задержкой. Не работает. Скачет.
Я пробовал вместо желтой линии связи ставить линию с задержкой. Не работает. Скачет.
Да, здесь почему-то это не работает
Кстати, вот с этой редакцией макроса все нормально работает и без выставления галочки "запись в конце цикла"
Ну и на ST до кучи
function_block SelChgB
var_input
I1 : bool;
I2 : bool;
end_var
var_output
Q : bool;
end_var
var
mem1 : bool;
mem2 : bool;
end_var
if I1 <> mem1 then
mem1 := I1;
Q := I1;
end_if
if I2 <> mem2 then
mem2 := I2;
Q := I2;
end_if
end_function_block
Спасибо большое. Заменил макросы на ваш. Все работает без сбоев.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot