Мехатронная колебательная система с компьютерным управлением
Разработка системы прямого компьютерного управления двузвенным мини-роботом на качелях. Использование сервопривода фирмы Hitec HS-85BB+ в качестве исполнительного механизма. Обратная связь с объектом управления через встроенную программную модель.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 20.10.2011 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
нормируемая освещенность - 300 лк;
показатель дискомфорта - < 40;
коэффициент пульсации освещения < 15 %.
Для освещения рабочих мест в учебной лаборатории можно использовать некоторые светильники серии ЛСО, ЛПО и другие. Для расчетов возьмем светильник типа ЛСО 02-2Х40/Р-02, который имеет следующие параметры:
· тип лампы ЛБ40;
· класс светораспределения Р;
· тип КССД;
· КПД 65%;
· защитный угол 30°;
· степень защиты 20;
· климатическое исполнение У4.
Расчет количества светильников
Количество светильников указанного типа должны обеспечивать необходимую нормируемую освещенность рабочих мест (300 лк). Для расчета числа светильников используется формула:
n = ЕnКзSz/ФлUОУ,
где
· Фл - общий световой поток, лм,
· z - неравномерность освещения,
· S - площадь помещения, м2,Кз - коэффициент запаса,
· Еn - необходимая нормируемая освещенность, лк,
· Uoy - коэффициент использования.
Параметры лаборатории:
S = 40 м2, Кз = 1,5 (в случае разрядных ламп), Еn = 300 лк,
Параметры светильников:
z = 1.1 (для люминесцентных ламп при расположении их в виде линий).
Для определения Uoy необходимо знать индекс помещения iп, коэффициенты отражения потолка, стен и пола, соответственно, рп, рс и рр.
Для заданного помещения эти значения равны:
iп =1.25, рп = 0.7, рс = 0,3, рр = 0.1.
Для этих значений и КСС светильника типа Д по соответствующим таблицам было найдено значение Uoy = 0.5.
Светильник ЛСО 02-2Х40/Р-02 состоит из двух ламп ЛБ40 со световым потоком 3200 лм, поэтому общий световой поток светильника Фл = 2x3200 лм= 6400 лм.
Расчет п по формуле 5.1:
n = (300 лк*1.5*40 м2*1.1) / (6400 лм*0.5) ? 6.
Таким образом, для обеспечения нормальной освещенности рабочих мест учебной лаборатории необходимы 6 светильников типа ЛСО 02-2Х40/Р-02.
6.4 Требования к параметрам дисплея
При разработке данного проекта использовался планшетный компьютер (ноутбук) с ЖК дисплеем фирмы Fujitsu. Размер дисплея - 13,3 дюйма (33,78 см). Рабочая разрешающая способность дисплея - 1024х768, что соответствует стандарту XGA. Яркость монитора - 280 кд/м2, что позволяет выставить наиболее комфортную яркость и соответствует приведенным выше требованиям к ВДТ. Частота обновления эквивалентна 120 Гц для ЭЛТ-мониторов (по требованиям приемлемая частота обновления - 75 Гц). Размер пикселя - 0,269 мм.
С позиций гигиены зрения компьютер предлагают устанавливать так, чтобы, подняв глаза от экрана, можно было увидеть самый удаленный предмет в комнате. Возможность перевести взгляд на дальнее расстояние - один из самых эффективных способов разгрузки зрительной системы во время работы с компьютером.
Ноутбук позволяет устанавливать дисплей наиболее удобным для пользователя образом. В процессе работы ноутбук был установлен на расстоянии 90 см от пользователя, что соответствует эргономическим требованиям.
Заключение
В процессе работы над проектом было произведено моделирование и произведена реализация и функциональное тестирование отдельных модулей компьютерной системы управления мехатронным колебательным объектом типа "качели", представляющим собой слабоуправляемую систему.
В процессе моделирования, которое производилось с использованием системы MatLab был выбран логический алгоритм управления. Была спроектирована и протестирована программная модель объекта управления, необходимая для организации виртуальной обратной связи.
Была произведена реализация логического задатчика управления и его функциональное тестирование.
В результате была доказана принципиальная возможность компьютерного управления слабоуправляемым объектом.
Список использованных источников
1. Новиков Ю.В., Калашников О.А., Гуляев С.Э. Разработка устройств сопряжения для персонального компьютера типа IBM PC. Практ. Пособие - М: ЭКОМ., 1997 - 224 с.
2. Колесников А.А. Синергетическая теория управления: концепция, методы, тенденции развития // Известия ТРТУ. Тематический выпуск "Синергетика и проблемы управления", 2001, № 5б с 7-27
3. Топчиев Б.В. Синергетическое управления мобильными роботами. "Нелинейный мир", вып. № 4, т.2, 2004г.
4. Малаян К.Р. Безопасность при работе с компьютером - СПб: Издательство СПбГПУ, 2002 - 124с.
5. Изерман, Р. Цифровые системы управления: Пер. с англ. - М: Мир, 1984 - 542 с.
6. Цыпкин, Яков Залманович. Теория нелинейных импульсных систем - М: Наука, 1973 - 414 с.
7. Черноусько Ф.Л., Акуленко Л.Д., Соколов Б.Н. Управление колебаниями - М: Наука, 1980 - 384с.
Приложение 1. Техническое задание
Программа "control_system"
Техническое задание
Листов 3
РП.68124-01
2009
Аннотация
Данный документ содержит задание на разработку программы управления мехатронным колебательным объектом типа "качели".
1. Введение
Программа "control_system. c" предназначена для управления двузвенным мини-роботом. В качестве исполнительного механизма используется сервопривод фирмы Hitec HS-85BB+. Для разработки, загрузки и запуск программы необходима ЭВМ с установленной ОС Linux с версией ядра 2.6.
2. Основания для разработки
Программа разрабатывается для лаборатории "Электромеханические системы".
3. Назначение разработки
Программа предназначена для анализа возможности прямого компьютерного управления сложными динамическими объектами с организацией обратной связи через модель.
4. Требования к программе
Требования к функциональным характеристикам
Программа должна выполнять следующие функции:
1) вычислять текущее положение объекта управления, используя его математическую модель
2) рассчитывать управление двигателем мини-робота по заранее известному закону (логический закон управления)
3) выдавать на LPT-порт ЭВМ управляющий сигнал в соответствии с рассчитанным значением управления.
4) считывать из конфигурационного файла параметры управления
Требования к надежности
Программа должна выполняться в режиме реального времени. Это осуществляется при помощи средств операционной системы.
Условия эксплуатации
Программа может функционировать в любых условиях пригодных для эксплуатации оборудования, на котором предполагается её использовать.
Требования к составу и параметрам технических средств
Программа должна быть рассчитана на использование на ЭВМ типа РС с процессором класса Pentium III 800 МГц и выше, ОЗУ 128 МВ, подсистемой графического вывода типа SVGA. Обязательно наличие операционной системы Linux с ядром версии не ниже 2.6 Связь с сервоприводом HS-85BB+ осуществляется с помощью специального кабеля.
Требования к транспортировке и хранению
Для транспортировки и хранения должны быть использованы накопители на основе гибких магнитных дисках класса 3,5 дюйма, отформатированные на 1.44МВ.
5. Требования к программной документации
С программой должны быть предоставлены следующие программные документы:
1) Техническое задание
2) Описание программы
3) Текст программы
4) Программа и методика испытаний
6. Технико-экономические показатели
С помощью программы должна быть достигнута возможность включения в цикл лабораторных работ работы по изучению прямого компьютерного управления. Программа не направлена на получение прямой экономической выгоды.
7. Стадии и этапы разработки
Программа должна быть разработана в срок до 31.12.2008 года.
8. Порядок контроля и приемки
Основные параметры приёмки:
стабильность работы при нескольких перезапусках (не менее 10 раз). Более подробно способ проверки описан в документе "Программа и методика испытаний".
Стабильность работы при различных параметрах запуска.
Приложение 2. Описание программы
Программа "control_system"
Описание программы
Листов 2
РП.68124-01.13 01
2009
Аннотация
Данный документ содержит описание программы, которая предназначена для управления двузвенным мини-роботом, представляющим собой колебательную мехатронную систему типа "качели". Документ содержит описание структуры программы, способов запуска программы, а так же форматов входных данных, необходимых для корректной работы программы, и формате данных-результатов работы программы.
1. Общие сведения
Программа "control_system" предназначена для управления двузвенным мини-роботом типа "качели", с исполнительным механизмом - сервоприводом Hitec HS-85BB+. Программа разработана на языке C. Для разработки, загрузки запуска программы необходима ЭВМ с установленной на ней операционной системой Linux с версией ядра не ниже 2.6.1.1 Так же ЭВМ должна быть оснащена параллельным (LPT) портом.
2. Функциональное назначение
Программа "control_system" предназначена для управления двузвенным мини-роботом. Программа получает данные о положении робота из встроенной виртуальной модели, формирует управляющее воздействие в соответствии с логическим алгоритмом управления движением маятника переменной длины и выдает управляющее воздействие через LPT-порт на исполнительный элемент (сервопривод).
3. Описание логической структуры
Описание алгоритма работы программы приведено в подразделе 4.3.
4. Используемые технические средства
Программа рассчитана на использование на ЭВМ типа РС с процессором класса Pentium III 800 МГц и выше, ОЗУ 128 МВ, подсистемой графического вывода типа SVGA. Обязательно наличие операционной системы Linux с ядром версии не ниже 2.6 Связь с сервоприводом HS-85BB+ осуществляется с помощью специального кабеля.
5. Вызов и загрузка
Включение питания системы осуществляется следующим образом:
· Включается ЭВМ с помощью кнопки питания
· Включается монитор
· Загружается операционная система Linux
· Если объект управления не подключен к LPT-порту - подключается объект управления.
· Поворотом тумблера включается блок питания. О включении должна сигнализировать красная лампа на блоке питания
· Установка готова к работе.
Вызов программы осуществляется следующим образом:
· Если программа отсутствует на ЭВМ - необходимо скопировать ее. Каталог, в котором находится программа, далее абсолютный путь к этой директории обозначим как %homedir.
· Проверить конфигурационный файл "control_system. cfg" и внести необходимые изменения
· В linux shell (bash, kshell или другом) запустить программу “%homedir/control_system. exe [time]". time - опциональный параметр запуска программы, определяющий время выполнения программы. По умолчанию программа будет выполняться 5 минут.
6. Выходные данные
В качестве выходных данных в работе программы в выходной файл "control_system. dat" выводятся последние 1000 точек в следующем формате:
метка_времени положениеу правление
где положение - текущее положение системы (угол поворота маятника), управление - угол поворота сервопривода в момент времени, обозначенный в метке_времени (измеряется в миллисекундах с момента старта программы).
Приложение 3. Текст программы
Программа "control_system"
Текст программы
Листов 4
РП.68124-01.12 01
2009
Аннотация
Данный документ содержит текст программы "control_system", которая предназначена для управления двузвенным мини-роботом, представляющим собой колебательную системы типа "качели". Документ содержит тексты основного файла "control_system. c", написанного на языке C.
Текст программы
/*********************************************************************
*
* control_system. c: программа управления сервоприводом
*
*
* Автор: Сичевая Э. А.
*
********************************************************************/
#include <stdio. h>
#include <stdlib. h>
#include <unistd. h>
#include <sched. h>
#include <errno. h>
#include <sys/io. h>
#include <pthread. h>
#include <math. h>
#define ge 9.8 // ускорение свободного падения
#define f00.5 // значение по умолчанию для начального угла
#define x04 // значение по умолчанию для начальной длины подвеса
#define dx00 // начальная скорость подвеса
#define ro0.15 // значение по умолчанию коэффициента трения
#define hd0.0002 // значение по умолчанию для шага интегрирования
#define md0.5 // значение по умолчанию для массы подвеса
// значения по умолчанию для геометрических параметров объекта управления
#define l110
#define l210
#define L22
/*
Структура для хранения информации о текущем положении точки,
а также текущем и предыдущем значении первой и второй производной
*/
typedef struct {
double val;
double d [2];
double d2 [2];
} point_data;
void SU_Regulator (point_data*, point_data*);
double SU_Converter (double x);
int main (int argc, char* argv [])
{
/* Для значений положения и угла */
point_datax, f;
int iter, i;
double h, m;
struct timespec TimeSpec;
struct sched_param SchedParam;
struct timespec ttt, ret;
FILE *pFOut;
int nNumIter, nDivider;
nNumIter = 1000000;
nDivider = 100;
h = hd;
m = md;
/*
открываем выходной файл для перезаписи
*/
if ( (pFOut = fopen ("output. dat","w")) == NULL)
{
if ( (pFOut = fopen ("output. dat","a")) == NULL)
{
printf ("Cannot open file. failed");
return - 1;
}
}
/*обнуляем значения структур*/
memset (&SchedParam, 0, sizeof (struct sched_param));
memset (&TimeSpec, 0, sizeof (struct timespec));
memset (&ttt, 0, sizeof (struct timespec));
memset (&ret, 0, sizeof (struct timespec));
SchedParam. sched_priority = 2;
/*
производим вычисления
*/
/*выставляем дисциплину управления*/
if (sched_setscheduler (0, SCHED_FIFO, &SchedParam))
{
printf ("Error while setting scheduler parameters, exiting. \n");
return - 1;
}
/*получаем привелегии для доступа к устройствам ввода-вывода*/
if (ioperm (LPT_BASE, 1, 1))
{
printf ("Error while obtaining IO permissions, exiting. \n");
return - 1;
}
/*
устанавливаем начальные значения
*/
x. d2 [0] = 0;
x. d [0] = dx0;
x. val = x0;
f. d2 [0] = 0;
f. d [0] = 0;
f. val = f0;
ttt. tv_sec = 0;
ttt. tv_nsec = 15000000;
TimeSpec. tv_sec = 0;
TimeSpec. tv_nsec = 66666; // количество микросекунд, приходящихся на 1 градус
for (iter = 0; iter < nNumIter; iter++)
{
/*выводим 1 в 1 дата-вывод LPT-порта*/
outb (0x01, LPT_BASE);
/*ждем до окончания импульса в зависимости от выводимого угла (по таблице angle_var) */
for (i = 0; i < (int) f. val; i++)
{
nanosleep (&TimeSpec);
}
outb (0x00, LPT_BASE);
/*
вычисления текущего положения модели
*/
f. d2 [1] = x. d [0] *f. d [0] /x. val - ge*f. val/x. val - (ro * f. d [0]) / (m*x. val*x. val);
f. d [1] = f. d [0] + h/2 * (f. d2 [1] +f. d2 [0]);
f. val = f. val + h/2 * (f. d [1] + f. d [0]);
f. d2 [0] = f. d2 [1];
f. d [0] = f. d [1];
if (! (iter % nDivider))
{
SU_Regulator (&x, &f);
fprintf (pFOut, "%i \t %f \t %f \t %f \t %f \t\n", iter, f. val, x. val, x. d [1], SU_Converter (x. val));
}
/*засыпаем на 15 мс*/
nanosleep (&ttt, NULL);
}
return 0;
}
/**************************************************************************
*
* void SU_Regulator (point_data* x, point_data* f)
* Описание функции: Функция регулятора. Производит вычисление
*значения управляющего сигнала.
*
* Входные параметры: f - указатель на структуру типа point_data, в
*которой хранятся значения угла подвеса,
*его скорости и ускорения
* Выходные параметры: x - указатель на структуру типа point_data, в
*которой хранятся значения положения подвеса,
*его скорости и ускорения - сигнал управления
*
**************************************************************************/
void SU_Regulator (point_data* x, point_data* f)
{
doubleampl_f, /* амплитуда колебаний */
k_ampl, /* коэффициент усиления регулятора ускорения */
A_ampl, /* дополнительный коэфициент */
u_reg; /* управление */
signedsDf,/* Знак скорости изменения угла */
sF,/* Знак угла */
sD2x; /* Знак ускорения изменения положения подвеса */
k_ampl = 5;
A_ampl = 0.3;
/* Вычисляем знаки углов */
sDf = (f->d [1] > 0);
sF= (f->val> 0);
sD2x = sDf ^ sF; /* XOR */
sD2x = sD2x * 2 - 1; /* Приводим к базису (1; - 1) */
/* Вычисляем амплитуду угла */
ampl_f = (k_ampl*A_ampl) * (A_ampl - fabs (f->val));
x->d2 [1] = ampl_f*sD2x;
x->d [1] = x->d [0] + h/2 * (x->d2 [1] + x->d2 [0]);
x->val = x->val + h/2 * (x->d [1] + x->d [0]);
x->d2 [0] = x->d2 [1];
x->d [0] = x->d [1];
u_reg = f->d [1] * x->d [1];
return;
}
/**************************************************************************
*
* void SU_Regulator (point_data* x, point_data* f)
* Описание функции: Функция преобразования значения положения подвеса
*в угол поворота исполнительного механизма.
*
* Входные параметры: x - значение положения подвеса
*
* Выходные параметры: фактический угол поворота исполнительного механизма
*
**************************************************************************/
double SU_Converter (double x)
{
return acos ( ( (l1*l1) + (l2*l2) - (L-x) * (L-x)) / (2*l1*l2));
}
Приложение 4. Программа и методика испытаний
Программа "control_system"
Программа и методика испытаний
Листов 2
РП.68124-01.51 01
Аннотация
Данный документ содержит методику испытаний программы "control_system", которая предназначена для управления двузвенным мини-роботом типа "качели". Испытания программы представлены в пункте 4.4 пояснительной записки.
1. Объект испытания
Объектом испытания выступает программа "control_system". Программа "control_system" предназначена для управления двузвенным мини-роботом типа "качели".
2. Цель испытаний
Цель испытаний - соотсве6тствие программы техническому заданию.
3. Требования к программе
Программа должна соответствовать функциональным характеристикам, приведенным в техническом задании.
4. Требования к программной документации
К моменту испытаний должны быть представлены следующие программные документы:
1) Техническое задание
2) Описание программы
3) Программа и методика испытаний
5. Средства и порядок испытаний
Для проведения испытаний необходимо иметь все технические средства, указанные в описании программы.
6. Программа и методика испытаний
В первую очередь необходимо произвести частичное функциональное тестирование программы. Убедиться, что программа производит управления сервоприводом в заданной последовательности от 0 до 180 градусов включительно. Убедиться, что программа формирует корректный управляющий сигнал.
7. Представление результатов испытаний
Представление удобнее всего делать с помощью графиков, формируемых из данных, выводимых в файл результатов программы.
Приложение 5. Текст программы тестовой модели
/*********************************************************************
*
* control_model. cpp: файл содержит функции, используемые для исследования
*корректности модели робота и дискретной системы
*управления.
*
* Автор: Сичевая Э. А.
*
********************************************************************/
#include "stdafx. h"
#include "math. h"
#define ge 9.8
#define f00.5
#define x04
#define dx00
#define ro0.15
#define h0.0002
#define m0.5
#define h0.0002
#define l11
#define l21
#define L4
/*
Структура для хранения информации о текущем положении точки,
а также текущем и предыдущем значении первой и второй производной
*/
typedef struct {
double val;
double d [2];
double d2 [2];
} point_data;
void SU_Regulator (point_data*, point_data*);
double SU_Converter (double x);
int main (int argc, char* argv [])
{
/* Для значений положения и угла */
point_datax, f;
int iter;
FILE *pFOut;
int nNumIter, nDivider;
/*
считываем аргументы командной строки,
иначе - заполняем значениями по умолчанию
*/
nNumIter = 1000000;
nDivider = 100;
/*
устанавливаем начальные значения
*/
x. d2 [0] = 0;
x. d [0] = dx0;
x. val = x0;
f. d2 [0] = 0;
f. d [0] = 0;
f. val = f0;
/*
открываем выходной файл для перезаписи
*/
if ( (pFOut = fopen ("output. dat","w")) == NULL)
{
if ( (pFOut = fopen ("output. dat","a")) == NULL)
{
printf ("Cannot open file. failed");
return - 1;
}
}
/*
производим вычисления
*/
for (iter = 0; iter < nNumIter; iter++)
{
/*
вычисления текущего положения модели
*/
f. d2 [1] = x. d [0] *f. d [0] /x. val - ge*f. val/x. val - (ro * f. d [0]) / (m*x. val*x. val);
f. d [1] = f. d [0] + h/2 * (f. d2 [1] +f. d2 [0]);
f. val = f. val + h/2 * (f. d [1] + f. d [0]);
f. d2 [0] = f. d2 [1];
f. d [0] = f. d [1];
if (! (iter % nDivider))
{
SU_Regulator (&x, &f);
fprintf (pFOut, "%i \t %f \t %f \t %f \t %f \t\n", iter, f. val, x. val, x. d [1], SU_Converter (x. val));
}
}
return 0;
}
/**************************************************************************
*
* void SU_Regulator (point_data* x, point_data* f)
* Описание функции: Функция регулятора. Производит вычисление
*значения управляющего сигнала.
*
* Входные параметры: f - указатель на структуру типа point_data, в
*которой хранятся значения угла подвеса,
*его скорости и ускорения
* Выходные параметры: x - указатель на структуру типа point_data, в
*которой хранятся значения положения подвеса,
*его скорости и ускорения - сигнал управления
*
**************************************************************************/
void SU_Regulator (point_data* x, point_data* f)
{
doubleampl_f, /* амплитуда колебаний */
k_ampl, /* коэффициент усиления регулятора ускорения */
A_ampl, /* дополнительный коэфициент */
u_reg; /* управление */
signedsDf,/* Знак скорости изменения угла */
sF,/* Знак угла */
sD2x; /* Знак ускорения изменения положения подвеса */
k_ampl = 5;
A_ampl = 0.3;
/* Вычисляем знаки углов */
sDf = (f->d [1] > 0);
sF= (f->val> 0);
sD2x = sDf ^ sF; /* XOR */
sD2x = sD2x * 2 - 1; /* Приводим к базису (1; - 1) */
/* Вычисляем амплитуду угла */
ampl_f = (k_ampl*A_ampl) * (A_ampl - fabs (f->val));
x->d2 [1] = ampl_f*sD2x;
x->d [1] = x->d [0] + h/2 * (x->d2 [1] + x->d2 [0]);
x->val = x->val + h/2 * (x->d [1] + x->d [0]);
x->d2 [0] = x->d2 [1];
x->d [0] = x->d [1];
u_reg = f->d [1] * x->d [1];
return;
}
/**************************************************************************
*
* void SU_Regulator (point_data* x, point_data* f)
* Описание функции: Функция преобразования значения положения подвеса
*в угол поворота исполнительного механизма.
*
* Входные параметры: x - значение положения подвеса
*
* Выходные параметры: фактический угол поворота исполнительного механизма
*
**************************************************************************/
double SU_Converter (double x)
{
return acos ( ( (l1*l1) + (l2*l2) - (L-x) * (L-x)) / (2*l1*l2));
}
Приложение 6. Текст программы программного управления сервоприводом
/*********************************************************************
*
* model. cpp: программа управления сервоприводом
*
*
* Автор: Сичевая Э. А.
*
********************************************************************/
#include "stdafx. h"
#include <math. h>
#define ge 9.8 // ускорение свободного падения
#define f00.5 // значение по умолчанию для начального угла
#define x04 // значение по умолчанию для начальной длины подвеса
#define dx00 // начальная скорость подвеса
#define ro0.15 // значение по умолчанию коэффициента трения
#define h0.0002 // значение по умолчанию для шага интегрирования
#define m0.5 // значение по умолчанию для массы подвеса
// значения по умолчанию для геометрических параметров объекта управления
#define l110
#define l210
#define L22
/*
Структура для хранения информации о текущем положении точки,
а также текущем и предыдущем значении первой и второй производной
*/
typedef struct {
double val;
double d [2];
double d2 [2];
} point_data;
void SU_Regulator (point_data*, point_data*);
double SU_Converter (double x);
int main (int argc, char* argv [])
{
/* Для значений положения и угла */
point_datax, f;
int iter, i;
double h, m;
FILE *pFOut;
int nNumIter, nDivider;
nNumIter = 1000000;
nDivider = 100;
/*
открываем выходной файл для перезаписи
*/
if ( (pFOut = fopen ("output. dat","w")) == NULL)
{
if ( (pFOut = fopen ("output. dat","a")) == NULL)
{
printf ("Cannot open file. failed");
return - 1;
}
}
/*
производим вычисления
*/
/*
устанавливаем начальные значения
*/
x. d2 [0] = 0;
x. d [0] = dx0;
x. val = x0;
f. d2 [0] = 0;
f. d [0] = 0;
f. val = f0;
for (iter = 0; iter < nNumIter; iter++)
{
/*
вычисления текущего положения модели
*/
f. d2 [1] = x. d [0] *f. d [0] /x. val - ge*f. val/x. val - (ro * f. d [0]) / (m*x. val*x. val);
f. d [1] = f. d [0] + h/2 * (f. d2 [1] +f. d2 [0]);
f. val = f. val + h/2 * (f. d [1] + f. d [0]);
f. d2 [0] = f. d2 [1];
f. d [0] = f. d [1];
if (! (iter % nDivider))
{
SU_Regulator (&x, &f);
fprintf (pFOut, "%i \t %f \t %f \t %f \t %f \t\n", iter, f. val, x. val, x. d [1], SU_Converter (x. val));
}
}
return 0;
}
/**************************************************************************
*
* void SU_Regulator (point_data* x, point_data* f)
* Описание функции: Функция регулятора. Производит вычисление
*значения управляющего сигнала.
*
* Входные параметры: f - указатель на структуру типа point_data, в
*которой хранятся значения угла подвеса,
*его скорости и ускорения
* Выходные параметры: x - указатель на структуру типа point_data, в
*которой хранятся значения положения подвеса,
*его скорости и ускорения - сигнал управления
*
**************************************************************************/
void SU_Regulator (point_data* x, point_data* f)
{
doubleampl_f, /* амплитуда колебаний */
k_ampl, /* коэффициент усиления регулятора ускорения */
A_ampl, /* дополнительный коэфициент */
u_reg; /* управление */
signedsDf,/* Знак скорости изменения угла */
sF,/* Знак угла */
sD2x; /* Знак ускорения изменения положения подвеса */
k_ampl = 5;
A_ampl = 0.3;
/* Вычисляем знаки углов */
sDf = (f->d [1] > 0);
sF= (f->val> 0);
sD2x = sDf ^ sF; /* XOR */
sD2x = sD2x * 2 - 1; /* Приводим к базису (1; - 1) */
/* Вычисляем амплитуду угла */
ampl_f = (k_ampl*A_ampl) * (A_ampl - fabs (f->val));
x->d2 [1] = ampl_f*sD2x;
x->d [1] = x->d [0] + h/2 * (x->d2 [1] + x->d2 [0]);
x->val = x->val + h/2 * (x->d [1] + x->d [0]);
x->d2 [0] = x->d2 [1];
x->d [0] = x->d [1];
u_reg = f->d [1] * x->d [1];
return;
}
/**************************************************************************
*
* void SU_Regulator (point_data* x, point_data* f)
* Описание функции: Функция преобразования значения положения подвеса
*в угол поворота исполнительного механизма.
*
* Входные параметры: x - значение положения подвеса
*
* Выходные параметры: фактический угол поворота исполнительного механизма
*
**************************************************************************/
double SU_Converter (double x)
{
return acos ( ( (l1*l1) + (l2*l2) - (L-x) * (L-x)) / (2*l1*l2));
}
Размещено на Allbest.ru
Подобные документы
Технические особенности сервопривода MR-J2S-10A. Выбор передаточного механизма. Разработка системы управления электроприводом переменного тока контурного робота на базе сервопривода Mitsubishi MR-J2-S. Электрическая схема подключения сервопривода.
курсовая работа [1,4 M], добавлен 25.12.2012Мобильные роботы и их применение. Главные особенности разработки шарового робота типа "колобок". Робот с шаровым движителем. Разработка и исследование системы прямого компьютерного управления роботом. Программное оборудование системного управления.
дипломная работа [1,6 M], добавлен 28.05.2012Назначение, принципиальное устройство и основные кинематические характеристики промышленных роботов. Разработка адаптивных систем управления. Принцип действия схемы сопряжения манипулятора с LPT-портом ПК. Разработка и изготовление печатного основания.
курсовая работа [1,4 M], добавлен 04.03.2013Основные методы и уровни дистанционного управления манипуляционными роботами. Разработка программного обеспечения системы терминального управления техническим объектом. Численное моделирование и анализ исполнительной системы робота манипулятора.
дипломная работа [1,2 M], добавлен 09.06.2009- Разработка и исследование метода сетевого оператора для адаптивного управления динамическим объектом
Понятие адаптивного управления как совокупности действий и методов, характеризующихся способностью управляющей системы реагировать на изменения внешней среды. Применение метода сетевого оператора для синтеза адаптивного управления мобильным роботом.
дипломная работа [1,4 M], добавлен 17.09.2013 Преимущества и недостатки роботизированной сварки. Характеристика видов систем управления базами данных. Информационная модель сварочного робота, системы управления роботом сварочных клещей. Критерии выбора робота и структура запроса на выборку.
курсовая работа [3,3 M], добавлен 22.12.2014Анализ существующих технологий управления компьютерным классом. Установка программного обеспечения на компьютер Windows 2000/XP/7 и Linux debian. Выбор программного обеспечения для управления компьютерным классом. Настройка компьютеров учителя и ученика.
курсовая работа [3,8 M], добавлен 20.06.2014Разработка структурной схемы устройства управления учебным роботом. Выбор двигателя, микроконтроллера, микросхемы, интерфейса связи и стабилизатора. Расчет схемы электрической принципиальной. Разработка сборочного чертежа устройства и алгоритма программы.
курсовая работа [577,8 K], добавлен 24.06.2013Многообразие мини-игр и возможности языка Visual basic 6.0 для их реализации. Понятие мини-игр и их классификация. Элементы управления мини-игры "Реверси". Разработка прикладной программы. Создание игрового интерфейса. Написание программного кода.
курсовая работа [1,5 M], добавлен 03.06.2014Разработка устройства сопряжения с объектом управления, в состав которого входят датчик, усилитель, АЦП последовательного приближения, ОЗУ, ЦАП, устройство управления. Предусмотрены ручной и автоматический режимы записи и считывания информации из ОЗУ.
курсовая работа [633,2 K], добавлен 01.12.2011