Если проанализировать выражения (3.10) и (3.17) относительно допустимой погрешности позиционирования
, то можно сделать вывод, что при увеличении допустимой погрешности позиционирования (см. рис. 3.5, 3.6.) наблюдается уменьшение времени перемещения, что можно использовать на операциях с низким требованием к точности, хотя это уменьшение весьма не значительное.4. Программные средства для исследования динамической модели портального манипулятора
4.1 Программа для вычисления параметров переходного процесса портального манипулятора
Для исследования полученной динамической модели, построения графиков приведенных в работе, использовалась программа “Модель портального манипулятора МРЛ-901П в момент позиционирования” (см. рис. 4.1). Программа разработана для среды WIN32 API на языке C++ с использованием компилятора Borland C++ 5.02 и может выполняться на операционных системах Windows 95/98 и Windows NT.
Вычисление параметров переходного процесса в программе осуществляется с использованием выражения (2.31) при помощи которого вычисляется амплитуда колебаний рабочего органа манипулятора. По полученным значениям строится график переходного процесса и график зависимости времени переходного процесса от точности позиционирования.
Ввод исходных данных осуществляется при помощи диалогового окна “Исходные данные” при выборе пункта меню “Расчет/Переходный процесс” (см. рис. 4.2). В диалоговое окно (см. рис. 4.3)вводятся необходимые исходные данные. После ввода исходных данных программа вычисляет амплитуду и длительность переходного процесса и выводит результаты расчетов в виде графиков.
4.2 Программа для вычисления времени переходного процесса и оптимальной скорости
Для практического использования динамической модели при разработке технологических процессов, вычисления главных параметров – времени переходного процесса и оптимальной скорости позиционирования, используются выражения (2.33) и (3.19), которые были использованы при создании программы “Mrl” (см. рис. 4.4).
Программа “Mrl” использует текстовую консоль для ввода и вывода данных. Исходные данные и результаты вычислений записываются в файл. При необходимости, для задания имени файла результатов вычислений, можно использовать параметры командной строки.
Программа написана на языке С++ с использованием стандартных функций и может быть откомпилирована для работы в операционных системах Dos, WIN32 и UNIX. Текст программы приведен в приложении к данной работе.
Заключение
В ходе выполнения дипломной работы была построена динамическая модель портального манипулятора, параметры которой хорошо соответствуют параметрам реального манипулятора. При исследовании модели особое внимание уделялось получению выражений для определения оптимальных значений скорости движения рабочего органа с целью увеличения быстродействия манипулятора. Также в ходе исследования определены численные значения коэффициентов, входящих в динамическую модель манипулятора при его позиционировании. Установлено хорошее соответствие (ошибка в пределах 1...2%) расчетного значения продолжительности переходного процесса при позиционировании и реального позиционирования манипулятора. Разработаны методы влияния на вид и продолжительность переходного процесса путем управляемого регулирования технологических факторов: натяжения зубчатого ремня и взаимного расположения подвижных частей манипулятора МРЛ-901П. Исследованы диапазоны варьирования, определены значения технологических факторов, обеспечивающие максимальную производительность роботизированного оборудования, создаваемого на базе робота МРЛ 901П.
Проведенные исследования могут быть использованы для определения рациональных динамических параметров манипуляторов, разработки технологических процессов, а также в учебном процессе при проведении лабораторных работ.
ПРИЛОЖЕНИЕ
В приложении приведены программы для расчета параметров динамической модели портального манипулятора.
// File Mrl.сpp
// Программа для расчета времени переходного процесса и оптимальной
// скорости позиционирования
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int Transient(double&,
double,
double,
double,
double,
double );
int OptimalSpeed(double&,
double,
double,
double,
double );
char * s_title = "\n Расчет времени переходного процесса и оптимальной "
"скорости позиционирования\n Разработал Д.В. Грачев 1999"
" E-Mail denis@mail.saratov.ru";
char * s_v0 = "\n\n Иcходные данные для расчетов:\n\n Скорость"
" позиционирования рабочего органа, мм/c - # ";
char * s_d = " Требуемая точность позиционирования рабочего органа, мм - # ";
char * s_b = " Коэффициент демпфирования кинематической"
" схемы манипулятора, кг/c - # ";
char * s_c = " Жесткость кинематической схемы манипулятора, Н/м - # ";
char * s_m = " Масса подвижной части манипулятора, кг - # ";
char * s_inp = "%lf";
char * s_out = "%g\n";
char * s_outp = "\n Результаты расчетов: \n\n Длительность переходного"
" процесса при заданной скорости %g м/c\n составит - %g с."
"\n Оптимальная скорость позиционирования - %g мм/c\n";
char * fn = "resultat.txt";
char * s_badparam = "\n Недопустимый параметр - %c";
void inpparam(char** p)
{
if (*p[1] != 'f'){
printf (s_badparam, *p[1]);
exit(0);
}
strcpy(fn, p[2]);
}
int main(int as, char** av)
{
double t, v0, opv0, b, c, d, m;
printf (s_title);
if (as > 1) inpparam(av);
*strstr(s_v0,"#") = 0;
*strstr(s_d,"#") = 0;
*strstr(s_b,"#") = 0;
*strstr(s_c,"#") = 0;
*strstr(s_m,"#") = 0;
printf (s_v0);
scanf (s_inp, &v0);
v0 /= 1000;
printf (s_d);
scanf (s_inp, &d);
d /= 1000;
printf (s_b);
scanf (s_inp, &b);
printf (s_c);
scanf (s_inp, &c);
printf (s_m);
scanf (s_inp, &m);
Transient(t, v0, d, b, c, m);
OptimalSpeed(opv0, d, b, c, m);
opv0 *= 1000;
printf (s_outp, v0, t, opv0);
FILE * f_res = fopen(fn, "a+");
v0 *= 1000;
fprintf (f_res,strcat(s_v0,s_out), v0);
d *= 1000;
fprintf (f_res,strcat(s_d,s_out), d);
fprintf (f_res,strcat(s_b,s_out), b);
fprintf (f_res,strcat(s_c,s_out), c);
fprintf (f_res,strcat(s_m,s_out), m);
fprintf (f_res,s_outp, v0, t, opv0);
return 0;
}
// File speed.cpp
// Вычисление оптимального значения скорости в момент позиционирования
// по исходным данным
#include <math.h>
int OptimalSpeed(double& V0, // Начальная скорость
double Delta, // Требуемое значение точности позиционирования
double betta, // Коэффициент демпфирования
double C, // Жесткость
double m) // Масса
{
double mc2 = 2*m/C;
V0 = Delta * (1/mc2) * sqrt( fabs( pow(betta/C,2
) - 2 * mc2 ) );
return 0;
}
// File transient.cpp
// Вычисление времени перходного процесса
// по исходным данным
#include <math.h>
int Transient(double& t,// Время переходного процесса
double V0, // Начальная скорость
double Delta, // Требуемое значение точности позиционирования
double betta, // Коэффициент демпфирования
double C, // Жесткость
double m) // Масса
{
double mc2 = 2*m/C;
t = (log(V0)-log(Delta)-log(sqrt( fabs(pow(betta/C,2)-2*mc2
)
)/mc2 )
)*2*m/betta;
return 0;
}