Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка ПСА genie

.pdf
Скачиваний:
76
Добавлен:
12.02.2016
Размер:
1.32 Mб
Скачать

компромисс между скоростью исполнения и сложностью языка. Блок процедуры пользователя предназначен для реализации небольших алгоритмов обработки данных. Разработка и использование больших и сложных процедур не рекомендуется. Выходы (8) блока процедуры пользователя могут соединяться с неограниченным количеством других функциональных блоков стратегии. Имеется возможность создания программ, выполняющих обработку значений на входах блока процедуры пользователя и вывод вычисленных значений на его выходы, а также позволяющих пропускать циклы стратегии, при которых не происходит вывод значений переменных другим функциональным блокам. В последнем случае, все блоки стратегии, присоединенные к выходам блока процедуры пользователя с подобным алгоритмом работы, исключаются из обработки в пропускаемых циклах. Кроме того, с помощью данного блока можно полностью остановить текущий сеанс исполнения стратегии.

Диалоговая панель блока процедуры пользователя (рис. 2.33) имеет три основных поля

список Input Blocks;

список Operators;

поле редактирования Program.

Список Input Blocks содержит идентификаторы выходных каналов функциональных блоков, присоединенных к блоку процедуры пользователя.

Поле редактирования Program предназначено для ввода исходного текста процедуры, реализуемой данным блоком. Щелчок левой клавишей мыши на идентификаторе присоединенного канала в списке Input Blocks приведен к появлению выбранного идентификатора в поле редактирования программы. Щелчок на символе операции в списке Operators также приведет к появлению оператора в поле редактирования.

Рис. 2.33. Диалоговая панель настройки функционального блока пользователя

51

Список Operators содержит перечень всех ключевых слов, выражений и операторов языка программирования процедур пользователя GENIE. Оператор, который образует часть другого оператора, называется «телом» составного оператора. Символы перевода строки и возврата каретки, которые добавляются в текст программы при нажатии клавиши Enter в процессе ввода текста, не оказывают никакого влияния на выполнение программы. Таким образом, любой оператор может содержаться в одной строке либо быть разбитым на несколько строк. Интерпретатор блока процедуры пользователя распознает ключевые слова (if, else и др.), идентификаторы присоединенных функциональных блоков (АI1, D02 и т.д.), а также имена переменных от а до z,

от а1...z1 до a9...z9.

В языке программирования процедур пользователя GENIE используются следующие типы синтаксиса

выражение;

if (логическое выражение) оператор;

if (логическое выражение) оператор; else оператор;

while (логическое выражение) оператор;

output выражение;

skip;

stop;

display выражение;

substr выражение;

sprintf выражение;

Ключевое слово output позволяет передавать результат выражения функциональному блоку, присоединенному к одному из выходов блока процедуры пользователя. Блок позволяет выводить данные в виде целых и действительных значений, а также символьных строк. Поскольку данные могут вы водиться по 8-ми каналам, ключевое слово output имеет следующий синтаксис

output (#номер, параметр);

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

математическая операция или строка символов, заключенная в двойные кавычки (например, «This is a string»).

Примеры:

output(#2, «This string»); //вывести строку в канал с номером 2, output(#7, 1); //вывести 1 в канал с номером 7.

Ключевое слово skip позволяет пропустить следующие за ним строки процедуры пользователя в текущем цикле стратегии.

Ключевое слово display позволяет выполнять переключение между окнами форм отображения в процессе исполнения стратегии. В качестве

52

параметра данному ключевому слову передается номер формы отображения, окно которой выдвигается на передний план, например

display(2); //выдвинуть на передний план окно формы отображения DISP2

Ключевое слово substr позволяет выполнять разбор символьных строк в процессе исполнения стратегии. В качестве первого параметра данному ключевому слову передается строка символов, заключенная в двойные кавычки, либо строковая переменная, подлежащая разбору. Второй параметр должен содержать номер символа, с которого необходимо начать разбор строки. Символ, расположенный в крайней левой позиции строки, имеет номер 1. Третий параметр должен содержать количество символов, которое необходимо извлечь из строки, передаваемой в качестве первого параметра. Например

d5 = «This string»;

s3 = substr(d5, 2, 6); //переменная s3 будет содержать строку «his st»

Ключевое слово sprintf позволяет выполнять форматированный вывод последовательности символов и значений в переменную-буфер. В качестве первого параметра данному ключевому слову передается строка или строковая переменная, в которой будет сохранена форматированная последовательность символов. Второй параметр является строкой, определяющей формат строки, сохраняемой в переменной-буфере. Третий параметр является аргументом и должен содержать значение или строку символов, подлежащую форматированному выводу. Аргумент преобразуется в соответствии с форматом, заданным вторым параметром, после чего выводится в переменную-буфер. Типы форматов, поддерживаемые ключевым словом sprintf, имеют представление, аналогичное принятому в языке программирования ANSI Си для функции printf(). Однако версия функции sprintf, реализованная в языке программирования процедур пользователя GENIE, позволяет форматировать только один аргумент.

Слово Оператор, выделенное курсивом, соответствует одному оператору или нескольким операторам, заключенным в фигурные скобки {}. Следует обратить внимание на то, что составной оператор не требует наличия символа «точка с запятой» после закрывающей фигурной скобки.

Выражения

Выражением является последовательность операндов (переменных и числовых значений) и операторов (математических или/и арифметических операций). Вычисляемым значением может быть число или логическое состояние (ИСТИНА/ЛОЖЬ). Простейшим выражением является константа (операнд) без операторов.

Некоторые операторы имеют более высокий приоритет. Оператор с высоким приоритетом всегда выполняется перед выполнением операторов с более низким приоритетом. В таблице 2.4 приведен перечень операторов в порядке убывания их приоритетов. Перечень математических функций, поддерживаемых блоком процедуры пользователя, приведен в таблице 2.5.

53

 

 

 

 

 

 

 

Таблица 2.4

 

 

 

Приоритеты и направление выполнения операторов

 

Символ

 

 

Тип операции

 

Ассоциативность

 

()

Выражение

 

Слева направо

 

-!

Унарный минус, Унарное отрицание

 

Справа налево

 

* / %

Умножение, Деление, Взятие остатка

 

Слева направо

 

+ -

Сложение Вычитание

 

Слева направо

 

 

 

 

 

 

 

 

< > <=

Меньше,

Больше, Меньше либо Равно,

Слева направо

 

>=

Больше либо Равно

 

 

 

 

 

 

 

 

 

 

== !=

Равно, Не равно

 

Слева направо

 

&

Побитовая операция И

 

Слева направо

 

 

 

 

 

 

 

 

|

Побитовая операция ИЛИ

 

Слева направо

 

 

 

 

 

 

 

 

~

Побитовая операция НЕ

 

Справа налево

 

^

Побитовая

операция ИСКЛЮЧАЮЩЕЕ

Слева направо

 

 

ИЛИ

 

 

 

 

 

 

 

 

 

 

 

 

<< >>

Сдвиг влево, Сдвиг вправо

 

Слева направо

 

 

 

 

 

 

 

 

&&

Логические И

 

Слева направо

 

||

Логическое ИЛИ

 

Слева направо

 

=

Присвоение

 

Справа налево

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 2.5

 

 

 

 

Математические функции

 

Функции

 

Тип аргумента

 

Возвращаемый результат

 

abs()

 

Целое или действительное числи

 

Абсолютное значение

 

 

 

 

 

 

аргумента

 

cos()

 

Целое (в радианах) или

 

Косинус аргумента

 

 

 

действительное число

 

 

 

 

int()

 

Действительное число

 

Целое от аргумента с плава-

 

 

 

 

 

 

ющей точкой

 

rnd()

 

Целое начальное значение

 

Случайное число,

 

 

 

 

 

 

начинающееся с аргумента

 

sin()

 

Целое (в радианах) или действи-

 

Синус аргумента

 

 

 

тельное число

 

 

 

 

sqr()

 

Целое или действительное число

 

Квадратный корень аргумента

 

ln()

 

Целое или действительное число

 

Натуральный логарифм

 

 

 

 

 

 

аргумента

 

log 10()

 

Целое или действительное число

 

Десятичный логарифм

 

 

 

 

 

 

аргумента

 

exp()

 

Целое или действительное число

 

е в степени аргумента

 

 

 

 

54

 

 

 

pow(x,y)

Целое или действительное число

х в степени у

tan()

Целое (в радианах) или действи-

Тангенс аргумента

 

тельное число

 

Функция int() используется в случаях, когда требуется возврат значения целого типа. Например, значение с плавающей точкой 1,49 будет преобразовано функцией int() в 1. Значение 1,51 будет преобразовано в 2. Т.е. функция int() возвращает результат выполнения операции округления действительного аргумента до ближайшего целого.

Переменные

В процедуре пользователя могут использоваться переменные с именами от а до z и от а1...z1 до а9...z9.

ПРИМЕЧАНИЕ. В текущей версии пакета не допускается использовать переменную с именем о7(или О7).

Следует учитывать, что любая переменная, объявленная и используемая в любом блоке процедуры пользователя, будет видна во всех блоках процедур пользователя, входящих в стратегию. Данное свойство переменных может быть удобным в ряде случаев, однако рекомендуется в разных блоках процедуры пользователя использовать отличные друг от друга имена переменных. Кроме того, в выражениях в качестве операндов могут использоваться идентификаторы выходов функциональных блоков стратегии,

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

2.3. РАБОТА С РЕДАКТОРОМ ФОРМ ОТОБРАЖЕНИЯ

Редактор форм отображения (Display Designer) пакета GENIE 3.0

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

GENIE, в дополнение к имеющимся стандартным элементам отображения, предоставляет разработчику инструменты для рисования пользовательских графических элементов, таких как насосы, клапаны, прямоугольники, круги, сегменты, многоугольники и т.п. Кроме того, пользователь может конфигурировать цвета и размеры указанных графических примитивов. GENIE также поддерживает операции Сгруппировать и Разгруппировать, позволяющие объединять графические примитивы в единое

55

изображение. Данный редактор обеспечивает также возможность использования растровых изображений, создаваемых пользователем, в качестве фоновых рисунков экранных форм.

2.3.1. Основные приемы работы с Редактором форм отображения

По завершении или во время разработки стратегии может быть принято решение о том, какая информация и в каком виде должна быть представлена оператору на графических экранных формах в процессе исполнения стратегии. Перед началом создания экранных форм рекомендуется уделить серьезное внимание предварительной проработке их внешнего вида, а также тому, какие именно данные должны быть отображены. Имеется возможность создания множества экранных форм, каждая из которых будет располагаться в отдельном окне экранной формы. В каждом окне экранной формы может быть получен доступ к одному или множеству параметров, обрабатываемых стратегией. Экранные формы создаются на основе встроенных элементов отображения и элементов управления, входящих в набор инструментов

Редактора форм отображения.

При создании новой стратегии автоматически создается окно экранной формы DISP1. Далее имеется возможность размещения элементов отображения и управления в окне экранной формы и установления связей между указанными элементами и функциональными блоками.

2.3.1.1. Использование набора инструментов и рабочей области окна форм отображения

В Редакторе форм отображения использование набора инструментов и рабочей области окна (рис. 2.34) аналогично таким же действиям, как и в

Редакторе задач (см. п. 2.2.1.1).

56

Рис. 2.34. Набор инструментов и рабочая область окна Редактора форм отображения

2.3.1.2. Установление связи между элементами

Связи могут устанавливаться между элементами одной или нескольких форм отображения. Установление связи заключается в создании элементаисточника и элемента-приемника с последующим двойным щелчком левой клавишей мыши на элементе-приемнике. В появившейся диалоговой панели настройки элемента-приемника следует нажать кнопку Select или Add, или Change, после чего в появившейся диалоговом окне Connection (рис. 2.35) выбрать в качестве источника данных элемент-источник, упомянутый выше.

Установления связи элементов отображения/управления с функциональными блоками описано в п. 2.2.1.2.

Рис. 2.35. Диалоговая панель соединения элементов Редактора форм отображения

2.3.1.3. Настройка элементов отображения/управления

После размещения элемента отображения/управления в окне Редактора форм отображения имеется возможность изменения его вертикального и горизонтального размеров. Для этого следует выбрать элемент, размеры которого предполагается изменить, в окне Редактора форм отображения. После выбора элемента отображения/управления вдоль его контура появятся маркеры черного цвета квадратной формы. Далее необходимо поместить

57

курсор мыши на один из указанных маркеров и, удерживая левую клавишу мыши в нажатом состоянии, перемещать курсор. При этом размеры элемента отображения будут изменяться в соответствии с направлением перемещения курсора. По завершении изменения размеров элемента отображения/управления следует отпустить левую клавишу мыши.

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

Некоторые элементы отображения обеспечивают возможность автоматического масштабирования размера шрифта в зависимости от размеров элемента отображения.

2.3.2. Меню Редактора форм отображения

Меню Редактора форм отображения содержит пункты, показанные на рис. 2.36.

Рис. 2.36. Меню Редактора форм отображения

Восновном меню Редактора форм отображения аналогично меню Редактора задач (см. п. 2.2.2), но есть некоторые отличия, например, отсутствует пункт Layout. Имеются и отличия в наличии команд некоторых подменю, которые приведены ниже.

Впункте меню Edit Редактора форм отображения имеются команды Make Object и Break Object (Сгруппировать и Разгруппировать), позволяющие объединять рисованные компоненты в единое изображение и разделять.

Впункте меню Setup Редактора форм имеется команда настройки параметров окон форм отображения Display Properties... Вызов данной команды вызывает появление диалоговой панели (рис. 2.37), в которой можно установить такие параметры окна экранной формы, как: Style – стиль окна (перекрывающее, замещающее), Default State – состояние по умолчанию (обычный размер, максимальный размер, свернуто в пиктограмму), а также наличие кнопок общего назначения (кнопка системного меню, кнопка минимизации, кнопка увеличения). Перед выбором строки Display Properties...

меню Setup следует активизировать окно экранной формы, параметры которой подлежат настройке.

58

Рис. 2.37. Диалоговая панель настройки параметров окна формы отображения

2.3.3. Набор инструментов Редактора форм отображения

2.3.3.1. Элемент управления Кнопка с двумя состояниями

Данный элемент управления позволяет передавать свое состояние из формы отображения в задачу. При нажатии кнопки с двумя состояниями производится передача логической 1 (или 0) связанному блоку Тэг. Нажать на Кнопку с двумя состояниями можно

следующими способами

1)поместить курсор мыши на кнопку и произвести щелчок левой клавишей мыши;

2)с помощью клавиши Tab на клавиатуре перевести фокус ввода на кнопку и нажать клавишу Enter (фокус ввода – стандартное понятие

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

3)нажать клавишу, выбранную в комбинированном списке Keyboard Mapping диалоговой панели настройки параметров элемента управления (рис. 2.38).

Размер и тип шрифта, используемого для отображения надписи на кнопке, могут быть установлены путем нажатия кнопки Front... диалоговой панели и выбора требуемого шрифта и его параметров из перечня шрифтов, зарегистрированных в Windows.

Поле Tag

Данное поле содержит идентификатор элемента управления Кнопка с двумя состояниями, который используется при установлении связи между кнопкой и другими элементами отображения либо с функциональными блоками Тэг стратегии. Следует обратить особое внимание на то, что связь между кнопкой и любыми функциональными блоками в задачах должна осуществляться через функциональный блок Тэг Редактора задач.

59

Рис. 2.38. Диалоговая панель настройки параметров элемента управления Кнопка с двумя состояниями

Поле Label

Данное поле предназначено для ввода надписи, которая будет отображаться на кнопке в процессе исполнения стратегии. Максимальное количество символов, из которых может состоять надпись, составляет 30.

Поле Operating style

Данное поле представлено комбинированным списком и используется для выбора стиля работы элемента управления Кнопка с двумя состояниями. Имеется в наличии 3 различных стиля

1)релейный (On-Off) – нажатие кнопки фиксируется;

2)импульсный (Momentary) – после нажатия кнопка возвращается в исходное состояние;

3)«радио-кнопка» (Radio Button) – соответствует релейному стилю, но при нажатии данной кнопки другие кнопки, связанные с ней, возвращаются в исходное состояние (выбор кнопок осуществляется двойным щелчком мыши в поле Buttons to eject when pressed).

Поле Keyboard mapping

Данное поле, представленное комбинированным списком, позволяет выбрать клавишу на клавиатуре, с помощью которой возможно управлять состоянием кнопки при передаче ей фокуса ввода. Возможно использование функциональных клавиш от F2 до F8 или от А до Z.

Поле Privilege Level

Данное поле предназначено для защиты функций управления положением коммутационных аппаратов, связанных с данной кнопкой.

60