close

Вход

Забыли?

вход по аккаунту

?

Отчет к лз8(АТПиП)

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования
"Национальный исследовательский университет "МЭИ"
в г.Волжском
Кафедра Автоматизация технологических процессов и производств
ЛАБОРАТОРНАЯ РАБОТА №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;
В данном действии происходит остановка исполнительного механизма.
Документ
Категория
Рефераты
Просмотров
7
Размер файла
90 Кб
Теги
лз8, отчет, атпип
1/--страниц
Пожаловаться на содержимое документа