ГЛАВА 6. ВСТРОЕННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ
Встроенные языки программирования используются в SCADA - системах для разработки сложных приложений. Первые версии SCADA - систем либо не имели подобных языков, либо эти языки реализовывали небогатый набор функций. В современных версиях SCADA - систем функциональные возможности языков становятся существенно богаче.
Два типа встроенных языков:
1) Языки, ориентированные на технологов. Функции в таких языках являются высокоуровневыми, не требующими профессиональных навыков программирования при их использовании. Расширение набора функций достигается с помощью дополнительных инструментальных средств (Toolkits). Разработка дополнительных функций выполняется обычно программистами - профессионалами.
2) Языки, ориентированные на программистов. В этом случае в качестве языков чаще всего используются VBasic-подобные языки. Разработка новых функций при втором подходе выполняется обычно разработчиками приложений (как и в традиционных языках программирования). Полнота использования возможностей встроенных языков (особенно при втором подходе) требует соответствующего уровня квалификации разработчика,
Во всех языках функции разделяются на группы, часть из которых присутствует практически во всех языках: математические функции и др.
При настройке SCADA на объекте cоздаются программные фрагменты (скрипты), состоящие из операторов и функций языка, которые связываются с событиями в приложении, такими как нажатие кнопки, открытие окна, выполнение логического условия. Каждое из событий ассоциируется с графическим объектом, окном, таймером, открытием/ закрытием приложения.
Существует два режима выполнения функций:
1) В синхронном режиме выполнение следующей функции не начинается до завершения предыдущей.
2) При запуске асинхронной функции управление переходит к следующей функции, не дожидаясь завершения исполнения предыдущей. Это позволяет отделять исполняющиеся довольно долго операции (типа обращений к базам данных) от основной программы.
Скрипты в InTouch
Скрипты в InTouch - это программные фрагменты, активизируемые по событиям (по нажатию клавиши, кнопки, открытию окна, изменению значения переменной и т. д.). Находятся в свойствах, описывающих объекты SCADA-системы.
Типы скриптов
1) Скрипты уровня приложения (Application Scripts) относятся ко всему приложению и используются для запуска других приложений, имитации технологических процессов, вычисления значений переменных и т.д.
2) Скрипты уровня окна (Window Scripts) связываются с конкретным окном.
3) Клавишные скрипты (Key Scripts) привязываются к какой-либо клавише или комбинации клавиш клавиатуры. Это может быть полезным при создании каких-либо глобальных для всего приложения функций (возврат в главное окно, окончание сеанса работы с приложением и т. д.).
Скрипты, запускаемые кнопками (Touch Pushbutton Action Scripts)
Скрипты по изменению логического выражения (Condition Scripts )
Скрипты по изменению данных (Data Change Scripts)
ActiveX Event (скрипты событий ActiveX)
Quick Function - скрипты, которые могут вызываться из других скриптов и использоваться в выражениях при определении динамических свойств объектов. Например, длина выражения в поле Expression диалогов определения динамических свойств объектов должна быть не более 256 символов. Для ввода более длинных выражений можно воспользоваться функциями Quick Functions. При этом выражение в поле Expression должно содержать операторы CALL вызова функций Quick Functions, каждая из которых, в свою очередь, должна иметь в качестве последнего оператора RETURN для возврата результата в вызывающее выражение. Организованное таким образом выражение может содержать многие тысячи символов и быть сколь угодно сложным.
Редактор скриптов Application Scripts (уровень приложения). |
Встроенные функции
Разбиты на четыре группы:
1) String... - для обработки различных символьных строк и переменных, например:
StringFromReal(Number,Precision,Type); где
- Number - конвертируемая вещественная величина;
- Precision - количество десятичных знаков;
- Type - тип формата ( "f", "e", "E").
функция StringFromReal(263.365, 2, "f") возвращает "263.36";
2) Math... - математические функции. Математические функции работают с целыми и вещественными аргументами, выдавая целый или вещественный результат.
3) System... - системные функции, делятся на две категории: файловые (File) и для работы с Windows - приложениями (Info).
Файловые функции предназначены для считывания и записи информации в файлы. У всех файловых функций есть два общих аргумента - Filename и FillOffset.
Аргумент Filename (имя файла) хранит имя файла, из которого должна быть считана или в который должна быть записана информация (имя также должно включать и путь к файлу).
Аргумент FillOffset (смещение в файле) задает относительную позицию в файле, начиная с которой будут читаться или записываться данные. Смещение задается в байтах от начала файла. Первый байт файла имеет смещение 0. После завершения каждая функция возвращает следующее доступное смещение в файле. Например, если функция читает 5 байтов данных, начиная с 10-го байта, то после завершения функция возвратит 15.
4) Misc... - функции для работы с алармами распределенных систем, трендами, печатью и др. Состоит из нескольких подгрупп.
а) Функции, название которых начинается с alm, используются только в распределенных системах алармов, например:
- almAckDisplay(ObjectName,Comment); - подтверждает только те алармы, которые в текущий момент видны в окне отображения алармов, где ObjectName (имя объекта алармов), Comment (комментарий).
б) HT функции архивных трендов, например:
- HTGetPenName(Hist_Tag, UpdateCount, PenNum); - Возвращает имя переменной, связанной в текущий момент с указанным пером указанного тренда
где: Hist_Tag (имя тренда), PenNum (номер пера тренда), ValType_Text (строка, указывающая тип возвращаемого значения), Tagname (новое имя пера).
в) wc - функции управления объектами окна (простые списки, текстовые окна, ниспадающие списки и т. д.), например:
- wcInsertItem("ControlName", ItemIndex, "MessageTag"); - Вставляет указанное сообщение в список
где: ControlName (имя управляемого окна). ItemIndex (номер, соответствующий позиции элемента), MessageTag (строковое сообщение), Filename (имя файла в формате ASCII).
Язык Cicode
Cicode - встроенный язык программирования системы Citect, созданный на базе С++ специально для мониторинга и управления приложениями. Предоставляет пользователю доступ к данным проекта в режиме реального времени, а также ко всем переменным, алармам, трендам, отчетам и т. д. Поддерживает многозадачность и удаленный вызов процедур.
Команды
Используются для управления Citect и технологическим процессом. Каждая команда имеет механизм ее запуска: вручную, когда оператор нажмет некоторую последовательность клавиш или кнопку на графической странице. Можно произвести конфигурирование команд для автоматического выполнения:
1) при регистрации оператора для входа или выхода из среды исполнения;
2) при открытии и закрытии графических страниц;
3) при срабатывании алармов, событий, выдаче отчетов
Выражения
В отличие от команд, выражения не выполняют конкретных задач, они их оценивают.
Функции
Функция - это набор выражений, переменных, операторов, и других функций. Функции эквивалентны подпрограммам или функциям BASIC, Pascal или C.
Citect имеет около 700 встроенных функций. Наиболее часто используются следующие группы:
1) Группа Alarm включает более 40 встроенных функций, например:
|
2) Группа Page насчитывает более 20 функций, среди которых часто применяются следующие функции:
|
3) Keyboard
4) Report
5) Time/date
6) Miscellaneous (функции для работы с алармами, страницами проекта, клавиатурой, отчетами, временем/датой и смешанные функции).
Редактор
Cicode - функции записываются в файлы с расширением .CI. Файлы хранятся в одной директории вместе с проектом.
Окно Редактора Cicode (Cicode Editor). |
Дата добавления: 2016-11-28; просмотров: 1605;