📄 motor_test.mp
字号:
/*============================================
12月17日修改:
1.面板上的初始定位测试只测试不起弧
2.上升下降限位需现场调试
==============================================*/
/*============================================
1月13日修改:
1.PWM调速修改,加面板PWM限制,经测试
2.上升下降限位需现场调试
==============================================*/
#include <inavr.h>
#include "ADC.h"
#include "IO.h"
#include "time.h"
#include "USART.h"
#include "PositionPI.h"
#include "main.h"
#include <math.h>
__no_init ARC_CONTROL_PARA_EROM Arc_Para_Erom;
ARC_CONTROL_PARA_SRAM Arc_Para_Sram;
MACHINE_STATE machine_state_flag;
MACHINE_CONTROL machine_control;
unsigned char __eeprom *pPara_Erom;
unsigned char *pPara_Sram;
void (*ControlHandle[])(void)=
{
pwm_open_loop,
Arc_Welding_Control_For_Debug_step,
};
void UpBrake(void)
{
#if (BRAKE_ENABLE>0)
machine_control.pwm=UP_BRAKE_PWM;
pwm_open_loop();
Delay_10ms(Arc_Para_Sram.Up_Brake_Time);
machine_control.pwm=STOP_PWM;
pwm_open_loop();
#endif
}
void DownBrake(void)
{
#if (BRAKE_ENABLE>0)
machine_control.pwm=DOWN_BRAKE_PWM;
pwm_open_loop();
Delay_10ms(Arc_Para_Sram.Down_Brake_Time);
machine_control.pwm=STOP_PWM;
pwm_open_loop();
#endif
}
void Eeprom2Sram(unsigned char __eeprom *pPara_Erom,unsigned char *pPara_Sram,unsigned char size)
{
unsigned char i;
for(i=0;i<size;i++)
*(pPara_Sram++)=*(pPara_Erom++);
}
void Sram2Eeprom(unsigned char *pPara_Sram,unsigned char __eeprom *pPara_Erom,unsigned char size)
{
unsigned char i;
for(i=0;i<size;i++)
*(pPara_Erom++)= *(pPara_Sram++);
}
///////////////////////////////////////////////////////////////////////////////////////
int main( void )
{
__disable_interrupt();
Eeprom2Sram((unsigned char __eeprom *)&Arc_Para_Erom
,(unsigned char *)&Arc_Para_Sram
,sizeof(ARC_CONTROL_PARA_EROM));
PortInit();
adc_init();
USART_Init();
timer1_init();
Arc_Welding_Control_For_Debug_initialize(1); //初始化PID参数模块
timer2_init();
machine_state_flag.value=0; //清所有的标志
InDelayTime=FALSE;
machine_control.DelayTime=0; //机器定时长度,无条件延时,即等待延时
machine_control.TouchCount=0; //For 智能调节
machine_control.IntelAdjMemory=0; //智能调节
machine_control.pwm=STOP_PWM;
pwm_open_loop();
PORTD|=(1<<IR2112_EN); //使能IR2112
PORTC&=~(1<<PORTECT_LOCATION_DISABLE); //保护帽定位使能
Arc_Welding_Control_For_Debug_P.Kp_Gain=(real_T)(Arc_Para_Sram.Auto_Pwm_Amp);
__enable_interrupt();
machine_control.pwm=RESET_PWM;
#if ((DEBUG)>0)
while(1)
{
if(InDelayTime==FALSE)
{
Delay(100);
PutChar(0xaa);
}
} //For Commuincation debug
#endif
while(1)
{
//参数设置状态
__enable_interrupt();
while(machine_state_flag.bits.configuration_ok==0)
{
switch(machine_state_flag.bits.machine_state)
{
case MACHINE_RESET:
case MACHINE_HANDLE:
pwm_open_loop();
machine_control.pwm=STOP_PWM;
break;
case MACHINE_AUTO :
switch(machine_state_flag.bits.control_state)
{
case OPEN_LOOP :
pwm_open_loop();
machin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -