Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
20591.doc
Скачиваний:
14
Добавлен:
08.11.2019
Размер:
244.74 Кб
Скачать

Задание на выполнение лабораторной работы:

Необходимо разработать подпрограмму, которая в качестве фактических па­раметров получает два значения:

— номер степени робота (0 для степени X, 1 для степени Y или для Z);

— изменение обобщенной координаты степени.

Если изменение обобщенной координаты положительно, то движение степени должно осуществляться в направлении к концевому датчику конечного положения, а если отрицательно — в направлении к концевому датчику начального положения. Подпрограмма завершает работу в следующих случаях:

— если степень закончила движение в заданном направле­нии и расстояние пройдено полностью (возвращается 0);

— если в процессе управления движением степени обнару­жилось, что сработал какой-либо из концевых датчиков (возвра­щается количество импульсов от инкрементного датчика, которое осталось не пройденным);

Тестовое задание.

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

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

Приложение 1

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

Запуск звена1 вправо

int x=1, y=3, z=3, w=3;

byte olddvg0=3;

CountDvg0(x,y,z,w,olddvg0);

SetDvgRegs(CountDvg0(1,3,3,3,3),CountDvg1(3,3,3,3,3,3,3));

Запуск звена 1 влево

int x=-11, y=3, z=3, w=3;

byte olddvg0=3;

CountDvg0(x,y,z,w,olddvg0);

SetDvgRegs(CountDvg0(-1,3,3,3,3),CountDvg1(3,3,3,3,3,3,3));

Запуск звена 2 вправо

int x=3, y=1, z=3, w=3;

byte olddvg0=3;

CountDvg0(x,y,z,w,olddvg0);

SetDvgRegs(CountDvg0(3,1,3,3,3),CountDvg1(3,3,3,3,3,3,3));

Запуск звена 2 влево

int x=3, y=-1, z=3, w=3;

byte olddvg0=3;

CountDvg0(x,y,z,w,olddvg0);

SetDvgRegs(CountDvg0(3,-1,3,3,3),CountDvg1(3,3,3,3,3,3,3));

Запуск звена 3 вправо

int x=3, y=3, z=1, w=3;

byte olddvg0=3;

CountDvg0(x,y,z,w,olddvg0);

SetDvgRegs(CountDvg0(3,3,1,3,3),CountDvg1(3,3,3,3,3,3,3));

Запуск звена 3 влево

int x=3, y=3, z=-1, w=3;

byte olddvg0=3;

CountDvg0(x,y,z,w,olddvg0);

SetDvgRegs(CountDvg0(3,3,-1,3,3),CountDvg1(3,3,3,3,3,3,3));

Включение рабочего органа

int x=3, y=3, z=3, w=3;

int f=0, r=0, d0=1, d1=1, d2=1, ew=0;

byte olddvg0=3;

byte olddvg1=3;

SetDvgRegs(CountDvg0(x,y,z,w,olddvg0),CountDvg1(f,r,d0,d1,d2,ew,olddvg1));

Выключение рабочего органа

int x=3, y=3, z=3, w=3;

int f=0, r=0, d0=0, d1=0, d2=0, ew=0;

byte olddvg0=3;

byte olddvg1=3;

SetDvgRegs(CountDvg0(x,y,z,w,olddvg0),CountDvg1(f,r,d0,d1,d2,ew,olddvg1));

Получить значение концевых датчиков и датчиков оборотов двигателей из СУ.

if(Out32) {

try {

toolStripStatusLabel2->Text = "Состояние: " + (CheckOnline() ? "online" : "offline");

byte s0=0,s1=0,s2=0;

GetSnsRegs(&s0,&s1,&s2);

} catch (...) {}

}

}

Получить значение левого концевого датчика звена 1 и вывести его на форму в LABEL

if(Out32) {

try {

toolStripStatusLabel2->Text = "Состояние: " + (CheckOnline() ? "online" : "offline");

byte s0=0,s1=0,s2=0;

GetSnsRegs(&s0,&s1,&s2);

label7->Text = TestBit(&s0,0).ToString();

} catch (...) {}

}

}

Получить значение правого концевого датчика звена 1 и вывести его на форму в LABEL

if(Out32) {

try {

toolStripStatusLabel2->Text = "Состояние: " + (CheckOnline() ? "online" : "offline");

byte s0=0,s1=0,s2=0;

GetSnsRegs(&s0,&s1,&s2);

label8->Text = TestBit(&s0,1).ToString();

} catch (...) {}

}

}

Получить значение левого концевого датчика звена 2 и вывести его на форму в LABEL

if(Out32) {

try {

toolStripStatusLabel2->Text = "Состояние: " + (CheckOnline() ? "online" : "offline");

byte s0=0,s1=0,s2=0;

GetSnsRegs(&s0,&s1,&s2);

label10->Text = TestBit(&s0,3).ToString();

} catch (...) {}

}

}

Получить значение правого концевого датчика звена 2 и вывести его на форму в LABEL

if(Out32) {

try {

toolStripStatusLabel2->Text = "Состояние: " + (CheckOnline() ? "online" : "offline");

byte s0=0,s1=0,s2=0;

GetSnsRegs(&s0,&s1,&s2);

label11->Text = TestBit(&s0,4).ToString();

} catch (...) {}

}

}

Получить значение левого концевого датчика звена 3 и вывести его на форму в LABEL

if(Out32) {

try {

toolStripStatusLabel2->Text = "Состояние: " + (CheckOnline() ? "online" : "offline");

byte s0=0,s1=0,s2=0;

GetSnsRegs(&s0,&s1,&s2);

label13->Text = TestBit(&s1,0).ToString();

} catch (...) {}

}

}

Получить значение правого концевого датчика звена 3 и вывести его на форму в LABEL

if(Out32) {

try {

toolStripStatusLabel2->Text = "Состояние: " + (CheckOnline() ? "online" : "offline");

byte s0=0,s1=0,s2=0;

GetSnsRegs(&s0,&s1,&s2);

label14->Text = TestBit(&s1,1).ToString();

} catch (...) {}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]