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 Надеюсь ошибок не понаделал |
Автор: | 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/ |