. Были разработаны алгоритмы, обеспечивающие управление системой приводов и реализующие как супервизорное, так и автоматическое управление;
. Были спроектированы и реализованы схемы универсальных контроллеров;
. Было разработано программное обеспечение микроконтроллеров.
. Была разработана система управления высокого уровня;
. Был проведен ряд экспериментов по управлению шагающим роботом;
. Были рассчитаны экономические показатели;
. Были разработаны меры безопасности.
ПРИЛОЖЕНИЯ
. Принципиальная схема контроллера
. Листинг программы контроллера
/*****************************************************: Программа подчинённого контроллера / XPod
Timer1: ШИМ: управление: 1.07
Date : 11.07.2011: 16.12.2011Иванов Н.В.: МИЭМ:type : ATmega88type : Applicationfrequency : 7,372800 MHzmodel : SmallSRAM size : 0Stack size : 256
*****************************************************/
#include <mega48.h>
#include <stdio.h>
#include <delay.h>
#include "m48lib.h"
#include "usart48.h"
#include "shim48fx.h"
#include " \mxpdlib.h"
#include " \mxpdproto.h"
//----------------------------------------------------------currAng[PWM_CH_NUM] = {0, 0, 0, 0, 0, 0, 0, 0};goalAng[PWM_CH_NUM] = {0, 0, 0, 0, 0, 0, 0, 0};
// Начальное положение манипулятораstartAng[PWM_CH_NUM] = {0, 0, 0, 0, 0, 0, 0, 0};
// Массив флагов для управления сервоприводамиneedrotate[PWM_CH_NUM] = {0, 0, 0, 0, 0, 0, 0, 0};
#define AStepDefault 2 // Начальное значение шага изменения угла поворотаAStep = AStepDefault; // Шаг угла поворотаTICK_CNT = 0;wasBlocked = 0; // Флаг блокировки движенияADCVAL[8] = {0,0,0,0,0,0,0,0};
// Маска и значение прерывания операции CMD_SET_INT
BYTE INT_MASK = 0x00;INT_VALUE = 0xFF;SetStartPos(void);[TIM2_OVF] void timer2_ovf_isr(void)
// Рабочий таймер (7200 Hz)
// Эффективная частота - 28 Hz (7200/255) Hz / T2Div = 10 Hz
{
#define EFreq2 20 // 20 эффективная частота, Hz
#define T2Div2 (W_T2_FREQ/EFreq2)
int i;int CN = 0;n, bvalue;=W_TCNT2_RESET_VAL;++;(CN>=T2Div2) CN=0; else return;
//if(TICK_CNT%2) cmdIndic=1; else cmdIndic=0; //Этот индикатор нужен для диагностики ошибки
//if(TICK_CNT%2) out1=1; else out1=0;_CNT++;
// Пищалка(PIP_CNT>0) PIP_CNT--;SOUND = 0;= REGIST[REG_ASTEP];
// Проверяем датчики блокировки(i=0;i<8;i++)
{= (REGIST[REG_SBMASK] & (1<<i));(n)
{= ADCVAL[i];(bvalue>=(unsigned char)REGIST[REG_SBLIM]) // Блокируем движение
{= 1;(!wasBlocked)
{= 1;();;
};
}
}
}= 0;= 0;
// Управляем сервомашинками(i=0;i<fxPWM_CH_NUM;i++)
{(currAng[i]!=goalAng[i])
{[REG_STAT] |= (BYTE)(1<<i); // Установить разряд i в '1'(abs(currAng[i]-goalAng[i])<AStep)
{[i]=goalAng[i];
}
{(currAng[i]<goalAng[i])[i]=currAng[i]+AStep;[i] = currAng[i] - AStep;
}
// Выставляем флаг
//ShimSetAng(i, currAng[i]);[i] = 1;
}
{
// Гасим флаг[i] = 0;
// Команда отработана[REG_STAT] &= (BYTE)(~(1<<i)); // Установить разряд i в '0'
}
}
}SetStartPos(void)
// Установить в начальное положение
{i;(i=0;i<fxPWM_CH_NUM;i++)
{(i, startAng[i]);[i] = currAng[i] = startAng[i];[REG_STAT] = 0x00;
}
}StopAllServo(void)
Самое читаемое:
Анализ и синтез автоматической системы регулирования электропривода углового перемещения
Современная теория автоматического регулирования является основной частью
теории управления. Система автоматического регулирования состоит из
регулируемого объекта и элементов управления, которые воздействуют на объект
при изменении одной или нескольких регулируемых переменных. Под влиянием
входных сигналов (управления или возмущени ...