Приветствую Вас, Гость · Вход · Регистрация

Главная » Файлы » MicroSCADA » Scil

7. Команды SCIL часть 3.2
[ ] 31.12.2008, 21:25

7.3.3 Команды запроса объектов

#INIT_QUERY n [condition]

Инициализирует запрос процесса.

'n' Текстовое выражение со значениями "A", "P", "L", "H" или E":
"A" (Алфавитный) Запрос включает всю базу данных процесса в алфавитном порядке, так, чтобы для каждой группы объектов процесса включался каждый индекс (LN+IX).
"P" (Физический) Запрос касается всей базы данных процесса, но объекты упорядочиваются в соответствии с их физическими адресами (UN+AO+OB).
"L" (Список тревог) Запрос касается буфера тревог. Буфер тревог содержит все аварийные или неквитированные объекты процесса, отсортированные в порядке времени согласно времени тревоги (атрибуты AT и AM). Буфер считывается, начиная с самых новых, и, заканчивая самыми старыми тревогами.
"H" (Хронология) Запрос касается буфера хронологий, который считывается, начиная с самого старого события. Буфер хронологий содержит события, произошедшие в объектах процесса, которые определены с буферизацией хронологии (атрибут HA). Если выбирается это значение, атрибут HP приложения должен иметь значение “EVENT_LOG”.
"E" (Событие) Запрос касается буфера хронологий, который первым читает самое последнее событие. Если выбирается это значение, атрибут HP приложения должен иметь значение “EVENT_LOG”.
'condition' Выражение булевого типа, которое выбирает объекты, включаемые в запрос. Условие составляется из операций отношения и логических операторов. В операциях отношения атрибутом является левый операнд. Могут использоваться все атрибуты (включая CA), кроме атрибутов векторного типа. Объекты, атрибуты которых удовлетворяют условию (присваивают выражению значение TRUE), включаются в запрос. При формировании имен могут использоваться символы % и *. Символ % заменяет один символ в имени, а * заменяет один символ, несколько символов или ни одного символа в конце имени.

С помощью этой команды вы можете определить, какие элементы должны быть включены в запрос процесса, выполняемый функцией PROD_QUERY (Глава 8). Команда #INIT_QUERY должна предшествовать функции PROD_QUERY в пределах одного и того же изображения или командной процедуры. Допускается одновременно использование только одной команды #INIT_QUERY.

Команда #INIT_QUERY просматривает все объекты процесса в памяти ОЗУ. Если условие не задано, запрос относится ко всем объектам процесса в пределах перечня, определенного 'n'. Запрос касается только объектов процесса приложения, в котором встречается этот запрос.

Команда полагает, что максимальная длина для запросов базы данных процесса, определяемая атрибутом объекта базовой системы APL:BQL, достаточно велика.

Примеры:

#INIT_QUERY "A"
;Запрос процесса включает все объекты в алфавитном порядке.

#INIT_QUERY "P" UN == 5
;Объекты RTU 5 в порядке адресов.

#INIT_QUERY "A" LN == "K*"
;Объекты процесса, начинающиеся с K.

#INIT_QUERY "L" AR == 0
;Неквитированные объекты в списке тревог.

#SEARCH n apl type order [start [condition]]

Инициализирует поиск среди объектов.

'n' Идентификационный номер поиска. Целочисленное выражение 1...10, которое идентифицирует поиск в рамках изображения, командной процедуры или системы диалогов.
'apl' Логический номер приложения. Целочисленное выражение, 0...20. 0 = собственное приложение. Приложение должно быть расположено в той же базовой системе.
'type' Тип объекта, "P", "D", "C", "A", "T", "X" или "F", заданный как текстовое выражение.
'order' Порядок поиска, заданный как текстовое выражение:
  "A" = Алфавитный порядок. Поиск по именам объектов в алфавитном порядке (без индексов). Касательно объектов процесса, в поиск включаются только имена групп.
  "I" = Индексный порядок (только для объектов процесса предопределенных типов). Поиск по отдельным объектам в группе объектов процесса.
  "P" = Адресный порядок (только для объектов процесса).
  "E" = Порядок выполнения. Порядок выполнения в пределах канала времени. Тип ('type') может быть либо "D", либо "C". Оба типа равны и означают, что поиск касается как объектов данных, так и командных процедур.
'start' Начальная точка поиска. В зависимости от порядка ('order'), параметр имеет следующие значения:
  'order'= "A": Имя, где ‘name’ - это имя объекта в виде текстового выражения. Если пропущено, поиск начинается с первого имени.
  'order'= "I": Имя или (имя, индекс), где ‘имя’ - это имя объекта в виде текстового выражения. Если ‘индекс’ пропущен, просмотр начинается с первого индекса.
  'order'= "P": Модуль, либо (модуль, адрес), либо (модуль, адрес, адрес бита), где ‘модуль’ - это номер RTU, заданный как целочисленное выражение, ‘адрес’ - адрес слова, заданный как целочисленное выражение, ‘адрес бита’ – адрес бита, заданный как целочисленное выражение.
  'order' = "E": Канал времени или (канал времени, тип, имя), где ‘канал времени’ - это имя канала времени, заданное как текстовое выражение. 'Тип' и 'имя' - тип и имя связанного объекта, с которого начинается поиск, заданные как целочисленные выражения.
Если задано только имя канала времени, поиск начинается с объекта с наивысшим приоритетом. Иначе, поиск начинается с объекта с именем 'имя' и с типом 'тип'. Включаются как объекты данных, так и командные процедуры.
  'start' обязателен, когда 'order' равен "I" или "P", и когда к оператору добавлено условие. Если 'order' равен "A" или "E", 'start' может быть задан в виде пустой строки (" ").
'condition' Выражение булевого типа, которое выбирает объекты, включаемые в просмотр. Условие составляется из операторов отношения и логических операторов. Атрибутом отношения является левый операнд. В выражение могут включаться все атрибуты, за исключением атрибутов векторного типа. Объекты, атрибуты которых удовлетворяют условию (присваивают выражению значение TRUE), включаются в просмотр. При формировании имен могут использоваться символы % и *. Символ % заменяет один символ в имени, а * заменяет один символ, несколько символов или ни одного символа в конце имени.

Команда #SEARCH инициирует поиск по объектам, хранящимся на жестком диске. После инициализации поиск может быть завершен функциями NEXT и PREV (смотрите Главу 8). До десяти поисков могут быть инициированы параллельно в изображении, командной процедуре или системе диалогов.

Примеры:

#SEARCH 1 0 "P" "A"
;Все объекты процесса включаются в поиск номер 1, который сформирован
;в алфавитном порядке.

#SEARCH 2 2 "T" "A"
;Просмотр всех каналов времени в алфавитном порядке.

#SEARCH 3 1 "P" "P" (4,1000) LN == "B*"
;Поиск относится к тем объектам станции 4, адрес которых равен 1000
;(восьмеричное число) и начинается с B. Поиск выполняется в адресном
;порядке.

#SEARCH 4 0 "D" "E" "10MIN"
;Поиск по тем объектам данных и командным процедурам, которые
;связаны с каналом времени 10MIN.

7.3.4 Команды печати

#LIST printer object [(variable list)]

Печатает данные объекта процесса.

'printer' Логический номер принтера. Целочисленное выражение, 1...20.
'object' Обозначение объекта процесса без атрибута.
'variable list' Список присвоенных переменным значений, разделенных запятыми (не обязателен).

На принтер выводится изображения формата объекта процесса. Если объект процесса задан с индексом, выводится физическое изображение формата (PF), иначе используется логическое изображение формата группы (LF). Для объектов процесса, определяемых пользователем, команда всегда выводит на печать физическое изображение формата (PF).

Программа запуска изображения, исключая команды изображений, выполняется до печати. Печатаются только те окна, в которых имеется выражение, которое требуется распечатать. Кривые и поля не печатаются. В зависимости от определения принтера в базовой системе (атрибут PRIN:BOD), печать может быть сохранена на диске.

