VBS

Панели оператора / Человеко-машинный интерфейс
Ответить
nicss
Любитель
Сообщения: 71
Зарегистрирован: 28 сен 2016, 13:55

VBS

Сообщение nicss »

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

Код: Выделить всё

Dim z
z=SmartTags("Б1")
Do While z>0
	z=z-1
	SmartTags("Б1")=z
Loop

nicss
Любитель
Сообщения: 71
Зарегистрирован: 28 сен 2016, 13:55

Re: VBS

Сообщение nicss »

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

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: VBS

Сообщение Михайло »

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

Попробуй в цикл добавить запись в еще один смарт-тэг.

fuzzy_l
Дилетант
Сообщения: 14
Зарегистрирован: 03 июл 2018, 21:32

Re: VBS

Сообщение fuzzy_l »

В винцц нет многозадачности. Все в очередь. Скрипты тормозят все. Могут и картинку тормознуть намертво. Циклические задачи могут поплыть по времени из за низкого уровня приоритета. С ними надо аккуратно

Ответить