Добрый день.
Необходимо с помощью скрипта решить следующую задачу:
На форме располагается поле IO Field, для вывода значений тэгов.
По кнопке с помощью скрипта становится видным это поле IO Field.
Далее в зависимости от того какая кнопка нажата, в поле IO Field, должно выводиться значение того или иного тэга, но не один раз при визуализации поля, а постоянно, пока поле не будет снова скрыто.
Т.е. просто пересылка значения тэга с помощью SmartTags, задачу не решает, т.к. значение поля обновляется один раз, а мне нужно значение поля обновлять пока оно видимо, и обновлять значениями из разных тэгов.
Думал, сначала, что можно схитрить и применить такую конструкцию: HmiRuntime.ActiveScreen.ScreenItems(ScreenItemName).Tag = TagName, т.е. напрямую задать имя тэга через скрипт, компилятор не ругался, а рантаим ругается.
Потом подумал, что можно запустить циклический скрипт с пересылкой значений с помощью SmartTags, но что-то сходу не нашел где задаются параметры вызова и работы скриптов.
Может кто-то решал подобную задачу, и нашел простое и изящное решение, мне кажется VBS должен что-то для этого предоставлять, т.к. мне кажется, что пересылка значений через циклический скрипт, как-то коряво выглядит.
Спасибо за понимание..
Скрипт для панели Comfort в TiaPrtal
Re: Скрипт для панели Comfort в TiaPrtal
Используйте мультиплексирование или косвенную адресацию.
Re: Скрипт для панели Comfort в TiaPrtal
Я бы эту задачу возложил на ПЛК.
Re: Скрипт для панели Comfort в TiaPrtal
Дело вкуса. Мне тоже советовали так делать. Но гемора с ПЛК было бы просто дофига, поэтому я исхитрился и для своей задачи сделал всё в панели на VBS.
Как раз это и решается стандартным "софтовым" методом с помощью "мультиплексированных" тэгов и полей "Symbolic I/O Field". Составляете 2 или 3 текстовых списка, в одном из которых перечисляете список переменных/тэгов/датчиков и делаете привязку этого списка к тэгу "Index", который потом считайте "индексным". В каждой строке этого текстового списка сопоставляете строку текста (например "Датчик 5") какому-то значению в колонке "VALUE" (например "5"). В рантайме, при выборе этой строки, тэг "Index" получит значение "5". Потом это значение получит поле "мультиплексированное" поле "I/O Field", к которому надо было привязать опять же соотв-щий "мультиплексированный" тэг. Далее "мультиплексированный" тэг, с помощью индекса 5, подключится к обычному тэгу, содержащему значение датчика №5, а "мультиплексированное" поле "I/O Field" будет выводить это значение, пока Вы не выберите другой датчик. Немного сложновато, но зато на экране получается всё максимально компактно.
С остальными текстовыми списками - аналогично.