PDA

Просмотр полной версии : Перезапись переменной саму в себя (из двух источников)



Dead Kid
08.04.2022, 18:25
Здравствуйте. Создавал макрос в программе и решил его проверить. Суть макроса - при приходе значения (температуры) с одного из источников, переписывать его на все другие. Например: ввод с экрана - F, ввод по сети RS - P, промежуточная переменная - S. Если F<>S, а S=P, то значение F записывается и в P, и в S. Все переменные с плавающей точкой.
Проблемы начались во время отладки в симуляторе. При изменении параметра F всё работало как надо, но в симуляторе не было возможности изменить параметр P. Получилось изменять параметр P в симуляции, только выставив на экране поле ввода параметра P. Однако после этого ни изменения параметра P, ни изменения параметра F не применяются ( записываю в поле число, а ничего не меняется, даже шага программы не проходит). Насколько я понял, это из-за того, что в программе уже есть выходной блок параметра, что ни введи на вводном блоке, параметр не изменится, сколько линий задержки между ними не вставляй (я пробовал).
По-этому у меня есть несколько вопросов: почему нельзя менять значение переменной без поля ввода на экране? И есть ли для Owen logic решения записи значения в переменную с двух источников (саму в себя).

kondor3000
08.04.2022, 18:54
Здравствуйте. Создавал макрос в программе и решил его проверить. Суть макроса - при приходе значения (температуры) с одного из источников, переписывать его на все другие. Например: ввод с экрана - F, ввод по сети RS - P, промежуточная переменная - S. Если F<>S, а S=P, то значение F записывается и в P, и в S. Все переменные с плавающей точкой.
Проблемы начались во время отладки в симуляторе. При изменении параметра F всё работало как надо, но в симуляторе не было возможности изменить параметр P. Получилось изменять параметр P в симуляции, только выставив на экране поле ввода параметра P. Однако после этого ни изменения параметра P, ни изменения параметра F не применяются ( записываю в поле число, а ничего не меняется, даже шага программы не проходит). Насколько я понял, это из-за того, что в программе уже есть выходной блок параметра, что ни введи на вводном блоке, параметр не изменится, сколько линий задержки между ними не вставляй (я пробовал).
По-этому у меня есть несколько вопросов: почему нельзя менять значение переменной без поля ввода на экране? И есть ли для Owen logic решения записи значения в переменную с двух источников (саму в себя).

Если вы хотя бы воспользовались поиском, то нашли бы не один вариант, например макрос petera (если не ошибаюсь)

Dimensy
08.04.2022, 19:03
Если вы хотя бы воспользовались поиском, то нашли бы не один вариант, например макрос petera (если не ошибаюсь)

А еще, в библиотеке макросов есть блоки SelChgF, SelChgI и SelChgB которые на выход записывают значение одного из двух входов, которое менялось последним

Dead Kid
08.04.2022, 19:41
Спасибо большое за готовые макросы. К сожалению при импортировании их в мой проект одна из переменных жалуется на наличие циклической связи в одной из переменных. Если запустить симуляцию игнорируя это, то макрос работает только с одной переменной, вторую, к которой идёт жёлтая линия, изменить не позволяет. При замене жёлтой линии на задержку уже возникает жалоба на первую переменную. При вставке линии задержки на обе переменные их значения не меняются (что ни вводи в поле значения, всё равно 0). Наличие промежуточной переменной никак не влияет на ситуацию. Если убрать с экрана поля ввода этих переменных, то циклических связей нет, но и в симуляции я не могу поменять значения переменных (переменные просто не нажимаются и не появляется поле ввода).

petera
08.04.2022, 19:54
Спасибо большое за готовые макросы. К сожалению при импортировании их в мой проект одна из переменных жалуется на наличие циклической связи в одной из переменных. Если запустить симуляцию игнорируя это, то макрос работает только с одной переменной, вторую, к которой идёт жёлтая линия, изменить не позволяет. При замене жёлтой линии на задержку уже возникает жалоба на первую переменную. При вставке линии задержки на обе переменные их значения не меняются (что ни вводи в поле значения, всё равно 0). Наличие промежуточной переменной никак не влияет на ситуацию. Если убрать с экрана поля ввода этих переменных, то циклических связей нет, но и в симуляции я не могу поменять значения переменных (переменные просто не нажимаются и не появляется поле ввода).

Обе переменные надо прямо на выходе макроса объединять!

Dead Kid
08.04.2022, 20:05
Всё также, как я и говорил в прошлом посте. Подозреваю это из-за полей ввода на экране. Но если убираю поля ввода, то не могу менять значения в симуляции, да и с экрана нужно всё-таки вводить значения. Работаю на ПР200, если это имеет значение.
60244

petera
08.04.2022, 20:06
Всё также, как я и говорил в прошлом посте. Подозреваю это из-за полей ввода на экране. Но если убираю поля ввода, то не могу менять значения в симуляции, да и с экрана нужно всё-таки вводить значения. Работаю на ПР200, если это имеет значение.
60244

Сделай в свойствах нижней переменной "запись в конце цикла"

ЗЫ
60245

Сергей0308
08.04.2022, 22:04
Здравствуйте. Создавал макрос в программе и решил его проверить. Суть макроса - при приходе значения (температуры) с одного из источников, переписывать его на все другие. Например: ввод с экрана - F, ввод по сети RS - P, промежуточная переменная - S. Если F<>S, а S=P, то значение F записывается и в P, и в S. Все переменные с плавающей точкой.
Проблемы начались во время отладки в симуляторе. При изменении параметра F всё работало как надо, но в симуляторе не было возможности изменить параметр P. Получилось изменять параметр P в симуляции, только выставив на экране поле ввода параметра P. Однако после этого ни изменения параметра P, ни изменения параметра F не применяются ( записываю в поле число, а ничего не меняется, даже шага программы не проходит). Насколько я понял, это из-за того, что в программе уже есть выходной блок параметра, что ни введи на вводном блоке, параметр не изменится, сколько линий задержки между ними не вставляй (я пробовал).
По-этому у меня есть несколько вопросов: почему нельзя менять значение переменной без поля ввода на экране? И есть ли для Owen logic решения записи значения в переменную с двух источников (саму в себя).

Даже Т-триггерами управляли из нескольких мест: https://owen.ru/forum/showthread.php?t=26216&page=222

60248

Dead Kid
09.04.2022, 14:51
Спасибо, но получилось только с одной переменной. Для другой переменной всё ещё жалуется на циклическую связь. При добавлении строки на экран для этой переменной и настройке записи в конце цикла решается. Без строки на экране возможности поставить в конце цикла - нет. Можно решить без добавления строки на экран?60259

Dimensy
09.04.2022, 15:35
Спасибо, но получилось только с одной переменной. Для другой переменной всё ещё жалуется на циклическую связь. При добавлении строки на экран для этой переменной и настройке записи в конце цикла решается. Без строки на экране возможности поставить в конце цикла - нет. Можно решить без добавления строки на экран?60259
Поставьте переменной энергонезависимость

kondor3000
09.04.2022, 15:54
Спасибо, но получилось только с одной переменной. Для другой переменной всё ещё жалуется на циклическую связь. При добавлении строки на экран для этой переменной и настройке записи в конце цикла решается. Без строки на экране возможности поставить в конце цикла - нет. Можно решить без добавления строки на экран?60259

Вы пишите, что одна переменная сетевая, вторая с экрана, а скрины выкладываете, где все переменные локальные. Вы что сетевую в локальную ещё где то записываете?
Вам дал пример, с локальной и сетевой переменной, неужели надо неделю, что бы проверить?
И выложите свою программу, быстрее будет.

keysansa
09.04.2022, 16:04
Вот тут, по моему, та же тема:
https://owen.ru/forum/showthread.php?t=36188

Dead Kid
09.04.2022, 17:26
Всё получилось, спасибо большое за помощь

Сергей0308
09.04.2022, 22:01
Здравствуйте. Создавал макрос в программе и решил его проверить. Суть макроса - при приходе значения (температуры) с одного из источников, переписывать его на все другие. Например: ввод с экрана - F, ввод по сети RS - P, промежуточная переменная - S. Если F<>S, а S=P, то значение F записывается и в P, и в S. Все переменные с плавающей точкой.
Проблемы начались во время отладки в симуляторе. При изменении параметра F всё работало как надо, но в симуляторе не было возможности изменить параметр P. Получилось изменять параметр P в симуляции, только выставив на экране поле ввода параметра P. Однако после этого ни изменения параметра P, ни изменения параметра F не применяются ( записываю в поле число, а ничего не меняется, даже шага программы не проходит). Насколько я понял, это из-за того, что в программе уже есть выходной блок параметра, что ни введи на вводном блоке, параметр не изменится, сколько линий задержки между ними не вставляй (я пробовал).
По-этому у меня есть несколько вопросов: почему нельзя менять значение переменной без поля ввода на экране? И есть ли для Owen logic решения записи значения в переменную с двух источников (саму в себя).


Всё получилось, спасибо большое за помощь

Вы, для начала разберитесь как сформировать сигнал равенства(в вашем случае неравенства) вещественных переменных, кстати, этот вопрос неоднократно обсуждался на форуме! Вот когда разберётесь с этим, тогда можно будет и дальше идти в создании ваших хотелок!
А с готовыми макросами и думать нечего, бери и пользуйся!

1exan
13.04.2022, 06:54
Сделай в свойствах нижней переменной "запись в конце цикла"
60245

Не знал о такой возможности, как раз очень пригодилось, спасибо!

batur
12.07.2022, 12:45
Добрый день, может подскажешь, вот у меня ИПП120 мастер(как панель управления), ПР200- слейв с 2мя интерфейсами Rs485, ИПП120 подключен к 1 слоту, ко 2му планирую подключить ПК со скадой, вот если например я с ИПП120 нажму кнопку пуск, я потом с ПК не выключу ведь оборудование так?

Сергей0308
12.07.2022, 13:07
Добрый день, может подскажешь, вот у меня ИПП120 мастер(как панель управления), ПР200- слейв с 2мя интерфейсами Rs485, ИПП120 подключен к 1 слоту, ко 2му планирую подключить ПК со скадой, вот если например я с ИПП120 нажму кнопку пуск, я потом с ПК не выключу ведь оборудование так?

На преведущей странице темы как раз приводил проект управления Т-триггерами из двух мест, практически ваш вариант, в смысле, можно было бы и посмотреть!

batur
12.07.2022, 13:40
На преведущей странице темы как раз приводил проект управления Т-триггерами из двух мест, практически ваш вариант, в смысле, можно было бы и посмотреть!

я читал, вот как раз и решил уточнить, а если не делать такие решения, как вы предлагали, то никак не прокатит?

Сергей0308
12.07.2022, 18:35
я читал, вот как раз и решил уточнить, а если не делать такие решения, как вы предлагали, то никак не прокатит?

В принципе, много сфер для применения своих талантов, можно например заняться сельским хозяйством, мне кажется выгодней растениеводством, если и с растениеводством не сложится, то можно животноводством заняться, короче, если ботинки не обуть, то разутым придётся идти, надеюсь, смысл понятен?!