" />  


西门子 气缸报警源程序 点击:592 | 回复:4



务实者

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:8帖 | 27回
  • 年度积分:1
  • 历史总积分:380
  • 注册:2003年11月16日
发表于:2015-05-21 21:32:34
楼主

气缸报警程序;

//trigger monitor time

    FOR #i := 1 TO #Cylinder_DB.workposno_hmi BY 1 DO //WorkPos no 

        FOR #j := 1 TO #Cylinder_DB.WorkPos[#i].cylinderNo BY 1 DO//valve index

            

            IF (((#Cylinder_DB.WorkPos[#i].cylinder[#j].inbase XOR #Cylinder_DB.WorkPos[#i].cylinder[#j].outbase) AND

                (#Cylinder_DB.WorkPos[#i].cylinder[#j].outbase OR #Cylinder_DB.WorkPos[#i].cylinder[#j].outwork)) OR

                ((#Cylinder_DB.WorkPos[#i].cylinder[#j].inwork XOR #Cylinder_DB.WorkPos[#i].cylinder[#j].outwork) AND

                (#Cylinder_DB.WorkPos[#i].cylinder[#j].outbase OR #Cylinder_DB.WorkPos[#i].cylinder[#j].outwork))) AND

                NOT #Reset AND  #Enable

            THEN

                #Cylinder_DB.WorkPos[#i].cylinder[#j].Running_time := #System_Time - #Cylinder_DB.WorkPos[#i].cylinder[#j].Start_time;

                IF (#Cylinder_DB.WorkPos[#i].cylinder[#j].Running_time >= #Cylinder_DB.WorkPos[#i].cylinder[#j].Set_time) THEN

                    #errorLamp := TRUE;

                    #Cylinder_DB.WorkPos[#i].error := true;

                    //

                    IF #Cylinder_DB.WorkPos[#i].cylinder[#j].outbase THEN

                        IF #Cylinder_DB.WorkPos[#i].cylinder[#j].inwork THEN

                            #Cylinder_DB.WorkPos[#i].cylinder[#j].err_donot_inwork := 1;//not to show this signal 

                        ELSIF NOT #Cylinder_DB.WorkPos[#i].cylinder[#j].inbase THEN

                            #Cylinder_DB.WorkPos[#i].cylinder[#j].err_not_inbase := 1;//not check the signal

                        END_IF;

                    END_IF;

                    IF #Cylinder_DB.WorkPos[#i].cylinder[#j].outwork THEN

                        IF #Cylinder_DB.WorkPos[#i].cylinder[#j].inbase THEN

                            #Cylinder_DB.WorkPos[#i].cylinder[#j].err_donot_inbase := 1;//not to show this signal 

                        ELSIF NOT #Cylinder_DB.WorkPos[#i].cylinder[#j].inwork THEN

                            #Cylinder_DB.WorkPos[#i].cylinder[#j].err_not_inwork := 1;//not check the signal

                        END_IF;

                    END_IF;

                    //

                    #Cylinder_DB.WorkPos[#i].cylinder[#j].outwork := FALSE;

                    #Cylinder_DB.WorkPos[#i].cylinder[#j].outbase := FALSE;

                END_IF;

                EXIT;

            ELSE

                #Cylinder_DB.WorkPos[#i].cylinder[#j].Start_time := #System_Time;

                #Cylinder_DB.WorkPos[#i].cylinder[#j].Running_time := T#0ms;

            END_IF;

            

            IF #Cylinder_DB.WorkPos[#i].cylinder[#j].err_not_inbase OR

                #Cylinder_DB.WorkPos[#i].cylinder[#j].err_donot_inbase OR

                #Cylinder_DB.WorkPos[#i].cylinder[#j].err_not_inwork OR

                #Cylinder_DB.WorkPos[#i].cylinder[#j].err_donot_inwork THEN

                #errorLamp := 1;

                #Cylinder_DB.WorkPos[#i].error := 1;

            END_IF;

        END_FOR;

    END_FOR;

    

IF (#Reset = true) THEN

    #errorLamp := FALSE;

    FOR #i := 1 TO #Cylinder_DB.workposno_hmi BY 1 DO //WorkPos no 

        //  IF #Cylinder_DB.WorkPos[#i].error THEN

        FOR #j := 1 TO #Cylinder_DB.WorkPos[#i].cylinderNo BY 1 DO //cyl_no

            #Cylinder_DB.WorkPos[#i].cylinder[#j].err_not_inbase := 0;

            #Cylinder_DB.WorkPos[#i].cylinder[#j].err_donot_inbase := 0;

            #Cylinder_DB.WorkPos[#i].cylinder[#j].err_not_inwork := 0;

            #Cylinder_DB.WorkPos[#i].cylinder[#j].err_donot_inwork := 0;

        END_FOR;

        //  END_IF;

        #Cylinder_DB.WorkPos[#i].error := FALSE;

    END_FOR;

END_IF;




第五纪冰川

  • 精华:3帖
  • 求助:5帖
  • 帖子:37帖 | 4224回
  • 年度积分:3
  • 历史总积分:12263
  • 注册:2005年2月18日
发表于:2015-05-22 17:56:42
1楼

有些时候还是梯形图来的直观。

务实者

  • 精华:0帖
  • 求助:1帖
  • 帖子:8帖 | 27回
  • 年度积分:1
  • 历史总积分:380
  • 注册:2003年11月16日
发表于:2015-05-28 10:12:12
2楼

梯形图写作界面太窄了。现在主流程序都是 文本语言来编辑的。

像 AB    倍福  CODESYS  都主推 文本试编辑。

相关的比如OMRON   KEYENCE 都支持文本语言编辑。

以后主流都是用这个语言来编辑程序。跟上时代呀。


sunwynne

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 374回
  • 年度积分:0
  • 历史总积分:127
  • 注册:2015年6月15日
发表于:2020-12-11 15:34:45
3楼

很好的资料,谢谢楼主

sunwynne

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 374回
  • 年度积分:0
  • 历史总积分:127
  • 注册:2015年6月15日
发表于:2020-12-11 15:34:45
4楼

很好的资料,谢谢楼主


热门招聘
相关主题

官方公众号

智造工程师