Вызов скриптов в TIA V13
-
- Posts: 11
- Joined: Mon Jan 19, 2015 3:48 pm
Вызов скриптов в TIA V13
Имеется скрипт: 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: в чём косяк?
Его тело:
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: в чём косяк?
-
- Posts: 118
- Joined: Sun Apr 17, 2011 9:49 pm
Re: Вызов скриптов в TIA V13
1. на немецком форуме речь ведут о свойствах переменных, не все доступны для изменений, в свойствах только чтение.
2. SmartTags не обновлен не актуализирован
и о неверном применении имен внутренних переменных для внешних
не, если бы я знал сей продукт, перевел бы точнее. а то мне этр не о чем не говорит
2. SmartTags не обновлен не актуализирован
и о неверном применении имен внутренних переменных для внешних
не, если бы я знал сей продукт, перевел бы точнее. а то мне этр не о чем не говорит
-
- Posts: 94
- Joined: Mon Sep 23, 2013 10:41 pm
Re: Вызов скриптов в TIA V13
John, косяк как я понимаю в том, что вы пытаетесь произвести абсолютный вызов переменной, а в проэкте у вас наверняка по умолчанию в панели установлен символический вызов.
И ошибка поступает профильная.
И ошибка поступает профильная.
-
- Posts: 11
- Joined: Mon Jan 19, 2015 3:48 pm
Re: Вызов скриптов в TIA V13
В проекте через параметр передаётся имя внутреннего тега. Во flexible это работает.
-
- Posts: 94
- Joined: Mon Sep 23, 2013 10:41 pm
Re: Вызов скриптов в TIA V13
Внутреннюю значит.
- 1. Внутренняя переменная "Variable" подвержена циклической актуализации, или только "в процессе обработки" ?
- 2. Вызвать какую нибудь из этих переменных без динамизации, т.е. HmiRuntime.SmartTags(конкретная переменная) в скрипте получается ?
Как выглядет триггер, который ответственен за вызов скрипта ?
- 1. Внутренняя переменная "Variable" подвержена циклической актуализации, или только "в процессе обработки" ?
- 2. Вызвать какую нибудь из этих переменных без динамизации, т.е. HmiRuntime.SmartTags(конкретная переменная) в скрипте получается ?
Как выглядет триггер, который ответственен за вызов скрипта ?
-
- Posts: 11
- Joined: Mon Jan 19, 2015 3:48 pm
Re: Вызов скриптов в TIA V13
Проверку синтаксиса скрипт проходит, при компиляции ошибки не возникает. Вызывается по клику кнопки на экране и должен делать приращение переменной на некоторую величину. Другой кнопкой значение этого тега передаётся внешнему тегу. Ошибка возникает в строке: val = HmiRuntime.SmartTags(Variable) + Offset. И только в TIA Portal (см. первый пост). Отладчик показывает, что проблема как раз в выражении HmiRuntime.SmartTags(Variable).
-
- Posts: 94
- Joined: Mon Sep 23, 2013 10:41 pm
Re: Вызов скриптов в TIA V13
Джон, я понял что в Flexible всё работает - ответьте на поставленный вопрос.
Что с переменными ? Как они актуализируются в их свойствах, циклически или "по затребованию" ?
Можно вызвать эти переменные из того же скрипта SmartTag статическим вызовом ?
Что с переменными ? Как они актуализируются в их свойствах, циклически или "по затребованию" ?
Можно вызвать эти переменные из того же скрипта SmartTag статическим вызовом ?
-
- Posts: 11
- Joined: Mon Jan 19, 2015 3:48 pm
Re: Вызов скриптов в TIA V13
Есть небольшое количество уставок(как внешние теги real для HMI). Для их редактирования использую такое же кол-во буферных (внутренних)тегов. Инкремент, декремент, и присвоение делаю скриптами. Первоначально было 3 скрипта. Имена тегов передавались в скрипт как параметры при вызове по кликах экранных кнопок. Для флексибела это работает. При переносе в ТИА Портал возникла проблема с передачей имени тега в скрипт. Прямая ссылка на тег SmartTags("rTMP1") работает. Не получается передать имя тега через параметр скрипта при его вызове т.е. теперь на каждую пару уставка-буфер надо создавать отдельные 3 скрипта чтоб сделать аналогичный функционал. (хух!... )
-
- Posts: 94
- Joined: Mon Sep 23, 2013 10:41 pm
Re: Вызов скриптов в TIA V13
Может я не так выражаюсь, что-ли.
В ТИАП для переменных в визуализации есть две возможности (в свойствах переменных, если вызвать закладку "все переменные"):
- 1. Актуализируется циклически (всегда);
- 2. Актуализируется циклически (при необходимости / по затребованию);
Какая из этих двух возможностей у вас установлена на вашу внутреннюю "Variable" ??
В ТИАП для переменных в визуализации есть две возможности (в свойствах переменных, если вызвать закладку "все переменные"):
- 1. Актуализируется циклически (всегда);
- 2. Актуализируется циклически (при необходимости / по затребованию);
Какая из этих двух возможностей у вас установлена на вашу внутреннюю "Variable" ??
-
- Posts: 11
- Joined: Mon Jan 19, 2015 3:48 pm
Re: Вызов скриптов в TIA V13
Variable - это параметр скрипта, через который передаются теги в скрипт. Все теги "Cyclic in operatoon", но для внутренних переменных это не имеет значения, т.к. это режим синхронизации тегов контроллера и панели.
-
- Posts: 94
- Joined: Mon Sep 23, 2013 10:41 pm
Re: Вызов скриптов в TIA V13
Вот тут вы уважаемый в лужу попали, поскольку сгласно единому мнению моих коллег, как раз это имеет решающее значение. И к режиму синхронизации переменных с контроллером в случае с внутренними переменными это никак не может относится, уже потому, что в этом случае такой возможности выбора для них бы не было, поскольку они внутренние.
-
- Posts: 11
- Joined: Mon Jan 19, 2015 3:48 pm
Re: Вызов скриптов в TIA V13
Я, так понимаю, Ваша цель(и Ваших коллег) была загнать меня в лужу. . А по сути вопроса у Вас есть что сказать? Повторю вопрос: "Почему скрипт (см. первый пост) в WinCCflexible выполняется, а в TIA V13 Comfort - нет". Проект в Портале - клон проекта из флексибла.
-
- Posts: 94
- Joined: Mon Sep 23, 2013 10:41 pm
Re: Вызов скриптов в TIA V13
Мне кажется что вы плохо понимаете суть нашего с вами обсуждения. Вы заинтересованы в том, чтобы ваш скрипт заработал или нет ?
Я не знаю, там вроде баг какой-то конретно в ТИАП, или ещё какой-то задвиг и заёб, но люди говорят, что "ТАК работает" а "ТАК НЕ работает", и у меня нет оснований им не верить. Если вам это интересно, решить насущную проблему, то испробуйте мой совет, если нет, ну и Бог с вами, а захрена тогда пишете ?
Вы по пятому разу пишете, вот во Флекс всё работало, всё работало. Ну и оставайтесь во Флекс, зачем вам ТИАП если вы не ходитет под него подстраиваться ? Это ещё полусырой неотработанный продукт, там много всяких необяснимых задвигов.
Я не знаю, там вроде баг какой-то конретно в ТИАП, или ещё какой-то задвиг и заёб, но люди говорят, что "ТАК работает" а "ТАК НЕ работает", и у меня нет оснований им не верить. Если вам это интересно, решить насущную проблему, то испробуйте мой совет, если нет, ну и Бог с вами, а захрена тогда пишете ?
Вы по пятому разу пишете, вот во Флекс всё работало, всё работало. Ну и оставайтесь во Флекс, зачем вам ТИАП если вы не ходитет под него подстраиваться ? Это ещё полусырой неотработанный продукт, там много всяких необяснимых задвигов.
-
- Site Admin
- Posts: 1387
- Joined: Sat Aug 13, 2005 6:15 am
Re: Вызов скриптов в TIA V13
чёт я не въеду а что мешает:
val = Variable + Offset ?
при компиляции пишется что поверяется базовый синтаксис, т.е. на соответствие базовым командам, а будет работать или нет - никто не гарантирует
val = Variable + Offset ?
при компиляции пишется что поверяется базовый синтаксис, т.е. на соответствие базовым командам, а будет работать или нет - никто не гарантирует
-
- Posts: 374
- Joined: Wed Oct 13, 2010 8:44 am
- Location: Russian Federation
Re: Вызов скриптов в TIA V13
Попробуй так:
val = HmiRuntime.SmartTags(Variable).Value + Offset
Я тоже столкнулся с тем, что во Flexible объект HmiRuntime.SmartTags(TagName) явно отождествляется со значением тэга. Его можно читать и присваивать значение как обычной переменной.
Потом начал переписывать некоторые скрипты в WinCC 7.0 c ANSI-C на VBScript. И оказалось, что такой подход больше не работает. При попытке прочитать значение тэга всегда возвращался ноль, а при попытке записи нового - ничего не происходило.
Опытным путём пришёл к таким конструкциям:
Только так скрипт гарантированно получает, обрабатывает и записывает значения тэгов.
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() ; записываем тэг