Файл: Микропроцессорная техника систем автоматизации. Лабораторный практикум.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.10.2023
Просмотров: 231
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
35
Эти операторы могут использоваться на числовых переменных в выражениях для выполнения вычислений и должны быть помещены между двумя переменными (как в обычной математике).
"x" := 5;
"y" := -10;
"z" := "x";
"out" := "x" - "y";
"out" := 2 * "x" - "z" * "y";
"out" := (10 * "x" + "y") / 4;
Операторы двоичной логики
Основными операторами двоичной логики являются операторы
NOT, AND, OR, XOR,которые определяют классические логические функции (табл. 12) – инверсия, логическое умножение (И), логическое сложение (ИЛИ) и исключающее ИЛИ.
"out" := NOT "in1";
"out" := "in1" AND "in2";
"out" := "in1" OR "in2";
"out" := "in1" XOR "in2";
Таблица 12
Таблица истинности логических операторов in1
NOT in1 in2
AND
OR
XOR
0 1
0 0
0 0
0 0
1 0
1 0
1 1
1 0
1 0
0 1
1 1
0 1
1 1
1 0
Оператор присваивания и операторы двоичной логики являются наиболее часто используемыми операторами и позволяют решать несложные задачи автоматизации на основе позиционных законов управления. Примером такой задачи является упомянутая выше задача управления водогрейным котлом.
Остальные операторы и возможности текстового алгоритмического языка SCL будут изучены в последующих лабораторных работах.
36
Порядок выполнения лабораторной работы
В процессе выполнения лабораторной работы для ознакомления с основами алгоритмического языка программирования SCL необходимо разработать в среде TIA Portal проект для ПЛК Simatic
S7-1200, реализующий решение задачи управления водогрейным котлом. Созданную пользовательскую программу необходимо откомпилировать, загрузить в ПЛК и исследовать ее работу на лабораторном стенде.
Задача управления водогрейным котлом
Имеется котел для подогрева воды (рис. 16).
Входы:
I0.0 – датчик минимального уровня воды;
I0.1 – датчик максимального уровня воды.
I0.2 – минимальная температура;
I0.3 – максимальная температура.
Выходы:
Q0.0 – входной клапан (наполнение);
Q0.1 – выходной клапан (слив);
Q0.2 – нагревательный элемент.
Постановка задачи
Необходимо циклически наполнять и опустошать резервуар, непрерывно регулируя температуру воды между максимальным и минимальным значениями.
Рис. 16. Бак с водой как объект регулирования уровня воды и температуры
37
Клапан слива может быть открыт только при условии, когда температура воды находится в допустимых пределах. Клапан слива открывается (Q0.1 = TRUE), если уровень воды в баке превышает максимальный, и выключается (Q0.1 = FALSE), если уровень воды ниже минимального.
Клапан наполнения (Q0.0) включается, если уровень воды в баке ниже минимального, и выключается, если уровень воды выше максимального.
Нагрев воды (Q0.2) должен включаться, если уровень воды выше минимального уровня (I0.0) и температура воды ниже минимальной. Если температура воды достигла максимума, то нагрев воды должен прекратиться до снижения температуры до минимального значения.
Создание проекта
Запуск интегрированной среды разработки TIA Portal V13, создание в ней нового проекта и конфигурация используемого аппаратного оборудования выполняются аналогично тому, как это делалось в лабораторной работе № 1.
Для определения символьных имен используемых в программе переменных выбрать в дереве проекта (Project tree) пункт
PLC_1→PLC tags→Default tag table, открыть таблицу символьных имен переменных, в которой определить символьные имена для следующих переменных (табл. 13).
Таблица 13
Символьные имена используемых в проекте переменных
Name
Data
Type
Logical
Address
Comment
MinLevel
Bool
%I0.0 Датчик минимального уровня воды
MaxLevel
Bool
%I0.1 Датчик максимального уровня воды
MinTemperature
Bool
%I0.2
Датчик минимальной температуры
MaxTemperature
Bool
%I0.3
Датчик максимальной температуры
InFlowValve
Bool
%Q0.0 Входной клапан
–
наполнение
OutFlowValve
Bool
%Q0.1 Выходной клапан
–
слив
Heating
Bool
Q0.2
Нагревательный элемент
38
Далее необходимо добавить в проект кодовый блок
WaterLevelControl, в котором будет введена подпрограмма управления уровнем воды в котле. Для этого в дереве проекта
(Project tree) нужно выбрать пункт
PLC_1→Program blocks→Add new block.
В появившемся диалоговом окне (см. рис. 12) следует сначала указать тип добавляемого кодового блока – Organization Block и Program cycle.
Такой блок в процессе работы программы будет выполняться в каждом цикле программы. Далее в поле Language следует выбрать язык программирования – SCL, и, наконец, в поле Name – задать название блока: WaterLevelControl. Нажать кнопку OK.
В появившемся на экране рабочем окне для ввода текста программы нужно ввести следующий текст.
Код программы на языке SСL: организационный блок управления уровнем воды
IF "MaxLevel" THEN // если уровень воды выше максимального,
"OutFlowValve" := TRUE; // клапан слива включается "InFlowValve" := FALSE; // клапан наполнения выключается
END_IF;
IF NOT "MinLevel" THEN //если уровень воды ниже минимального,
"OutFlowValve" := FALSE; // клапан слива выключается "InFlowValve" := TRUE; // клапан наполнения включается
END_IF;
IF ("MaxTemperature" OR (NOT
"MinTemperature")) THEN
// клапан слива выключается,
// если температура вне заданного интервала,
// т.е. выше максимальной ИЛИ ниже минимальной "OutFlowValve" := FALSE;
END_IF;
39
Загрузить созданную программу в контроллер и исследовать ее работу на лабораторном стенде.
После этого необходимо добавить в проект кодовый блок
TemperatureControl, в котором будет введена подпрограмма управления температурой воды в котле. Текст подпрограммы управления температурой необходимо продумать и ввести самостоятельно, руководствуясь требованиями задачи и используя сведения об основных операторах языка SCL.
Загрузить созданную программу в контроллер, исследовать и продемонстрировать преподавателю ее работу на лабораторном стенде.
Содержание отчета
1. Название и цель работы.
2. Схемы подключения дискретных входов и выходов к контроллеру.
3. Текст разработанной программы управления водогрейным котлом.
4. Выводы.
Контрольные вопросы
1. Определите понятие бит/байт. Какое максимальное число можно записать в 1 байт?
2. Что такое дискретный вход или выход? Как определяются их состояния?
3. На каких языках могут создаваться прикладные программы в системе программирования TIA Portal (V13)?
4. Как объявляются переменные и присваиваются символьные имена дискретным входам и выходам?
5. Каков принцип работы логического оператора NOT?
6. Каков принцип работы логического оператора AND?
7. Каков принцип работы логического оператора OR?
40
ЛАБОРАТОРНАЯ РАБОТА № 3
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С
РЕАЛИЗАЦИЕЙ СТАНДАРТНЫХ ФУНКЦИЙ ТАЙМЕРА
Цель работы: изучение функций таймера и принципов его использования в программах для ПЛК.
Информация для выполнения лабораторной работы
Время всегда играет важную роль в системах управления. Вот несколько типичных примеров:
· при включении электропривода движения кормораздатчика от бункера с кормом к кормушкам необходимо в течение 2 с подавать предупреждающую световую и звуковую сигнализацию;
· в процессе запаривания картофеля при достижении температуры в чане 120 ºС необходимо выдержать интервал времени 20 мин. И только после этого отключать подачу пара и начинать выгрузку готовой массы картофеля.
Поэтому ПЛК должен иметь в своем составе таймеры как часть языка программирования. Как показывает опыт, таймеры являются практически незаменимыми и одними из наиболее часто используемых команд при программировании ПЛК. С помощью таймерных команд можно создавать программные запаздывания.
В ПЛК S7-1200 представлены в распоряжение программиста следующие программные блоки, реализующие функции таймеров.
1 2 3 4 5 6 7 8 9 10
TP (Generate pulse) – импульсный таймер – генерирует однократный импульс заданной длительности. Когда на дискретном входе IN имеет место положительный фронт импульса (значение изменяется с FALSE в TRUE), значение на выходе Q устанавливается равным TRUE и начинается отсчет интервала времени, указанного на входе PT. В течение всего указанного интервала времени значение на выходе Q сохраняется равным TRUE (независимо от возможных изменений сигнала на входе IN), а по окончании интервала времени – устанавливается в FALSE. При этом значение времени, прошедшего с момента начала отсчета, сохраняется на выходе ET (elapsed time – прошедшее время).
41
TON (Generate on-delay) – задержка включения на заданное время. Когда на дискретном входе IN имеет место положительный фронт импульса (значение изменяется с FALSE в TRUE), начинается отсчет указанного интервала времени, по истечении которого значение на выходе Q устанавливается в TRUE. После установления выхода Q = TRUE это значение сохраняется в течение всего времени, пока значение на входе IN = TRUE. Как только IN = FALSE, значение на выходе Q сразу же сбрасывается в FALSE.
TOF (Generate off-delay) – задержка выключения на заданное время. Когда значение IN=TRUE, значение на выходе также сразу устанавливается Q=TRUE. Когда значение на входе IN изменяется с
TRUE на FALSE, начинается отсчет указанного интервала времени, по прошествии которого значение на выходе Q сбрасывается в
FALSE.
TONR (Timer accumulator) – запоминающий таймер с запаздыванием включения. Выход запоминающего таймера с запаздыванием включения устанавливается в состояние TRUE по истечении заранее заданного времени. Истекшее время накапливается в переменной на выходе ET все время, пока вход IN = TRUE. Если на вход IN подать FALSE, накопление прекратится, а при подаче TRUE на IN – возобновится. Когда накопленное значение времени достигнет требуемого интервала PT, значение на выходе Q установится равным
TRUE. Подача сигнала TRUE на вход R (reset) сбрасывает накопленное значение времени ET в 0, а значение на выходе Q – в
FALSE независимо от сигнала на входе IN.
Важнейшим параметром для всех перечисленных блоков таймеров является длительность задаваемого интервала времени PT (preset time), которую часто называют уставкой. Значение уставки PT, а также значение истекшего времени ET (elapced time) выражаются в миллисекундах и хранятся в памяти ПЛК в виде двойного целого числа со знаком. Такой тип данных имеет название TIME. Значение типа данных TIME использует идентификатор T# и может быть введено как простая единица времени, например, ″T#200ms″, или в виде комбинированных единиц времени, например, ″T#5s_200ms″.
RESET_TIMER – сбрасывает указанный таймер программно в исходное состояние.
PRESET_TIMER
– устанавливает заданное значение временной уставки для указанного таймера.
42
Порядок выполнения лабораторной работы
В процессе выполнения лабораторной работы для закрепления сведений о стандартных таймерных блоках TP, TON, TOF и TONR, реализованных в ПЛК Simatic S7-1200, необходимо создать новую программу, в которой задействовать все указанные таймерные блоки, и исследовать ее работу на лабораторном стенде.
Запуск интегрированной среды разработки TIA Portal V13, создание в ней нового проекта и конфигурация используемого аппаратного оборудования описаны на стр. 19.
Для определения символьных имен используемых в программе переменных выбрать в дереве проекта (Project tree) пункт
PLC_1→PLC tags→Default tag table, открыть таблицу символьных имен переменных, в которой определить символьные имена для следующих переменных (табл. 14).
Таблица 14
Символьные имена используемых в проекте переменных
Name
Data
Type
Logical
Address
Comment in0
Bool
%I0.0
Дискретный вход 0 in1
Bool
%I0.1
Дискретный вход 1 in2
Bool
%I0.2
Дискретный вход 2 in3
Bool
%I0.3
Дискретный вход 3 reset_in
Bool
%I0.4
Дискретный вход сброса таймера
TONR out0
Bool
%Q0.0 Дискретный выход 0 out1
Bool
%Q0.1 Дискретный выход 1 out2
Bool
%Q0.2 Дискретный выход 2 out3
Bool
%Q0.3 Дискретный выход 3 t0
Time
%MD0 Значение времени на выходе ET
43
Окончание таблицы 14
Name Data Type
Logical
Address
Comment t1
Time
%MD4 Значение времени на выходе ET t2
Time
%MD8 Значение времени на выходе ET t3
Time
%MD12 Значение времени на выходе ET
Далее необходимо добавить в проект новый кодовый блок типа
Organization Block, Program cycle – организационный блок циклического исполнения с вводом программы на языке SCL.
Необходимые для этого действия описаны на стр. 20.
Так как таймерные блоки являются готовыми к использованию системными блоками, реализованными в пакете Simatic Step 7, то для их ввода в программу не следует набирать вручную соответствующий код, а нужно воспользоваться одним из двух вариантов:
· поместив курсор в рабочем окне ввода программы в нужное место, перейти на панель инструкций Instructions, открыть вкладку
Instructions→Basic instructions→Timer operations и дважды щелкнуть левой клавишей мыши на значке нужного блока;
· сначала перейти на панель инструкций Instructions, открыть вкладку Instructions→Basic instructions→Timer operations и перетащить мышью значок нужного блока в нужное место программы.
При этом среда Simatic Step 7 автоматически предложит создать новый системный блок данных, связанный с функциональным блоком таймера, и в появившемся диалоговом окне ″Call options″ предложит ввести название блока данных. В данном случае необходимо согласиться с предлагаемым по умолчанию вариантом и просто нажать OK. В результате этого в рабочем окне ввода программы появится кодовый блок таймера, имеющий примерно следующий вид:
"IEC_Timer_0_DB".TP(IN:=_bool_in_,
PT:=_time_in_,
Q=>_bool_out_,
ET=>_time_out_);