Проверка на достоверность аналоговых сигналов
Реализация программы[31] проверки на достоверность для одного входного
аналогового сигнала для контроллера ПЛК-154 на языке ST (рис. 78)
FUNCTION_BLOCK analog_defens
VAR_INPUT
x: REAL;
END_VAR
VAR_OUTPUT
x1: REAL; D: BOOL;
END_VAR
VAR
ZPM: Zapom; ZPM2: Zapom;
blinker2: BLINK; blinker1: BLINK;
RS_tr: RS;
ton1: TON;
ZPM_F: Zapom; ZPM3: Zapom;
OGS: ogran_skor;
OBR: BOOL; Vyb_PROV: BOOL; Dgen: BOOL; POR: BOOL;
END_VAR
Рис. 78. Программная реализация алгоритма проверки на достоверность
для одного аналогового канала
Функциональный блок запоминание
FUNCTION_BLOCK Zapom
VAR_INPUT
c: BOOL:=TRUE;
x: REAL;
END_VAR
VAR_OUTPUT
d1: BOOL;
y: REAL;
END_VAR
VAR
Rtr: R_TRIG;
tp_time:TP;
d: BOOL;
END_VAR
tp_time(IN:=c, PT:=T#0.3s);
d1:=tp_time.Q;
Rtr(CLK:=c);
d:=Rtr.Q;
IF d=TRUE THEN y:=x;
END_IF
Функциональный блок ограничение скорости
FUNCTION_BLOCK ogran_skor
VAR_INPUT
in: REAL; lim: REAL;
END_VAR
VAR_OUTPUT
Q: REAL;
prev: BOOL;
END_VAR
VAR
podkluchenie: R_TRIG;
C_pod: BOOL;
Qpred: REAL;
END_VAR
podkluchenie(CLK:=TRUE , Q=>C_pod );
IF C_pod=TRUE THEN Q:=in;
END_IF
Qpred:=Q;
IF ABS(in-Qpred)>lim THEN prev:=TRUE;
IF (in-Qpred)>0 THEN Q:=Qpred+lim*1;
ELSIF (in-Qpred)>0 THEN Q:=Qpred+lim*(-1);
ELSIF (in-Qpred)=0 THEN Q:=Qpred+lim*0;
END_IF; ELSE Q:=in; prev:=FALSE; END_IF
ПРИЛОЖЕНИЕ З
Выбор исправного канала из двух
Программная реализация выбора исправного канала из двух(рис. 79)
FUNCTION_BLOCK Maj_2_2_CKC
VAR_INPUT
x1: REAL; x2: REAL;
Op1: BOOL; Op2: BOOL; uv_oper2: BOOL; uv_oper1: BOOL;
END_VAR
VAR_OUTPUT
y: REAL;
otkaz1: BOOL; otkaz2:BOOL; rashojdenie: BOOL;
END_VAR
VAR
ok1:BOOL; ok2:BOOL;
x1_def: analog_defens; x2_def: analog_defens;
ckc1: Skolz_SRednee; ckc2: Skolz_SRednee;
no2: Null_organ; no1: Null_organ; no3: Null_organ;
D1_1: BOOL; D2_2: BOOL;
rs1: RS; rs2: RS;
per: PER_3KAN;
ton1: TON; ton2: TON;
dd1: Digit_Defens; dd2: Digit_Defens;
vybran1_kanal: BOOL; vybran2_kanal: BOOL; podkl_2: BOOL; podkl_1: BOOL;
ojidanie: BOOL; All_ok: BOOL;
srednee1_2: REAL ;
blinker: BLINK;
zpm: Zapom;
END_VAR
Рис. 79. Программа выбора исправного канала из двух каналов
Функциональный блок ноль-орган
FUNCTION_BLOCK Null_organ
VAR_INPUT
x1: REAL; x2: REAL; x_vg: REAL; x_ng: REAL; delt_x: REAL;
END_VAR
VAR_OUTPUT
D1: BOOL; D2: BOOL; D: BOOL;
END_VAR
VAR
Z: REAL;
END_VAR
Z:=x1-x2;
IF Z<(x_vg-delt_x) THEN D1:=FALSE;
END_IF;
IF Z>=x_vg THEN D1:=TRUE;
END_IF;
IF x_vg>Z THEN
IF Z>=(x_vg-delt_x) THEN D1:=D1;
END_IF;
END_IF;
IF Z>(x_ng+delt_x) THEN D2:=FALSE;
END_IF;
IF Z<=x_ng THEN D2:=TRUE;
END_IF;
IF x_ng<Z THEN
IF Z<=(x_ng+delt_x) THEN D2:=D2;
END_IF;
END_IF;
D:=D1 OR D2
Функциональный блок расчета скользящего среднего
UNCTION_BLOCK Skolz_SRednee
VAR_INPUT
x: REAL; Csb: BOOL;
END_VAR
VAR_OUTPUT
Sred: REAL; Yzap: REAL;
END_VAR
VAR
i: INT;
J:ARRAY[0..9] OF REAL;
Co: BOOL;
blinker1:BLINK;
Cvkl:R_TRIG;
podkluchenie:R_TRIG;
Sta: BOOL;
Sum: REAL;
END_VAR
podkluchenie(CLK:=TRUE , Q=>Csb );
blinker1(ENABLE:=TRUE , TIMELOW:=T#0.4s , TIMEHIGH:=T#0.4s );
Sta:=blinker1.OUT;
Cvkl(CLK:=Sta );
Co:=Cvkl.Q;
IF Csb=TRUE THEN
FOR i:=0 TO 9 DO J[i]:=x;
END_FOR;
Sred:=x;
sum:=x*10;
END_IF;
IF Csb=FALSE THEN
IF Co=TRUE THEN
sum:=sum-j[9];
FOR i:=9 TO 1 BY -1 DO
J[i]:=J[i-1];
END_FOR;
J[0]:=x;
Sum:=Sum+J[0];
Sred:=sum/10;
END_IF;
END_IF;
Yzap:=J[9];
Функциональный блок переключатель трехканальный
FUNCTION_BLOCK PER_3KAN
VAR_INPUT
c1: BOOL:=TRUE; x1: REAL; c2: BOOL; x2: REAL; c3: BOOL; x3: REAL;
END_VAR
VAR_OUTPUT
y: REAL;
N: INT;
END_VAR
VAR
END_VAR
IF c1=TRUE THEN y:=x1;
N:=1;
END_IF;
IF (c2=TRUE) AND (c1=FALSE) THEN y:=x2;
N:=2;
END_IF;
IF (c3=TRUE) AND (c1=FALSE) AND (c2=FALSE) THEN y:=x3;
N:=3;
END_IF;
IF (c3=FALSE) AND (c1=FALSE) AND (c2=FALSE) THEN y:=0;
N:=0;
END_IF;
ПРИЛОЖЕНИЕ И
Контрольные вопросы по темам
Тема: Информационный обмен в контроллерах
Здесь приводятся контрольные вопросы по первой теме, знания по которой являются базовыми для всех тем по дисциплинам МПСУ[32], АСУ ТП, ПАУ, включая и аналоговые регуляторы. Контрольные вопросы касаются не только учебного пособия, но и того материала, который рассматривается на лекциях по МПСУ, ПАУ.
1. Дать определение промышленного контроллера.
2. Последовательность выбора контроллера[33].
3. Какие принципы программирования следует знать и использовать при составлении программ на языке FBD или CFC?
4. Что такое УСО? Типы модулей и их характеристика.
4.1. Приведите схему подключения аналоговых и дискретных сигналов к модулям УСО через КБС. Назначение КБС, их типы.
4.2. Как установить тип УСО контроллера?
4.3. На что надо обращать внимание при подключении нагрузки?
4.4. Как правильно задать алгоритмы опроса каналов модулей УСО и их модификатор?
4.5. Какова погрешность и разрешающая способность измерительного канала?
4.6. Какова разрядность АЦП и ЦАП?
4.7. Что такое тип УСО 15? Какие изменения (аппаратные и программные) будут в контроллере, если тип УСО 51?
4.8. Сколько максимально можно подключить к одному контроллеру аналоговых или дискретных сигналов?
4.9. Приведите технические характеристики аналоговых и дискретных каналов (как входных, так и выходных).
4.10. Поясните назначение и перечислите функции блока циклической индикации.
4.11. Что такое гальваническая развязка? Как она реализуется в АЦП и ДЦП?
4.12. Когда необходимо применять искробезопасные барьеры?
5. Какие топологии локальных сетей вы знаете? Дайте характеристику локальной сети «Транзит». Что представляют собой аппаратная и программная часть локальной сети «Транзит»?
5.1. Поясните назначение и технические характеристики интерфейса ИРПС.
6. Перечислите первоначальные настройки блока сопряжения (шлюза) и контроллера.
7. Модели контроллера Р-130. Поясните сходство и различие регулирующей и логической моделей.
8. Принцип работы основных алгоритмов Р-130, прошитых в ПЗУ. Поясните назначение и принцип работы алгоритмов, обеспечивающих связь с лицевой панелью (ЛП) контроллеров (ОКО, ОКЛ, ДИК, РУЧ, ЗДН и др.).
8.1.Что задаёт модификатор в алгоритме ОКО? Назначение признака Nz.
8.2. Поясните назначение таблицы соответствия типов сигналов. Приведите примеры.
8.3. Поясните принцип работы интерфейсного обмена (ИНВ, ВИН, ШИФ, ДЕШ).
8.3.1. Как принять на контроллере значения сигналов выборочно с других контроллеров, то есть не все, которые выдаются в локальную сеть? Смоделируйте разные ситуации при передачи и приёме сигналов и покажите программно, как осуществить выдачу и приём информации по локальной сети.
8.4. Поясните работу алгоритмов (ВАА, ВДБ, АВА, ДВБ).
8.5. Поясните принцип работы алгоритмов, на основе которых реализуются блоки проверки на достоверность входной аналоговой и дискретной информации: ТМР, ТРИ, ЗАП, ОГС, СУМ, СМА, МОД, СКС, СЛЗ, ЗПМ, ПЕР, ПЕН. Поясните, от чего и как производится защита по аналоговым и дискретным каналам?
9. Назначение и принцип работы блока циклической индикации (БЦИ). Поясните принцип работы на примере трёхканального одноконтурного и двухконтурного БЦИ с выдачей значений в физических единицах и в процентах.
10. Что такое промежуточный программный клеммник для аналоговых и дискретных сигналов? Его назначение.
11. Как исключить систематическую погрешность из измерительного канала? Поясните принцип работы блока обратной коррекции для линейной и нелинейной систематической погрешности измерительного канала.
12. Тесты УСО, ЛП, микросхем интерфейсного обмена и т.д. Как вызвать, запустить тест и трактовать результат тестирования?
13. Как установить младший и старший масштабы времени?
14. Как отобразить аналоговые и дискретные сигналы на ЛП регулирующей и логической модели?
15. Поясните, сколько максимально можно отобразить аналоговых и дискретных сигналов на ЛП регулирующей и логической модели?
16. Как ввести с ЛП регулирующей и логической модели аналоговые и дискретные сигналы?
17. Блок питания. Его назначение и характеристика. Назначение МБС.
18. По каким параметрам выбирают блок питания?
19. Назначение пульта настройки (ПН-1). Его основные функции.
20. Как проверить исправность кнопок на лицевой панели контроллера?
21. Как проверить исправность COM-порта ПЭВМ?
22. Назначение и принцип работы тестов (на примере теста УСО, ЛП, сети «Транзит»).
23. Поясните, как осуществляется связь с верхним уровнем?
23.1. Поясните назначение и технические характеристики интерфейса RS-232.
23.2. Как проверить исправность связи ПЭВМ и локальной сети «Транзит»?
2.4. Основные команды кросс-средств «Редитор Р-130». Какие способы связи (конфигурирования) вы знаете? Что такое информационный кабель? Как установить связь с конкретной линией в информационном кабеле? Как задать инверсию сигнала в кросс-средствах и с помощью ПН-1?
24.1. Как считать программу, находящуюся в контроллере, на экран ПЭВМ?
24.2. Как сравнить программу на экране ПЭВМ с программой в контроллере?
25. Как перевести программу на языке FBD в DXF-формат?
26. Как получить конфигурационную таблицу?
27. Как проверить наличие связи ПЭВМ с сетью «Транзит»?
28. Назначение и функции имитаторов аналоговых и дискретных сигналов. Что, где и как задаётся? Что, где отображается? Например, как имитируется обрыв линии?
29. Что такое КБС, МБС? Какие типы КБС существуют для контроллера Р-130?
30. Приведите основные технические характеристики контроллеров Р-130, КР-300, КР-500, ПЛК-150, ПЛК-154 ПЛК-110.
31. Что такое CoDeSys?
32. Как реализовать программу ввода-вывода дискретных сигналов для ПЛК-15 и ПЛК-154?
33. Как реализовать индикацию аналоговых и дискретных сигналов, поступающих с контроллера ПЛК-150, на панели СП270?
34. Какова последовательность организации связи с верхним уровнем, с ПЭВМ? На примере SCADA TRACE MODE.
Тема: Реализация аналоговых систем управления
1. Структура простого регулятора. Назначение алгоритмов, входящих в него.
2. Что и где отображается на ЛП регулирующей модели контроллера при реализации простого ПИД-регулятора?
3. Как с ЛП регулирующей модели контроллера Р-130 ввести задание регулятору?
4. Как перейти с автоматического управления на ручное, дистанционное?
5. Что обозначает модификатор в алгоритме ОКО?
6. Поясните порядок выдачи информации на операторскую панель СП270.
7. Как правильно перейти на программное задание или внешнее задание регулятору?
8. В чём заключается суть безударного перехода с одного режима управления на другой?
9. Как осуществляются безударные переходы с автоматического режима на ручной и обратно? Какой алгоритм обеспечивает безударный переход с ручного режима на автоматический? Поясните принцип работы алгоритма безударного переключения с ручного на автоматический режим работы регулятора.
10. Назначение, количественная оценка зоны нечувствительности и её влияние на качество регулирования. Поясните принцип работы регулятора с наличием зоны нечувствительности и без неё. Укажите недостатки ПИД-регулятора из библиотеки ПЛК-150, ПЛК-154.
11. Приведите и сравните программу, реализующую простой ПИ-регулятор в контроллере Р-130 и в ПЛК-154 или ПЛК-110.
12. Что такое процедура обратного счёта и как можно её использовать, чтобы остановить рост интегральной составляющей? В каких случаях изменение интегральной составляющей должно быть «заморожено»?
13. Поясните назначение коэффициента масштабирования в алгоритме РАН.
14. Как задать постоянную времени в экспоненциальном фильтре алгоритма РАН?
15. ПИД-регулятор с автоподстройкой. Поясните особенности реализации автоматического изменения Кп в регуляторе с учётом типов переменных и их взаимного соответствия в контроллере Р-130.
16. Какова структура каскадного регулятора?
17. Поясните отличие стандартного регулятора от регулятора обратного действия, реализуемого на Р-130 или КР-500.
18. Приведите примеры регуляторов с переменной структурой.
19. Реализация программных регуляторов (с алгоритмами ПРЗ, КУС).
20. Как правильно задавать координаты кусочно-линейной функции в алгоритмах ПРЗ и КУС?
21. Что надо сделать (какие переключения), чтобы регулятор перешёл в режим программного регулятора, то есть задание регулятору поступало с алгоритма ПРЗ?
22. Что надо сделать (какие переключения), чтобы регулятор перешёл в режим внешнего задания, то есть задание регулятору поступало, например, с алгоритма КУС?
23. Назначение и принцип работы регулятора соотношения. Структура простого регулятора соотношения.
24. Привести структуру регулятора соотношения с переключением каналов ведомый-ведущий. Какие регуляторы целесообразно использовать в каждом канале и почему? Как производится переключение с ведомого на ведущий канал, и как меняется задание по соотношению? За счёт чего обеспечивается безударность по каналам?
25. Приведите пример двух-трех регуляторов с переменной структурой. Как в них осуществить безударные переходы?
26. Как реализовать экстремальный регулятор?
27. Как на контроллере реализовать ОУ с запаздыванием?
28. В чём преимущества ряда Пада от разложения чистого запаздывания в ряд Тейлора?
29. Как правильно перенести результаты моделирования и настройки регулятора на контроллер? Что надо учитывать при моделировании регулятора и ОУ, если результаты необходимо будет переносить на контроллер?
30. Поясните суть задачи обратного программирования.
31. Комбинированный регулятор. Его структура. Как реализуются безударные переходы по каналу отклонения и по каналу возмущения?
32. Регулятор повышенной надёжности. Его структура. Назначение каждого блока.
33. Каковы структура и назначение системы регулирования, объединяющей различные законы (принципы) управления, например, комбинация экстремального регулятора со стандартным ПИД-регулятором или регулятора, оптимального по быстродействию, со стандартными законами регулирования?
34. Поясните порядок выдачи на СП-270 и приёма информации с СП-270.
35. Какие форматы данных (типы переменных) в ПЛК-150 вы знаете? Приведите примеры и поясните их обозначение.
36. Какова последовательность организации связи контура регулирования с верхним уровнем, с ПЭВМ? На примере SCADA TRACE MODE (привести последовательность действий, настроек).
37. Как вы понимаете задачу обратного программирования?
Тема: Организация информационного обмена контроллера с ПЭВМ
1. На конкретной задаче показать работу SCADA-системы совместно с контроллерами.
2. Пояснить настройку связи приёма передачи параметров, команд.
3. Показать умение передавать и принимать все типы переменных: дискретные, аналоговые, временные, целые, работать с контуром регулирования.
4. Показать умение задавать с ПЭВМ все функции при работе с регулятором: переключение режимов, ввод задания и коэффициентов и параметров настройки регулятора. На ПЭВМ должны отображаться как текущие значения или состояния параметров, так и их тренды.
5. Сформировать журналы состояния системы, действий оператора, нарушений технологических границ и др.
6. Пояснить аппаратную часть связи локальной сети с ПЭВМ. Как называется интерфейс?
7. Как обеспечивается выявление отказов в линии связи ПЭВМ и блока сопряжения с локальной сетью контроллеров?
8. Что такое протокол обмена? Приведите фрагменты, примеры из протокола обмена.
9. Приведите программы на языке FBD в SCADA-системе.
10. Поясните методику (алгоритм) создания динамического окна и тренда на примере одного параметра.
11. Что такое SCADA-система? Как установить связь с программой контроллера?
12. Поясните на примерах реализацию систем с применением принципов академика Глушкова В.М.
ПРИЛОЖЕНИЕ К
Задания по обратному программированию
Обратным программированием автор называет ситуации, когда даётся готовая программа без описания и требуется определить её назначение и алгоритм работы. Иногда необходимо выявить ошибки в чужой программе, исправить их. Если есть возможность, то проверить работу исправленных программ на контроллерах. Ниже приводятся несколько программ, которые даются студентам для распознавания назначения и алгоритма работы программы. Обычно дополнительные пояснения практически отсутствуют. Программы могут быть весьма простыми (рис. 80) и достаточно сложными, включающими десятки алгоблоков (рис. 86, 87). Обычно предлагаются программы, которые изучались в течение семестра. Но могут даваться программы, не имеющие аналогов в методичках и учебных пособиях, тем самым, приближая студентов к реальным «современным» условиям работы. В конце этого приложения приводится пример с одним из вариантов анализа программы и устранения ошибок (рис. 89)
Рис. 80
Рис. 81
Рис. 82
Рис. 83
Рис. 84
Рис. 85
Рис. 86
Рис. 87
Рис. 88
Рис. 89
Рис. 90. Пример программы для анализа
Рис. 91. Программа после анализа и исправления ошибок
По программе (3DI2AIER.REM, программу может предоставить преподаватель), представленной на рис. 89, студент должен сделать примерно следующее сообщение:
«Программа написана на языке FBD для контроллера Р-130, модель логическая, тип УСО, вероятно 15. Программа реализует простой алгоритм сигнализации без прогноза. Контролируются три дискретных параметра и два аналоговых. Основные функции, реализуемые простым алгоритмом сигнализации (или блоком сигнализации) [93].
Обнаружены следующие ошибки в программе:
1) по первому дискретному каналу есть защита от дребезга и случайного кратковременного исчезновения дискретного сигнала, но нет одновибратора ОДВ (83) или алгоритма ВЫФ (79). Поэтому при нарушении по первому каналу (при появлении логической единицы) все остальные нарушения будут заблокированы. На многовходовом элементе ИЛИ (алгоблок 30, алгоритм МИЛ(73)) достаточно одной логической единицы, чтобы на выходе появилась логическая единица. Все остальные нарушения (логические единицы на входе) никакого изменения состояния на выходе не произведут. Поэтому после триггера (алгоблок 17) поставлен ОДВ (алгоблок 22);
2) отсутствие алгоритма ОДВ приводит к другой ошибке: невозможности сброса звуковой сигнализации при возникновении нарушения по первому каналу. В контроллере Р-130 алгоритм триггер (ТРИ) работает по уровню [26, 27]. Поэтому постоянное присутствие логической единицы не позволит сбросить десятый триггер в алгоблоке 46. Этот триггер отвечает за звуковую и световую сигнализацию [26, 27, 93]. Сброс будет кратковременный, только на время нажатия клавиши (крючок) с ЛП в первом контуре;
3) грубейшая ошибка была на третьем входе алгоблока 27. На второй элемент И поступал без инверсии сигнал с триггера, фиксирующего нарушения по всем каналам. Кратко можно назвать его – триггер нарушений (десятый триггер в алгоблоке 46). Это приводило к тому, что при сбросе звуковой сигнализации сбрасывалась и световая, хотя нарушения оставались;
4) ошибка была и при сбросе триггера нарушений. Он сбрасывался не сразу после нажатия клавиши, отвечающей за сброс, а с пятисекундной задержкой. Для устранения этой ошибки использован резервный 7-й двухвходовой элемент ИЛИ в алгоблоке 25 (новая нумерация). На первый вход поступает инверсно сигнал с многовходового ИЛИ (алгоритм МИЛ, алгоблок 23), а на второй вход – сигнал с девятого выхода алгоритма ОКЛ (сброс по нажатию клавиши (крючок) с ЛП в первом контуре);
5) последовательность алгоблоков приводила к возникновению сомнения в корректности работы программы сигнализации. Поэтому нумерация ряда алго-блоков изменена на логически объяснимую и более правильную. Хотя остались номера алгоблоков, которые тоже стоило бы заменить. Это номера 46, 24, 28, 33;
6) ошибки были и при установке верхней и нижней границ по аналоговым сигналам на нуль-органе (алгоблок 12). В названии (в имени) указывалось одно значение, а фактически было другое. Так, по первому каналу верхняя граница в названии указана 80, а на самом деле в нуль-органе значение 90. Значение 90 заменили на 80. Названия и значения приведены в соответствие;
7) при передаче резервных сигналов с пятого алгоблока на шестой (промежуточный клеммник), начиная с четвёртого канала используется информационный кабель [25, с. 50]. (Это не ошибка, а пояснение, что студент знает и понимает, как обеспечивается связь между алгоблоками.);
8) следует пояснить, как выдаётся на индикацию память нарушений (предыстория). В данном случае по условию: по нажатию клавиши (крючок) с ЛП в первом контуре. Если длительность нажатия будет больше пяти секунд, то память сбросится. Здесь используется приём, когда с помощью одной клавиши можно просмотреть нарушения и их сбросить;
9) проба света и звука осуществляется по нажатию клавиши (крючок) во втором контуре;
10) первый светодиод отведён под имитацию звуковой сигнализации, а второй светодиод – световая сигнализация.
Указанные ошибки исправлены и представлена рабочая программа сигнализации (3DI2AI.REM) на рис. 90.»
Студент должен представить таблицу с указанием алгоблоков, алгоритмов и их назначения.
Должна быть представлена таблица с указанием, что принимается с УСО.
Следующая таблица должна содержать информацию по визуализации: что, где отображается данной программой.
ПРИЛОЖЕНИЕ Л
Принципы программирования
Идеология программирования очень важна. Ниже излагаются принципы программирования на языке FBD и CFC, знание и применение которых уменьшает ошибки при программировании, упрощает отладку программ, значительно снижает трудоёмкость при эксплуатации системы. Если программа составляется на языке функциональных блоков, то целесообразно придерживаться следующих принципов при её написании.
1. Принцип функциональной полноты. Алгоритм и программа контроля и регулирования должны максимально реализовывать функции объекта управления (ОУ). Сюда входит учёт перспективных функций или задач. Введение новой функции не должно изменять (существенно) структуру программы. Структура программы должна содержать проверку входной и выходной информации на достоверность, отражать логику нормального функционирования ОУ, предусматривать анализ предаварийных состояний и аварийных ситуаций, содержать блоки прогноза вероятных нарушений и формирования рекомендаций обслуживающему персоналу или операторам технологического процесса, передачу и приём информации по локальной сети, связь с верхним уровнем (с АРМами).
2. Принцип единообразия в шифрации, нумерации и расположении алгоритмических блоков (алгоблоков), выполняющих одну или несколько взаимосвязанных функций. Расположение и их нумерация должны отражать последовательность преобразования информации.
3. Принцип нежёсткой нумерации. Между конечными и начальными номерами очередной группы алгоблоков, реализующих одну или несколько взаимосвязанных, но разных функций должны быть резервные номера алгоблоков (свободные). Обычно не более трёх-пяти.
4. Принцип идентичности нумерации блоков в группах. Нумерация каждой группы блоков, реализующих одинаковые функции, должна быть идентична. Например, первая группа имеет нумерацию от 10 до 19, тогда вторая – от 20 до 29 и т.д.
5. Принцип вероятного изменения модификатора. При расположении алгоблоков друг под другом следует учитывать возможность изменения размера модификатора в сторону увеличения (на один размер). Этот принцип работает в тех средах и на тех контроллерах, где введён модификатор и его суть совпадает с сутью, которая заложена в понятие модификатор в контроллере Р-130, КР-300.
6. Принцип красоты геометрического расположения алгоблоков. Границы группы алгоблоков должны располагаться на одной линии, чтобы можно было проводить информационные кабели (связи между алгоблоками) без дополнительных зигзагов и пересечений.
7. Принцип промежуточного программного клеммника. Введение в программу промежуточных алгоблоков при вводе информации, или по-другому их назовём промежуточные «клеммники». Данный приём программирования позволяет оперативно переходить на резервный канал, не корректируя связи в самой программе.
8. Принцип распределённого программирования задач контроля и регулирования технологическим оборудованием, имеющим резерв. Нельзя параллельное резервирование технологического оборудования сводить к последовательному включению (с точки зрения резервирования) за счёт реализации программы управления резервным оборудованием в одном контроллере. В данном случае должно быть обязательно дублирование и аппаратных средств (контроллеров, блоков питания).
9. Принцип максимальной информационной автономности реализуемой задачи. Программа, обрабатывающая связанные параметры, должна располагаться в контроллере, к которому эти параметры подключены. Этот принцип позволяет распределять, в случае необходимости, связанные параметры по контроллерам так, чтобы отказ любого контроллера, работающего в локальной сети, не влиял на работоспособность другого контроллера (другой программы), или это влияние было бы несущественным. Если группа параметров необходима для выполнения одной или нескольких взаимосвязанных задач, то эти параметры должны быть заведены через устройства связи с объектом (УСО) на один контроллер.
Поясним несколько принципов на примерах, фрагментах программ. Так как предлагается общий подход, то конкретная программа не имеет значения.
Приведём условную последовательность алгоблоков, реализующих управление задвижкой. Рассмотрим на примере управления двумя задвижками Z1 и Z2. Обычно алгоритм, программу описывают для первой задвижки. Допустим в алгоблоке А1 находится элемент И, осуществляющий защиту от некорректной команды. Например, делается сформировать команду открыть, когда задвижка открыта. В алгоблоке А2 находится таймер, контролирующий время открытия задвижки. И т.д. Если взять теперь вторую задвижку, то, несмотря на то, что с первого взгляда они имеют другую нумерацию, суть та же самая и та же нумерация алгоблоков. Возьмём алгоблок А22. Если отнять 20, то получим А2. Это же таймер, контролирующий открытие задвижки, только не Z1, а Z2. Следует обратить внимание на то, что в нумерации имеются разрывы. Такие разрывы, или наличие фиктивных блоков, позволяют вносить корректировки, добавления без перенумерации всех алгоблоков. Мало того, если проектная документация готова, то это приведёт к огромным изменениям в проекте, где все описания и инструкции привязаны к конкретной нумерации.
Рис. 92. Иллюстрация применения принципа два и три
Принцип промежуточного программного клеммника
Приведём структуру программы в общем виде (рис. 93). Допустим, в нашем случае резервным каналом является канал номер восемь (Х8). В качестве промежуточного клеммника для каждого дискретного сигнала используют алгоритм ИЛИ, а для аналоговых сигналов – алгоритм масштабирования с коэффициентом масштаба равным единице.
Рис. 93. Фрагмет программы
На рис. 94 представлена та же программа, только с промежуточным программным клеммником.
Рис. 94. Фрагмент программы с клеммником
В случае отказа первого канала переходим на резервный аппаратно и программно. На рис. 95 показаны изменения в программе при наличии клеммника при переходе на резервный канал.
Рис. 95. Иллюстрация перехода на резервный канал
При наличии промежуточного клеммника делается одно изменение (одна конфигурация), без внесения изменений в саму программу. В программе переходим на резервный канал оперативно. Электрическое изменение, переключение на резервный канал, делается тоже просто.
Чтобы был понятен пятый принцип, поясним понятие модификатор на примере двухвходовой логики ИЛИ. Допустим, в одном алгоблоке может находиться до 20 элементов ИЛИ, но в нашей задаче требуется всего два элемента ИЛИ. В процессе работы часто возникает необходимость увеличить количество алгоритмов ИЛИ именно в этом алгоблоке, например ещё на два. Но увеличение в одном алгоблоке увеличит его размер. Если алгоблоки расположены достаточно плотно, то это вызовет перекомпоновку части схемы. Надо ли везде предусматривать увеличение размера алгоблока или вставки в это место дополнительного алгоблока? Конечно, нет. Это сдует делать в тех местах, где с большой вероятностью появится такая необходимость.
Принцип красоты геометрического расположения алгоблоков
В серьёзных проектах имеются много контуров регулирования с использованием, например, ПИ-регулятора, управления десятками задвижек и т.д. Желательно определиться с общей структурой регулятора, с общей структурой управления задвижкой. И тогда, глядя на большую программу, сразу узнаёшь – это регулятор, а это – блок управления задвижкой.
Изложенные принципы опубликованы в разных источниках [25]. В журнал «Программирование» в 2013г. направлена статья «Принципы программирования контроллеров на языке FBD».
Вполне возможно, что многие эти принципы разработчики используют подсознательно. Такой подход нашёл поддержку и одобрение у специалистов автоматчиков, обслуживающих АСУ ТП, где приходилось автору внедрять различные системы.
Приложение М
Блок циклической индикации
Блок циклической индикации является одним из вариантов визуализации технологической информации на лицевой панели контроллера. В качестве примера предлагается алгоритм и программа на языке FBD блока циклической индикации (БЦИ) значений технологических параметров с разными шкалами. Обычно параметры разбиваются по группам. Каждому параметру в своей группе присваивают номер. Программа, реализующая циклическую индикацию, последовательно выдаёт на цифровые индикаторы значение параметра и его номер. Начинается циклическая индикация с первого параметра, потом автоматически переходит на второй параметр и т.д. Когда БЦИ доходит до последнего канала, то автоматически осуществляется переход на первый параметр, и всё повторяется. Оператор может остановить индикацию на любом номере, а затем продолжить. Усложнённый вариант БЦИ может распознавать тенденцию изменения параметра. Если начинает изменяться один параметр в группе, то циклическая индикация может автоматически остановиться на этом параметре с правом оператора возобновить автоматическую работу БЦИ. Если в группе начинают изменяться несколько параметров, то БЦИ самостоятельно возобновляет автоматическую работу по циклу. Если же останов циклической индикации произвёл оператор, то только оператор может вновь включить циклическую индикацию.
Программа блока циклической индикации (БЦИ) реализована на регулирующей модели микропроцессорного контроллера Ремиконт Р-130 [25]. Лицевая панель (ЛП) контроллера представлена на рис. 96. Приведём некоторые характеристики контроллера, которые позволят лучше понять работу БЦИ. ОЗУ[34] контроллера Р-130 условно разбито на 99 зон памяти, которые названы алгоблоками. При написании программы в очередной алгоблок ОЗУ вызывают из ПЗУ[35] по коду необходимый алгоритм. Набор алгоритмов в ПЗУ называют библиотекой алгоритмов.
Для отображения аналоговых сигналов (температуры, расхода, уровня и т.д.) имеется алгоритм оперативного контроля (ОКО). Алгоритм ОКО обеспечивает связь с лицевой панелью (ЛП) контроллера Р-130, то есть алгоритм ОКО устанавливает связь с цифровыми и другими индикаторами ЛП. На рис. 10 представлен алгоритм ОКО. Код алгоритма ОКО равен 01. Поясним принцип работы ОКО.
Опустим функции алгоритма ОКО, которые не используются в данном приложении. Обозначения входных переменных алгоритма ОКО по технической документации привязаны к работе с регулятором (рис. 10). Для нас это будут просто параметры, которые отображаются на ЛП.