一个自动切换模块【苏】

1、需求说明

  • 输入信号分别是1/2/3/4、输入就一个信号
  • 信号源的优先级从高到低,为1~4
  • 可以手动或自动切换两种方式
  • 代码如下
    #DEFAULT_VOLATILE
    #ENABLE_STACK_CHECKING
    #ENABLE_TRACE
    
    DIGITAL_INPUT  Enable,_skip_,Video_Detecte[4];
    ANALOG_INPUT   Ain[2];
    
    ANALOG_OUTPUT out[2];
    change Video_Detecte
    {
         if(enable)
         {
            if(Video_Detecte[1] = 1)
            {
                out[1] = 1;
                out[2] = 1;
    
            }
            else if(Video_Detecte[1] = 0&&Video_Detecte[2] = 1)
            {
    
                out[1] = 2;
                out[2] = 2;
            }
            else if(Video_Detecte[1] = 0&&Video_Detecte[2] = 0 &&Video_Detecte[3] = 1)
            {
    
                out[1] = 3;
                out[2] = 3;
            }
            else if(Video_Detecte[1] = 0&&Video_Detecte[2] = 0 &&Video_Detecte[3] = 0 &&Video_Detecte[4] = 1)
            {
    
                out[1] = 4;
                out[2] = 4;
            }
            else if(Video_Detecte[1] = 0&&Video_Detecte[2] = 0 &&Video_Detecte[3] = 0 &&Video_Detecte[4] = 0)
            {
    
                out[1] = 1;
                out[2] = 1;
            }
    
         }
    }
        
    change AIN
    {
        integer i;
        i = GetLastModifiedArrayIndex ();
        out[i] = ain[i];
    }

     

  •    enable   = 1 是启动自动切换      0未禁用自动切换
  • Video_Detecte表示信号源输入
  • AIN  模拟量信号输入
  • out模拟量信号输出

 

 
posted @ 2023-12-04 13:05  zhang0513  阅读(4)  评论(0编辑  收藏  举报