Запись значения в один тег, а чтение с другого

Автор razorqhex, 31 октября 2019, 14:23:37

razorqhex

Всем привет.

Не могу разобраться с одним вопросом. Пробовал разные методы решения задачи.

В общем:
Есть поле FiledTask1 и нужно сделать такую штуку, а именно в тег SetPoint я произвожу запись, а чтение в это же поле должно быть с тега ReferenceUnit.

Делал функции по изменению переменной, подбрасывал разные варианты событий. Объект поле то не менялся, то неправильные результаты были. Записал в тег значение 1.45, на ОРС значение ещё не изменилось, но по событию объект поле считал значение уже с ReferenceUnit, которое к тому времени ещё не успело измениться.

Simple_Scada

Здравствуйте.

Как мы понимаем, Вам нужно при вводе значения через компонент "Поле" записать значение в одну переменную и вывести в это же поле значение другой переменной. Такой возможности, к сожалению нет. В будущем рассмотрим возможность добавления такого функционала. Данный функционал имеется в некоторых OPC-серверах, например arOPC(см. скриншот во вложении), т.е. можно создать один тэг, в котором запись будет производиться по одному адресу, а чтение по другому и затем использовать этот тэг в скаде.

razorqhex

#2
Здравствуйте. К сожалению мы используем Master OPC. Выход с этой ситуации я нашел такой:

Пусть у нас будет поле field1 только для вывода тега, а поле field2 только для записи и соответственно теги: tag1 - для считывания этого тега, tag2 - для записи. В field1 не разрешаем ввод данных (смотрите в свойствах объекта). field1и field2 налаживаем друг на друга чтобы не было видно разницы. В field1 закидываем тег для чтение (tag1), соответственно в field2 закидываем тег для записи (tag2). В поле field2 переходим на вкладку "События" и создаём событие OnDoneInput. Внутри скрипта пишет такой код:
Код: pascal
begin
  field2.Visible := false;
end.
Далее создаём новый скрипт "Изменились переменные". В этот скрипт, через кнопку "Выбрать переменные", закидываем tag1 и пишем такой код:
Код: pascal
begin
  field2.Visible := true;
end.
Тем самым мы сделаем чтение и запись разных тегов якобы в одно поле. Будьте внимательны, если в ОРС переменная для чтение не изменится, то поле для записи не появится.

Simple_Scada

Здравствуйте.

В Master OPC тоже имеется такой функционал(см. скриншот во вложении) и точно также можно создать один тэг, в котором запись будет производиться по одному адресу, а чтение по другому и затем использовать этот тэг в скаде.

razorqhex

А Вы не знаете, случаем в Lectus OPC такое возможно сделать?

Simple_Scada

Насколько нам известно, в Lectus такой возможности нет, но лучше данный вопрос уточнить в техподдержке Lectus.