МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • SCADA системы

    |StringToIntg() |

    |Преобразует символьное представление целого числа во внутренний формат |

    | |

    |StringUpper() |

    |Преобразует все символы исходной строки в нижнем регистре в верхний |

    |регистр |

    | |

    |Text() |

    |Осуществляет форматированный вывод указанной целой или вещественной |

    |переменной в соответствии со строкой форматирования |

    | |

    | |

    |Таблица 5.1. |

    Каждая строковая функция имеет один или несколько аргументов (до 6).

    Например, синтаксис функции StringFromReal выглядит следующим образом:

    StringFromReal(Number,Precision,Type);

    - Number - конвертируемая вещественная величина;

    - Precision - количество десятичных знаков;

    - Type - тип формата ( "f", "e", "E").

    Например,

    функция StringFromReal(263.365, 2, "f") возвращает "263.36";

    функция StringFromReal(263.365, 2, "e") возвращает "2.63e2";

    функция StringFromReal(263.55, 3, "E") возвращает "2.636E2".

    Функция Text имеет два аргумента: Text(Analog_Tag, "Format_Text");

    - Analog_Tag - вещественное или целое число;

    - Format_Text - формат преобразования.

    Если указанный формат функции Text - "#0.00", то:

    - при Analog_Tag = 66 функция возвращает 66.00;

    - при Analog_Tag =22.269 функция возвращает 22.27;

    - при Analog_Tag =9.999 функция возвращает 10.00.

    . Щелчок по клавише Math... вызывает появление диалога Choose function

    (выбор функции) со списком математических функций.

    Математические функции работают с целыми и вещественными аргументами,

    выдавая целый или вещественный результат. В левой части оператора

    присваивания допускается указывать и целые переменные. Однако необходимо

    иметь ввиду, что преобразование вещественного значения в целое может

    привести к усечению результата.

    . Системные функции делятся на две категории: файловые (File) и для

    работы с Windows - приложениями (Info).

    Файловые функции предназначены для считывания и записи информации в файлы.

    У всех файловых функций есть два общих аргумента - Filename и FillOffset.

    Аргумент Filename (имя файла) хранит имя файла, из которого должна быть

    считана или в который должна быть записана информация (имя также должно

    включать и путь к файлу). Аргумент FillOffset (смещение в файле) задает

    относительную позицию в файле, начиная с которой будут читаться или

    записываться данные. Смещение задается в байтах от начала файла. Первый

    байт файла имеет смещение 0. После завершения каждая функция возвращает

    следующее доступное смещение в файле. Например, если функция читает 5

    байтов данных, начиная с 10-го байта, то после завершения функция возвратит

    15. Некоторые встроенные функции группы System приведены в табл. 5.2.

    |Функция |

    |Описание |

    | |

    |FileCopy() |

    |Копирует исходный файл в файл-приемник |

    | |

    |FileReadFields() |

    |Возвращает очередную запись данных из CSV - файла |

    | |

    |FileReadMessage() |

    |Возвращает указанное количество байтов (или всю строку) из указанного |

    |файла |

    | |

    |FileWriteFields() |

    |Сохраняет в CSV - файле запись данных, состоящую из разделенных запятыми|

    |величин |

    | |

    |InfoDisk() |

    |Возвращает информацию об указанном локальном или сетевом диске |

    | |

    |InfoFile() |

    |Возвращает информацию об указанном файле или подкаталоге компьютера или |

    |сетевого устройства |

    | |

    |InfoTouchAppDir() |

    |Возвращает имя текущего каталога InTouch - приложения |

    | |

    | |

    |Таблица 5.1. |

    Остальные аргументы файловых функций не поддаются типизации и различны для

    каждой функции.

    Например, функция FileReadFields имеет четыре аргумента и следующий

    синтаксис:

    FileReadFields(Filename,FileOffset,StartTag,NumberOfFields);

    - StartTag - идентифицирует первый элемент в имени InTouch-

    переменной;

    - NumberOfFields - идентифицирует число полей для чтения.

    . Группа функций Miscellaneous (клавиша Misc...) включает функции для

    работы с алармами распределенных систем, трендами, печатью и др.

    В этой широкой (с точки зрения назначения функций) группе можно выделить

    несколько более узко специализированных подгрупп. Функции, название которых

    начинается с alm, используются только в распределенных системах алармов.

    Некоторые из них приведены в табл.5.3.1.

    |Функция |

    |Описание |

    | |

    |almAckDisplay() |

    |Подтверждает только те алармы, которые в текущий момент видны в окне |

    |отображения алармов |

    | |

    |almAckSelect() |

    |Подтверждает алармы, отмеченные оператором в окне отображения алармов |

    | |

    |almShowStats() |

    |Выводит панель статистики объекта отображения алармов |

    | |

    | |

    |Таблица 5.3.1. |

    Первым аргументом всех встроенных функций алармов является ObjectName (имя

    объекта алармов). Часто в роли одного из аргументов выступает Comment

    (комментарий). Например, функция almAckSelect имеет следующий синтаксис:

    almAckDisplay(ObjectName,Comment); .

    Функции, название которых начинается с HT, используются только с архивными

    трендами. Примеры таких встроенных функций - в табл.5.3.2.

    |Функция |

    |Описание |

    | |

    |HTGetPenName() |

    |Возвращает имя переменной, связанной в текущий момент с указанным пером |

    |указанного тренда |

    | |

    |HTGetValue() |

    |Возвращает значение указанного типа, вычисляемого для указанного пера в |

    |пределах всего тренда |

    | |

    |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;

    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’ – переменная обмена.

    Разработка 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 сервера и соответствующие им масштабирующие коэффициенты.

    [pic]

    Рис. 21. Окно программы графопостроителя.

    Список литературы

    1. Scada . ru - Публикации - SCADA - системы: взгляд изнутри

    // URL: http://www.scada.ru/publication/book/preface.html

    2. Кабаев С.В. Пакет программного обеспечения Intouch - система мониторинга

    и управления в объектах промышленной автоматизации

    // URL: http://www.mka.ru/go/?id=40463&url=www.rtsoft.ru

    3. ТРЕЙС МОУД - интегрированная SCADA- и softlogic-система для разработки

    АСУТП // URL: http://adastra.ru/ru/tm/tm5/

    4. Кузнецов А. Genesis for Windows – графическая scada-система для

    разработки АСУ ТП. // Современные технологии автоматизации.- 1997.- №3.

    Страницы: 1, 2, 3, 4, 5, 6


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.