Главная страница
Навигация по странице:

  • Shell_NotifyIcon(NIM_ADD, @nidata); ru :=10; end ;

  • TDDEServe.WMICON

  • Реферат SCADA-системы. Введение асу тп и диспетчерское управление


    Скачать 0.68 Mb.
    НазваниеВведение асу тп и диспетчерское управление
    Дата17.02.2019
    Размер0.68 Mb.
    Формат файлаdoc
    Имя файлаРеферат SCADA-системы.doc
    ТипРеферат
    #67842
    страница14 из 14
    1   ...   6   7   8   9   10   11   12   13   14

    Функции Quick Functions


    Quick Functions - это скрипты, которые могут вызываться из других скриптов и использоваться в выражениях при определении динамических свойств объектов. Скрипты Quick Functions хранятся внутри того приложения, в котором они были созданы, и могут многократно использоваться в других скриптах InTouch.

    Наиболее часто эти функции используют в выражениях при определении динамических свойств объектов. Чем это вызвано? Дело в том, что длина выражения в поле Expression диалогов определения динамических свойств объектов должна быть не более 256 символов. Это относится к таким динамическим свойствам, как цвет линии, цвет заполнения, изменение высоты и ширины, вертикальное и горизонтальное перемещение, вертикальное и горизонтальное заполнение, видимость, мерцание, ориентация, блокировка.
    Для ввода более длинных выражений можно воспользоваться функциями Quick Functions. При этом выражение в поле Expression должно содержать операторы CALL вызова функций Quick Functions, каждая из которых, в свою очередь, должна иметь в качестве последнего оператора RETURN для возврата результата в вызывающее выражение. Организованное таким образом выражение может содержать многие тысячи символов и быть сколь угодно сложным.
    Сохраненная функция Quick Functions может быть использована в любом другом скрипте или выражении [5].

    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).

    1. Разработка графопостроителя в системе InTouch


    Данный раздел посвящен разработке четырехканального графопостроителя визуализирующего данные, поступающие по DDE каналу с DDE сервера. В программе предусмотрена возможность масштабирования по каждому из каналов.
    1. Разработка DDE-сервера


    Приложение, получающее данные из другого приложения по DDE и/или управляющее другим приложением с помощью команд через DDE является DDE-клиентом. В этом случае второе приложение является DDE-сервером. Рассмотрим проект DDE-сервера, выполненного на языке программирования Borland Delphi 6.

    На рисунке 21 представлено окно DDE-сервера во время дизайна в среде Delphi.



    Рисунок 21 – Окно DDE-сервера на стадии проектирования в Delphi
    Для построения DDE-сервера в Delphi имеются два объекта, расположенные на странице System Палитры Компонент.

    TDdeServerConv и TDdeServerItem. Обычно в проекте используется один объект TDdeServerConv и один или более TDdeServerItem. Для получения доступа к сервису DDE-сервера, клиенту потребуется знать несколько параметров: имя сервиса (Service Name) – это имя приложения (обычно – имя выполняемого файла без расширения EXE, возможно с полным путем); Topic Name - в Delphi это имя компоненты TDdeServerConv; Item Name – в Delphi это имя нужной компоненты TDdeServerItem. Назначение объекта TDdeServerConv – общее управление DDE и обработка запросов от клиентов на выполнение макроса [6, с. 161].

    Объект TDdeServerItem связывается с TDdeServerConv и определяет, что, собственно, будет пересылаться по DDE. Для этого у него есть свойства Text и Lines. (Text имеет то же значение, что и Lines[0].) При изменении значения этих свойств автоматически происходит пересылка обновленных данных во все приложения-клиенты, установившие связь с сервером.

    При запуске приложения происходит выполнение процедуры TDDEServe.FormActivate:

    procedure TDDEServe.FormActivate(Sender: TObject);

    var nidata : TNotifyIconData;

    begin

    Application.ShowMainForm := False;

    ShowWindow(Application.Handle, SW_HIDE);

    ShowWindow(Application.MainForm.Handle, SW_HIDE);

    with nidata do

    begin

    cbSize := SizeOf(TNotifyIconData);

    Wnd := Self.Handle;

    uID := 1;

    uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;

    uCallBackMessage := WM_MYICONNOTIFY;

    hIcon := Application.Icon.Handle;

    StrPCopy(szTip,Application.Title);

    end;

    Shell_NotifyIcon(NIM_ADD, @nidata);

    ru:=10;

    end;

    В этой процедуре приложение сворачивается в системный Tray, а форма становится невидимой. Окончание работы DDE-сервера вызывается путём нажатия левой или правой кнопкой мыши на иконке приложения в области системного Tray. Обработка этого события выполняется в процедуре TDDEServe.WMICON:

    procedure TDDEServe.WMICON(var msg: TMessage);

    begin

    case msg.LParam of

    WM_RBUTTONDOWN,WM_LBUTTONDOWN: close;

    end;

    end;

    При этом, при закрытии окна приложения вызывается процедура TDDEServe.FormDestroy, в которой происходит удаление иконки из системного Tray:

    procedure TDDEServe.FormDestroy(Sender: TObject);

    var nidata : TNotifyIconData;

    begin

    with nidata do

    begin

    cbSize := SizeOf(TNotifyIconData);

    Wnd := Self.Handle;

    uID := 1;

    end;

    Shell_NotifyIcon(NIM_DELETE, @nidata);

    end;

    Работа приложения в целом строится посредством вызова процедуры TDDEServe.Timer1Timer по прерыванию таймера.

    implementation

    {$R *.DFM}

    uses ComObj, activex, ShellApi, shlobj, registry;

    var

    xsin: integer;

    ru:real;

    boolka:boolean;

    procedure TDDEServe.Timer1Timer(Sender: TObject);

    var LPTbyte: byte;

    begin

    xsin:=xsin+1;

    if xsin>1000 then xsin:=xsin-1000;

    DDEItem100.Text:=inttostr(5*(xsin-20*trunc(xsin/20))); //пилообразный сигнал

    asm

    mov dx,379h

    in al,dx

    and al,80h

    mov LPTbyte,al

    end;

    DDEItem200.Text:=inttostr(LPTbyte*100); //состояние линии LPT-порта

    DDEItem300.Text:=inttostr(round(50+50*sin(xsin/20)));

    if (xsin/5)=trunc(xsin/5) then

    if (ru
    begin

    boolka:=true;

    ru:=ru+20

    end else

    begin

    boolka:=false;

    ru:=ru-20

    end;

    if boolka then DDEItem400.Text:='100' else DDEItem400.Text:='0';

    end;

    Для обеспечения DDE-обмена задекларированы следующие константы:

    ‘DDEServer’ – имя сервиса (Service Name);

    ‘DDETopic’ – Topic Name;

    ‘DDEItem100’ – переменная обмена;

    ‘DDEItem200’ – переменная обмена;

    ‘DDEItem300’ – переменная обмена;

    ‘DDEItem400’ – переменная обмена.
    1. Разработка DDE-клиента


    Основа человеко-машинного интерфейса в рамках InTouch – это иерархически взаимосвязанные анимированные сенсорные окна. Для создания нового окна выполним команду File/New Window... (Файл/Новое Окно). На экране появится диалоговое окно Window Properties (Свойства Окна), которое необходимо заполнить.

    Здесь следует ввести только имя окна (поле Name) Scope. Ос­тальные поля и опции оставлены без изменений. Окно с указан­ными атрибутами появится на экране. Там же будет отображена и Панель Инструмен­тов InTouch - Tools, с которой предстоит интенсивно работать далее.

    График представляет собой прямоугольную область с нанесенными координат­ными прямыми, на которой графически представляется изменение значения одной или нескольких переменных в течение времени. В пакете InTouch имеются объекты для ди­намического отображения значения переменной в реальном времени – графики реаль­ного времени (инструмент (Real-time Trend)), и, так называе­мые, аналитические кривые, которые строятся на основании архивных данных (инструмент (Historical Trend)). Для того, чтобы он появился в созданном нами окне, необходимо на Панели Инструмен­тов InTouch – Tools выбрать пункт Real – Time Trend и затем в окне приложения, удерживая нажатой левую кнопку мышки, придать графику необходимые размеры .

    Панель настройки графиков вызывается двойным щелчком левой кнопки мышки по окну графика и состоит из четырех текстовых строк соответствующих графикам (Graph 1, Graph 2, Graph 3, Graph 4). Каждый график имеет независимые настройки масштаба и величины сдвига по вертикали, отображаемые на экране. Для этого используется компонент Analog Tagname Display (Wizard Selection ® Value Displays ® Analog Tagname Display). Ввод данных осуществляется не непосредственно в WindowViewer, а посредством компоненты Incr/Decr Buttons Up/Down (Wizard Selection ® Buttons ® Incr/Decr Buttons Up/Down). Нажатие на верхнюю или нижнюю стрелку приводит соответственно к увеличению или уменьшению значения переменной. Ограничение максимального и минимального значения указываются при декларации. Каждый компонент связан со своей переменной zoom1 – zoom4 (изменение масштаба графиков 1 – 4 соответственно) и sh1 – sh4 (изменение смещения графиков 1 – 4). Все переменные имеют тип Memory Integer. Для того, чтобы ввести новую переменную, необходимо описать ее в разделе Special/Tagname Dictionary/New. При этом необходимо указать ее имя в поле «Tagname:» и тип – в поле «Type:».

    Для организации обмена данными через DDE интерфейс необходимо определить четыре (по числу каналов) переменные типа DDE Integer (Item1, Item2, Item3, Item4). Для этого сначала в разделе Special/DDE Access Names… необходимо нажать кнопку Add и в появившемся диалоговом окне указать имя приложения (DDE Application/Server Name), от которого будет производиться запрос данных, и имя группы/объекта (DDE Topic Name), содер­жащего требуемую информацию. В нашем случае качестве имени приложения используется имя DDEServer, имя объекта – DDETopic. Далее в разделе Special/Tagname Dictionary/New вводятся поочередно переменные типа DDE Integer. Название элемента (Item) для каждой переменной имеет различные имена: DDEItem100 – для Item1, DDEItem200 – для Item2, DDEItem300 – для Item3 и DDEItem400 – для Item4. Данная информация используется для определения DDE-переменной в Словаре Переменных InTouch.

    Для того, чтобы запустить программу графопостроителя и начать DDE – обмен, необходимо включить DDE сервер (т. е. запустить файл Ddeserver.exe) и переключиться в окно InTouch - WindowViewer (нажатием кнопки Runtime! в правом верхнем углу окна InTouch - WindowMaker). В процессе работы InTouch WindowViewer автоматически выполнит все требуемые действия по установлению канала об­мена данными и обработке значений элемента.

    Ниже представлен внешний вид программы графопостроителя в окне InTouch - WindowViewer отображающей в виде четырех графиков данные, полученные от программы DDE сервера и соответствующие им масштабирующие коэффициенты (рисунок 22).


    Рисунок 22 – Окно программы графопостроителя

    Заключение

    В заключение можно сделать следующие выводы:

    1. в развитии АСУ ТП можно выделить 3 этапа: первый этап отражает внедрение систем автоматического регулирования, характерной особенностью этого этапа является внедрение систем телемеханики в управление технологическими процессами, третий этап характеризуется внедрением в управление технологическими процессами вычислительной техники;

    2. необходимым условием эффективной реализации диспетчерского управления, имеющего ярко выраженный динамический характер, становится работа с информацией, т.е. процессы сбора, передачи, обработки, отображения, представления информации;

    3. автоматизированные системы контроля и управления как правило являются двухуровневыми: нижний уровень (контроллерный) включает различные датчики для сбора информации о ходе технологического процесса, электроприводы и исполнительные механизмы для реализации регулирующих и управляющих воздействий; верхний уровень – диспетчерский пункт включает, прежде всего, одну или несколько станций управления, представляющих собой автоматизированное рабочее место диспетчера/оператора;

    4. критерии оценки SCADA-систем можно разделить на 3 группы: технические характеристики, стоимостные характеристики и эксплуатационные характеристики;

    5. компонентами среды разработки InTouch являются: WindowMaker и Application Explorer;

    6. InTouch предлагает три типа окон: заменяющие, всплывающие и перекрывающие;

    7. WindowMaker поддерживает четыре базовых типа простых объектов: линии, заполненные контуры, текст и кнопки и сложные объекты: символ, компонент и мастер-объект;

    8. для подсоединения драйверов ввода/вывода к SCADA-системе в настоящее время используются следующие механизмы: динамический обмен данными (DDE), собственные протоколы фирм-производителей SCADA-систем, OPC-протокол;

    9. InTouch предлагает пользователю 2 типа графических объектов, называемых трендами: тренд реального времени и исторический (архивный) тренд;

    10. в InTouch выделяют следующие типы скриптов: скрипты уровня приложения, скрипты уровня окна, клавишные скрипты, скрипты, запускаемые кнопками, скрипты по изменению логического выражения, скрипты по изменению данных, скрипты событий ActiveX, скрипты, которые могут вызываться из других скриптов и использоваться в выражениях при определении динамических свойств объектов;

    11. все встроенные функции в InTouch разбиты на четыре группы: функции для обработки различных символьных строк и переменных, математические функции, системные функции, функции для работы с алармами распределенных систем, трендами, печатью и др.


    Список использованной литературы и источников


    1. Втюрин В.А. Автоматизированные системы управления технологическими процессами. Основы АСУТП. СПб: СПбГЛТА, 2006. 152 с.

    2. Интегрированные системы проектирования и управления: SCADA-системы / И.А. Елизаров [и др.]. Тамбов: Изд-во ФГБОУ ВПО «ТГТУ», 2015. 160 с.

    3. Давыдов В. SCADA-системы в управлении. Введение (SCADA-система GeniDAQ) [Электронный ресурс]. – Режим доступа: http://elib.spbstu.ru/dl/2/2017.pdf/download/2017.pdf свободный. – (дата обращения: 13.02.2019).

    4. Грачев В.В., Венгер К.Г., Шипунов М.В. SCADA-системы [Электронный ресурс]. – Режим доступа: https://studfiles.net/preview/4176559/ свободный. – (дата обращения: 13.02.2019).

    5. Андреев Е.Б. Проектирование систем управления в SCADA-пакете In Touch 7.0 https://studfiles.net/preview/951006/ [Электронный ресурс]. – Режим доступа: свободный. – (дата обращения: 13.02.2019).

    6. Тейксейра С., Пачеко К. Borland Delphi 6. Руководство разработчика. М.: ИД «Вильямс», 2002. 1120 с.





    1   ...   6   7   8   9   10   11   12   13   14


    написать администратору сайта