Вызов скриптов в TIA V13

Панели оператора PP/OP/TP/TD/MP.
Программные пакеты ProTool/WinCC flexible, SCADA система WinCC
Post Reply
John41
Posts: 11
Joined: Mon Jan 19, 2015 3:48 pm

Вызов скриптов в TIA V13

Post by John41 » Fri Mar 06, 2015 10:21 am

Имеется скрипт: Sub IncrementValue( Variable , Offset , Limit )
Его тело:

Dim val
val = HmiRuntime.SmartTags(Variable) + Offset
If val > Limit Then
val = Limit
End If
HmiRuntime.SmartTags(Variable) = val

В WinCC flexible 2008SP3 прекрасно работает. В TIA V13 Comfort при вызове возникает ошибка: "tag lookup only by name". Вопрос к знатокам VB: в чём косяк?

Oll Bell
Posts: 118
Joined: Sun Apr 17, 2011 9:49 pm

Re: Вызов скриптов в TIA V13

Post by Oll Bell » Sat Mar 07, 2015 1:56 pm

1. на немецком форуме речь ведут о свойствах переменных, не все доступны для изменений, в свойствах только чтение.
2. SmartTags не обновлен не актуализирован
и о неверном применении имен внутренних переменных для внешних

не, если бы я знал сей продукт, перевел бы точнее. а то мне этр не о чем не говорит

Draco Malfoy
Posts: 94
Joined: Mon Sep 23, 2013 10:41 pm

Re: Вызов скриптов в TIA V13

Post by Draco Malfoy » Sat Mar 07, 2015 4:47 pm

John, косяк как я понимаю в том, что вы пытаетесь произвести абсолютный вызов переменной, а в проэкте у вас наверняка по умолчанию в панели установлен символический вызов.
И ошибка поступает профильная.

John41
Posts: 11
Joined: Mon Jan 19, 2015 3:48 pm

Re: Вызов скриптов в TIA V13

Post by John41 » Tue Mar 10, 2015 9:40 am

В проекте через параметр передаётся имя внутреннего тега. Во flexible это работает.

Draco Malfoy
Posts: 94
Joined: Mon Sep 23, 2013 10:41 pm

Re: Вызов скриптов в TIA V13

Post by Draco Malfoy » Tue Mar 10, 2015 8:18 pm

Внутреннюю значит.

- 1. Внутренняя переменная "Variable" подвержена циклической актуализации, или только "в процессе обработки" ?
- 2. Вызвать какую нибудь из этих переменных без динамизации, т.е. HmiRuntime.SmartTags(конкретная переменная) в скрипте получается ?

Как выглядет триггер, который ответственен за вызов скрипта ?

John41
Posts: 11
Joined: Mon Jan 19, 2015 3:48 pm

Re: Вызов скриптов в TIA V13

Post by John41 » Wed Mar 11, 2015 7:22 am

Проверку синтаксиса скрипт проходит, при компиляции ошибки не возникает. Вызывается по клику кнопки на экране и должен делать приращение переменной на некоторую величину. Другой кнопкой значение этого тега передаётся внешнему тегу. Ошибка возникает в строке: val = HmiRuntime.SmartTags(Variable) + Offset. И только в TIA Portal (см. первый пост). Отладчик показывает, что проблема как раз в выражении HmiRuntime.SmartTags(Variable).

Draco Malfoy
Posts: 94
Joined: Mon Sep 23, 2013 10:41 pm

Re: Вызов скриптов в TIA V13

Post by Draco Malfoy » Wed Mar 11, 2015 11:18 am

Джон, я понял что в Flexible всё работает - ответьте на поставленный вопрос.

Что с переменными ? Как они актуализируются в их свойствах, циклически или "по затребованию" ?
Можно вызвать эти переменные из того же скрипта SmartTag статическим вызовом ?

John41
Posts: 11
Joined: Mon Jan 19, 2015 3:48 pm

Re: Вызов скриптов в TIA V13

Post by John41 » Wed Mar 11, 2015 1:17 pm

Есть небольшое количество уставок(как внешние теги real для HMI). Для их редактирования использую такое же кол-во буферных (внутренних)тегов. Инкремент, декремент, и присвоение делаю скриптами. Первоначально было 3 скрипта. Имена тегов передавались в скрипт как параметры при вызове по кликах экранных кнопок. Для флексибела это работает. При переносе в ТИА Портал возникла проблема с передачей имени тега в скрипт. Прямая ссылка на тег SmartTags("rTMP1") работает. Не получается передать имя тега через параметр скрипта при его вызове т.е. теперь на каждую пару уставка-буфер надо создавать отдельные 3 скрипта чтоб сделать аналогичный функционал. (хух!... ;))

