МУ_Проектирование распределенных систем управления 04.09.2023
.pdfEND_VAR
...
BEGIN
Delimiter (IN := InputValue); Result := Delimiter.OUT;
...
END_FUNCTION_BLOCK
Объявление экземпляров выполняется в статических локальных данных (VAR); здесь Вы назначаете имя (например, Delimiter) и назначаете функциональный блок (FB291 или его символьное имя) как данных. К моменту компилирования функциональный блок, который должен вызываться, должен уже существовать или в виде ранее скомпилированного блока в разделе Blocks (Блоки), или в виде (заведомо безошибочной) исходной программы, которая компилируется перед вызовом блока.
Точно такие же действия выполняются при вызове системного функционального блока SFB как локального экземпляра. Вызов блока в виде локального экземпляра производится как инициализация имени переменной с последующим списком параметров в скобках. Инициализация параметров функционального блока необязательна.
Так как входные/выходные параметры сложных типов сохраняются как указатели, они должны быть инициализированы значащими величинами при первом вызове функционального блока. Если параметр блока не инициализирован, то он сохраняет свое последнее определенное значение. Скобки должны присутствовать в записи, даже если не инициализированы никакие параметры.
Пользователь может создать несколько локальных экземпляров с различными именами для одного и того же функционального блока. Все параметры локального экземпляра могут быть адресованы также как компоненты структурированной переменной - в записи указываются имя локального экземпляра и имя параметра. В примере граничные значения определены константами. Они также могут быть инициализированы перед вызовом локального экземпляра посредством операторов присваивания:
Delimiter.MAX := Maximum;
Delimiter.MIN := Minimum;
101
Выходные параметры не могут быть инициализированы при вызове функционального блока (это также касается локальных экземпляров). Если требуется, их значения считываются как компоненты локального экземпляра:
Result := Delimiter.OUT;
Вы можете также получить доступ к параметрам локального экземпляра "со стороны" вызывающего функционального блока. Такой доступ организуется как доступ к адресам глобальных данных посредством записи спецификации блока данных (DB290), локального экземпляра (Delimiter) и имени параметра:
DB290.Delimiter.MAX := Maximum;
DB290.Delimiter.MIN := Minimum; Result := DB290.Delimiter.OUT;
Компиляция
Программирование на SCL ориентировано на создание исходных блоков программы в папке Blocks после компиляции файлов в папке Sources.
Для компиляции необходимо нажать на иконку
в редакторе SCL.
Порядок выполнения работы 1. Конфигурирование проекта
Используйте любой созданный ранее проект в качестве аппаратной основы.
2. Создание пользовательского типа данных
Создайте пользовательский тип данных UDT, который будет включать в себя переменные из областей VAR_INPUT, VAR_OUTPUT и VAR_IN_OUT
функционального блока AI_eval (текст кода приведен ниже, п. 4.).
3. Создание блока данных
Создайте блок данных, в котором необходимо хранить переменные пользовательского типа данных. Каждая переменная должна соответствовать аналоговому сигналу из предыдущих работ (3-5).
4. Создание блока AI_eval
Скопируйте текст в блок FB: FUNCTION_BLOCK AI_eval
TITLE = 'чтение аналог. сигналов периферии в DB'
VAR_INPUT
102
input : WORD;// Код переменной
mxS |
: REAL; |
// Верхнее значение диапазона измерения датчика |
|||
mnS |
: REAL; |
// Нижнее значение диапазона измерения датчика |
|||
END_VAR |
|
|
|
||
VAR |
|
|
|
|
|
sensorOut : REAL; |
|||||
sens |
|
: REAL; |
|
||
sens1 |
: REAL; |
|
|||
inCode |
: INT; |
|
|||
END_VAR |
|
|
|
||
VAR_OUTPUT |
|
|
|
||
state |
|
: INT; // Состояние технологического параметра |
|||
val |
|
: REAL; // Значение технологического параметра |
|||
hh |
|
: BOOL; // Авария: сигнал выше верхней аварийной границы |
|||
h |
|
: BOOL; // Предупреждение: сигнал выше верхней рабочей границы |
|||
l |
|
: BOOL; // Предупреждение: сигнал ниже нижней рабочей границы |
|||
ll |
|
: BOOL; // Авария: сигнал ниже нижней аварийной границы |
|||
ovH |
|
: BOOL; // Авария: Переполнение или зашкал вверх |
|||
ovL |
|
: BOOL; // Авария: Переполнение или зашкал вниз |
|||
END_VAR |
|
|
|
||
VAR_IN_OUT |
|
|
|
||
hhv |
: REAL; |
|
hv |
: REAL; // Рабочие и аварийный границы значения |
|
технологического |
|
||||
lv : REAL; |
|
llv |
: REAL; // параметра |
||
END_VAR |
|
|
|
||
CONST |
|
|
|
|
|
brk |
:= 0; |
// обрыв |
|||
ovsH := 1; |
|
//зашкал вверх |
|||
ovfL := 2; //зашкал вниз |
|||||
ovfH := 3; // переполнение вверх |
|||||
ovsL := 4; // переполнение вниз |
|||||
wrn := 5; |
// значение параметра вышло за пределы рабочей зоны |
||||
alr |
:= 6; // значение параметра вышло за пределы аварийной зоны |
||||
norm := 7; //нормальное значение
103
END_CONST
// корректировка введенных параметров
hhv := LIMIT (mn := mnS, in := hhv, mx := mxS); hv := LIMIT (mn := mnS, in := hv, mx := mxS); lv := LIMIT (mn := mnS, in := lv, mx := mxS); llv := LIMIT (mn := mnS, in := llv, mx := mxS);
// Чтение входного кода
inCode := WORD_TO_INT(input); // Преобразование сигнала датчика //Переходы состояний сигнала
IF (inCode >= 32767) OR (inCode <= -32768) THEN state:=Brk; // обрыв датчика
ELSIF (inCode < 32767)AND(inCode > 32511) THEN state:=ovsH; // перегрузка по току
ELSIF (inCode < -4684)AND(inCode > -32768) THEN state:=ovsL; //
переполнение по току
ELSIF (inCode <= 32511)AND(inCode > 27648) THEN state:=ovfH; ELSIF (inCode < 0 )AND(inCode >= -4864) THEN state:=ovfL; ELSE //Норма
sensorOut := DINT_TO_REAL(INT_TO_DINT(inCode)) / (INT_TO_DINT(27648)) * (20.0 - 4.0) + 4.0; // мА
// коэфф. датчика
sens1 := (mxS - mnS);// столько единиц измерения параметра в 1 мА sens := sens1/(20.0 - 4.0);// столько единиц измерения параметра в 1 мА // преобразуем выходное значение датчика в значение измеряемой
величины
val := (sensorOut - 4) * sens + mnS;// сигнал в ед. изм.; градусы, паскали и т.д.
hh := (val >= hhv);
h := (val >=hv AND val <hhv); l := (val <=lv AND val >llv);
ll := (val <= llv);
IF (hh OR ll) THEN state:=alr; ELSIF (h OR l) THEN state:=wrn; ELSE state:=norm;
END_IF;
104
END_IF;
ovH := (state=ovsH) OR (state=ovfH); ovL := (state=ovsL) OR (state=ovfL);
END_FUNCTION_BLOCK
Блок преобразует значение кода модуля, соответствующего диапазону 4- 20 мА в соответствующий диапазон измерения технологического параметра. Проводится диагностика канала связи и диагностика самого технологического параметра.
5. Вызов функционального блока
Осуществить вызов целевого функционального блока с помощью дополнительного вызывающего FB. В нем создать необходимое количество экземпляров вызова, соответствующее числу входных аналоговых переменных.
Вызвать дополнительный FB в OB1. Записать в OB1 диапазоны измерения каждого сигнала (См. вариант ниже)
6.Проверка правильности работы
Вотсутствии проекта визуализации проверку рационально проводить с помощью VAT-таблицы. Она создается в папке Blocks. После открытия таблицы необходимо заполнить ее необходимыми переменными в поле Symbol (символьные имена).
Для мониторинга переменных нужно нажать на кнопку . Для записи значений переменных в поле Modify Value вводится
необходимое значение, затем записывается кнопкой .
Задать для каждого аналогового сигнала рабочие и аварийные границы.
7. Изучение работы программы. Тестирование
Задавать различные значения кода входного сигнала так, чтобы получить все возможные состояния сигнала.
Задать рабочие и аварийные границы для одного из сигналов в неправильном порядке или выходящие за диапазон измерения. Проверить результат работы программы.
105
Сравнить функционал данной программы и написанной Вами программы в предыдущей работе по пунктам в виде таблицы.
Изменить целевую программу так, чтобы она работала для любого унифицированного сигнала датчика.
Для каждого из 5 входных сигналов задать диапазоны в соответствии с вариантом.
Настроить аналоговый модуль на прием указанных диапазонов. Если модуль не дает возможность такой настройки, заменить его.
Привести результат. Таблица 1. Варианты задания
№ |
№ |
Диапазон сигнала |
Диапазон измерения |
|||||
вар |
AI |
|
датчика |
|
||||
|
|
|
|
|
||||
1 |
1 |
0 |
5 |
|
В |
0 |
100 |
С֯ |
|
|
|
|
|
|
|
|
|
|
2 |
4 |
20 |
|
мА |
0 |
50 |
Па |
|
3 |
4 |
20 |
|
мА |
0 |
75 |
м3/ч |
|
|
|
|
|
|
|
|
|
|
4 |
-5 |
5 |
|
В |
-20 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
|
5 |
0 |
10 |
|
В |
-20 |
150 |
С֯ |
2 |
1 |
-10 |
10 |
|
В |
-15 |
35 |
С֯ |
|
|
|
|
|
|
|
|
|
|
2 |
0 |
20 |
|
мА |
0 |
90 |
м |
|
|
|
|
|
|
|
|
|
|
3 |
-5 |
5 |
|
В |
0 |
5 |
м |
|
4 |
0 |
20 |
|
мА |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
|
5 |
0 |
5 |
|
В |
-60 |
200 |
С֯ |
|
|
|
|
|
|
|
|
|
3 |
1 |
4 |
20 |
|
мА |
-15 |
35 |
С֯ |
|
|
|
|
|
|
|
|
|
|
2 |
-1 |
1 |
|
В |
0 |
100 |
Па |
|
|
|
|
|
|
|
|
|
|
3 |
-5 |
5 |
|
В |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
|
4 |
0 |
20 |
|
мА |
0 |
5 |
м |
|
|
|
|
|
|
|
|
|
|
5 |
-10 |
10 |
|
В |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
|
4 |
1 |
-5 |
5 |
|
В |
0 |
5 |
м |
|
|
|
|
|
|
|
|
|
|
2 |
4 |
20 |
|
мА |
0 |
100 |
|
|
|
|
|
|
|
|
|
|
|
3 |
-10 |
10 |
|
мА |
-100 |
300 |
С֯ |
|
|
|
|
|
|
|
|
|
|
4 |
0 |
10 |
|
В |
0 |
100 |
Па |
|
|
|
|
|
|
|
|
|
|
5 |
4 |
20 |
|
мА |
-60 |
200 |
С֯ |
|
|
|
|
|
|
|
|
|
5 |
1 |
-10 |
10 |
|
мА |
-15 |
35 |
С֯ |
|
|
|
|
|
|
|
|
|
|
2 |
-5 |
5 |
|
В |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
|
|
3 |
-1 |
1 |
|
В |
-15 |
35 |
С֯ |
|
|
|
|
|
|
|
|
|
|
4 |
-5 |
5 |
|
В |
0 |
5 |
м |
|
|
|
|
|
|
|
|
|
|
5 |
4 |
20 |
|
мА |
-60 |
200 |
С֯ |
|
|
|
|
|
|
|
|
|
6 |
1 |
-1 |
1 |
|
В |
0 |
100 |
м3/ч |
|
|
|
|
|
|
|
|
|
|
2 |
0 |
20 |
|
мА |
0 |
90 |
м |
|
|
|
|
|
|
|
|
|
|
3 |
0 |
5 |
|
В |
0 |
8 |
м |
|
|
|
|
|
|
|
|
|
|
4 |
4 |
20 |
|
мА |
-10 |
40 |
С֯ |
|
|
|
|
|
|
|
|
|
|
5 |
-5 |
5 |
|
В |
0 |
5 |
м |
|
|
|
|
|
|
|
|
|
7 |
1 |
-1 |
1 |
|
В |
0 |
5 |
м |
|
|
|
|
|
|
|
|
|
106
|
|
2 |
|
4 |
|
20 |
мА |
0 |
100 |
Па |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
|
20 |
мА |
0 |
100 |
м3/ч |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
0 |
|
20 |
мА |
0 |
8 |
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
-1 |
|
1 |
В |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
1 |
|
-5 |
|
5 |
В |
0 |
5 |
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
4 |
|
20 |
мА |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
|
20 |
мА |
0 |
2 |
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
0 |
|
10 |
В |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
0 |
|
20 |
мА |
-10 |
40 |
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
1 |
|
0 |
|
20 |
мА |
-100 |
300 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
4 |
|
20 |
мА |
-60 |
200 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
|
20 |
мА |
0 |
100 |
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
0 |
|
10 |
В |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
0 |
|
20 |
мА |
-10 |
40 |
С֯ |
|
|
10 |
|
1 |
|
0 |
|
20 |
мА |
0 |
8 |
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
-10 |
|
10 |
В |
-10 |
100 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
|
20 |
мА |
0 |
90 |
м3/ч |
|
|
|
|
4 |
|
-10 |
|
10 |
В |
-10 |
100 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
4 |
|
20 |
мА |
0 |
100 |
мг/л |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
1 |
|
-1 |
|
1 |
мА |
0 |
100 |
мг/л |
|
|
|
|
2 |
|
0 |
|
5 |
В |
-60 |
200 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
-1 |
|
1 |
В |
0 |
90 |
Па |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
4 |
|
20 |
мА |
0 |
2 |
м |
|
|
|
|
5 |
|
0 |
|
20 |
мА |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
1 |
|
-5 |
|
5 |
В |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
4 |
|
20 |
мА |
0 |
100 |
м3/ч |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
0 |
|
20 |
мА |
0 |
100 |
Па |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
0 |
|
10 |
В |
-100 |
300 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
4 |
|
20 |
мА |
0 |
2 |
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
1 |
|
4 |
|
20 |
мА |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
0 |
|
20 |
мА |
0 |
100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
0 |
|
10 |
В |
-10 |
40 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
0 |
|
20 |
мА |
-10 |
100 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
-5 |
|
5 |
В |
-60 |
200 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
1 |
|
0 |
|
5 |
В |
-10 |
40 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
0 |
|
20 |
мА |
0 |
90 |
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
0 |
|
20 |
мА |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
-10 |
|
10 |
В |
0 |
100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
0 |
|
20 |
мА |
0 |
90 |
м3/ч |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
1 |
|
4 |
|
20 |
мА |
-10 |
100 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
-1 |
|
1 |
В |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
|
20 |
мА |
0 |
8 |
м |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
0 |
|
5 |
В |
-15 |
35 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
0 |
|
20 |
мА |
-21 |
18 |
С֯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
№ вар |
|
|
№ AI |
Диапазон сигнала датчика |
Диапазон измерения |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
107
16 |
1 |
4 |
20 |
мА |
0 |
15 |
м |
|
|
|
|
|
|
|
|
|
2 |
-5 |
5 |
В |
-10 |
100 |
С֯ |
|
|
|
|
|
|
|
|
|
3 |
0 |
20 |
мА |
0 |
100 |
Па |
|
|
|
|
|
|
|
|
|
4 |
4 |
20 |
мА |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
5 |
0 |
20 |
мА |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
17 |
1 |
0 |
10 |
В |
0 |
15 |
м |
|
|
|
|
|
|
|
|
|
2 |
0 |
20 |
мА |
-100 |
300 |
С֯ |
|
|
|
|
|
|
|
|
|
3 |
-10 |
10 |
В |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
|
4 |
4 |
20 |
мА |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
5 |
-1 |
1 |
В |
0 |
100 |
м3/ч |
|
|
|
|
|
|
|
|
18 |
1 |
0 |
20 |
мА |
0 |
8 |
м |
|
|
|
|
|
|
|
|
|
2 |
0 |
10 |
В |
0 |
2 |
м |
|
|
|
|
|
|
|
|
|
3 |
0 |
20 |
мА |
0 |
15 |
м |
|
|
|
|
|
|
|
|
|
4 |
4 |
20 |
мА |
-10 |
40 |
С֯ |
|
5 |
0 |
5 |
В |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
19 |
1 |
0 |
20 |
мА |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
2 |
0 |
20 |
мА |
0 |
100 |
м3/ч |
|
3 |
0 |
20 |
мА |
-21 |
18 |
С֯ |
|
|
|
|
|
|
|
|
|
4 |
-5 |
5 |
В |
0 |
4 |
м |
|
|
|
|
|
|
|
|
|
5 |
0 |
20 |
мА |
0 |
2 |
м |
20 |
1 |
0 |
5 |
В |
0 |
21 |
м |
|
|
|
|
|
|
|
|
|
2 |
0 |
20 |
мА |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
|
3 |
4 |
20 |
мА |
-60 |
200 |
С֯ |
|
4 |
-10 |
10 |
В |
0 |
100 |
Па |
|
|
|
|
|
|
|
|
|
5 |
0 |
20 |
мА |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
21 |
1 |
4 |
20 |
мА |
-60 |
200 |
С֯ |
|
|
|
|
|
|
|
|
|
2 |
0 |
20 |
мА |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
|
3 |
0 |
10 |
В |
0 |
8 |
м |
|
|
|
|
|
|
|
|
|
4 |
0 |
20 |
мА |
-100 |
300 |
С֯ |
|
|
|
|
|
|
|
|
|
5 |
0 |
20 |
мА |
0 |
15 |
м |
|
|
|
|
|
|
|
|
22 |
1 |
-1 |
1 |
В |
-100 |
250 |
С֯ |
|
|
|
|
|
|
|
|
|
2 |
-5 |
5 |
В |
0 |
100 |
мг/л |
|
|
|
|
|
|
|
|
|
3 |
-5 |
5 |
В |
-60 |
200 |
С֯ |
|
|
|
|
|
|
|
|
|
4 |
-1 |
1 |
В |
0 |
15 |
м |
|
|
|
|
|
|
|
|
|
5 |
4 |
20 |
мА |
0 |
100 |
м3/ч |
|
|
|
|
|
|
|
|
23 |
1 |
0 |
10 |
В |
-10 |
40 |
С֯ |
|
|
|
|
|
|
|
|
|
2 |
4 |
20 |
мА |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
|
3 |
-10 |
10 |
мА |
-60 |
200 |
С֯ |
|
|
|
|
|
|
|
|
|
4 |
-10 |
10 |
В |
-100 |
300 |
С֯ |
|
|
|
|
|
|
|
|
|
5 |
0 |
20 |
мА |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
24 |
1 |
4 |
20 |
мА |
-100 |
250 |
С֯ |
|
|
|
|
|
|
|
|
|
2 |
0 |
5 |
В |
-60 |
200 |
С֯ |
|
|
|
|
|
|
|
|
|
3 |
0 |
20 |
мА |
-20 |
20 |
С֯ |
|
|
|
|
|
|
|
|
|
4 |
0 |
10 |
В |
-100 |
250 |
С֯ |
|
|
|
|
|
|
|
|
|
5 |
-1 |
1 |
В |
-21 |
18 |
С֯ |
|
|
|
|
|
|
|
|
25 |
1 |
4 |
20 |
мА |
0 |
100 |
мг/л |
|
|
|
|
|
|
|
|
|
2 |
0 |
5 |
В |
-50 |
50 |
С֯ |
|
|
|
|
|
|
|
|
108
|
3 |
0 |
20 |
мА |
0 |
2 |
м |
|
|
|
|
|
|
|
|
|
4 |
0 |
20 |
мА |
0 |
100 |
мг/л |
|
|
|
|
|
|
|
|
|
5 |
0 |
5 |
В |
0 |
21 |
Па |
|
|
|
|
|
|
|
|
26 |
1 |
-5 |
5 |
В |
-100 |
250 |
С֯ |
|
|
|
|
|
|
|
|
|
2 |
0 |
5 |
В |
-10 |
40 |
С֯ |
|
|
|
|
|
|
|
|
|
3 |
-10 |
10 |
В |
-100 |
300 |
С֯ |
|
|
|
|
|
|
|
|
|
4 |
-1 |
1 |
В |
0 |
100 |
Па |
|
|
|
|
|
|
|
|
|
5 |
4 |
20 |
мА |
-15 |
25 |
С֯ |
|
|
|
|
|
|
|
|
27 |
1 |
0 |
10 |
В |
0 |
12 |
Па |
|
|
|
|
|
|
|
|
|
2 |
4 |
20 |
мА |
-10 |
40 |
С֯ |
|
|
|
|
|
|
|
|
|
3 |
0 |
20 |
мА |
0 |
100 |
м3/ч |
|
|
|
|
|
|
|
|
|
4 |
4 |
20 |
мА |
-100 |
250 |
С֯ |
|
|
|
|
|
|
|
|
|
5 |
4 |
20 |
мА |
-20 |
20 |
С֯ |
|
|
|
|
|
|
|
|
28 |
1 |
-5 |
5 |
В |
-15 |
25 |
С֯ |
|
2 |
0 |
20 |
мА |
-100 |
300 |
С֯ |
|
|
|
|
|
|
|
|
|
3 |
0 |
10 |
В |
-20 |
20 |
С֯ |
|
|
|
|
|
|
|
|
|
4 |
0 |
20 |
мА |
0 |
100 |
Па |
|
5 |
4 |
20 |
мА |
0 |
21 |
м |
|
|
|
|
|
|
|
|
29 |
1 |
-5 |
5 |
В |
0 |
100 |
м3/ч |
|
|
|
|
|
|
|
|
|
2 |
4 |
20 |
мА |
-50 |
50 |
С֯ |
|
3 |
0 |
20 |
мА |
0 |
5 |
м |
|
|
|
|
|
|
|
|
|
4 |
4 |
20 |
мА |
0 |
100 |
мг/л |
|
|
|
|
|
|
|
|
|
5 |
0 |
5 |
В |
0 |
100 |
м3/ч |
30 |
1 |
-5 |
5 |
В |
0 |
6 |
м |
|
|
|
|
|
|
|
|
|
2 |
4 |
20 |
мА |
0 |
100 |
м3/ч |
|
|
|
|
|
|
|
|
|
3 |
0 |
20 |
мА |
0 |
21 |
м |
|
|
|
|
|
|
|
|
|
4 |
0 |
5 |
В |
-100 |
250 |
С֯ |
|
|
|
|
|
|
|
|
|
5 |
-1 |
1 |
В |
-10 |
40 |
С֯ |
|
|
|
|
|
|
|
|
Лабораторная работа № 8. ПИД-регулирование
Цель работы: изучение работы ПИД-регулятора в PLC.
Содержание работы:
1.Создать исходную программу на языке SCL для регулирования внутренней переменной.
2.Заполнить таблицу символов необходимыми данными.
3.Скомпилировать программу.
4.Осуществить загрузку программных блоков в контроллер и убедиться в отсутствии ошибок.
5.Проверить программу на работоспособность, задавая входные сигналы.
109
Общие сведения
Пропорционально-интегрально-дифференцирующий (ПИД) регулятор — устройство в управляющем контуре с обратной связью. Используется в системах автоматического управления для формирования управляющего сигнала с целью получения необходимых точности и качества переходного процесса. ПИД-регулятор формирует управляющий сигнал, являющийся суммой трёх слагаемых, первое из которых пропорционально разности входного сигнала и сигнала обратной связи (сигнал рассогласования), второе — интеграл сигнала рассогласования, третье — производная сигнала рассогласования.
Если какие-то из составляющих не используются, то регулятор называют пропорционально-интегрирующим, пропорциональнодифференцирующим, пропорциональным и т. д.
Назначение ПИД-регулятора — в поддержании заданного значения x0 некоторой величины x с помощью изменения другой величины u. Значение x0 называется заданным значением (или уставкой, в технике), а разность e = (x0 − x) — ошибкой регулирования, рассогласованием или отклонением величины от заданной. Приведённые ниже формулы справедливы в случае линейности и стационарности системы, что редко выполняется на практике.
Выходной сигнал регулятора u определяется тремя слагаемыми:
где Кp, Кi, Кd — коэффициенты усиления пропорциональной, интегрирующей и дифференцирующей составляющих регулятора соответственно.
Порядок выполнения работы
1.Конфигурирование проекта
(См. лабораторную работу №1)
2.Создание таблицы символов
В таблице символов задайте номер для функционального блока с именем CONT_C (библиотечный ПИД-регулятор).
110
