МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования

«Национальный исследовательский университет «МЭИ»

в г. Волжском

Кафедра Автоматизация технологических процессов и производств

ЛАБОРАТОРНАЯ РАБОТА №8

по дисциплине

«Автоматизация технологических процессов и производств»

Выполнил:

АТП-09

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

Волжский, 2013

Задание.

Реализовать систему, которая должна на заданной плоскости вырезать различные фигуры с заданным расположением и размерами.

Как видно на рисунке, имеется панель для выбора фигур и задания их размеров и положения. Задание значений производится с помощью задатчика. После выбора всех параметров в области справа вырезается определённая фигуры путём перемещения красного квадрата.

Данную систему будем моделировать в программной среде CodeSys. Приведем код основной программы на языке CFC.

Каждый блок в данной программе отвечает за одну из фигур (квадрат, круг, треугольник). На входе – активация блока и ввод значений с задатчика, на выходе – перемещение исполнительного механизма по координатным осям.

Рассмотрим в отдельности каждый блок.

1. Блок quad1.

Данный составной блок реализован на языке SFC.

Рассмотрим структуру каждого действия на языке ST.

Действие Init:

IF quad_on=TRUE THEN count:=0; work_quad:=TRUE;Length_blink:=TRUE; END_IF;

RTRIGInst1(CLK:= but1); but_trig := RTRIGInst1.Q;

IF Length_blink=TRUE AND count=0 AND but_trig=TRUE THEN L1:=input_value; count:=count+1; Length_blink:=FALSE; Width_blink:=TRUE; but_trig:=FALSE; END_IF;

НЕ нашли? Не то? Что вы ищете?

IF Width_blink=TRUE AND count=1 AND but_trig=TRUE THEN W1:=input_value; count:=count+1; width_blink:=FALSE; coor_X:=TRUE; but_trig:=FALSE; END_IF;

IF coor_X=TRUE AND count=2 AND but_trig=TRUE THEN X1:=input_value; count:=count+1; coor_X:=FALSE; coor_Y:=TRUE; but_trig:=FALSE; END_IF;

IF coor_Y=TRUE AND count=3 AND but_trig=TRUE THEN Y1:=input_value; count:=count+1; coor_Y:=FALSE; work:=TRUE; but_trig:=FALSE; END_IF;

Данное действие реализует задание каждого из параметров.

Действие position:

X_pos:=X1; Y_pos:=Y1; paint:=TRUE;

Данное действие реализует задание положения исполнительного механизма.

Действие Paint_X1:

X_pos:=X_pos+1; out_X:=X_pos;

В данном действии осуществляется перемещение исполнительного механизма по оси Х вправо.

Действие Paint_Y1:

Y_pos:=Y_pos+1; out_Y:=Y_pos;

В данном действии осуществляется перемещение исполнительного механизма по оси Y вниз.

Действие Paint_X2:

X_pos:=X_pos-1; out_X:=X_pos;

В данном действии осуществляется перемещение исполнительного механизма по оси Х влево.

Действие Paint_Y2

Y_pos:=Y_pos-1; out_Y:=Y_pos;

В данном действии осуществляется перемещение исполнительного механизма по оси Y вверх.

Действие Return1:

paint:=FALSE ;quad_on:=FALSE;

work:=FALSE; work_quad:=FALSE;

X_pos:=0; Y_pos:=0;

L1:=0; W1:=0; X1:=0; Y1:=0;

В данном действии происходит остановка исполнительного механизма.

2. Блок circle1.

Данный составной блок реализован на языке SFC.

Рассмотрим структуру каждого действия на языке ST.

Действие Init:

IF circle_on=TRUE THEN coor_X:=TRUE; work_circle:=TRUE; count:=0; END_IF;

RTRIGInst1(CLK:= but1);

but_trig := RTRIGInst1.Q;

IF coor_X=TRUE AND count=0 AND but_trig=TRUE THEN X1:=input_value; count:=1; coor_X:=FALSE; coor_Y:=TRUE; but_trig:=FALSE; END_IF;

IF coor_Y=TRUE AND count=1 AND but_trig=TRUE THEN Y1:=input_value; count:=2; coor_Y:=FALSE; rad:=TRUE; but_trig:=FALSE; END_IF;

IF rad=TRUE AND count=2 AND but_trig=TRUE THEN R1:=input_value; rad:=FALSE; but_trig:=FALSE; work:=TRUE; END_IF;

Данное действие реализует задание каждого из параметров.

Действие position:

X_pos:=X1; Y_pos:=Y1; out_X:=X_pos; out_Y:=Y_pos;

paint:=TRUE; work:=FALSE;

Данное действие реализует задание положения исполнительного механизма.

Действие paint_circ:

work:=TRUE;

X_pos:=X1+R1*SIN(i);

Y_pos:=Y1+R1*COS(i);

i:=i+0.1; out_X:=X_pos; out_Y:=Y_pos;

paint:=FALSE;

В данном действии осуществляется перемещение исполнительного механизма по по окружности с заданным радиусом.

Действие end:

X_pos:=0; Y_pos:=0;

R1:=0; X1:=0; Y1:=0;

circle_on:=FALSE;

В данном действии происходит остановка исполнительного механизма.

3. Блок triang1.

Данный блок реализован на языке SFC.

Рассмотрим структуру каждого действия на языке ST.

Действие Init:

IF triang_on=TRUE THEN count:=0; work_triang:=TRUE;

Length_blink:=TRUE; END_IF;

RTRIGInst1(CLK:= but1); but_trig := RTRIGInst1.Q;

IF Length_blink=TRUE AND count=0 AND but_trig=TRUE THEN L1:=input_value; count:=count+1; Length_blink:=FALSE; coor_X:=TRUE; but_trig:=FALSE; END_IF;

IF coor_X=TRUE AND count=1 AND but_trig=TRUE THEN X1:=input_value; count:=count+1; coor_X:=FALSE; coor_Y:=TRUE; but_trig:=FALSE; END_IF;

IF coor_Y=TRUE AND count=2 AND but_trig=TRUE THEN Y1:=input_value; count:=count+1; coor_Y:=FALSE; work:=TRUE; but_trig:=FALSE; END_IF;

Данное действие реализует задание каждого из параметров.

Действие position:

X_pos:=X1; Y_pos:=Y1; paint:=TRUE;

Данное действие реализует задание положения исполнительного механизма.

Действие paint1:

Y_pos:=Y_pos+1; out_Y:=Y_pos;

В данном действии осуществляется перемещение исполнительного механизма по оси Y вниз.

Действие paint2:

X_pos:=X_pos+1; out_X:=X_pos;

В данном действии осуществляется перемещение исполнительного механизма по оси Х вправо.

Действие paint3:

X_pos:=X_pos-1; Y_pos:=Y_pos-1;

out_X:=X_pos; out_Y:=Y_pos;

В данном действии осуществляется перемещение исполнительного механизма по оси Х влево и по оси Y вверх (то есть по закону y=x).

Действие end:

paint:=FALSE; work:=FALSE; work_triang:=FALSE;

X_pos:=0; Y_pos:=0; L1:=0; X1:=0; Y1:=0;

triang_on:=FALSE;

В данном действии происходит остановка исполнительного механизма.