cpu13.ru - форум OMRON
http://cpu13.ru/

Работа со скриптами
http://cpu13.ru/viewtopic.php?f=3&t=418
Страница 1 из 2

Автор:  Sender [ Вт окт 14, 2008 16:55 ]
Заголовок сообщения:  Работа со скриптами

Здравствуйте. Помогите, пожалуйста, разобраться с написанием скриптов в Супервизоре.
Первый вопрос: Чем отличается VB Script от CX-Supervisor Script? Отличие в орфографии понятно, а отличаются ли они по функциональности? (Ну например наличие команд, которые исполняются только под CX-Supervisor Script)
Второй вопрос: Из-за чего могут выдаваться ошибки типа "Ошибка VBScript в строке 7 символ 1: (требуется объект: 'Text_29')" при попытке выполнения: Text_29.visible = false
или при попытке выполнить команду shutdown (), выдается сообщение о несоответствии типа 'shutdown'
В чем может быть проблема? Скрипты пишу как в мануале Script Reference.

Автор:  Олег [ Вт окт 14, 2008 17:34 ]
Заголовок сообщения: 

по функиональности отличаются, CX-Supervisor Script заточен под нужды контроллеров и супервайзора, в VB Script такого нет, но зато более полный доступ к компонентам ActiveX и прочему на компе, т.е. это разные вещи, но сильно пересекаются по функциональности. Сложилось исторически, предшественник супервайзора не поддерживал внешние скрипты.

shutdown() это команда супервайзора на закрытие приложения, в VB Script эта команда не работает.

примеры ищи в Примеры

Автор:  Sender [ Ср окт 15, 2008 08:37 ]
Заголовок сообщения: 

А как можно понять, какие из скриптов должны выполняться в VB Script, а какие в CX-Supervisor Script?
Насколько я понял, чтобы команды интерпритировались как CX-Supervisor Script, надо их заключить в
@VBSCRIPT
@ENDSCRIPT
Но всеравно команда shutdown () не выполняется.
Если же я выношу команду за пределы
@VBSCRIPT
@ENDSCRIPT
то выдается shutdown<Syntax> () 1 compilation error(s)

Можете объяснить, что я делаю не так.
PS В каком из примеров это есть?

Автор:  Олег [ Чт окт 16, 2008 11:55 ]
Заголовок сообщения: 

Над окном редактора скрипта переключатель CX-Supervisor Script и VB Script, по умолчанию на последних версиях супервайзора включен VB Script, в этом случае писать заголовок и окончание @VBSCRIPT
@ENDSCRIPT
не нужно, но чтобы использовать команды супервайзора, нужно переключить редактор в CX-Supervisor Script.

и ещё, ShutDown() пишется без пробела, поэтому и выдаёт ошибку, <Syntax> в данном случае место ошибки синтаксиса, не нужный пробел.

Автор:  Sender [ Чт окт 16, 2008 12:21 ]
Заголовок сообщения: 

Спасибо. Разобрался.

Автор:  Sender [ Вт ноя 25, 2008 10:10 ]
Заголовок сообщения: 

Возник еще вопрос. Каким образом через скрипты можно отследить события (например ChangeValue) компонентов ActiveX? Например элемента TextBox1, находящегося на странице.

Автор:  pavelzii [ Ср окт 14, 2009 10:14 ]
Заголовок сообщения:  Re: Работа со скриптами

Помогите, решить задачу.
Имеется шесть реальных переменных.Все переменные типа Bool.
Необходимо, чтобы при срабатывании определенного бита(например W41.0) на скаде появлялось определенное сообщение, при срабатывании другого бита в том же месте появлялось другое сообщение.Если же ни один из битов не сработал, то появляется сообщение вида "***".
Адреса памяти под реальные переменные идут W41.00 - W41.6

Автор:  Александр [ Ср окт 14, 2009 13:27 ]
Заголовок сообщения:  Re: Работа со скриптами

1. Через Point Editor заводим строковую переменную, например, msg. Выбираем Point Type: Text, I/O Type: Memory.
2. Там же заводим переменные для срабатывающих битов (я так понял, они уже заведены), например, bit1, bit2, bit3, bit4, bit5, bit6.
3. На экране ставим элемент Text, вбиваем туда символ #.
4. Щелкаем по нему правой кнопкой мыши, в контекстном меню выбираем Animation Editor, далее Display Value (Text). В поле Text Point вписываем нашу переменную msg.
5. Теперь пишем скрипты. Их будет 7. Первый для реакции на срабатывание bit1.
Trigger Type: On Condition
Expression: bit1==true (наверное можно просто bit1 сюда вписать...)
Тип скрипта: CX-Supervisor Script
А сам скрипт из одной строки состоит:
Код:
msg="Сработал Бит1"