Список переменных, который может быть пропущен, определяет переменные, используемые в печатаемом изображении (в окнах или в программах запуска). Список переменных может присваивать значение переменной FORM_FEED, которая управляет переводом страницы, смотрите команду #PRINT. При использовании команды #LIST значение по умолчанию FORM_FEED равняется 0, т.е. принтер начинает новую страницу только в том случае, если предыдущая заполнена.

Команда #LIST определяет пару переменных, которые получают имена и значения из атрибутов ("переменные кадра"). Если объект процесса задан с индексом, эти атрибуты могут быть следующими (в зависимости от типа объекта и определения объекта): LN, IX, OV, BI, BO, DB, DI, DO, AI, AO, PC, BS, AL, AS, OS, SE, SP, OF, AZ, RT, RM, AT, AM и CA. Для объектов, определяемых пользователем, другие атрибуты также могут быть переданы в переменные. Соответствующие переменные (например, %LN) могут использоваться в физическом формате. Если объект процесса задан без индекса, то только атрибут LN передается этим способом в логический формат. Значения переменных, заданные в списке переменных, имеют превосходство над автоматически сгенерированными переменными.

Примеры:

#LIST 3 TEMP:P (@A=30)
;Логический формат группы объекта процесса печатается на принтер 3.
;Принтер начинает новую страницу, как до, так и после каждой печати.

#LIST 1 LEVEL:P7 (@FORM_FEED = 2)
;Физический формат объекта процесса печатается на принтер 1. Например,
;переменная %LN имеет значение "LEVEL", а переменная %IX - значение 7.
;Принтер начинает новую страницу до начала печати, но не после печати.

#PRINT printer picture [(variable list)]

Печатает изображение.

'printer' Логический номер принтера. Целочисленное выражение, 1...20.
'picture' Изображение, которое необходимо напечатать, заданное как:
  [path/] picture name
  где
  'picture name' Имя изображения, исключая расширение, и
  'path' Логический путь.
  Если 'path' пропущен, используются имена пути, заданные по умолчанию. Смотрите команду #PATH, раздел 7.10.
'variable list' Список присвоенных переменным значений, разделенных запятыми. Не обязателен.

Данная команда используется для печати изображения, например, изображения отчета. Перед процессом печати выполняется программа запуска изображения, исключая команды изображений. Печатаются только те окна, которые имеют выражение. Кривые и поля не печатаются. В зависимости от определения принтера в базовой системе (атрибут PRIn:BOD), распечатка может быть сохранена на диске.

Список переменных, который может быть пропущен, определяет переменные, используемые в печатаемом изображении (в окнах или в программах запуска). Список переменных может присваивать значения предопределенной переменной FORM_FEED, которая управляет переводом страницы во время печати, смотрите команду #PRINT. Параметр FORM_FEED может иметь следующие значения:

0 ........ переводит страницу только при достижении конца страницы (длина страницы определяется атрибутом PRIn:BLP, где 'n' - номер физического принтера)
1 ........ переводит страницу до (если он пока не выполнен) и после печати
2 ........ переводит страницу перед печатью (если он пока не выполнен)
3 ........ переводит страницу после печати

Вместе с #PRINT, значение FORM_FEED по умолчанию равняется 1.

Примеры:

#PRINT 1 REPORT (@VAR=TEMP:PAI(1..20))
;Изображение с именем REPORT выводится на принтер 1. Принтер начинает
;новую страницу как до, так и после каждой печати.
LOOP N = 1 . . 20

#PRINT 1 FORM_'N' (@FORM_FEED = 0)
#LOOP_END

;Изображения FORM_1... FORM_20 печатаются без перевода страницы.

7.3.5 Команды обработки ошибок

Команды, представленные в этом разделе, определяют обработку ошибок в программах.

#ERROR IGNORE
#ERROR CONTINUE
#ERROR STOP
#ERROR EVENT

Определяют принципы обработки ошибок.

