VBS

Панели оператора / Человеко-машинный интерфейс

VBS

Сообщение nicss » 03 ноя 2017, 17:51

Добрый день. WinCC flex 2008, разбираюсь со скриптами. Скажите, почему при запуске такого "скриптика"
от тэга Б1 отнимается только 100 едениц (иногда 99). Тэг - значение в поле вывода.

Код: Выделить всё
Dim z
z=SmartTags("Б1")
Do While z>0
   z=z-1
   SmartTags("Б1")=z
Loop
nicss
Любитель
 
Сообщения: 59
Зарегистрирован: 28 сен 2016, 13:55

Re: VBS

Сообщение nicss » 04 ноя 2017, 09:39

Т.е. в тэге Б1 допустим 500 (лежит в DBW контроллера). При запуске скрипта должно быстренько декрементироваться до нуля. Но отнимается только 100. Еще раз запуск скрипта, еще минус 100.(PLC с числом ничего не делает). Если SmartTags("Б1")=z не внутри цикла (после LOOP), тогда все нормально.
nicss
Любитель
 
Сообщения: 59
Зарегистрирован: 28 сен 2016, 13:55

Re: VBS

Сообщение Михайло » 04 ноя 2017, 13:23

SmartTags() - это макрос, он не может выполняться быстро, нехорошо его так зацикливать. Соответственно, я подозреваю там срабатывает типа сторожевой таймер или сторожевой счетчик, который прекращает это безобразие с макросом. Точно не знаю.

Попробуй в цикл добавить запись в еще один смарт-тэг.
Михайло
Администратор
 
Сообщения: 3771
Зарегистрирован: 19 сен 2012, 19:16

Re: VBS

Сообщение fuzzy_l » 03 июл 2018, 22:07

В винцц нет многозадачности. Все в очередь. Скрипты тормозят все. Могут и картинку тормознуть намертво. Циклические задачи могут поплыть по времени из за низкого уровня приоритета. С ними надо аккуратно
fuzzy_l
Дилетант
 
Сообщения: 13
Зарегистрирован: 03 июл 2018, 21:32


Вернуться в Simatic HMI / WinCC Basic / WinCC Comfort / WinCC Flexible / Protool

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0