Бесконечный цикл VBScript зависает ПК

Я использую Indusoft Web Studio с реализацией VBScript для скриптов, и у меня возникла следующая проблема.

Мне нужно иметь что-то вроде:

Do While $pozAkt<>x
Loop

Однако данные строки полностью замораживают ПК. Как я могу заставить ПК ждать, пока myVar не достигнет значения x?


person adammo    schedule 26.08.2019    source источник
comment
Обычно вам нужно поместить какой-то оператор сна в такие циклы, чтобы ваш скрипт отдавал ресурсы ЦП системе и не потреблял весь ЦП сам по себе. В обычном VBScript это будет WScript.Sleep 100, но я не знаком со SCADA, поэтому я не знаю, доступен ли этот метод в этой среде (вероятно, нет) или какой будет эквивалент.   -  person Ansgar Wiechers    schedule 26.08.2019
comment
@AnsgarWiechers Wscript, к сожалению, недоступен, поэтому я и спрашиваю   -  person adammo    schedule 26.08.2019
comment
См. ссылку. Если вы не можете найти там ответ, проверьте ссылка -или- ссылка IIRC, таймеры сна InduSoft Web Studio установлены на никогда, поэтому основной поток программы постоянно запускается/собирает данные. Таким образом, вам могут понадобиться таймеры или асинхронные скрипты для периодической проверки вашего состояния.   -  person leeharvey1    schedule 12.11.2019


Ответы (1)


Используйте ВЕНД.

While $pozAkt<>x
   
Wend

Вы можете комбинировать If внутри, чтобы избежать переполнения.

Тусклый флаг, ограничение

флаг=0

While flag=0
   If $pozAkt=x Then
      flag=1 
   End If

   If $pozAkt<>x Then
      limit=limit+1 
      $Wait(1)

      If  limit>1000 Then
        flag=1 
      End If 

   End If       
Wend

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

Задачи

person Stan    schedule 25.08.2020