⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remote.c

📁 伺服控制器主要用于电动执行器的控制 在工业方面大量应用
💻 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 + -