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

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

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

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

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

В текст сценария могут быть вставлены комментарии. При исполнении сценария комментарии игнорируются. В Бейсик-сценарии символ «апостроф» () указывает на то, что текст, расположенный справа от апострофа до конца строки, является текстом комментария. Добавление программного кода справа от конца комментария не допускается.

2.4.3.1. Основной сценарий

Основной сценарий (Main Script), будучи включенным в стратегию, осуществляет управление исполнением всей стратегии один раз в течение одного сеанса исполнительной среды GENIE. Основной сценарий может быть применен для выполнения таких операций, как запуск и остановка задач и т.п.

Рис. 2.55. Окно Основного сценария

2.4.3.2. Предварительный сценарий и пост-сценарий задачи

Каждая сканируемая задача имеет предварительный сценарий (Pre-Task Script) и пост-сценарий (Post-Task Script). Указанные два типа сценариев при определенных условиях используются для инициализации или сброса значений, связанных с объектами, которые входят в стратегию.

а)

б)

81

Рис. 2.56. Окна Предварительного (а) и Пост (б) сценариев

2.4.3.3. Бейсик-сценарий

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

Рис. 2.57. Окно Бейсик-сценария

2.4.4. Команды Бейсик-сценария GENIE

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

2.4.4.1. Функции управления задачами

Функции данной категории предназначены для управления сканируемыми задачами, входящими в стратегию GENIE. Указанные функции могут применяться в основном сценарии, а также в предварительном и постсценарии задач.

ScanTask Определение объекта типа Сканируемая задача (ScanTask) GetScanTask Инициализация заданного объекта типа ScanTask

82

Start

Запуск на исполнение объекта типа ScanTask

Stop

Завершение исполнения объекта типа ScanTask

SingieScan

Однократный вызов (исполнение) объекта типа ScanTask

GetStatus

Возврат состояния заданного объекта типа ScanTask

2.4.4.2. Функции управления тэгами

Функции данной категории предназначены для получения доступа к функциональным блокам и другим тэгам, расположенным в центре обработки данных GENIE. Указанные функции могут применяться в основном сценарии, в предварительном и пост-сценарии задач, а также в функциональных блоках Бейсик-сценарий.

Tag Определение объекта типа Тэг.

GetTag Инициализация заданного объекта типа Тэг.

Value Свойство объекта типа Тэг. Представляет текущее значение, связанное с объектом типа Тэг.

Array Свойство объекта типа Тэг. Представляет набор текущих значений на каналах, связанных с объектом типа Тэг.

2.4.4.3. Функции управления окнами экранных форм

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

Display Выдвижение на передний план окна заданной экранной формы

2.4.4.4. Функции блока Бейсик-сценарий

Функции данной категории предназначены для управления выходными каналами функционального блока Бейсик-сценарий. Указанные функции могут применяться только в функциональных блоках Бейсик-сценарий.

Outputi Передача целочисленного значения другому функциональному блоку и элементу отображения/управления

Outputl Передача целочисленного значения двойной точности другому функциональному блоку и элементу отображения/управления

Outputf Передача действительного (с плавающей точкой) значения другому функциональному блоку и элементу отображения/управления

Outputs Передача строки символов другому функциональному блоку и элементу отображения/управления

83

3. ОСНОВНЫЕ ПРИЕМЫ ПРОЕКТИРОВАНИЯ АСУТП В ПАКЕТЕ GENIE 3.0

Разработчики программного обеспечения АСУТП сталкиваются с необходимостью решать некоторые типичные задачи, которые могут рассматриваться как элементарные алгоритмические модули, включаемые в основной алгоритм. В настоящем разделе приведены возможные варианты реализации таких типовых задач в среде SCADA-системы GENIE.

3.1. ОТСЧЕТ ВРЕМЕННЫХ ИНТЕРВАЛОВ

При разработке систем программно-логического управления неизбежно возникает необходимость измерять и отсчитывать временные интервалы. При этом всё разнообразие встречающихся при проектировании ситуаций может быть сведено к двум случаям:

отсчет заданного временного интервала после фиксации некоторого события с последующим осуществлением какого-либо действия;

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

3.1.1. Отсчет заданного временного интервала

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

Внешний вид окна Редактора форм отображения представлен на рис. 3.1. При этом заданное значение временного интервала определяется элементом управления Инкрементный регулятор (цифровым задатчиком) (см. п. 2.3.3.8), вывод текущего значения отсчитываемого времени осуществляется с помощью элемента отображения Цифровой индикатор (см. п. 2.3.3.6). Запуск отсчета производится элементом управления Кнопка с двумя состояниями (см. п. 2.3.3.1). На окончание отсчета заданного интервала указывает элемент отображения Индикатор (см. п. 2.3.3.7), который в этом случае «загорается».

84

Рис. 3.1. Окно Редактора форм отображения при реализации алгоритма отсчета заданного интервала времени

В поставленной задаче необходимо сравнивать значение отсчитываемого времени с заданной величиной. Это можно осуществить, например, с помощью блока процедуры пользователя (п. 2.2.3.26). Соответствующий этому решению вид окна Редактора задач показан на рис. 3.2.

Рис. 3.2. Окно Редактора задач GENIE при реализации алгоритма отсчета заданного интервала времени с помощью блока процедуры пользователя

Начало отсчета времени определяется сигналом с выхода блока Тэг TAG1, связанного с кнопкой BBTN1:Пуск. Сигнал поступает на вход блока таймера ET1. (Здесь и далее для сокращения текста вместо полного названия функциональных блоков или элементов управления/отображения будем использовать их идентификаторы.)

На входы блока процедуры пользователя PRG1 поступают: с выхода таймера значение отсчитываемого времени, а с выхода блока TAG2, связанного с цифровым задатчиком NCTL1, величина заданного интервала времени. Сравнение поступающих значений осуществляется с помощью программы:

if (ET1>=TAG2) output 1;

else output 0;

Элемент отображения Индикатор связан с блоком процедуры пользователя. Если на выходе с номером 0 блока PRG1 присутствует «0», индикатор имеет черный цвет; если же на выход подается «1», индикатор становится красного цвета («загорается»). Элемент отображения Цифровой индикатор соединен непосредственно с блоком таймера ET1 и, следовательно, отображает его текущее состояние. Для того, чтобы таймер отсчитывал абсолютное, а не цикличное время, необходимо в диалоговой панели настройки таймера переключатель Timer Type поставить в положение Elapsed time.

Среди основных особенностей настройки функциональных блоков и элементов данной стратегии следует отметить также то, что в диалогом окне настройки элемента управления Кнопка с двумя состояниями переключатель Output value необходимо поставить в положение Up = 1, Down = 0 (1 – в отжатом состоянии, 0 – в нажатом), то есть задать кнопке инверсный режим. Такой прием необходим из-за того, что у таймера имеется один единственный управляющий вход – Reset (сброс). Поэтому если до запуска отсчета времени

85

таймер должен находиться в нулевом состоянии, то на его вход необходимо подавать сигнал высокого уровня («1»), чтобы таймер находился в состоянии постоянного сброса. При нажатии кнопки Пуск на вход поступает сигнал «0» и таймер начинает отсчет времени.

В качестве элемента сравнения при реализации данного алгоритма вместо блока процедуры пользователя можно использовать блок двухпозиционного управления, или реле (см. п. 2.2.3.14). В этом случае окно Редактора задач имеет вид, показанный на рис. 3.3.

Рис. 3.3. Окно Редактора задач GENIE при реализации алгоритма отсчета заданного интервала времени с помощью блока реле

У блока двухпозиционного управления ONF1 имеется два входа Input и Setpoint. К первому входу с помощью проводника присоединяется выход таймера, ко второму – выход блока Тэг, соединенного с цифровым задатчиком NCTL1. Для точного срабатывания реле необходимо при его настройке в диалоговом окне задать интервалы зоны нечувствительности равными нулю.

Индикатор в окне Редактора задач связывается с дискретным выходом блока ONF1.

3.1.2. Измерение временного интервала между событиями

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

Внешний вид окна DISP1 Редактора форм отображения показан на рис. 3.4. В окне имеется два элемента управления Кнопка с двумя состояниями BBTN1:D1 и BBTN2:D2, а также элемент отображения Цифровой индикатор для вывода отсчитанного времени.

86

Рис. 3.4. Окно Редактора форм отображения при реализации алгоритма измерения временного интервала между двумя последовательными событиями

Вид окна TASK1 Редактора задач данной стратегии изображен на рис. 3.5. При запуске стратегии таймер ET1 начинает постоянно отсчитывать время, то есть в этой задаче управление данным блоком (его сброс) не осуществляется. Величина времени между событиями (нажатиями кнопок) определяется разностью значений таймера при каждом событии. Настройка параметров блока таймера такая же, как в предыдущем примере (см. п. 3.1.1).

Рис. 3.5. Окно Редактора задач GENIE при реализации алгоритма измерения интервала времени между событиями

Величина интервала времени между событиями определяется в блоке процедуры пользователя PRG1, на входы которого поступают значения от блока таймера ET1 и блоков Тэг TAG1 и TAG2, связанных с кнопками D1 и D2 соответственно. Программа, содержащаяся в блоке PRG1, имеет вид:

if (TAG1==1) m=ET1;

if (TAG2==1)

{

t=ET1-m; output t;

}

При нажатии кнопки D1 переменной m присваивается мгновенное значение блока таймера ET1. При нажатии D2 вычисляется и выводится на выход #0 переменная t, равная разности значений таймера и переменной m.

Цифровой индикатор, связанный с выходом #0 блока PRG1, отображает значение переменной t.

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

п. 2.2.3.15).

87

Окно Редактора задач при реализации рассматриваемого алгоритма с помощью блока пилообразного сигнала RMP1 имеет вид показанный на рис. 3.6.

Рис. 3.6. Окно Редактора задач GENIE при реализации алгоритма измерения интервала времени между событиями с помощью блока пилообразного сигнала

Ко входу Reset блока RMP1 присоединяется блок TAG1, связанный с инверсной кнопкой D1, ко входу Hold – блок TAG2, связанный с кнопкой D2.

Блок пилообразного сигнала RMP1 необходимо настроить следующим образом: снять галочку с параметра Automatically reset…; в поле Ramp Stop Value следует установить значение, превышающее время работы задачи, например, 100; в поле Step Increment/Decrement необходимо указать в секундах значение, равное периоду сканирования задачи Scan Period (см. п. 2.2.2.3) (если период сканирования равен 100 мс, то в Step… нужно установить 0,1). При каждом последовательном сканировании задачи (через каждую 0,1 с) значение выходной величины блока RMP1 увеличивается на 0,1, таким образом, данный нарастающий сигнал равнозначен абсолютному времени и соответствует точности его отсчета.

3.2. ВЫДЕЛЕНИЕ ФРОНТОВ СИГНАЛА, ФОРМИРУЕМОГО ДВУХПОЗИЦИОННЫМ ДАТЧИКОМ

В системах программно-логического управления большинство действий привязано к моментам срабатывания (включения или отключения) двухпозиционных датчиков или кнопок на посту оператора. Следовательно, при разработке ПО проектировщика зачастую интересует не состояние датчика («1» или «0»), а момент изменения состояния (передний или задний фронт сигнала).

Рассмотрим пример реализации в GENIE одного из алгоритмов выделения фронтов с использованием метода многократного ввода. Применение такого метода повышает надежность ввода сигналов от двухпозиционных датчиков. Сущность его состоит в том, что решение о наличии фронта сигнала принимается в системе лишь после того, как датчик перешел в новое состояние и остается в нем в течение заданного количества основных программных циклов (циклов сканирования программы). Обычно для предотвращения большинства помех достаточно двух циклов.

88

Блок-схема данного алгоритма представлена на рис. 3.7. Здесь под фронтом сигнала понимается состояние признака F, которому в случае переключения датчика присваивается значение «1» (передний фронт) или «2» (задний фронт) на один цикл сканирования, после чего F сбрасывается в «0».

Начало

D=1

P1=0

D=0

P2=0

F=0

S=0

S=1

 

 

P1=0

 

P2=0

 

 

 

 

 

P1=0

 

 

 

 

 

P2=0

 

 

 

 

S=1

 

 

 

 

 

S=0

P1=1

 

 

P2=1

 

 

 

 

 

F=1

 

 

 

 

 

F=2

 

 

 

 

 

 

 

 

 

 

 

Конец

D – состояние двухпозиционного датчика; S - состояние датчика в предыдущем программном цикле; P1 (P2) – признак перехода датчика в состояние «1» («0»)

в предыдущем программном цикле; F – признак фронта сигнала

Рис. 3.7. Блок-схема алгоритма выделения фронтов двухпозиционного сигнала

Окно DISP1 Редактора форм отображения стратегии, реализующей алгоритм, показано на рис. 3.8.

В данном окне имеется кнопка «Датчик», с помощью которой имитируется сигнал от двухпозиционного датчика. Четыре элемента отображения График X(t) (см. п. 2.3.3.3) отображают соответственно:

1)импульсы, характеризующие последовательные программные циклы;

2)состояние датчика в настоящий момент;

3)состояние датчика в предыдущем программном цикле;

4)переменную, которая своей величиной отражает присутствие фронта («1» – передний фронт, «2» – задний фронт, «0» – фронт отсутствует).

Внешний вид окна Редактора задач TASK1 показан на рис. 3.9. В данном

окне совокупность функциональных блоков пилообразного сигнала RMP1, процедуры пользователя PRG3 и двух блоков вычисления с одним оператором (п. 2.2.3.22) образует генератор импульсов, соответствующих последовательным программным циклам.

89

Генератор работает следующим образом.

Блок пилообразного сигнала RMP1 выдает линейно нарастающий сигнал, поступающий на вход блока PRG3, на выходе которого образуется уже синусоидальный сигнал за счет следующей процедуры:

Рис. 3.8. Окно Редактора форм отображения при реализации алгоритма выделения фронтов

Рис. 3.9. Окно Редактора задач GENIE при реализации алгоритма выделения фронтов двухпозиционного сигнала

y = sin(5*RMP1); output y;

Блоки вычисления SOC1 и SOC2 преобразуют синусоиду в импульсы, возникновение каждого из которых происходит в случае выполнения неравенства SOC1>=0.97, заданного в блоке SOC2. Наличие в данной стратегии блока SOC1, выделяющего абсолютную величину амплитуды синусоиды, не является обязательным. Данный блок позволяет увеличить вдвое частоту следования импульсов без увеличения частоты синусоиды; иногда такой прием может оказаться полезным, так как в среде GENIE генерация колебательных сигналов большой частоты происходит с большой погрешностью.

90