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

УТС 7 семестр / МПС3доп

.docx
Скачиваний:
8
Добавлен:
08.08.2022
Размер:
234.59 Кб
Скачать

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

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

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

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

Кафедра АПУ

отчет

по лабораторным работам №3 (факультативно)

по дисциплине «Микропроцессорные системы»

Тема: ИСПОЛЬЗОВАНИЕ РОБОТА-РУКИ В SCENE VIEWER B&R И ПРИМЕНЕНИЕ ТЕХНОЛОГИИ OPC UA

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

Орещенко Н.В.

Перевертайло Д.А.

Петрухина М.С.

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

Немудрук М.Л.

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

2021

Задание.

Требуется создать платформу, на которой цилиндр анимировано будет выталкивать куб. При касании куба цилиндр окрашивается в цвета.

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

  1. Создание объектов в Scene Viewer.

Создадим объекты, необходимые для работы в Scene Viewer (рис. 1-3).

Рис. 1. Блок и основание.

Рис. 2. Толкающий цилиндр.

Рис. 3. Рабочая поверхность и сталкиваемый куб (оранжевый).

  1. Переменные и библиотеки.

Ниже представлен перечень переменных и используемых библиотек.

Рис. 4. Переменные.

Рис. 5. Библиотеки.

  1. Анимация.

Анимация представлена на рисунках 6-10.

Рис. 6.

Рис. 7.

Рис. 8.

Рис. 9.

Приложение А. С++

#include <bur/plctypes.h> #ifdef _DEFAULT_INCLUDES #include <AsDefault.h> #endif void _INIT ProgramInit(void) { Visual.posY_Cylinder = 190; Visual.posY_Cube = 320; Visual.reversed = false; Visual.materialCylinder = 3; // Grey mate Visual.visibleCube = true; }

// amount of memory to be allocated for heap storage must be specified for every ANSI C++ program with the bur_heap_size variable unsigned long bur_heap_size = 0xFFFF; void _CYCLIC ProgramCyclic(void) { Visual.materialCylinder = 3; if(cmd_return){ LCRRamp_0.enable = 1; LCRRamp_0.x = 190; LCRRamp_0.dy_up = 10; LCRRamp_0.dy_down = 10; LCRRamp(&LCRRamp_0); Visual.posY_Cylinder = LCRRamp_0.y; } else { LCRRamp_0.enable = 1; LCRRamp_0.x = 420; LCRRamp_0.dy_up = 10; LCRRamp_0.dy_down = 10; LCRRamp_0.y_max = 420; LCRRamp_0.y_min = 190; LCRRamp(&LCRRamp_0); Visual.posY_Cylinder = LCRRamp_0.y; //LCRRamp_0.y; }//if // Как только цилиндр касается куба, они перемещаются вместе if (Visual.posY_Cylinder >= CONNECT_CUBE_CYLINDER){ Visual.posY_Cube = Visual.posY_Cylinder + 100; Visual.materialCylinder = 4; }//if // куб вышел за рабочую поверзность и исчез if(Visual.posY_Cylinder == CUB_FALL){ Visual.visibleCube = false; Visual.materialCylinder = 5; cmd_return = true; TON_info.IN = 1; TON_info.PT = 5; TON(&TON_info); }//if }

Соседние файлы в папке УТС 7 семестр