Draco Malfoy
Posts: 94
Joined: Mon Sep 23, 2013 10:41 pm

Re: Вызов скриптов в TIA V13

Post by Draco Malfoy » Wed Mar 11, 2015 8:12 pm

Может я не так выражаюсь, что-ли.
В ТИАП для переменных в визуализации есть две возможности (в свойствах переменных, если вызвать закладку "все переменные"):
- 1. Актуализируется циклически (всегда);
- 2. Актуализируется циклически (при необходимости / по затребованию);

Какая из этих двух возможностей у вас установлена на вашу внутреннюю "Variable" ??

John41
Posts: 11
Joined: Mon Jan 19, 2015 3:48 pm

Re: Вызов скриптов в TIA V13

Post by John41 » Thu Mar 12, 2015 6:36 am

Variable - это параметр скрипта, через который передаются теги в скрипт. Все теги "Cyclic in operatoon", но для внутренних переменных это не имеет значения, т.к. это режим синхронизации тегов контроллера и панели.

Draco Malfoy
Posts: 94
Joined: Mon Sep 23, 2013 10:41 pm

Re: Вызов скриптов в TIA V13

Post by Draco Malfoy » Thu Mar 12, 2015 9:27 am

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

John41
Posts: 11
Joined: Mon Jan 19, 2015 3:48 pm

Re: Вызов скриптов в TIA V13

Post by John41 » Thu Mar 12, 2015 10:47 am

Я, так понимаю, Ваша цель(и Ваших коллег) была загнать меня в лужу. :D . А по сути вопроса у Вас есть что сказать? Повторю вопрос: "Почему скрипт (см. первый пост) в WinCCflexible выполняется, а в TIA V13 Comfort - нет". Проект в Портале - клон проекта из флексибла.

Draco Malfoy
Posts: 94
Joined: Mon Sep 23, 2013 10:41 pm

Re: Вызов скриптов в TIA V13

Post by Draco Malfoy » Thu Mar 12, 2015 10:56 am

Мне кажется что вы плохо понимаете суть нашего с вами обсуждения. Вы заинтересованы в том, чтобы ваш скрипт заработал или нет ?

Я не знаю, там вроде баг какой-то конретно в ТИАП, или ещё какой-то задвиг и заёб, но люди говорят, что "ТАК работает" а "ТАК НЕ работает", и у меня нет оснований им не верить. Если вам это интересно, решить насущную проблему, то испробуйте мой совет, если нет, ну и Бог с вами, а захрена тогда пишете ?

Вы по пятому разу пишете, вот во Флекс всё работало, всё работало. Ну и оставайтесь во Флекс, зачем вам ТИАП если вы не ходитет под него подстраиваться ? Это ещё полусырой неотработанный продукт, там много всяких необяснимых задвигов.

sania
Site Admin
Posts: 1372
Joined: Sat Aug 13, 2005 6:15 am
Contact:

Re: Вызов скриптов в TIA V13

Post by sania » Thu Mar 12, 2015 2:30 pm

чёт я не въеду а что мешает:
val = Variable + Offset ?

при компиляции пишется что поверяется базовый синтаксис, т.е. на соответствие базовым командам, а будет работать или нет - никто не гарантирует (oo)

Rex2701
Posts: 370
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Вызов скриптов в TIA V13

Post by Rex2701 » Thu Mar 12, 2015 10:12 pm

Попробуй так:
val = HmiRuntime.SmartTags(Variable).Value + Offset

Я тоже столкнулся с тем, что во Flexible объект HmiRuntime.SmartTags(TagName) явно отождествляется со значением тэга. Его можно читать и присваивать значение как обычной переменной.
Потом начал переписывать некоторые скрипты в WinCC 7.0 c ANSI-C на VBScript. И оказалось, что такой подход больше не работает. При попытке прочитать значение тэга всегда возвращался ноль, а при попытке записи нового - ничего не происходило.

Опытным путём пришёл к таким конструкциям:

Code: Select all

Dim val
Dim var = HmiRuntime.SmartTags(TagName)
var.Read()              ; читаем тэг из WinCC
val = var.Value         ; получаем значение
...
...
var.Value = val         ; сохраняем новое значение
var.Write()             ; записываем тэг
Только так скрипт гарантированно получает, обрабатывает и записывает значения тэгов.

Post Reply