Главная   Downloads   Разное  
FAQ     Поиск   Регистрация   Вход 
Текущее время: Чт мар 28, 2024 21:52

Часовой пояс: UTC + 3 часа (Russia: MSK)




Начать новую тему Ответить на тему  [ 25 сообщений ]  На страницу 1, 2  Вперёд
Автор Сообщение
 Заголовок сообщения: Работа со скриптами
СообщениеДобавлено: Вт окт 14, 2008 16:55 
Не в сети
Аватара пользователя

Регистрация: Вт окт 14, 2008 09:13
Сообщения: 46
Здравствуйте. Помогите, пожалуйста, разобраться с написанием скриптов в Супервизоре.
Первый вопрос: Чем отличается 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 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
по функиональности отличаются, CX-Supervisor Script заточен под нужды контроллеров и супервайзора, в VB Script такого нет, но зато более полный доступ к компонентам ActiveX и прочему на компе, т.е. это разные вещи, но сильно пересекаются по функциональности. Сложилось исторически, предшественник супервайзора не поддерживал внешние скрипты.

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

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


В начало
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 15, 2008 08:37 
Не в сети
Аватара пользователя

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

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


В начало
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 16, 2008 11:55 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
Над окном редактора скрипта переключатель CX-Supervisor Script и VB Script, по умолчанию на последних версиях супервайзора включен VB Script, в этом случае писать заголовок и окончание @VBSCRIPT
@ENDSCRIPT
не нужно, но чтобы использовать команды супервайзора, нужно переключить редактор в CX-Supervisor Script.

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


В начало
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 16, 2008 12:21 
Не в сети
Аватара пользователя

Регистрация: Вт окт 14, 2008 09:13
Сообщения: 46
Спасибо. Разобрался.


В начало
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 25, 2008 10:10 
Не в сети
Аватара пользователя

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


В начало
 Профиль  
 
 Заголовок сообщения: Re: Работа со скриптами
СообщениеДобавлено: Ср окт 14, 2009 10:14 
Не в сети
Аватара пользователя

Регистрация: Ср фев 04, 2009 11:12
Сообщения: 48
Откуда: Московская область
Помогите, решить задачу.
Имеется шесть реальных переменных.Все переменные типа Bool.
Необходимо, чтобы при срабатывании определенного бита(например W41.0) на скаде появлялось определенное сообщение, при срабатывании другого бита в том же месте появлялось другое сообщение.Если же ни один из битов не сработал, то появляется сообщение вида "***".
Адреса памяти под реальные переменные идут W41.00 - W41.6

_________________
С уважением, Павел.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Работа со скриптами
СообщениеДобавлено: Ср окт 14, 2009 13:27 
Не в сети
Аватара пользователя

Регистрация: Ср ноя 08, 2006 13:01
Сообщения: 373
Откуда: г. Красноярск
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)


В начало
 Профиль  
 
 Заголовок сообщения: Re: Работа со скриптами
СообщениеДобавлено: Ср окт 14, 2009 13:54 
Не в сети
Аватара пользователя

Регистрация: Ср фев 04, 2009 11:12
Сообщения: 48
Откуда: Московская область
Огромное спасибо, за помощь, Александр. А такой вариант подойдет??
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

_________________
С уважением, Павел.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Работа со скриптами
СообщениеДобавлено: Ср окт 14, 2009 14:31 
Не в сети
Аватара пользователя

Регистрация: Ср ноя 08, 2006 13:01
Сообщения: 373
Откуда: г. Красноярск
Если не бывает такого, что два и более бита содержат единицу одновременно, то вполне рабочий вариант. Иначе в сообщении может быть указан не последний сработавший по времени режим, а последний в списке условий из сработавших..

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

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


В начало
 Профиль  
 
 Заголовок сообщения: Re: Работа со скриптами
СообщениеДобавлено: Ср окт 14, 2009 14:53 
Не в сети
Аватара пользователя

Регистрация: Ср фев 04, 2009 11:12
Сообщения: 48
Откуда: Московская область
Понял, у меня как раз такой вариант, что два бита не могут сработать одновременно.

_________________
С уважением, Павел.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Работа со скриптами
СообщениеДобавлено: Ср окт 14, 2009 18:36 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
Не очень удобно делать сообщения через биты и заботится о ох сбросе, на мой взгляд если процесс разбит на этапы, проще каждому этапу присваивать свой номер, и с шагом например через десятку, и записывать этот номер в какое-то слово. Упрощается программа в контроллере, а в скаде сообщения вызываем через select case. Шаг через десятку на случай если понадобится втиснуть ещё несколько этапов.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Работа со скриптами
СообщениеДобавлено: Чт окт 15, 2009 10:02 
Не в сети
Аватара пользователя

Регистрация: Ср фев 04, 2009 11:12
Сообщения: 48
Откуда: Московская область
Олег, я с тобой согласен, но я не писал программу и поэтому мне как выдали я так и делаю((((

_________________
С уважением, Павел.


Отредактировал pavelzii. Дата редактирования: Чт окт 15, 2009 10:21.

В начало
 Профиль  
 
 Заголовок сообщения: Re: Работа со скриптами
СообщениеДобавлено: Чт окт 15, 2009 10:05 
Не в сети
Аватара пользователя

Регистрация: Ср фев 04, 2009 11:12
Сообщения: 48
Откуда: Московская область
А почему может не работать скипт?:
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, проект перестает отвечать?? Скрипт написан для интервала обновления.

_________________
С уважением, Павел.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Работа со скриптами
СообщениеДобавлено: Чт окт 15, 2009 12:05 
Не в сети
Аватара пользователя

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

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


В начало
 Профиль  
 
Показать сообщения за:  Сортировка  
Начать новую тему Ответить на тему  [ 25 сообщений ]  На страницу 1, 2  Вперёд

Часовой пояс: UTC + 3 часа (Russia: MSK)


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Переход:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская документация по phpBB 3