Аналогично создаем остальные пять скриптов для оставшихся битов.

6. Седьмой скрипт обеспечит переменной msg значение "***".
Trigger Type: On Regular Interval
Interval Time: 1000 Milliseconds (это период повтора скрипта)
Тип скрипта: CX-Supervisor Script
Сам скрипт:
Код:
IF (!bit1 && !bit2 && !bit3 && !bit4 && !bit5 && !bit6) THEN
   msg="***"
ENDIF

PS
Надеюсь ошибок не понаделал 8)

Автор:  pavelzii [ Ср окт 14, 2009 13:54 ]
Заголовок сообщения:  Re: Работа со скриптами

Огромное спасибо, за помощь, Александр. А такой вариант подойдет??
VB регулярный интервал обновления
IF (Ar_W41_0 Or Ar_W41_1 Or Ar_W41_2 Or Ar_W41_3 Or Ar_W41_4 Or Ar_W41_5 Or Ar_W41_6) = true THEN
if Ar_W41_0= true Then
K_text_2="ожидание мойки кухни"
End If
if Ar_W41_1= true Then
K_text_2="мойка кухни"
End If
if Ar_W41_2= true Then
K_text_2="опорожнение после мойки"
End If
if Ar_W41_3= true Then
K_text_2="жидание мойки танка с маслом"
End If
if Ar_W41_4= true Then
K_text_2="мойка танка с маслом"
End If
if Ar_W41_5= true Then
K_text_2="ожидание мойки танка со сгущенкой"
End If
if Ar_W41_6= true Then
K_text_2="мойка танка со сгущенкой"
End If
Else K_text_2="****"
End If

Автор:  Александр [ Ср окт 14, 2009 14:31 ]
Заголовок сообщения:  Re: Работа со скриптами

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

За синтаксис не ручаюсь, VB еще не пробовал... а по структуре всё вроде верно, хотя оч неудобно код без отступов читать :)

Кстати, "= true" по-моему можно не писать. Если бит - единица, то он и так ИСТИНА.

Автор:  pavelzii [ Ср окт 14, 2009 14:53 ]
Заголовок сообщения:  Re: Работа со скриптами

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

Автор:  Олег [ Ср окт 14, 2009 18:36 ]
Заголовок сообщения:  Re: Работа со скриптами

Не очень удобно делать сообщения через биты и заботится о ох сбросе, на мой взгляд если процесс разбит на этапы, проще каждому этапу присваивать свой номер, и с шагом например через десятку, и записывать этот номер в какое-то слово. Упрощается программа в контроллере, а в скаде сообщения вызываем через select case. Шаг через десятку на случай если понадобится втиснуть ещё несколько этапов.

Автор:  pavelzii [ Чт окт 15, 2009 10:02 ]
Заголовок сообщения:  Re: Работа со скриптами

Олег, я с тобой согласен, но я не писал программу и поэтому мне как выдали я так и делаю((((

Автор:  pavelzii [ Чт окт 15, 2009 10:05 ]
Заголовок сообщения:  Re: Работа со скриптами

А почему может не работать скипт?:
DO WHILE (t_1 OR t_2)==true
IF t_1==true THEN
text_1 ={1}
ENDIF
IF t_2==true THEN
text_1 ={2}
ENDIF
LOOP
text_1 = {*****}
При запуске в run, проект перестает отвечать?? Скрипт написан для интервала обновления.

Автор:  Александр [ Чт окт 15, 2009 12:05 ]
Заголовок сообщения:  Re: Работа со скриптами

Может цикл DO WHILE не завершается?
Условие всегда ИСТИНА?
И если скрипт написан для интервала обновления нужен ли этот цикл DO WHILE?! Подумай..
Лучше от него избавиться, а последнюю строчку поставить под условие
Код:
IF (t_1==false && t_2==false) THEN
        text_1 = {*****}
ENDIF

.. и кстати, что значит text_1 = {*****} ? Что-то не помню такого...

Страница 1 из 2 Часовой пояс: UTC + 3 часа (Russia: MSK)
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/