SCADA системы
в |
|пределах всего тренда |
| |
|HTScrollLeft() |
|Устанавливает в качестве начала графика более раннее время. Визуально |
|происходит прокрутка тренда влево |
| |
|HTSetPenName() |
|Связывает перо тренда с указанной переменной |
| |
|HTZoomIn() |
|Масштабирует существующий тренд путем задания новых времени начала и |
|охватываемого интервала времени |
| |
| |
|Таблица 5.3.2. |
Встроенные функции для работы с архивными трендами также могут иметь
несколько аргументов (до четырех). Функции, приведенные в табл. 5.3.2,
имеют следующий синтаксис:
- HTGetPenName(Hist_Tag, UpdateCount, PenNum);
- HTGetValue(Hist_Tag,UpdateCount,PenNum,ValType_Text);
- HTScrollLeft(Hist_Tag,Percent);
- HTSetPenName(Hist_Tag,PenNum,Tagname);
- HTZoomIn (Hist_Tag,LockString).
Первый аргумент всех встроенных функций для работы с трендами - Hist_Tag
(имя тренда). Из других аргументов следует отметить PenNum (номер пера
тренда), ValType_Text (строка, указывающая тип возвращаемого значения),
Tagname (новое имя пера).
Функции, название которых начинается с wc (табл.5.3.3), используются с
управляющими объектами окна (простые списки, текстовые окна, ниспадающие
списки и т. д.)
|Функция |
|Описание |
| |
|wcDeleteItem() |
|Уничтожает элемент с заданным порядковым номером как в простом, так и в |
|ниспадающем списке |
| |
|wcInsertItem() |
|Вставляет указанное сообщение в список |
| |
|wcLoadText() |
|Заменяет содержимое текстового окна на новую информацию |
| |
| |
|Таблица 5.3.3. |
Функции этой подгруппы также могут иметь до четырех аргументов:
- wcDeleteItem("ControlName", ItemIndex);
- wcInsertItem("ControlName", ItemIndex, "MessageTag");
- wcLoadText("ControlName", "Filrename");.
Первый аргумент всех встроенных функций этой подгруппы - ControlName (имя
управляемого окна). Часто в качестве аргумента используются ItemIndex
(номер, соответствующий позиции элемента), MessageTag (строковое
сообщение), Filrename (имя файла в формате ASCII).
В рассматриваемой группе функций Miscellaneous следует отметить функцию
PrintWindow, i?aaiacia?aiioю для печати окна. Ее синтаксис выглядит
следующим образом:
PrintWindow("Window",Left,Top,Width,Height,Options);,
где:
- Window - имя окна;
- Left - число дюймов от левого края;
- Top - число дюймов от верхнего края;
- Width - ширина распечатываемого окна;
- Height - высота распечатываемого окна;
- Options - дискретные значения 0 или 1.
Вставка встроенных функций в скрипт производится щелчком по выбранной
функции в списке функций. Она вместе со своими аргументами будет
автоматически вставлена в текст скрипта в точку, указанную курсором. После
этого можно отредактировать список аргументов.
По окончании редактирования скрипта следует нажать кнопку Ok. При
обнаружении в скрипте каких-либо ошибок на экран будет выведено
соответствующее сообщение. В большинстве случаев курсор установится в ту
позицию, которая привела к появлению ошибки. Прежде чем скрипт будет
сохранен, все ошибки должны быть исправлены.
Функции Quick Functions
Quick Functions - это скрипты, которые могут вызываться из других скриптов
и использоваться в выражениях при определении динамических свойств
объектов. Скрипты Quick Functions хранятся внутри того приложения, в
котором они были созданы, и могут многократно использоваться в других
скриптах InTouch.
Наиболее часто эти функции используют в выражениях при определении
динамических свойств объектов. Чем это вызвано? Дело в том, что длина
выражения в поле Expression диалогов определения динамических свойств
объектов должна быть не более 256 символов. Это относится к таким
динамическим свойствам, как цвет линии, цвет заполнения, изменение высоты и
ширины, вертикальное и горизонтальное перемещение, вертикальное и
горизонтальное заполнение, видимость, мерцание, ориентация, блокировка.
Для ввода более длинных выражений можно воспользоваться функциями Quick
Functions. При этом выражение в поле Expression должно содержать операторы
CALL вызова функций Quick Functions, каждая из которых, в свою очередь,
должна иметь в качестве последнего оператора RETURN для возврата результата
в вызывающее выражение. Организованное таким образом выражение может
содержать многие тысячи символов и быть сколь угодно сложным.
Сохраненная функция Quick Functions может быть использована в любом другом
скрипте или выражении.
Quick Functions могут быть синхронными и асинхронными скриптами. Синхронные
скрипты выполняются последовательно, в то время, как после запуска одного
асинхронного скрипта может быть запущен другой (синхронный или асинхронный)
скрипт. Это позволяет отделять исполняющиеся довольно долго операции (типа
обращений к базам данных) от основной программы. Асинхронные скрипты не
могут возвращать результаты. Поэтому в качестве скриптов Quick Functions,
используемых в выражениях (Expression) для определения динамических свойств
объектов, следует применять только синхронные скрипты.
Создание скриптов Quick Functions осуществляется в диалоговом окне
редактора Quick Functions. Вызов этого диалога на экран в окне WindowMaker
производится в командой Special/Scripts с последующим нажатием на строке
Quick Functions.
Список Name содержит имена всех определенных к данному моменту скриптов
Quick Functions. Щелчок по имени скрипта выводит его текст в рабочее поле
диалога.
Команда Scripts/New предназначена для создания нового скрипта и вызывает на
экран диалог для ввода его имени. После щелчка по Ok новое имя будет
включено в список имен Name.
Следующий этап - определение аргументов нового скрипта в таблице Arguments
диалога Quick Function. В левую колонку таблицы вводят имя аргумента (до 31
символа), в правую - его тип (Integer, Real, Discrete, Message). В одном
скрипте допускается до 16 аргументов.
После определения типов аргументов можно приступать к написанию текста
скрипта Quick Function в рабочем поле (под таблицей Arguments).
Разработка графопостроителя в системе InTouch
Данный раздел посвящен разработке четырехканального графопостроителя
визуализирующего данные, поступающие по DDE каналу с DDE сервера. В
программе предусмотрена возможность масштабирования по каждому из каналов.
Разработка DDE-сервера
Приложение, получающее данные из другого приложения по DDE и/или
управляющее другим приложением с помощью команд через DDE является DDE-
клиентом. В этом случае второе приложение является DDE-сервером. Рассмотрим
проект DDE-сервера, выполненного на языке программирования Borland Delphi
6.
На рис.20 представлено окно DDE-сервера во время дизайна в среде Delphi
[pic]
Рис. 20. Окно DDE-сервера на стадии проектирования в Delphi
Для построении DDE-сервера в Delphi имеются два объекта, расположенные на
странице System Палитры Компонент - TDdeServerConv и TDdeServerItem. Обычно
в проекте используется один объект TDdeServerConv и один или более
TDdeServerItem. Для получения доступа к сервису DDE-сервера, клиенту
потребуется знать несколько параметров : имя сервиса (Service Name) - это
имя приложения (обычно - имя выполняемого файла без расширения EXE,
возможно с полным путем); Topic Name - в Delphi это имя компоненты
TDdeServerConv; Item Name - в Delphi это имя нужной компоненты
TDdeServerItem. Назначение объекта TDdeServerConv - общее управление DDE и
обработка запросов от клиентов на выполнение макроса.
Объект TDdeServerItem связывается с TDdeServerConv и определяет, что,
собственно, будет пересылаться по DDE. Для этого у него есть свойства Text
и Lines. (Text имеет то же значение, что и Lines[0].) При изменении
значения этих свойств автоматически происходит пересылка обновленных данных
во все приложения-клиенты, установившие связь с сервером.
При запуске приложения происходит выполнение процедуры
TDDEServe.FormActivate:
procedure TDDEServe.FormActivate(Sender: TObject);
var nidata : TNotifyIconData;
begin
Application.ShowMainForm := False;
| | скачать работу |
SCADA системы |