/**************进料检测********************/
/***缺料无限次循环 手动退出 超时报警*******/
void check_Pon()
{
zstatus=0; //缺料报警计数器归零
Signauto=1; //行程开关循环标志
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=1; //进料检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
while(Signauto) /**/
{
OutPut2=0; //闸门3开
RstKey();
for(;kcounter<10;) //按键循环10
{
if(!IntPut2) //按键低电平
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut2) //按键高电平
{
RstKey(); //按键计数器 状态计数器归零
}
delay1(2); //2023
if(kstatus>=8) /*按键状态标志大于等于8为有效值*/
{
OutPut2=1; //闸门3关
Signauto=0; /*行程输入信号连续检测到3次Signauto=0退出循环*/
}
if(RUN_Flag==0) //手动标志
{
Signauto=0; //Signauto=0退出循环
break;
}
zstatus++; //缺料报警计数器加一
delay10ms(5);
if(zstatus>val9) //250秒 打油次数改缺料计时
{
delay10ms(50);
OutPut20=~OutPut20; //缺料退刀及润滑退未到位报警
delay10ms(50);
OutPut20=~OutPut20; //缺料退刀及润滑退未到位报警
delay10ms(50);
OutPut20=~OutPut20; //缺料报警
RstKey();
}
}
}
}
/*************电机一前进限位检测*************/
void MotorAForward()
{
Signauto=1; //行程开关循环标志
while(Signauto) /**/
{ //MotoraRun_Flag
RstKey(); //IntPut9
for(;kcounter<5;) //按键循环10
{
if(!IntPut9) //进一停止
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut9) //按键高电平
{
RstKey() ; //按键计数器 状态计数器归零
}
if(kstatus>=3) /*按键状态标志大于等于8为有效值*/
{
MotoraRun_Flag=0; //关闭电机A自动运行标志
Signauto=0; //行程开关循环标志
}
}
}
}
/*************电机二前进限位检测********************/
void MotorBForward()
{
Signauto=1; //行程开关循环标志
while(Signauto) /**/
{
RstKey(); //IntPut9
for(;kcounter<5;) //按键循环10
{
if(!IntPut10) //进二停止
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut10) //按键高电平
{
RstKey() ; //按键计数器 状态计数器归零
}
if(kstatus>=3) /*按键状态标志大于等于8为有效值*/
{
MotorbRun_Flag=0; //关闭电机A自动运行标志
Signauto=0; //行程开关循环标志
}
}
}
}
/*************电机三前进限位检测********************/
void MotorCForward()
{
Signauto=1; //行程开关循环标志
while(Signauto) /**/
{
RstKey(); //IntPut11
for(;kcounter<5;) //按键循环11
{
if(!IntPut11) //进三停止
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut11) //按键高电平
{
RstKey() ; //按键计数器 状态计数器归零
}
if(kstatus>=3) /*按键状态标志大于等于8为有效值*/
{
MotorcRun_Flag=0; //关闭电机A自动运行标志
Signauto=0; //行程开关循环标志
}
}
}
}
/*************电机四前进限位检测********************/
void MotorDForward()
{
Signauto=1; //行程开关循环标志
while(Signauto) /**/
{
RstKey(); //IntPut9
for(;kcounter<5;) //按键循环10
{
if(!IntPut12) //进四停止
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut12) //按键高电平
{
RstKey() ; //按键计数器 状态计数器归零
}
if(kstatus>=3) /*按键状态标志大于等于8为有效值*/
{
MotordRun_Flag=0; //关闭电机四运行标志
Signauto=0; //行程开关循环标志
}
}
}
}
/*************电机一后退限位检测*************/
void MotorABackInt()
{
Signauto=1; //行程开关循环标志
while(Signauto) /**/
{
RstKey(); //
for(;kcounter<5;) //按键循环10
{
if(!IntPut13) //退一停止
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut13) //按键高电平
{
RstKey() ; //按键计数器 状态计数器归零
}
if(kstatus>=3) /*按键状态标志大于等于8为有效值*/
{
MotoraRun_Flag=0; //关闭电机A自动运行标志
Signauto=0; //行程开关循环标志
}
}
}
}
/*************电机二后退限位检测*************/
void MotorBBackInt()
{
Signauto=1; //行程开关循环标志
while(Signauto) /**/
{
RstKey(); //
for(;kcounter<5;) //按键循环10
{
if(!IntPut14) //退二停止
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut14) //按键高电平
{
RstKey() ; //按键计数器 状态计数器归零
}
if(kstatus>=3) /*按键状态标志大于等于8为有效值*/
{
MotorbRun_Flag=0; //关闭电机二运行标志
Signauto=0; //行程开关循环标志
}
}
}
}
/*************电机三后退限位检测*************/
void MotorCBackInt()
{
Signauto=1; //行程开关循环标志
while(Signauto) /**/
{
RstKey(); //
for(;kcounter<5;) //按键循环10
{
if(!IntPut15) //退三停止
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut15) //按键高电平
{
RstKey() ; //按键计数器 状态计数器归零
}
if(kstatus>=3) /*按键状态标志大于等于8为有效值*/
{
MotorcRun_Flag=0; //关闭电机三运行标志
Signauto=0; //行程开关循环标志
}
}
}
}
/*************电机四后退限位检测*************/
void MotorDBackInt()
{
Signauto=1; //行程开关循环标志
while(Signauto) /**/
{
RstKey(); //
for(;kcounter<5;) //按键循环10
{
if(!IntPut16) //退四停止
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut16) //按键高电平
{
RstKey() ; //按键计数器 状态计数器归零
}
if(kstatus>=3) /*按键状态标志大于等于8为有效值*/
{
MotordRun_Flag=0; //关闭电机四运行标志
Signauto=0; //行程开关循环标志
}
}
}
}
/****按开启电机数检测输入信号关闭电机****/
/***关闭报警启用标志检测到手动退出循环***/
void CheckMotorA()
{
RstKey();
for(;kcounter<5;) //按键循环10
{
if(!IntPut9) //进一停止
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut9) //按键高电平
{
RstKey() ; //按键计数器 状态计数器归零
}
if(kstatus>=3) /*按键状态标志大于等于8为有效值*/
{
Time_Flag=0; //关闭攻丝超时报警标志由定时器计数
MotoraAuto_Flag=0; //关闭电机A自动运行标志
}
if(RUN_Flag==0) //自动运行标志为0 退出循环
break; //
}
}
/***检测电机A电机B限位信号 各自到位关闭***/
/***低电平状态计数器 循环计数器加一*******/
/***高电平状态计数器循环计数器归零 死循环***/
/***关闭报警启用标志检测到手动退出循环***/
//FLAG_M=1; //闸门一开
//printf("r0.val=%d\xff\xff\xff",FLAG_M);//r0.val=1
void CheckMotorB()
{
FLAG_M=1;
printf("r0.val=%d\xff\xff\xff",FLAG_M);//r0.val=1 单选框
RstKey_1();
RstKey_2();
Forward1=1;
Forward2=1;
while(Forward1==1||Forward2==1) //
{
if(!IntPut9) //进一停止
{
LowVoltKey_1(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut9) //按键高电平
{
RstKey_1() ; //按键计数器 状态计数器归零
}
if(kstatus_1>=3) /*按键状态标志大于等于8为有效值*/
{
Forward1=0; //关电机A运行标志
MotoraAuto_Flag=0; //关闭电机A自动运行标志
}
//电机A
if(!IntPut10) //进二停止
{
LowVoltKey_2(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut10) //按键高电平
{
RstKey_2() ; //按键计数器 状态计数器归零
}
if(kstatus_2>=3) /*按键状态标志大于等于8为有效值*/
{
Forward2=0; //关电机B运行标志
MotorbAuto_Flag=0; //关闭电机A自动运行标志
}
//电机B
if(RUN_Flag==0) //自动运行标志为0 退出循环
break;
}
Time_Flag=0; //关闭攻丝超时报警标志由定时器计数
MotoraAuto_Flag=0; //关闭电机A自动运行标志
MotorbAuto_Flag=0; //关闭电机B自动运行标志
}
/***检测电机ABC限位信号 各自到位关闭***/
/***低电平状态计数器 循环计数器加一*******/
/***高电平状态计数器循环计数器归零 死循环***/
/***关闭报警启用标志检测到手动退出循环***/
void CheckMotorC()
{
RstKey_1();
RstKey_2();
RstKey_3();
Forward1=1;
Forward2=1;
Forward3=1;
while(Forward1==1||Forward2==1||Forward3==1)
{
if(!IntPut9) //进一停止
{
LowVoltKey_1(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut9) //按键高电平
{
RstKey_1() ; //按键计数器 状态计数器归零
}
if(kstatus_1>=3) /*按键状态标志大于等于8为有效值*/
{
Forward1=0; //关电机A运行标志
MotoraAuto_Flag=0; //关闭电机A自动运行标志
}
//电机A
if(!IntPut10) //进二停止
{
LowVoltKey_2(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut10) //按键高电平
{
RstKey_2() ; //按键计数器 状态计数器归零
}
if(kstatus_2>=3) /*按键状态标志大于等于8为有效值*/
{
Forward2=0; //关电机B运行标志
MotorbAuto_Flag=0; //关闭电机A自动运行标志
}
//电机B
if(!IntPut11) //进三停止
{
LowVoltKey_3(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut11) //按键高电平
{
RstKey_3() ; //按键计数器 状态计数器归零
}
if(kstatus_3>=3) /*按键状态标志大于等于8为有效值*/
{
Forward3=0; //关电机C运行标志
MotorcAuto_Flag=0; //关闭电机A自动运行标志
}
//电机C
if(RUN_Flag==0) //自动运行标志为0 退出循环
break;
}
Time_Flag=0; //关闭攻丝超时报警标志由定时器计数
MotoraAuto_Flag=0; //关闭电机A自动运行标志
MotorbAuto_Flag=0; //关闭电机B自动运行标志
MotorcAuto_Flag=0; //关闭电机C自动运行标志
}
/***检测电机ABCD 限位信号 各自到位关闭***/
/***低电平状态计数器 循环计数器加一*******/
/***高电平状态计数器循环计数器归零 死循环***/
/***关闭报警启用标志检测到手动退出循环***/
void CheckMotorD()
{
RstKey_1();
RstKey_2();
RstKey_3();
RstKey_4();
Forward1=1;
Forward2=1;
Forward3=1;
Forward4=1;
while(Forward1==1||Forward2==1||Forward3==1||Forward4)
{
if(!IntPut9) //进一停止
{
LowVoltKey_1(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut9) //按键高电平
{
RstKey_1() ; //按键计数器 状态计数器归零
}
if(kstatus_1>=3) /*按键状态标志大于等于8为有效值*/
{
Forward1=0; //关电机A运行标志
MotoraAuto_Flag=0; //关闭电机A自动运行标志
}
//电机A
if(!IntPut10) //进二停止
{
LowVoltKey_2(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut10) //按键高电平
{
RstKey_2() ; //按键计数器 状态计数器归零
}
if(kstatus_2>=3) /*按键状态标志大于等于8为有效值*/
{
Forward2=0; //关电机B运行标志
MotorbAuto_Flag=0; //关闭电机A自动运行标志
}
//电机B
if(!IntPut11) //进三停止
{
LowVoltKey_3(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut11) //按键高电平
{
RstKey_3() ; //按键计数器 状态计数器归零
}
if(kstatus_3>=3) /*按键状态标志大于等于8为有效值*/
{
Forward3=0; //关电机C运行标志
MotorcAuto_Flag=0; //关闭电机A自动运行标志
}
//电机C
if(!IntPut12) //进四停止
{
LowVoltKey_4(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut12) //按键高电平
{
RstKey_4() ; //按键计数器 状态计数器归零
}
if(kstatus_4>=3) /*按键状态标志大于等于8为有效值*/
{
Forward4=0; //关电机D运行标志
MotordAuto_Flag=0; //关闭电机A自动运行标志
}
//电机d
if(RUN_Flag==0) //自动运行标志为0 退出循环
break;
}
Time_Flag=0; //关闭攻丝超时报警标志由定时器计数
MotoraAuto_Flag=0; //关闭电机A自动运行标志
MotorbAuto_Flag=0; //关闭电机B自动运行标志
MotorcAuto_Flag=0; //关闭电机C自动运行标志
MotordAuto_Flag=0; //关闭电机D自动运行标志
}
/***************检测电机A工位***********************/
/****************到位关闭 手动退出******************/
void MotoraBack()
{
RstKey();
for(;kcounter<5;) //按键循环10
{
if(!IntPut13) //退一停止
{
LowVoltKey(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut13) //按键高电平
{
RstKey() ; //按键计数器 状态计数器归零
}
if(kstatus>=3) /*按键状态标志大于等于8为有效值*/
{
Time_Flag=0; //关闭攻丝超时报警标志由定时器计数
MotoraAuto_Flag=0; //关闭电机A自动运行标志
}
if(RUN_Flag==0) //自动运行标志为0 退出循环
break; //
}
}
/*************检测电机AB工位**********************/
/********先到先关 全关及手动退出******************/
void MotorbBack()
{
RstKey_1();
RstKey_2();
Back1=1;
Back2=1;
while(Back1==1||Back2==1) //
{
if(!IntPut13) //进一停止
{
LowVoltKey_1(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut13) //按键高电平
{
RstKey_1() ; //按键计数器 状态计数器归零
}
if(kstatus_1>=3) /*按键状态标志大于等于8为有效值*/
{
Back1=0;
MotoraAuto_Flag=0; //关闭电机A自动运行标志
}
//电机A
if(!IntPut14) //进二停止
{
LowVoltKey_2(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut14) //按键高电平
{
RstKey_2() ; //按键计数器 状态计数器归零
}
if(kstatus_2>=3) /*按键状态标志大于等于8为有效值*/
{
Back2=0;
MotorbAuto_Flag=0; //关闭电机A自动运行标志
}
//电机B
if(RUN_Flag==0) //自动运行标志为0 退出循环
break;
}
Time_Flag=0; //关闭攻丝超时报警标志由定时器计数
MotoraAuto_Flag=0; //关闭电机A自动运行标志
MotorbAuto_Flag=0; //关闭电机B自动运行标志
}
/*************检测电机ABC工位*********************/
/********先到先关 全关及手动退出******************/
void MotorcBack()
{
RstKey_1();
RstKey_2();
RstKey_3();
Back1=1;
Back2=1;
Back3=1;
while(Back1==1||Back2==1||Back3==1)
{
if(!IntPut13) //进一停止
{
LowVoltKey_1(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut13) //按键高电平
{
RstKey_1() ; //按键计数器 状态计数器归零
}
if(kstatus_1>=3) /*按键状态标志大于等于8为有效值*/
{
Back1=0;
MotoraAuto_Flag=0; //关闭电机A自动运行标志
}
//电机A
if(!IntPut14) //进二停止
{
LowVoltKey_2(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut14) //按键高电平
{
RstKey_2() ; //按键计数器 状态计数器归零
}
if(kstatus_2>=3) /*按键状态标志大于等于8为有效值*/
{
Back2=0;
MotorbAuto_Flag=0; //关闭电机A自动运行标志
}
//电机B
if(!IntPut15) //进三停止
{
LowVoltKey_3(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut15) //按键高电平
{
RstKey_3() ; //按键计数器 状态计数器归零
}
if(kstatus_3>=3) /*按键状态标志大于等于8为有效值*/
{
Back3=0;
MotorcAuto_Flag=0; //关闭电机A自动运行标志
}
//电机C
if(RUN_Flag==0) //自动运行标志为0 退出循环
break;
}
Time_Flag=0; //关闭攻丝超时报警标志由定时器计数
MotoraAuto_Flag=0; //关闭电机A自动运行标志
MotorbAuto_Flag=0; //关闭电机B自动运行标志
MotorcAuto_Flag=0; //关闭电机C自动运行标志
}
/*************检测电机ABCD工位********************/
/********先到先关 全关及手动退出******************/
void MotordBack()
{
RstKey_1();
RstKey_2();
RstKey_3();
RstKey_4();
Back1=1;
Back2=1;
Back3=1;
Back4=1;
while(Back1==1||Back2==1||Back3==1||Back4)
{
if(!IntPut13) //退一停止
{
LowVoltKey_1(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut13) //按键高电平
{
RstKey_1() ; //按键计数器 状态计数器归零
}
if(kstatus_1>=3) /*按键状态标志大于等于8为有效值*/
{
Back1=0;
MotoraAuto_Flag=0; //关闭电机A自动运行标志
}
//电机A
if(!IntPut14) //退二停止
{
LowVoltKey_2(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut14) //按键高电平
{
RstKey_2() ; //按键计数器 状态计数器归零
}
if(kstatus_2>=3) /*按键状态标志大于等于8为有效值*/
{
Back2=0;
MotorbAuto_Flag=0; //关闭电机A自动运行标志
}
//电机B
if(!IntPut15) //退三停止
{
LowVoltKey_3(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut15) //按键高电平
{
RstKey_3() ; //按键计数器 状态计数器归零
}
if(kstatus_3>=3) /*按键状态标志大于等于8为有效值*/
{
Back3=0;
MotorcAuto_Flag=0; //关闭电机A自动运行标志
}
//电机C
if(!IntPut16) //退四停止
{
LowVoltKey_4(); //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut16) //按键高电平
{
RstKey_4() ; //按键计数器 状态计数器归零
}
if(kstatus_4>=3) /*按键状态标志大于等于8为有效值*/
{
Back4=0;
MotordAuto_Flag=0; //关闭电机A自动运行标志
}
//电机d
if(RUN_Flag==0) //自动运行标志为0 退出循环
break;
}
Time_Flag=0; //关闭攻丝超时报警标志由定时器计数
MotoraAuto_Flag=0; //关闭电机A自动运行标志
MotorbAuto_Flag=0; //关闭电机B自动运行标志
MotorcAuto_Flag=0; //关闭电机C自动运行标志
MotordAuto_Flag=0; //关闭电机D自动运行标志
}
/**************按计数器顺序开电机1234**************/
void MotorOpen()
{
OutPut3=0; //机座进
OutPut5=0; //闸门1开
OutPut2=0; //闸门3开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=10; //机座检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
delay10ms(10);
//判断计数器 0开第一只电机1开第一第二只电机2第一第二第三只电机大于2开四只电机
Time_Flag=1; //启动攻丝超时报警标志由定时器计数
Time_Warning=val11; //报警缓冲定时器比较值
if(Counter==0) //第一件
{
Delay_100ms(val4); // 3 20
DIR0=1; //电机A正转
MotoraAuto_Flag=1; //电机A自动运行标志置一
CheckMotorA(); //检测电机A正转攻丝位置检测
delay10ms(10); //
DIR0=0; //电机A 反转方向
Time_Flag=1; //启动攻丝超时报警标志由定时器计数
Time_Warning=val13; //报警缓冲定时器比较值
FLAG_M=11; //电机退
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
MotoraAuto_Flag=1; //电机A自动运行标志置一
MotoraBack(); //检测电机A反转
}
else if(Counter==1) //第二件
{
Delay_100ms(val4); // 3 20
DIR0=1; //电机A正转
DIR1=1; //电机B正转
MotoraAuto_Flag=1; //电机A自动运行标志置一
MotorbAuto_Flag=1; //电机B自动运行标志置一
Delay_100ms(5); // 3 20
CheckMotorB(); //检测电机AB攻丝位置
delay10ms(10);
DIR0=0; //电机A反转
DIR1=0;
Time_Flag=1; //启动攻丝超时报警标志由定时器计数
Time_Warning=val13; //报警缓冲定时器比较值
FLAG_M=11; //电机退
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
MotoraAuto_Flag=1; //电机A自动运行标志置一
MotorbAuto_Flag=1; //电机B自动运行标志置一
MotorbBack(); //检测电机A反转
}
else if(Counter==2) //第三件
{
Delay_100ms(val4); // 3 20
DIR0=1; //电机A正转
DIR1=1; //电机B正转
DIR2=0; //电机C正转
MotoraAuto_Flag=1; //电机A自动运行标志置一
MotorbAuto_Flag=1; //电机B自动运行标志置一
MotorcAuto_Flag=1; //电机C自动运行标志置一
Delay_100ms(5); // 3 20
CheckMotorC(); //检测电机ABC攻丝位置
delay10ms(10);
DIR0=0; //电机A反转
DIR1=0; //电机B反转
DIR2=1; //电机C反转
Time_Flag=1; //启动攻丝超时报警标志由定时器计数
Time_Warning=val13; //报警缓冲定时器比较值
FLAG_M=11; //电机退
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
MotoraAuto_Flag=1; //电机A自动运行标志置一
MotorbAuto_Flag=1; //电机B自动运行标志置一
MotorcAuto_Flag=1; //电机C自动运行标志置一
MotorcBack(); //检测电机A反转
}
else if(Counter>2) //大于第三件
{
Voice(); //提示声
DIR0=1; //电机A正转
DIR1=1; //电机B正转
DIR2=0; //电机C正转
DIR3=1; //电机D正转
MotoraAuto_Flag=1; //电机A自动运行标志置一
MotorbAuto_Flag=1; //电机B自动运行标志置一
MotorcAuto_Flag=1; //电机C自动运行标志置一
MotordAuto_Flag=1; //电机D自动运行标志置一
delay10ms(val4);
CheckMotorD(); //检测电机ABCD攻丝位置
DIR0=0; //电机A反转
DIR1=0; //电机B反转
DIR2=1; //电机C反转
DIR3=0; //电机D反转
Time_Flag=1; //启动攻丝超时报警标志由定时器计数
Time_Warning=val13; //报警缓冲定时器比较值
FLAG_M=11; //电机退
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
MotoraAuto_Flag=1; //电机A自动运行标志置一
MotorbAuto_Flag=1; //电机B自动运行标志置一
MotorcAuto_Flag=1; //电机C自动运行标志置一
MotordAuto_Flag=1; //电机D自动运行标志置一
MotordBack(); //检测电机A反转
}
//判断计数器 选择电机后退反转机座后退产量计数器加一
MotorBack(); //退丝 2024 3 19
OutPut3=1; //机座后退
OutPut5=1; //闸门1关
OutPut2=1; //闸门3关
}
/***进料检测无限循环,计数十次退出子程序********/
void Check_Stop()
{
RstKey();
for(;kcounter<10;) //检测按键 kcounter小于10循环
{
if(!IntPut6) //工位零点信号按键低电平
{
kcounter++;
kstatus++; //按键低电平 计数器加一状态标志加一
}
else if(~!IntPut6) //按键高电平
{
kcounter=0; //按键计数器加一 状态标志归零
kstatus=0; //按键低电平 计数器加一状态标志加一
}
}
}
/*------------自动运行----------------------*/
void Run_start() //
{
//工位一
do //自动循环起点
{
Pump_Counter++; //油泵打油计数器加一
lub_Counter++; //润滑计数器加一
if(Pump_Counter>=val10)
{
Pump_Counter=0; //
Voice(); //提示声
OutPut21=0;
delay5ms(val6); //间隙时间
OutPut21=1;
}
if(lub_Counter>=val9)
{
lub_Counter=0; //
Voice(); //提示声
OutPut18=0;
delay5ms(val6); //间隙时间
OutPut18=1;
}
//油泵上油
RstKey();
//缺料报警检测
check_Pon(); //进料检测
OutPut20=1; //关 报警
if(RUN_Flag==1) //自动运行标志为一 运行进料程序
{
OutPut10=1; //夹具二关
OutPut15=0; //出料口吹气一开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=12; //闸门一开
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
OutPut5=0; //闸门一开
OutPut16=0; //吹气二开 进料
delay10ms(50);
OutPut15=1; //出料口吹气一关
OutPut5=1; //闸门一关
OutPut4=0; //过桥开
FLAG_M=14; //
printf("va1.val=%d\xff\xff\xff",FLAG_M);//过桥开
delay10ms(30); //
OutPut6=0; //闸门二开
Check_Stop(); //进料到位检测 2024 4 9
Delay_100ms(val15); //过桥开延时2024 4 10
OutPut16=1; //吹气二关 进料 2024 3 24
OutPut6=1; //闸门二关
OutPut4=1; //过桥关
OutPut9=0; //夹具一开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=4; //夹具一开
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
}
else
break;
//进料结束 工位旋转 机座推进 电机自动攻丝标志置一
if(RUN_Flag==1) //自动运行标志为一 运行
{
RstKey();
//电机座润滑退检测
zstatus=0; //缺料报警计数器归零
Signauto=1; //行程开关循环标志
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=3; //机座检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
ReadIntPut(); //检测机座 润滑 过桥位置
OutPut20=1; //关 报警
OutPut1=0; //工位旋转 外部中断0关电机
OutPut17=0; //工位旋转 外部中断0关电机
Signauto=1; /*行程输入信号检测标志无输入为1,永久循环*/
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=2; //旋转检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
RstKey();
Time_Error=0; //定时器触发超时报警计数器归零
Time_Flag=1; //启动工位旋转报警标志由定时器计数
Time_Warning=val12; //报警缓冲定时器比较值
//工位旋转
do /*行程输入信号检测标志无输入为1,永久循环*/
{
delay10ms(10); //
if(Error_Flag==1) //定时器计数超设置值
{
OutPut20=~OutPut20; //旋转超时报警
}
if(RUN_Flag==0) //手动标志
{
Error_Flag=0; //关闭工位旋转报警标志
Signauto=0; //Signauto=0退出循环
break;
}
}
while(Signauto); //外部中断0检测到输入信号 退出循环
//工位二机座进 电机运行
OutPut11=1; //夹具三关 2024 3 27
MotorOpen(); //攻丝进退
Counter++; //产量计数器加1
printf("n0.val=%d\xff\xff\xff",Counter); //
}
//检测机座后退
//缺料报警检测
check_Pon(); //进料检测
OutPut20=1; //关 报警
if(RUN_Flag==1) //
{
OutPut15=0; //出料口吹气一开 2024 3 24
// OutPut11=1; //夹具三关 2024 3 27
OutPut5=0; //闸门一开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=12; //
printf("va1.val=%d\xff\xff\xff",FLAG_M);//闸门一开
OutPut16=0; //吹气进料二开 2024 3 24
delay10ms(50);
OutPut15=1; //出料口吹气一关2024 3 24
OutPut5=1; //闸门一关
OutPut4=0; //过桥开
FLAG_M=14; //
printf("va1.val=%d\xff\xff\xff",FLAG_M);//过桥开
delay10ms(30); //
OutPut6=0; //闸门二开
Check_Stop(); //进料到位检测 2024 4 9
Delay_100ms(val15); //过桥开延时2024 4 10
OutPut16=1; //吹气二关 进料 2024 3 24
OutPut6=1; //闸门二关
OutPut4=1; //过桥关
OutPut10=0; //夹具二开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=5; //夹具二开
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
}
else
break;
//进料结束 工位旋转 机座推进 电机自动攻丝标志置一
if(RUN_Flag==1) //自动运行标志为一 运行
{
RstKey();
//电机座润滑退检测
zstatus=0; //缺料报警计数器归零
Signauto=1; //行程开关循环标志
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=3; //机座检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
ReadIntPut(); //检测机座 润滑 过桥位置
OutPut20=1; //关 报警
OutPut1=0; //工位旋转 外部中断0关电机
OutPut17=0; //工位旋转 外部中断0关电机
Signauto=1; /*行程输入信号检测标志无输入为1,永久循环*/
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=2; //旋转检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
RstKey();
Time_Error=0; //定时器触发超时报警计数器归零
Time_Flag=1; //启动工位旋转报警标志由定时器计数
Time_Warning=val12; //报警缓冲定时器比较值
//工位旋转
do /*行程输入信号检测标志无输入为1,永久循环*/
{
delay10ms(10); //
if(Error_Flag==1) //定时器计数超设置值
{
OutPut20=~OutPut20; //旋转超时报警
}
if(RUN_Flag==0) //手动标志
{
Error_Flag=0; //关闭工位旋转报警标志
Signauto=0; //Signauto=0退出循环
break;
}
}
while(Signauto); //外部中断0检测到输入信号 退出循环
//工位三
//机座进 电机运行
OutPut12=1; //夹具四关 2024 3 27
MotorOpen(); //攻丝进退
Counter++; //产量计数器加1
printf("n0.val=%d\xff\xff\xff",Counter); //
}
//缺料报警检测
check_Pon(); //进料检测
OutPut20=1; //关 报警
if(RUN_Flag==1) //2 10
{
OutPut15=0; //出料口吹气一开 2024 3 24
// OutPut12=1; //夹具四关
OutPut5=0; //闸门一开
OutPut16=0; //吹气二开 进料 2024 3 24
delay10ms(50);
OutPut15=1; //出料口吹气一关2024 324
OutPut5=1; //闸门一关
OutPut4=0; //过桥开
FLAG_M=14; //
printf("va1.val=%d\xff\xff\xff",FLAG_M);//过桥开
delay10ms(30); //
OutPut6=0; //闸门二开
Check_Stop(); //进料到位检测 2024 4 9
Delay_100ms(val15); //过桥开延时2024 4 10
OutPut16=1; //吹气二关 进料 2024 3 24
OutPut6=1; //闸门二关
OutPut4=1; //过桥关
OutPut11=0; //夹具三开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=6; //夹具三开
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
RstKey();
}
else
break;
//电机座润滑退检测
//进料结束 工位旋转 机座推进 电机自动攻丝标志置一
if(RUN_Flag==1) //自动运行标志为一 运行
{
RstKey();
//电机座润滑退检测
zstatus=0; //缺料报警计数器归零
Signauto=1; //行程开关循环标志
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=3; //机座检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
ReadIntPut(); //检测机座 润滑 过桥位置
OutPut20=1; //关 报警
OutPut1=0; //工位旋转 外部中断0关电机
OutPut17=0; //工位旋转 外部中断0关电机
Signauto=1; /*行程输入信号检测标志无输入为1,永久循环*/
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=2; //旋转检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
RstKey();
Time_Error=0; //定时器触发超时报警计数器归零
Time_Flag=1; //启动工位旋转报警标志由定时器计数
Time_Warning=val12; //报警缓冲定时器比较值
//工位旋转
do /*行程输入信号检测标志无输入为1,永久循环*/
{
delay10ms(10); //
if(Error_Flag==1) //定时器计数超设置值
{
OutPut20=~OutPut20; //旋转超时报警
}
if(RUN_Flag==0) //手动标志
{
Error_Flag=0; //关闭工位旋转报警标志
Signauto=0; //Signauto=0退出循环
break;
}
}
while(Signauto); //外部中断0检测到输入信号 退出循环
//机座进 电机运行
OutPut13=1; //夹具五关 2024 3 27
MotorOpen(); //攻丝进退
Counter++; //产量计数器加1
printf("n0.val=%d\xff\xff\xff",Counter); //
}
//工位四
//缺料报警检测
check_Pon(); //进料检测
OutPut20=1; //关 报警
if(RUN_Flag==1) //
{
OutPut15=0; //出料口吹气一开 2024 3 24
// OutPut13=1; //夹具五关
OutPut5=0; //闸门一开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=12; //
printf("va1.val=%d\xff\xff\xff",FLAG_M);//闸门一开
OutPut16=0; //吹气二开 进料 2024 3 24
delay10ms(50);
OutPut15=1; //出料口吹气一关 2024 324
OutPut5=1; //闸门一关
OutPut4=0; //过桥开
FLAG_M=14; //
printf("va1.val=%d\xff\xff\xff",FLAG_M);//过桥开
delay10ms(30); //
OutPut6=0; //闸门二开
Check_Stop(); //进料到位检测 2024 4 9
Delay_100ms(val15); //过桥开延时2024 4 10
OutPut16=1; //吹气二关 进料 2024 3 24
OutPut6=1; //闸门二关
OutPut4=1; //过桥关
OutPut12=0; //夹具四开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=7; //夹具四开
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
RstKey();
}
else
break;
//电机座润滑退检测
//进料结束 工位旋转 机座推进 电机自动攻丝标志置一
if(RUN_Flag==1) //自动运行标志为一 运行
{
RstKey();
//电机座润滑退检测
zstatus=0; //缺料报警计数器归零
Signauto=1; //行程开关循环标志
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=3; //机座检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
ReadIntPut(); //检测机座 润滑 过桥位置
OutPut20=1; //关 报警
OutPut1=0; //工位旋转 外部中断0关电机
OutPut17=0; //工位旋转 外部中断0关电机
Signauto=1; /*行程输入信号检测标志无输入为1,永久循环*/
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=2; //旋转检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
RstKey();
Time_Error=0; //定时器触发超时报警计数器归零
Time_Flag=1; //启动工位旋转报警标志由定时器计数
Time_Warning=val12; //报警缓冲定时器比较值
//工位旋转
do /*行程输入信号检测标志无输入为1,永久循环*/
{
delay10ms(10); //
if(Error_Flag==1) //定时器计数超设置值
{
OutPut20=~OutPut20; //旋转超时报警
}
if(RUN_Flag==0) //手动标志
{
Error_Flag=0; //关闭工位旋转报警标志
Signauto=0; //Signauto=0退出循环
break;
}
}
while(Signauto); //外部中断0检测到输入信号 退出循环
//工位五
//机座进 电机运行
OutPut14=1; //夹具六关2024 3 27
MotorOpen(); //攻丝进退
Counter++; //产量计数器加1
printf("n0.val=%d\xff\xff\xff",Counter); //
}
//缺料报警检测
check_Pon(); //进料检测
OutPut20=1; //关 报警
if(RUN_Flag==1) //
{
OutPut15=0; //出料口吹气一开2024 3 24
// OutPut14=1; //夹具六关
OutPut5=0; //闸门一开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=12; //
printf("va1.val=%d\xff\xff\xff",FLAG_M);//闸门一开
OutPut16=0; //吹气二开 进料2024 3 24
delay10ms(50);
OutPut15=1; //出料口吹气一关2024 324
OutPut5=1; //闸门一关
OutPut4=0; //过桥开
FLAG_M=14; //
printf("va1.val=%d\xff\xff\xff",FLAG_M);//过桥开
delay10ms(30); //
OutPut6=0; //闸门二开
Check_Stop(); //进料到位检测 2024 4 9
Delay_100ms(val15); //过桥开延时2024 4 10
OutPut16=1; //吹气二关 进料 2024 3 24
OutPut6=1; //闸门二关
OutPut4=1; //过桥关
OutPut13=0; //夹具五开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=8; //夹具五开
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
}
else
break;
//进料结束 工位旋转 机座推进 电机自动攻丝标志置一
if(RUN_Flag==1) //自动运行标志为一 运行
{
RstKey();
//电机座润滑退检测
zstatus=0; //缺料报警计数器归零
Signauto=1; //行程开关循环标志
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=3; //机座检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
ReadIntPut(); //检测机座 润滑 过桥位置
OutPut20=1; //关 报警
OutPut1=0; //工位旋转 外部中断0关电机
OutPut17=0; //工位旋转 外部中断0关电机
Signauto=1; /*行程输入信号检测标志无输入为1,永久循环*/
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=2; //旋转检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
RstKey();
Time_Error=0; //定时器触发超时报警计数器归零
Time_Flag=1; //启动工位旋转报警标志由定时器计数
Time_Warning=val12; //报警缓冲定时器比较值
//工位旋转
do /*行程输入信号检测标志无输入为1,永久循环*/
{
delay10ms(10); //
if(Error_Flag==1) //定时器计数超设置值
{
OutPut20=~OutPut20; //旋转超时报警
}
if(RUN_Flag==0) //手动标志
{
Error_Flag=0; //关闭工位旋转报警标志
Signauto=0; //Signauto=0退出循环
break;
}
}
while(Signauto); //外部中断0检测到输入信号 退出循环
//机座进 电机运行
OutPut9=1; //夹具一关2024 3 27
MotorOpen(); //攻丝进退
Counter++; //产量计数器加1
printf("n0.val=%d\xff\xff\xff",Counter); //
}
//工位六
//缺料报警检测
check_Pon(); //进料检测
OutPut20=1; //关 报警
if(RUN_Flag==1) //
{
OutPut15=0; //出料口吹气一开 2024 3 24
// OutPut9=1; //夹具一关
OutPut5=0; //闸门一开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=12; //
printf("va1.val=%d\xff\xff\xff",FLAG_M);//闸门一开
OutPut16=0; //吹气二开 进料 2024 3 24
delay10ms(50);
OutPut15=1; //出料口吹气一关2024 324
OutPut5=1; //闸门一关
OutPut4=0; //过桥开
FLAG_M=14; //
printf("va1.val=%d\xff\xff\xff",FLAG_M);//过桥开
delay10ms(30); //
OutPut6=0; //闸门二开
Check_Stop(); //进料到位检测 2024 4 9
Delay_100ms(val15); //过桥开延时2024 4 10
OutPut16=1; //吹气二关 进料 2024 3 24
OutPut6=1; //闸门二关
OutPut4=1; //过桥关
OutPut14=0; //夹具六开
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=9; //夹具六开
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
}
else
break;
//进料结束 工位旋转 机座推进 电机自动攻丝标志置一
if(RUN_Flag==1) //自动运行标志为一 运行
{
RstKey();
//电机座润滑退检测
zstatus=0; //缺料报警计数器归零
Signauto=1; //行程开关循环标志
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=3; //机座检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
ReadIntPut(); //检测机座 润滑 过桥位置
OutPut20=1; //关 报警
OutPut1=0; //工位旋转 外部中断0关电机
OutPut17=0; //工位旋转 外部中断0关电机
Signauto=1; /*行程输入信号检测标志无输入为1,永久循环*/
//1进料检测2工位旋转3机座检测4夹具一开5夹具二开6夹具三开7夹具四开8夹具五开9夹具六开10电机进11电机退12闸门一开13闸门二开14过桥开
FLAG_M=2; //旋转检测
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
RstKey();
Time_Error=0; //定时器触发超时报警计数器归零
Time_Flag=1; //启动工位旋转报警标志由定时器计数
Time_Warning=val12; //报警缓冲定时器比较值
//工位旋转
do /*行程输入信号检测标志无输入为1,永久循环*/
{
delay10ms(10); //
if(Error_Flag==1) //定时器计数超设置值
{
OutPut20=~OutPut20; //旋转超时报警
}
if(RUN_Flag==0) //手动标志
{
Error_Flag=0; //关闭工位旋转报警标志
Signauto=0; //Signauto=0退出循环
break;
}
}
while(Signauto); //外部中断0检测到输入信号 退出循环
//机座进 电机运行
OutPut10=1; //夹具二关2024 3 27
MotorOpen(); //攻丝进退
Counter++; //产量计数器加1
printf("n0.val=%d\xff\xff\xff",Counter); //
}
} //自动循环讫点
while(RUN_Flag);
rstio();
delay10ms(100);
if(Receive_Flag==1)
{
i=0; //数组计数器归零
OutPut22=1; //帧数据指示灯接收一帧开启处理完关闭
Receive_Flag=0;
Data_Set( ); //自动运行监测到数据设置
}
//15待机
FLAG_M=17; //待机
printf("va1.val=%d\xff\xff\xff",FLAG_M);//
OutPut20=1; //复位报警
}
/*------------初始化串口-波特率38400----------*/
void InitUart(void )
{
SCON=0x50; //8位数据,可变波特率
AUXR|=0x01; //串口1选择定时器2为波特率发生器
AUXR|=0x04; //定时器时钟1T模式
T2L=0xB8; //设置定时初始值
T2H=0xFF; //设置定时初始值
AUXR|=0x10; //定时器2开始计时
TI=1; //
ES=1; //38400
EA=1; //
}
/*------------定时器1中断----------------------*/
/***攻丝超时,旋转超时,退刀超时,润滑超时***/
/***val11,val12,val13,val14***/
/***Point_Flag工位零点校正完成标志***/
/***OutTime1工位零点校正完成指示灯***/
/***Time_Flag报警启动计时标志***/
/***Time_Flag报警启动计时标志***/
/***启动报警计数器Time_Error**/
void tm1_isr() interrupt 3
{
uchar valt; //
uint timea,timeb,timec,timed; //缓冲
valt++; //
if(valt>=100) //定时器计数器
{ //
valt=0; //
if(Point_Flag==1) //工位零点校正完成定时器指示灯闪烁
OutTime1=~OutTime1; //将测试口取反
if(Time_Flag==1) //
{ //
Time_Error++; //超时报警计数器加一
if(Time_Error>=Time_Warning&&Error_Flag==1)//超时报警计数器大于等于设置值
{
Time_Error=0; //超时报警计数器归零
Error_Flag=1; //超时报警使能开主程序喜欢间隔报警
}
}
}
if(MotoraRun_Flag==1) //电机A为1启动X电机
{
timea++; //
if(timea>=val16) //
{
timea=0;
CP0=~CP0; //
}
}
//工位一手动
if(MotorbRun_Flag==1) //电机B为1启动X电机
{
timeb++;
if(timeb>=val16)
{
timeb=0;
CP1=~CP1; //
}
}
//工位二手动
if(MotorcRun_Flag==1) //电机C为1启动X电机
{
timec++;
if(timec>=val16)
{
timec=0;
CP2=~CP2; //
}
}
//工位三手动
if(MotordRun_Flag==1) //电机D为1启动X电机
{
timed++;
if(timed>=val16)
{
timed=0;
CP3=~CP3; //
}
}
//工位四手动
}
/***定时器0中断电机手动控制*******************/
/***timea,timeb,timec,timed对应四只电机*******/
void timer0() interrupt 1
{
uint timea,timeb,timec,timed; //缓冲
uint ss;
//自动运行电机标志为一与限位等于一
if(MotoraAuto_Flag==1)//电机A为1启动X电机
{
timea++;
if(timea>=val1) //自动电机速度
{
timea=0;
CP0=~CP0; //
}
}
//工位一自动
if(MotorbAuto_Flag==1)//电机C为1启动X电机
{
timeb++;
if(timeb>=val1) //自动电机速度
{
timeb=0;
CP1=~CP1; //
}
}
//工位二自动
if(MotorcAuto_Flag==1)//电机B为1启动X电机
{
timec++;
if(timec>=val17) //自动电机速度
{
timec=0;
CP2=~CP2; //
}
}
//工位三自动 电机3 val17;
if(MotordAuto_Flag==1)//电机D为1启动X电机 &&IntPut12==1
{
timed++;
if(timed>=val1) //自动电机速度
{
timed=0;
CP3=~CP3; //
}
}
//工位四自动
ss++;
if(ss>=1000)
{
ss=0;
OutTime0=~OutTime0; //将测试口取反
}
}
/*-----------定时器0初始化-----------------------*/
void Timer0_Init(void) //100微秒毫秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x23; //设置定时初始?
TH0 = 0xFF; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
}
/*-----------定时器1初始化-----------------------*/
void Timer1_Init(void) //100微秒毫秒@11.0592MHz
{
TL1=0xAE; //设置定时初始值
TH1=0xFB; //设置定时初始值
TF1=0; //清除TF1标志
TR1=1; //定时器1开始计时
ET1=1; //使能定时器1中断
}
/*--------UART中断服务程序---串口4接收触摸屏数据---*/
void Uart() interrupt 4 using 1
{
if(RI)
{
a[i]=SBUF; //数组下标位置的数据等于SBUF
i++;
if(i==9) //触摸屏结束码 FRAMELENGTH
{
Receive_Flag=1; //接收数据标志置一
OutPut22=0; //帧数据指示灯接收一帧开启处理完关闭
if(a[0]==0XF0&&a[1]==0XF1) //手动
{
i=0; //数组计数器归零
Receive_Flag=0; //串口接收标志归零
OutPut7=1; //自动
OutPut8=0; //手动
RUN_Flag=0; //自动运行标志
Time_Flag=0; //关闭攻丝超时报警标志由定时器计数
Error_Flag=0; //关闭超时报警使能
MotoraAuto_Flag=0; //关闭电机A自动运行标志
MotorbAuto_Flag=0; //关闭电机B自动运行标志
MotorcAuto_Flag=0; //关闭电机C自动运行标志
MotordAuto_Flag=0; //关闭电机D自动运行标志
}
else if(a[0]==0XF0&&a[1]==0XF2) //关闭报警标志
{
Error_Flag=0; //定时器报警关闭标志串口接收到报警关闭数据 关闭报警输出
i=0; //数组计数器归零
Receive_Flag=0; //串口接收标志归零
}
}
RI=0; //
}
}
/*************工位电机外部中断0信号************/
/*************下降沿触发多次检测关电机*********/
void exint0() interrupt 0 //INT0中断入口
{
Rst_Key();
for(;k_counter<5;) //按键循环5次
{
if(!EX_INT0) //按键低电平
{
Low_VoltKey();
}
else if(~!EX_INT0) //按键高电平
{
High_VoltKey();
}
}
if(k_status>=4) /*按键状态标志大于等于3为有效值*/
{ /*循环检测 */
Signauto=0;
OutPut1=1; //旋转停止
OutPut17=1;
}
}