Доступ к настроечным параметрам системы управления

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

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

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

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

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

Название свойства
Тип
Доступ
Назначение
1 AlgName Строка Исполнение Имена алгоритмов, которые будут добавлены к списку, сформированному по маске. Имена должны быть указаны через пробел.
2 ExcludeName Строка Исполнение Имена алгоритмов, которые будут исключены из списка алгоритмов, сформированного по маске. Имена должны быть указаны через пробел.
3 FactorName Строка Исполнение Наименование коэффициента.
4 FactorValue Число Исполнение и разработка Значение коэффициента.
5 FactorValueDataTime Логич. Исполнение Признак значения коэффициента дата и время.
6 FillColor Число Исполнение и разработка Цвет элементов управления окна в формате RGB, по умолчанию используется системный цвет для "рельефных элементов".
7 Font Шрифт Разработка Параметры шрифта, которым будут отображаться тексты в окне настроек.
8 Klapan Строка Исполнение Имя переменной управляющего воздействия контура, используемой для задания шага изменения управляющего воздействия для контура регулирования.
9 Name Строка Исполнение Имя текущего алгоритма (режима).
10 NameMask Строка Исполнение Маска-фильтр, используемая для отбора списка алгоритмов, удовлетворяющих заданному критерию. Правила задания маски описаны ниже.
11 Nominal Строка Исполнение Имя переменной номинала контура, используемой для задания шага изменения задания для контура регулирования.
12 Param Строка Исполнение Имя переменной параметра, используемой для задания уставок сигнализации и блокировок.
13 Update Логич. Исполнение Признак изменения свойств, по которым формируется список доступных для настройки алгоритмов и уставок. После принятия компонентом изменений сбрасывается в "0".
14 WriteKoeff Логич. Исполнение Признак, разрешающий изменение значений настроечных коэффициентов функциональных блоков регулирования и управления.
15 WriteRange Логич. Исполнение Признак, разрешающий изменение значений уставок сигнализации и блокировки.
16 WriteStep Логич. Исполнение Признак, разрешающий изменение значений шагов чувствительности задания и управляющего воздействия контура регулирования.
Выбор функционального блока из списка ActiveX-объекта IncotechVisaKoeff

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

Выбор функционального блока

В списке присутствуют доступные для выбора имена функциональных блоков. Помимо функциональных блоков в списке для выбора могут быть представлены разделы ГРАНИЦЫ и ШАГ. Границы используются для просмотра и изменения значений аварийных и предупредительных границ технологических параметров. Шаг используется для просмотра и изменения параметров чувствительности задания и управляющего воздействия контура регулирования. В средней части окна, в виде таблицы, отображаются имена настроечных параметров, их типы и значения. Тип коэффициента может быть статический или динамический, и обозначается соответственно "Д" и "С". Коэффициент динамического типа рассчитывается программно и не может быть изменен без его предварительной блокировки. Коэффициент статического типа возможно изменить без блокировки. Для панелей, у которых не показан столбец типа коэффициента, все коэффициенты считаются статическими. Указание в поле Тип плюса или минуса свидетельствует о наличии или отсутствии значения границы или шага.

Настройка ГРАНИЦ

Изменение значения коэффициента

Изменение значения коэффициента выбранного функционального блока в области просмотра в колонке Значение, может быть осуществлено только в случае, если в пользовательском сценарии имеется разрешение на такое изменение, то есть признак, разрешающий изменение значений настроечных коэффициентов алгоритмов регулирования и управления WriteKoeff установлен в истину (равен 1). Для ввода пользовательского сценария в диалоге Свойства объекта для ActiveX-объекта нажмите кнопку Сценарий.

Изменение значения аварийной и предупредительной границы технологического сигнала, выбранного в области просмотра в колонке Значение, может быть осуществлено только в случае, если в пользовательском сценарии имеется разрешение на такое изменение, то есть признак, разрешающий изменение значений предупредительных и аварийных границ WriteRange установлен в истину (равен 1).

Изменение значения шага чувствительности изменения задания и управляющего сигнала, выбранного в области просмотра в поле Значение, может быть осуществлено только в случае, если в пользовательском сценарии имеется разрешение на такое изменение, то есть признак, разрешающий изменение значений шагов чувствительности задания и управляющего воздействия контура регулирования WriteStep установлен в истину (равен 1).

Для изменения блокировки настроечного параметра динамического типа необходимо щелкнуть мышью в поле Тип.

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

Ввод значения коэффициента

После ввода нового значения и нажатия клавиши Enter измененное значение будет окрашено в красный цвет.

Подтверждение ввода значения

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

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

Обработка уведомлений ActiveX-объекта IncotechVisaKoeff

Для уведомления об изменении своего состояния ActiveX-объекты генерируют события. Для ActiveX-объекта IncotechVisaKoeff возможно задание сценариев, выполняемых при возникновении следующих событий:

OnFactorLocked - уведомление о блокировке выбранного коэффициента
OnFactorUnlocked - уведомление о снятии блокировки выбранного коэффициента
OnFactorValueChanged - уведомление об изменении значения выбранного коэффициента
Onselect - уведомление об изменении состояния ActiveX-объекта IncotechVisaKoeff

Сценариии обработки уведомлений задаются для свойств ActiveX-объекта при нажатии на кнопку События в окне диалога Нажатие—›Действие.

Нажатие—›Действие

Сценариии обработки уведомлений используют поля ActiveX-объекта .FactorName, .FactorValue и .FactorValueDataTime. Поле .FactorValueDataTime принимает значение 0, если значение .FactorValue является числом, и равно 1, если  значение .FactorValue задает дату и время.

Событие о блокировке коэффициента

Тип коэффициента может быть статический или динамический, и обозначается соответственно “Д” и “С”. Коэффициент динамического типа рассчитывается программно и не может быть изменен без его предварительной блокировки. Для уведомления о блокировке динамического коэффициента ActiveX-объект IncotechVisaKoeff генерирует событие OnFactorLoced. Данное событие генерируется в момент двойного нажатия левой кнопки мыши на обозначении типа “Д” выбранного коэффициента функционального блока.

Для задания сценария по изменению состояния ActiveX-объект IncotechVisaKoeff  в диалоге Свойства ActiveX-объекта нажмите кнопку События.

В окне диалога Нажатие—›Действие выберите в группе Условие выполнения не имеющее параметров событие OnFactorLoced и создайте соответствующий сценарий, например вывода уведомляющего сообщения о блокировке выбранного коэффициента.

Пример вывода уведомления о блокировке  коэффициента:

Message (600, this.Name + " блокирован коэффициент "+this.FactorName);

Событие о снятии блокировки коэффициента

Для уведомления о разблокировании динамического коэффициента ActiveX-объект IncotechVisaKoeff генерирует событие OnFactorUnLoced. Данное событие генерируется в момент двойного нажатия левой кнопки мыши на обозначении типа “[Д]” выбранного коэффициента функционального блока.

Для задания сценария по изменению состояния ActiveX-объект IncotechVisaKoeff  в диалоге Свойства ActiveX-объекта нажмите кнопку События.

В окне диалога Нажатие—›Действие выберите в группе Условие выполнения не имеющее параметров событие OnFactorUnLoced и создайте соответствующий сценарий, например вывода уведомляющего сообщения о деблокировке выбранного коэффициента.

Пример вывода уведомления о деблокировке  коэффициента:

Message(600,this.Name + " деблокирован коэффициент "+this.FactorName);

Событие об изменении значения коэффициента

В момент изменения значения коэффициента ActiveX-объект IncotechVisaKoeff генерирует событие OnFactorValueChanged. Коэффициент статического типа допускается изменять без его блокировки. Данное событие генерируется после внесенных изменений, после нажатия на кнопку Применить в окне настроек коэффициентов функционального блока.

Для задания сценария по изменению состояния ActiveX-объект IncotechVisaKoeff  в диалоге Свойства ActiveX-объекта нажмите кнопку События.

В окне диалога Нажатие—›Действие выберите в группе Условие выполнения не имеющее параметров событие OnFactorValueChanged и создайте соответствующий сценарий, например вывода уведомляющего сообщения об изменении значения выбранного коэффициента.

Пример вывода уведомления об изменении значения коэффициента:

local _value = "";

if (this.FactorValueDataTime)

     _value = FormatDateTime(this.FactorValue, "hh:mm:ss");

else

     _value = Format(this.FactorValue, 0);

Message (600, this.Name + " установлен коэффициент " +

this.FactorName + "=" + _value);

Событие об изменении состояния ActiveX-объекта IncotechVisaKoeff

Для уведомления об изменении своего состояния ActiveX-объект IncotechVisaKoeff генерирует событие OnSelect. Данное событие генерируется в момент изменения имени алгоритма в списке, заданном в combobox ActiveX-объекта.

Для задания сценария по изменению состояния ActiveX-объект IncotechVisaKoeff в диалоге Свойства ActiveX-объекта нажмите кнопку События.

В окне диалога Нажатие—›Действие выберите в группе Условие выполнения не имеющее параметров событие OnSelect и введите соответствующий сценарий.

Пример вывода уведомления об изменении имени алгоритма:

Message (600, "Выбран алгоритм " + this.Name);

Формат файла с текстами всплывающих подсказок

Для формирования всплывающих подсказок используется файл с текстами подсказок. Данный файл называется koeff_v2.ini и располагается вместе с динамически загружаемой библиотекой ActiveX-объекта koeff_v2.dll в папке пакета системы программирования на языке ТехноСи, например c:/Program Files/Incotech/TechnoC. При необходимости тексты подсказок могут быть изменены и/или дополнены описаниями новых функциональных блоков.

Формат файла с текстами всплывающих подсказок (koeff_v2.ini):

	 [имя_функционального_блока1]
@Name = (имя уточнителя типа)
имя_коэффициента1 = текст подсказки1

имя_коэффициентаX = текст подсказкиX алгоритма
	 [имя_функционального_блокаN]
@Name = (имя уточнителя типа)
имя_коэффициента1 = текст подсказки1

имя_коэффициентаX = текст подсказкиX алгоритма

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

Пример фрагмента файла подсказок:

	 [FB_PI]
@Name = (ПИ-регулирование)
Kp = Коэффициент пропорциональности
Ti = Время интегрирования [FB_PID]
@Name = (ПИД-регулирование)
Kp = Коэффициент пропорциональности
Ti = Время интегрирования
Td = Время дифференцирования
	 [FB_PIDD]
@Name = (ПИДД-регулирование)
Kp = Коэффициент пропорциональности
Ti = Время интегрирования
Kd1 = Коэффициент пропорциональности
Td1 = Время дифференцирования
Kd2 = Коэффициент пропорциональности
Td2 = Время дифференцирования
Правила задания маски фильтра

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

Обозначение
Назначение
? Любой символ.
* Любые символы, ноль или более знаков.
# Любая цифра (0-9).
[ Начало диапазона символов.
] Конец диапазона символов.
- Знак минус, разделяющий первый и последний символы диапазона.
[charlist] Любой из символов входящий в charlist.
[!charlist] Любой из символов не входящих в charlist.

Примечания:

Пример пользовательского сценария взаимодействия между компонентом ActiveX-объект IncotechVisaKoeff и системой отображения аналогового контура:

AlgName = $(Analog.AlgName);
this.Param = $(Analog.Param.Name);
this.Nominal = $(Analog.Nominal.Name);
this.Klapan = $(Analog.Klapan.Name);
this.WriteStep = GetAccessLevel()>2000 && GetAccessLevel()<8000;
this.WriteRange = GetAccessLevel()>8000 && GetAccessLevel()<9000;
this.WriteKoeff = GetAccessLevel()>4000 && GetAccessLevel()<6000;
this.Update = 1;
this.NameMask = AlgName;
if (AlgName!="") this.NameMask += "*";