📄 motor.c.bak
字号:
Motor_Update();
if(Z_Order.b.Run == Z_ORDER_ONE)
{
Motor_Drive_Set();
u_Over_Stitch_Count = 0;
Z_FBK.b.Run = Z_ORDER_ONE;
n_Speed_Desired = 800;
}
if(Z_Order.b.Run == Z_ORDER_RUN)
{
Z_FBK.b.Run = Z_ORDER_RUN;
Motor_Drive_Set();
u_Soft_Stitch_Num = 2;
u_Soft_Flag = 0;
}
if(Z_Order.b.Run == Z_ORDER_DEBUG)
{
Z_FBK.b.Run = Z_ORDER_DEBUG;
}
break;
case Z_ORDER_RUN:
Motor_Update();
Motor_Soft_Start();
if(u_Soft_Flag)
{
if(u_Embroider_Speed_Des < Max_Speed_Limit)
n_Speed_Desired = u_Embroider_Speed_Des;
else
{
n_Speed_Desired = Max_Speed_Limit;
}
}
if(Z_Order.b.Run == Z_ORDER_BRAKE)
{
u_Over_Stitch_Count = 0;
Z_FBK.b.Run = Z_ORDER_BRAKE;
n_Speed_Desired = 700;
}
break;
case Z_ORDER_ONE:
Motor_Update();
Motor_Drive_Set();
if(u_First_Flag)
{
if(Motor_Midway_Brake())
{
Motor_Stop_Set();
Z_FBK.b.Run = Z_ORDER_STOP;
}
}
break;
case Z_ORDER_BRAKE:
Motor_Update();
if(Motor_Midway_Brake())
{
Z_FBK.b.Run = Z_ORDER_STOP;
}
break;
case Z_ORDER_DEBUG:
if(u_Z_Debug_Flag == 0)
{
if(u_Drive_Flag)
Drive_Set();
else
Drive_Clear();
if(u_Brake_Flag)
Brake_Set();
else
Brake_Clear();
if(Uart_Get_Cmp3())
Needle_Set();
else
Needle_Clear();
if(Uart_Get_Cmp2() > 5)
{
n_Speed_Desired = Uart_Get_Cmp2() *10;
l_a = Uart_Get_Cmp2();
Z_Ref = (60*5000)/l_a;
rTCNTB2 = rTCNTB2 & ~(0xffff) | Z_Ref;
rTCMPB2 = rTCMPB2 & ~(0xffff) | (Z_Ref/2);
}
else
{
Z_Ref = 1000;
rTCNTB2 = rTCNTB2 & ~(0xffff) | 1000;
rTCMPB2 = rTCMPB2 & ~(0xffff) | 1000;
}
}
if(u_Z_Debug_Flag == 1) //100度停车
{
Motor_Update();
if(Motor_Midway_Brake())
{
u_Z_Debug_Flag = 2;
}
}
if(u_Z_Debug_Flag == 2) //Z电机停止
{
Motor_Stop_Set();
n_Speed_Desired = 0;
}
if(u_Z_Debug_Flag == 3) //走一针
{
Motor_Update();
Motor_Drive_Set();
n_Speed_Desired = 800;
if(u_First_Flag)
{
if(Motor_Midway_Brake())
{
Motor_Stop_Set();
u_Z_Debug_Flag = 2;
}
}
}
if(u_Z_Debug_Flag == 4) //
{
Motor_Update();
}
if(Z_Order.b.Run == Z_ORDER_STOP)
{
Motor_Stop_Set();
Z_FBK.b.Run = Z_ORDER_STOP;
}
break;
}
}
//================================================================================
//Sub-Routine Name:void Motor_Drive_Set(void)
//Description:启动滑差电机
//
//
//Input:
//Output:
//Modified: 2004/26/11 OK
//=================================================================================
void Motor_Drive_Set(void)
{
unsigned short u_a;
Drive_Set();
for(u_a=0;u_a<30;u_a++);
Drive_Clear();
Brake_Set();
}
//================================================================================
//Sub-Routine Name:void Motor_Brake_Set(void)
//Description:滑差电机刹车
//
//
//Input:
//Output:
//Modified: 2004/26/11 OK
//=================================================================================
void Motor_Brake_Set(void)
{
unsigned short u_a;
Drive_Set();
Brake_Set();
for(u_a=0;u_a<10;u_a++);
Brake_Clear();
for(u_a=0;u_a<10;u_a++);
Brake_Set();
}
//================================================================================
//Sub-Routine Name:void Motor_Stop_Set(void)
//Description:停止控制
//
//
//Input:
//Output:
//Modified: 2004/26/11 OK
//=================================================================================
void Motor_Stop_Set(void)
{
Drive_Set();
Brake_Set();
}
//================================================================================
//Sub-Routine Name:void Motor_Update(void)
//Description:停止控制
//
//
//Input:
//Output:
//Modified: 2004/26/11 OK
//=================================================================================
void Motor_Update(void)
{
unsigned long l_a;
l_a = n_Speed_Desired;
if(l_a > 50)
{
Z_Ref = (60*50000)/l_a; //1000RPM = 16.67KHZ;
rTCNTB2 = rTCNTB2 & ~(0xffff) | Z_Ref;
rTCMPB2 = rTCMPB2 & ~(0xffff) | (Z_Ref/2);
}
else
{
rTCNTB2 = rTCNTB2 & ~(0xffff) | 1000; //5k
rTCMPB2 = rTCMPB2 & ~(0xffff) | 1000;
}
}
//================================================================================
//Sub-Routine Name:void Motor_First_Read(void)
//Description:初始读花样文件
//
//
//Input:
//Output:
//Modified: 2004/23/12 OK
//=================================================================================
void Motor_First_Read(void)
{
unsigned short u_a;
for(u_a = 0;u_a < 16; ++u_a)
{
if(u_File_Point == 0)
Needle[u_a].Work_State = 1;
else
Needle[u_a].Work_State = 0;
if(*(horse + u_File_Point) == 0x80 )
{
++u_File_Point;
if((*(horse + u_File_Point) == 02) ||(*(horse + u_File_Point) == 04))
Needle[u_a].Embroider_Mode = JUMP_NEEDLE;
if(*(horse + u_File_Point) == 01)
Needle[u_a].Embroider_Mode = CHANGE_COLOR;
++u_File_Point;
Needle[u_a].X_Reference = *(horse + u_File_Point);
++u_File_Point;
Needle[u_a].Y_Reference = *(horse + u_File_Point);
++u_File_Point;
++u_Jump_num;
}
else
{
Needle[15].Embroider_Mode = NORMAL;
Needle[u_a].X_Reference = *(horse + u_File_Point);
++u_File_Point;
Needle[u_a].Y_Reference = *(horse + u_File_Point);
++u_File_Point;
}
Needle[u_a].Sequence = u_a + 1;
}
u_Read_Index = 1;
u_Buffer_Index = 0;
}
//================================================================================
//Sub-Routine Name:void Motor_File_Read(void)
//Description:中间读花样文件
//
//
//Input:
//Output:
//Modified: 2004/23/12 OK
//=================================================================================
void Motor_File_Read(void)
{
unsigned u_a;
if(u_Buffer_Index > 7 )
{
if((*(horse + u_File_Point) == 0) && (*(horse + u_File_Point+1) == 0)&&(*(horse + u_File_Point+2) == 0)&&(*(horse + u_File_Point+3) == 0))
{
Needle[15].Work_State = 2;
}
else
{
if(u_Read_Index)
{
for( u_a = 0;u_a < 15; ++u_a )
{
Needle[u_a].X_Reference = Needle[u_a + 1].X_Reference;
Needle[u_a].Y_Reference = Needle[u_a + 1].Y_Reference;
Needle[u_a].Work_State = Needle[u_a + 1].Work_State;
Needle[u_a].Embroider_Mode = Needle[u_a + 1].Embroider_Mode;
Needle[u_a].Sequence = Needle[u_a + 1].Sequence;
}
Needle[15].Work_State = 0;
Needle[15].Sequence = Needle[14].Sequence + 1;
if(*(horse + u_File_Point) == 0x80 )
{
++u_File_Point;
if((*(horse + u_File_Point) == 02) ||(*(horse + u_File_Point) == 04))
Needle[15].Embroider_Mode = JUMP_NEEDLE;
if(*(horse + u_File_Point) == 01)
Needle[15].Embroider_Mode = CHANGE_COLOR;
++u_File_Point;
Needle[15].X_Reference = *(horse + u_File_Point);
++u_File_Point;
Needle[15].Y_Reference = *(horse + u_File_Point);
++u_File_Point;
++u_Jump_num;
}
else
{
Needle[15].Embroider_Mode = NORMAL;
Needle[15].X_Reference = *(horse + u_File_Point);
++u_File_Point;
Needle[15].Y_Reference = *(horse + u_File_Point);
++u_File_Point;
}
if(*(horse + u_File_Point_Front) == 0x80)
u_File_Point_Front+=4;
else
u_File_Point_Front+=2;
--u_Buffer_Index;
}
}
}
if(u_Buffer_Index < 7)
{
if(u_File_Point_Front == 0)
{
Needle[0].Work_State = 1; //开始针
}
else
{
if(u_Read_Index)
{
for( u_a = 15; u_a > 0; --u_a )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -