Лабораторные работы / ЛОКСУ_лаб4_5_2392_Смирнова_Крахотин_Давыдов
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра АПУ
отчет
по лабораторной работе 4 и 5
по дисциплине «Локальные системы управления»
Тема: Обработка аналоговых сигналов и реализация (тестирование сигналов по заданной схеме) и тестирование алгоритма управления (по заданной схеме)
Студенты гр. 2392 |
|
Давыдов В.А. |
|
|
Крахотин М.А. |
|
|
Смирнова М.В. |
Преподаватель |
|
Грудяева Е.С. |
Санкт-Петербург
2025
Цель работы
Целью лабораторной работы является изучение способов обработки аналоговых сигналов и тестирование алгоритма управления уровнем жидкости в ёмкости с регулирующей заслонкой по заданной схеме (рис. 1) в среде АльтПРО.
Для выполнения работы необходимо:
освоить методы масштабирования аналоговых сигналов из диапазона 0–16000 в инженерные единицы (0–100 %);
реализовать алгоритм управления положением заслонки по уровню жидкости в заданных пределах;
провести
тестирование программы в таблице
переменных и подтвердить правильность
функционирования системы.
Ход выполнения работы
Схема объекта
Объект управления — ёмкость с регулирующей заслонкой. На входе установлен датчик уровня LT, формирующий аналоговый сигнал 0–100 %. Заданы две границы диапазона — LS Min (нижняя) и LS Max (верхняя). Регулирование уровня осуществляется исполнительным механизмом М, управляющим положением заслонки 3-4 на выходе.
В
проект был добавлен контроллер Orion
MP-108, к которому подключены модули
ввода-вывода. В среде АльтПРО для каждого
модуля автоматически формируются
области памяти, содержащие адреса слов
ввода и вывода. На рис. 2 приведена
конфигурация модулей, где видно, что:
модуль MA-005 (аналоговый ввод) занимает
область входных слов 0…15; модуль MA-101
(аналоговый вывод) занимает область
входных слов 16…17 и выходных слов 0…7.
При
выборе модуля MA-005 отображаются его
свойства (рис. 3), где указано, что Input =
0…15. Это означает, что первый канал
аналогового ввода соответствует адресу
INPUT_WORD[0].
На
рис. 4 для модуля MA-101 видно, что: входные
области модуля — 16…17 (не используются
в нашей задаче), выходные области — 0…7,
где Output Word 0 является первым аналоговым
выходом. Таким образом, первый канал
модуля используется в программе как
OUTPUT_WORD[0].
Глобальные переменные и масштабирование сигнала
В глобальной области данных описаны области ввода/вывода и основные переменные:
VAR_GLOBAL
INPUT_WORD at %IW0 : ARRAY[0..511] OF WORD;
OUTPUT_WORD at %QW0 : ARRAY[0..511] OF WORD;
LT_Level : real; // Уровень, % (после масштабирования)
LS_Min : real := 20; // Нижняя граница, %
LS_Max : real := 80; // Верхняя граница, %
M_Valve : real; // Положение заслонки, % 0..100
bInitDone : bool := FALSE;
END_VAR
Для перевода кода аналогово-цифрового преобразователя (0–16000) в инженерные единицы (0–100 %) была реализована функция масштабирования scale:
FUNCTION scale : REAL
VAR_INPUT
val : REAL; // что масштабируем (0..16000)
MaxRange, MinRange : REAL; // желаемый диапазон
END_VAR
scale := (val / 16000.0) * (MaxRange - MinRange) + MinRange;
END_FUNCTION
Функция используется для преобразования значения с аналогового входа в процентный уровень жидкости.
Инициализация и связь с аппаратными областями
Программа Init выполняет установку начальных границ при первом запуске:
PROGRAM Init
IF NOT bInitDone THEN
LS_Min := 20.0;
LS_Max := 80.0;
bInitDone := TRUE;
END_IF;
END_PROGRAM
Адреса, представленные на рис. 4–6, используются в программе следующим образом: значение уровня считывается из области INPUT_WORD[0], управляющее воздействие на заслонку формируется записью в OUTPUT_WORD[0]. Данный механизм реализован в программе LinkMem, где выполняется масштабирование входного значения и его преобразование в сигнал на аналоговый выход. Его код приставлен ниже:
PROGRAM LinkMem
LT_Level := scale(
val := INT_TO_REAL(WORD_TO_INT(INPUT_WORD[0])),
MaxRange := 100.0,
MinRange := 0.0);
IF M_Valve < 0.0 THEN
M_Valve := 0.0;
ELSIF M_Valve > 100.0 THEN
M_Valve := 100.0;
END_IF;
OUTPUT_WORD[0] := INT_TO_WORD(REAL_TO_INT(M_Valve * 160.0));
END_PROGRAM
Данный блок выполняет считывание аналогового входа, масштабирование уровня и передачу выходного сигнала на модуль аналогового вывода. Также реализована защита от выхода значения M_Valve за допустимый диапазон 0–100 %.
Алгоритм управления
Алгоритм регулирования уровня жидкости реализован в программе ALG:
PROGRAM ALG
VAR
rRange : REAL;
END_VAR
IF LS_Max > LS_Min THEN
rRange := LS_Max - LS_Min;
IF LT_Level < LS_Min THEN
M_Valve := 100.0;
ELSIF LT_Level > LS_Max THEN
M_Valve := 0.0;
ELSE
M_Valve := 100.0 - ((LT_Level - LS_Min) / rRange * 100.0);
END_IF;
ELSE
M_Valve := 0.0;
END_IF;
END_PROGRAM
Программа вычисляет положение заслонки в зависимости от уровня жидкости: при уровне ниже LS Min — заслонка полностью открывается; при уровне выше LS Max — заслонка закрывается; между границами положение изменяется пропорционально уровню.
Компиляция и загрузка
Проект собран с помощью Make-файла (Main.st) и успешно скомпилирован без ошибок. Затем программа была загружена в контроллер Orion MP-108. Контроллер обнаружен при сканировании сети, проект записан в ПЛК и запущен для тестирования.
Для
выполнения лабораторной работы
использовался учебный стенд (рис. 5)
СЛ-01, содержащий контроллер MP-108, модули
ввода-вывода, органы индикации и
управления. С помощью панели оператора
и переключателей возможно формировать
значения входных сигналов, включая
аналоговый вход INPUT_WORD, что позволяет
проверить работу программы в реальных
условиях.
Тестирование алгоритма
Для проверки работы программы была создана Таблица переменных, включающая следующие значения:
INPUT_WORD[2] — входной аналоговый сигнал;
LT_Level — масштабированное значение уровня;
LS_Min, LS_Max — нижняя и верхняя границы;
M_Valve — положение заслонки;
OUTPUT_WORD[2] — код управляющего аналогового сигнала на выходе.
После запуска мониторинга последовательно изменялись входные данные, моделируя изменение уровня жидкости. Результаты представлены на рис. 6–8.
При
INPUT_WORD = 0 масштабированное значение
уровня равно LT_Level = 0 %. Алгоритм открывает
заслонку полностью, формируя M_Valve = 100
%.
При
подаче среднего значения (INPUT_WORD ≈ 8000)
уровень составляет примерно 50 %. Программа
вычисляет пропорциональное значение
заслонки: M_Valve ≈ 42–75 % (в зависимости от
границ LS).
При INPUT_WORD = 16000 значение уровня равно LT_Level = 100 %.
Алгоритм
закрывает заслонку (M_Valve = 0 %), что
соответствует достижению верхней
границы диапазона.
Для
проверки работоспособности алгоритма
регулирования управление было
протестировано не только в программном
режиме таблицы переменных, но и на
реальном учебном стенде. На рис. 9 показан
процесс изменения аналогового входного
значения INPUT_WORD непосредственно с панели
стенда. При изменении входа (в данном
случае 4499) программа корректно
пересчитывает уровень LT_Level и формирует
значение управляющего сигнала M_Valve. Это
подтверждает правильность настройки
областей ввода-вывода, функции
масштабирования и алгоритма регулирования.
Вывод
В ходе лабораторной работы были изучены методы обработки аналоговых сигналов и реализован алгоритм управления уровнем жидкости в среде АльтПРО. Выполнена настройка областей ввода-вывода контроллера MP-108 и привязка сигналов модулей MA-005 и MA-101 к переменным программы. Реализованы масштабирование входного сигнала уровня, инициализация граничных условий и вычисление положения регулирующей заслонки.
Тестирование, проведённое как в таблице переменных, так и на реальном стенде СЛ-01, подтвердило корректность работы программы: при низком уровне заслонка открывается, при высоком — закрывается, а в рабочем диапазоне изменяет своё положение пропорционально уровню. Цель лабораторной работы достигнута.
