лр5-1
.docx
ПРАКТИЧНА РОБОТА № 5
Тема: Вивчення середовища CodeSys для програмування ПЛК ОВЕН. Програмування на мові CFC та ST.
Мета: Вивчити методи програмування мікроконтролерів ПЛК ОВЕН 110-60М на мовах CFC та ST.
Завдання
Розробити програму (на мові CFC) для контролю оператором переміщення об’єкта. Оператор повинен періодично підтверджувати правильність переміщення об’єкта. У протилежному випадку слід видати попередження та зупинити роботу. Об’єкт повинен здійснювати циклічний рух по периметру прямокутника (рух об’єкта описати у програмному компоненті «Machine» на мові ST). У програмі використати тригери і таймери.
№ з/п |
Час t1 до увімкнення лампи «Увага», c |
Час t2 до увімкнення лампи «Стоп», c |
Переміщення об’єкта по горизонтальній осі до зміни напрямку |
Переміщення об’єкта по вертикальній осі до зміни напрямку |
4 |
8 |
8 |
110 |
80 |
Лістинг програми PLC_PRG
PROGRAM PLC_PRG
VAR
TRIG1: F_TRIG;
TRIG2: R_TRIG;
TIMER1: TOF;
TIMER2: TON;
OBJECT: PLC_PRG1;
END_VAR
Рисунок 1 – Лістинг програми PLC_PRG
Лістинг програми PLC_PRG1
FUNCTION_BLOCK PLC_PRG1
VAR_INPUT
START: BOOL;
END_VAR
VAR_OUTPUT
END_VAR
VAR
X_POS:INT;
Y_POS:INT;
GO_RIGHT:BOOL;
GO_LEFT:BOOL;
GO_UP:BOOL;
GO_DOWN:BOOL;
COUNTER: INT;
PUSK: BOOL;
END_VAR
IF START= TRUE AND PUSK THEN
IF Y_POS=0 AND X_POS<110 THEN
GO_RIGHT:=TRUE;
ELSE
GO_RIGHT:=FALSE;
END_IF
IF Y_POS=80 AND X_POS> 0 THEN
GO_LEFT:=TRUE;
ELSE
GO_LEFT:=FALSE;
END_IF
IF X_POS=0 AND Y_POS>0 THEN
GO_UP:=TRUE;
ELSE
GO_UP:=FALSE;
END_IF
IF X_POS=110 AND Y_POS<80 THEN
GO_DOWN:=TRUE;
ELSE
GO_DOWN:=FALSE;
END_IF
IF GO_RIGHT=TRUE THEN
X_POS:=X_POS+1;
END_IF
IF GO_DOWN=TRUE THEN
Y_POS:=Y_POS+1;
END_IF
IF GO_LEFT=TRUE THEN
X_POS:=X_POS-1;
END_IF
IF GO_UP=TRUE THEN
Y_POS:=Y_POS-1;
END_IF
IF Y_POS=0 AND X_POS=0 THEN
COUNTER:=COUNTER+1;
END_IF
END_IF
Додаткове завдання 1.
Запрограмуйте даний алгоритм роботи згідно вашого варіанту використовуючи лише один програмний компонент PLC_PRG на мові програмування CFC та командний вхід для арифметичних операторів.
Лістинг програми
PROGRAM PLC_PRG
VAR
TRIG1: F_TRIG;
TRIG2: R_TRIG;
TIMER1: TOF;
TIMER2: TON;
X_POS:INT;
Y_POS:INT;
GO_RIGHT:BOOL;
GO_LEFT:BOOL;
GO_UP:BOOL;
GO_DOWN:BOOL;
COUNTER: INT;
PUSK: BOOL;
END_VAR
Рисунок 2 – Лістинг програми
Додаткове завдання 2
Запрограмуйте даний алгоритм роботи згідно вашого варіанту використовуючи лише один програмний компонент PLC_PRG на мові програмування ST.
Лістинг програми
PROGRAM PLC_PRG
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
X_POS:INT;
Y_POS:INT;
GO_RIGHT:BOOL;
GO_LEFT:BOOL;
GO_UP:BOOL;
GO_DOWN:BOOL;
COUNTER: INT;
PUSK: BOOL;
TRIG1: F_TRIG;
TRIG2: R_TRIG;
TIMER1: TOF;
TIMER2: TON;
WARNINGINV: BOOL;
END_VAR
TRIG1(CLK:=OBSERVER, Q=>);
TRIG2(CLK:=OBSERVER, Q=>);
TIMER1(IN:=TRIG1.Q OR TRIG2.Q , PT:=T#6S , Q=> WARNINGINV, ET=> );
IF WARNINGINV=TRUE THEN WARNING:=FALSE;
ELSE
WARNING:=TRUE; END_IF
TIMER2(IN:= WARNING, PT:=T#10S , Q=>STOP , ET=> );
IF STOP=FALSE AND PUSK=TRUE THEN
IF Y_POS=0 AND X_POS<110 THEN GO_RIGHT:=TRUE;
ELSE
GO_RIGHT:=FALSE;
END_IF
IF X_POS=110 AND Y_POS<80 THEN
GO_DOWN:=TRUE;
ELSE
GO_DOWN:=FALSE;
END_IF
IF Y_POS=80 AND X_POS>0 THEN
GO_LEFT:=TRUE;
ELSE
GO_LEFT:=FALSE;
END_IF
IF X_POS=0 AND Y_POS>0 THEN
GO_UP:=TRUE;
ELSE
GO_UP:=FALSE;
END_IF
IF GO_RIGHT=TRUE THEN
X_POS:=X_POS+1;
END_IF
IF GO_DOWN=TRUE THEN
Y_POS:=Y_POS+1;
END_IF
IF GO_LEFT=TRUE THEN
X_POS:=X_POS-1;
END_IF
IF GO_UP=TRUE THEN
Y_POS:=Y_POS-1;
END_IF
IF Y_POS=0 AND X_POS=0 THEN
COUNTER:=COUNTER+1;
END_IF
END_IF
Рисунок 3 – Візуалізація програми