IGNORE Означает, что выполнение программы продолжается, независимо от ошибок. Программы обработки ошибок не активизируются, и не выдаются сообщения об ошибках.
CONTINUE Означает, что активизируется обработчик ошибок или выдается сообщение об ошибке, но выполнение программы продолжается.
STOP Означает, что активизируется обработчик ошибок или выдается сообщение об ошибке, и выполнение программы, содержащей ошибку, прекращается. Выполняется оператор активной команды #ON ERROR (смотрите ниже).
EVENT Означает, что выполнение программы, содержащей ошибку, прекращается, но сообщение об ошибке не выдается. Выполняется оператор активной команды #ON ERROR (смотрите ниже). Не применяется в методах диалогов.

Команда #ERROR применяется только с программой или блоком #ON, в которых она выполняется. Действительна последняя команда #ERROR.

Состояние самой последней ошибки, произошедшей в программе, может быть считано функцией STATUS, Глава 8.

Если команда ERROR в программе не выполнялась, действуют следующие принципы обработки ошибок по умолчанию:

Программы фона и рисования: CONTINUE
Программы запуска: STOP - в мониторах, IGNORE при печати
Программы обновления: IGNORE
Программы выхода: IGNORE
Программы клавиш: STOP
Именованные программы: STOP (не в ERROR_HANDLER)
Командные процедуры: STOP
Блоки #ON: IGNORE
Методы в диалогах: STOP (отсутствует в методе удаления)
Программы обработки ошибок: IGNORE

В программах обработки ошибок принцип обработки ошибок всегда IGNORE, независимо от используемой команды #ERROR. В методах удаления все ошибки игнорируются.

#ERROR RAISE [status]

Активизирует состояние ошибки.

'status' Целочисленное выражение. Код состояния, который будет активизирован. Значение по умолчанию: код последней ошибки, произошедшей в программе.

Команда обычно используется внутри блоков обработки ошибок (блоки #ON ERROR или #ON KEY_ERROR) для активизации состояния ошибки в программе. В блоках обработки ошибок 'status' может быть пропущен, т.е. состояние ошибки получает значение состояние последней ошибки в программе. Вне блока обработки ошибок команда прерывает выполнение программы.

Пример:

#ON ERROR #BLOCK
#IF STATUS = 107 #THEN !SHOW

#ELSE #ERROR RAISE

#BLOCK_END

#ON ERROR [statement]

Определяет обработчик ошибок.

'statement' Оператор SCIL, который должен выполняться при появлении ошибки. Используя команду #BLOCK (раздел 7.4), можно определять блок операторов.

Команда определяет оператор или блок операторов, которые должны выполняться в программе при возникновении ошибки, если обработка ошибок определена командами #ERROR STOP или #ERROR EVENT (смотрите выше). Команда действительна только для программы или блока #ON, в котором она выполнена. Действительна только последняя выполненная команда #ON ERROR. Команда #ON ERROR имеет приоритет над командой #ON KEY_ERROR (смотрите ниже).

Пример:

#ON ERROR !SHOW MESSAGE STATUS
;При возникновении ошибки выводится окно MESSAGE.

#ON KEY_ERROR [statement]

Определяет обработчик ошибок клавиш.

'statement' Оператор SCIL. Используя команду #BLOCK, можно определять блок операторов.

Команда определяет часть программы, которая будет выполняться в изображении при возникновении ошибки в программе функциональной клавиши. Команда действительна только в изображении, в котором она была выполнена. Если в изображении нет обработчика ошибок, то используется обработчик ошибок основного изображения, если таковой существует. Команда #ON ERROR (смотрите выше) имеет приоритет над командой #ON KEY_ERROR.

Пример:

#ON KEY_ERROR !SHOW MESSAGE "ОШИБКА ФУНКЦИОНАЛЬНОЙ КЛАВИШИ"

Читать дальше


Оглавление

По материалам © ABB
Категория: Scil | Добавил: RAZ
Просмотров: 1022 | Загрузок: 0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]