Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы / ЛОКСУ_лаб4_5_2392_Смирнова_Крахотин_Давыдов

.docx
Скачиваний:
0
Добавлен:
15.02.2026
Размер:
1.09 Mб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра АПУ

отчет

по лабораторной работе 4 и 5

по дисциплине «Локальные системы управления»

Тема: Обработка аналоговых сигналов и реализация (тестирование сигналов по заданной схеме) и тестирование алгоритма управления (по заданной схеме)

Студенты гр. 2392

Давыдов В.А.

Крахотин М.А.

Смирнова М.В.

Преподаватель

Грудяева Е.С.

Санкт-Петербург

2025

Цель работы

Целью лабораторной работы является изучение способов обработки аналоговых сигналов и тестирование алгоритма управления уровнем жидкости в ёмкости с регулирующей заслонкой по заданной схеме (рис. 1) в среде АльтПРО.

Для выполнения работы необходимо:

  • освоить методы масштабирования аналоговых сигналов из диапазона 0–16000 в инженерные единицы (0–100 %);

  • реализовать алгоритм управления положением заслонки по уровню жидкости в заданных пределах;

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

Ход выполнения работы

  1. Схема объекта

Объект управления — ёмкость с регулирующей заслонкой. На входе установлен датчик уровня 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].

  1. Глобальные переменные и масштабирование сигнала

В глобальной области данных описаны области ввода/вывода и основные переменные:

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

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

  1. Инициализация и связь с аппаратными областями

Программа 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 %.

  1. Алгоритм управления

Алгоритм регулирования уровня жидкости реализован в программе 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 — заслонка закрывается; между границами положение изменяется пропорционально уровню.

  1. Компиляция и загрузка

Проект собран с помощью Make-файла (Main.st) и успешно скомпилирован без ошибок. Затем программа была загружена в контроллер Orion MP-108. Контроллер обнаружен при сканировании сети, проект записан в ПЛК и запущен для тестирования.

Для выполнения лабораторной работы использовался учебный стенд (рис. 5) СЛ-01, содержащий контроллер MP-108, модули ввода-вывода, органы индикации и управления. С помощью панели оператора и переключателей возможно формировать значения входных сигналов, включая аналоговый вход INPUT_WORD, что позволяет проверить работу программы в реальных условиях.

  1. Тестирование алгоритма

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

  • 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, подтвердило корректность работы программы: при низком уровне заслонка открывается, при высоком — закрывается, а в рабочем диапазоне изменяет своё положение пропорционально уровню. Цель лабораторной работы достигнута.