📄 check._c
字号:
///////////////////////////////////////////////////////////////
/**************************************************************
公司名称: 扬州恒博科技
模块名 : 点动型STQ执行机构主控程序
创建人 : 章俭文
日期 : 2008/08/19
功能描述: 完成对本地旋钮和远程开关量的控制功能
其它说明: 编译环境为ICCAVR V6.31A
版本 : V1.0
**************************************************************/
///////////////////////////////////////////////////////////////
#define CHECK_GLOBAL
#include "check.h"
void check(void) //电机参数检测任务,只上电时执行一次
{
limit_direction = 0;
if(GetLimit1()) //限位1正常为关限位
{
LIMIT1:
OpenMotor();
MotorDelayTime = 0;
while((MotorDelayTime<200)&&GetLimit());
if(GetLimit1())limit_direction = 0;
else limit_direction = 1;
CloseMotor(); //复位电机
MotorDelayTime = 0;
while((MotorDelayTime<200)&&!GetLimit());
StopMotor();
return;
}
else if(GetLimit2()) //限位2正常为开限位
{
LIMIT2:
CloseMotor();
MotorDelayTime = 0;
while((MotorDelayTime<200)&&GetLimit());
if(GetLimit2())limit_direction = 0;
else limit_direction = 1;
OpenMotor();
MotorDelayTime = 0;
while((MotorDelayTime<200)&&GetLimit());
StopMotor();
return;
}
else //在中间位置时尝试使电机动作到限位
{
OpenMotor();
MotorDelayTime = 0;
while((MotorDelayTime<200)&&!GetLimit());
if(GetLimit1())goto LIMIT1;
if(GetLimit2())goto LIMIT2;
if(!GetLimit())
{
CloseMotor();
MotorDelayTime = 0;
while((MotorDelayTime<250)&&!GetLimit());
if(GetLimit1())goto LIMIT1;
if(GetLimit2())goto LIMIT2;
if(!GetLimit())
{
MotorDelayTime = 0;
while((MotorDelayTime<400UL)&&!GetLimit());
if(GetLimit1())goto LIMIT1;
if(GetLimit2())goto LIMIT2;
}
StopMotor();
if(GetLimit1())goto LIMIT1;
if(GetLimit2())goto LIMIT2;
}
if(!GetLimit()) //失败之后让程序定位在这里
{
while(1)
{
ClrLocalLed();
ClrRemoteLed();
}
}
}
}//end of check
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -