📄 remote.c
字号:
void remote() //远程控制程序段
{
Ng = (unsigned int)(((float)(result_Ng - Ng_min)/(float)(Ng_max - Ng_min))*10000);//得到给定万分比
Direction = Ng - Nf; //得到判定信号方向、偏差大小
if(abs(Direction)>sense_RAM*10) //偏差量大于死区量、执行机构动作
{
action = 0xFF;
}
if(action == 0xFF)
{
if(Direction > 0)
{
if(Direction < 65) //精度确定,小于分辨率,阀门不动
{
if((Ng==10000)&&(open != 0xFF)) //在全开位置
{
P5OUT = 0x05; //封锁关信号、开信号有效、停止信号无效
fwd = 0xFF; //置开标志
stop = 0x00; //清停止标志
rev = 0x00; //清关标志
}
else
{
P5OUT = 0x00; //开、关信号无效、停止信号有效
action = 0x00; //清变频器动作标志
stop = 0xFF; //停止标志
fwd = 0x00; //清开标志
rev = 0x00; //清关标志
}
}
else if(Direction >= 65) //阀门正转
{
if(rev == 0xFF) //关状态值正在作用
{
P5OUT = 0x00; //开、关信号无效、停止信号有效 逆转保护
close_to_open_time++; //关->开状态转换时间累计,实现瞬间逆转保护
if(close_to_open_time>200) //?时间有待计算
{
close_to_open_time = 0; //清关->开状态转换时间
rev = 0x00; //清关状态有效标志
}
}
else
{
P5OUT = 0x05; //封锁关信号、开信号有效、停止信号无效
fwd = 0xFF; //置开标志
stop = 0x00; //清停止标志
rev = 0x00; //清关标志
}
}
}
else
{
if(Direction > -80) //在全关位置
{
if((Ng == 0) && (close != 0xFF))
{
P5OUT = 0x06; //封锁开信号,关信号有效、停止信号无效
rev = 0xFF; //置关标志
fwd = 0x00; //清开标志
stop = 0x00; //清停止标志
}
else
{
P5OUT = 0x00; //开、关信号无效,停止信号有效
action = 0x00; //清变频器动作标志
stop = 0xFF; //停止标志
fwd = 0x00; //清开标志
rev = 0x00; //清关标志
}
}
else if(Direction <= -80) //阀门反转
{
if(fwd == 0xFF) //开状态值正在作用
{
P5OUT = 0x00; //开、关信号无效、停止信号有效 逆转保护
open_to_close_time++; //开->关状态转换时间累计,实现瞬间逆转保护
if(open_to_close_time>200) //?时间有待计算
{
fwd = 0x00; //清关状态有效标志
open_to_close_time = 0; //清开->关状态转换时间
}
}
else
{
P5OUT = 0x06; //封锁开信号,关信号有效、停止信号无效
rev = 0xFF; //置关标志
fwd = 0x00; //清开标志
stop = 0x00; //清停止标志
}
}
}
}
else //没有动作标志
{
P5OUT = 0x00; //开、关信号无效,停止信号有效
action = 0x00; //清变频器动作标志
stop = 0xFF; //停止标志
fwd = 0x00; //清开标志
rev = 0x00; //清关标志
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -