Тема / Topic: как правильно организовать чтение и запись значений?
jasha-kz
Forum Member / Участник форума
Участник № / Member № 4149
отправлено / posted
Здравствуйте У меня вопрос, который, возможно, уже обсуждался на форуме, но мне не удалось найти такое обсуждение. Или, может быть, он всем и так понятен. Подскажите пожалуйста, как правильно организовать каналы и связь между ними, если в системе есть контроллер (EmbRTM) и несколько АРМ (RTM). На контроллере есть канал - коэффициент настройки регулятора. Нужно иметь возможность просматривать и менять его значение с любого из АРМ. Задача вполне обычная, но не могу сообразить, как ее решить правильно. Есть вариант, который сейчас мной реализован, но он имеет недостатки и является слишком громоздким: на каждом АРМ заводится два канала, один типа INPUT, другой OUTPUT. К INPUT каналу привязывается реальное значение канала с контроллера, к OUTPUT - его входное значение. На экране интер- фейса вводятся два аргумента IN и OUT (или IN и IN/OUT). Соответственно, IN-аргумент связан с реальным значением INPUT-канала и используется для отображения текущего значения, OUT(IN/OUT)-аргумент связан с входным зна- чением канала OUTPUT и используется для задания нового значения. Во-первых описанная схема сложна, а во-вторых неудобна при вводе нового значения. Например, если на экране используется ГЭ "Текст" и его отображение привязано к IN-аргументу, а запись (ввести и передать) к OUT-аргументу, то при начале ввода, вводимое значение стартует не с текущего, а того, которое вводилось в прошлый раз (или с 0.0 в первый раз). ГЭ "Ползунок" в подобной схеме ведет себя вообще неприемлемо. Пожалуйста, подскажите, как правильно решается данная задача. Версия TM 6.06 Большое спасибо
Сообщения / Posts 44 | Из / From: Russia
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
.канал коэф регулятора может изменится без посылок с АРМ ? .если более чем на одном АРМ меняют значение одного канала на другом узле то что будет ? .если сверхактуально старт вводимого значения с текущего ну скопируйте значение одного канала в другой .используйте аргумент out и привяжите его к удаленному каналу(как в NetLink консоле)
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
jasha-kz
Forum Member / Участник форума
Участник № / Member № 4149
отправлено / posted
To Nico: Спасибо за ответ, правда, вопрос все равно остается. По изменению канала без посылок с АРМ - может, например посылкой с другого АРМ. Если на нескольких АРМ меняется значение, то это не страшно - когда по очереди, то вообще проблем не должно быть, когда одновременно, то кто последний записал, тот и прав. Ваше предложение скопировать значение одного канала в другой не совсем понял: имеется в виду INPUT канал скопировать в OUTPUT? Если да, то когда? В момент перед началом ввода? И как лучше это сделать? Да и это только дополнительно усложняет а не упрощает решение. Хотя задача явно тривиальная. А по поводу привязки OUT-аргумента прямо к каналу на ПЛК - похоже, это хорошее дело, упростит задачу. Но я не знаю, будет ли в этом случае запись производиться строго при изменении, а иначе с несколькими АРМ работать не получится. Еще раз спасибо
Сообщения / Posts 44 | Из / From: Russia
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
.отработка каналов OUT всегда по изменению( кроме спец случаев) .копировать всегда и отключать копирование когда оператор нажал ввести включать когда IN=OUT
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
jasha-kz
Forum Member / Участник форума
Участник № / Member № 4149
отправлено / posted
To Nico: да-да, то что канал Output пишется только при изменениях, в курсе. Именно поэтому и использовал его. А вот так же ли работает аргумент экрана - не знаю.
Сообщения / Posts 44 | Из / From: Russia
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
аргумент может передать свое значение в канал(в консоле виртуальный) а канал отработает по изменению
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
jasha-kz
Forum Member / Участник форума
Участник № / Member № 4149
отправлено / posted
To Nico: в общем, как я понял, Вы описываете именно тот вариант, с которого все и началось. В любом случае спасибо. To All: может быть все таки кто-то подскажет, как эта задача решается обычно в TM? Простейшая же вещь! Не может быть, чтобы в такой продвинутой системе такую стандартную функцию реализовать было бы так сложно. Скорее всего, я просто недостаточно знаю ТМ. Помогите пожалуйста.
Сообщения / Posts 44 | Из / From: Russia
| IP / IP: IP адрес / IP address |
Romсheg
unregistered
отправлено / posted
Простого решения нет, либо вводите арбитраж на уровне контроллера математикой (тогда есть вводится приоритет по управлению), либо решение от Адастры, что уже было тут Вам озвучено (где оба узла равнозначны в управлении).
IP / IP: IP адрес / IP address |
jasha-kz
Forum Member / Участник форума
Участник № / Member № 4149
отправлено / posted
Спасибо еще раз всем за помощь. Удалось выкрутиться используя описанную выше громоздкую схему с двумя дополнительными каналами на АРМ (впрочем, можно обойтись и одним, OUTPUT) и двумя аргументами экрана (тут, видимо, одним не обойдешься). В ГЭ Текст на нажатие мышки стоит присвоение IN-аргумента в OUT (Добавить 0), а на отпускание - ввести и передать OUT-аргумент. Сделать и то и другое на нажатие - не проходит, не отрабатывает в нужной последовательности. Ну а с ползунком пока нормального выхода нет. Подложил ползунок только с отображением IN-аргумента под ползунок без заливки с отображением и вводом OUT-аргумента. Результат выглядит весело, но зато наглядно иллюстрирует процесс записи/чтения
Сообщения / Posts 44 | Из / From: Russia
| IP / IP: IP адрес / IP address |
jasha-kz
Forum Member / Участник форума
Участник № / Member № 4149
отправлено / posted
Здравствуйте Насколько я знаю, значение канала типа OUTPUT передается в привязанный к нему канал только при изменении. Пожалуйста подскажите: 1) а значение OUT-аргумента программы и экрана передаются в атрибут привязанного к нему канала тоже только при изменении или всегда? 2) имеет ли здесь значение то, на одном или на разных узлах находятся вызов программы (экрана) и привязанный к его OUT-аргументу канал? Большое спасибо
Сообщения / Posts 44 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
1. C экрана значение передается при активизации функции управления в соответствующем ГЭ (нажатии ЛК мыши на ГЭ). Из программы значение OUT-аргумента передается всегда.