- •Лабораторная работа №4 Разработка алгоритмического обеспечения плк при построении многоуровневых автоматизированных систем управления
- •Многоуровневые автоматизированные системы управления
- •Обмен данными между уровнями асу тп
- •Switch-технология
- •Пример. Разработка программы управления пуском насоса
- •If iAuto then (* Если дистанционный режим включен, *)
- •Отладка программы с помощью rde
- •Вызов функций и функциональных блоков из программы на языке st
- •Вызов функций из программы на языке st
- •Вызов функциональных блоков из программы на языке st
- •Описание лабораторной установки
- •Состав отчёта по лабораторной работе
- •Задание для самостоятельного решения
If iAuto then (* Если дистанционный режим включен, *)
(* то рассчитываем состояние автомата*)
case State of
1: if cMotorOn then
qMotorOn := TRUE;
State := 2;
end_if;
2: if iMotorOn then
qMotorOn := FALSE;
sMotorOn := TRUE;
State := 3;
end_if;
if tNotRun then
qMotorOn := FALSE;
sNotRun := TRUE;
State := 6;
end_if;
3: if cMotorOff then
qMotorOff := TRUE;
State := 4;
end_if;
if iOverHeat then
sMotorOn := FALSE;
sOverHeat := TRUE;
State := 5;
end_if;
4: if NOT iMotorOn then
sMotorOn := FALSE;
qMotorOff := FALSE;
State := 1;
end_if;
5: if cMotorOff then
sOverHeat := FALSE;
State := 1;
end_if;
6: if cMotorOff then
sNotRun := FALSE;
State := 1;
end_if;
else (* инициализация состояния автомата *)
if iMotorOn then
sMotorOn := TRUE;
State := 3;
else
sMotorOn := FALSE;
State := 1;
end_if;
end_case;
ELSE (* Если находимся в ручном режиме *)
(* Сбрасываем выходы контроллера *)
qMotorOn := FALSE;
qMotorOff := FALSE;
(* Определяем состояние двигателя насоса *)
if iMotorOn then
sMotorOn := TRUE;
State := 3;
else
sMotorOn := FALSE;
State := 1;
end_if;
END_IF;
Отладка программы с помощью rde
Отладка программы, приведённой в примере с помощью симулятора затруднена из-за того, что симулятор позволяет контролировать лишь состояния входов и выходов контроллера.
Просмотр и изменение любых переменных проекта возможно с помощью других средств – редактора RDE(рис. 10). РедакторRDEвызывается с помощью командыOnline\Reference Data Editorили с помощью сочетания клавишCtrl+R.
Пользователь сам указывает имена переменных, которые значения которых он хочет видеть в процессе отладки в колонке Variable Name (Имя переменной). Чтобы изменить значение переменной нужно записать новое значение в колонкеValue(Значение) и нажатьEnter. Если значение переменной недоступно для редактирования, например, если переменная связана со входом контроллера, то её можно «отключить» от входа с помощью колонкиDisable(Недоступно). В этом случае, значение переменной будет «форсироваться» (принудительно задаваться) значением, указанным в колонкеValue.
Рис.10. РедакторRDE
Вызов функций и функциональных блоков из программы на языке st
В приведённом примере разработки программы управления пуском двигателем насоса осуществляется вызов функционального блока, реализующего таймер задержки включения. В системе Conceptвсе подпрограммы, входящие в библиотеки и доступные разработчику для использования в его программах делятся на функции и функциональные блоки.
Результат вызова любой функции зависит только от значений входных переменных и не зависит от состояния контроллера и предыдущих значений функции. Функциями являются: функции преобразования типов; функции, реализующие арифметические операции; тригонометрические функции и т.п.
Функциональный блок, в отличие от функции требует для организации работы дополнительного места в памяти контроллера. Результат выполнения функционального блока может зависеть от предыдущего состояния функционального блока.
Функциональными блоками являются таймеры, счётчики и т.п.