st,回零功能块的程序编写

FUNCTION_BLOCK FB_HOMING
        
        VAR_INPUT
            myaxis              : posaxis;
            starthoming         : BOOL;
            offset              : LREAL;
        END_VAR
        
        VAR
            myRetDINT           : DINT;
            mystarthomingrtrig  : r_trig;
            mystarthoming       : BOOL;
            myaxishomedrtrig    : r_trig;
        END_VAR
        
        VAR_OUTPUT
            my_axishomed        : BOOL;
        END_VAR
        
        
        mystarthomingrtrig(clk := starthoming);
        myaxishomedrtrig(clk := my_axishomed);
        
        IF mystarthomingrtrig.q THEN 
            mystarthoming := TRUE;
        ELSIF myaxishomedrtrig.q THEN
            mystarthoming := FALSE; 
        END_IF;
    
        myaxis.setconfigdata.typeofaxis.numberofencoders.
            encoder_1.inchomingencoder.proceedshiftpos := offset;
        
        IF mystarthomingrtrig.q AND myaxis.control=ACTIVE THEN            
            myRetDINT :=
                _homing(
                        axis := myaxis,
                        homingmode := ACTIVE_HOMING,
                        homepositiontype :=DIRECT,
                        homeposition := 0.0,
                        velocityprofile := TRAPEZOIDAL,
                        mergemode := IMMEDIATELY,
                        nextcommand := WHEN_BUFFER_READY,
                        commandid := _getcommandid()
                        );
        END_IF;
    
        IF myaxis.positioningstate.homed = yes THEN
            my_axishomed := TRUE;
        ELSE
            my_axishomed := FALSE;
        END_IF;
    END_FUNCTION_BLOCK

问题补充:
这段程序,前几段关于变量的定义基本看的懂,后面就不怎么懂了,myaxis.setconfigdata.typeofaxis.numberofencoders.
            encoder_1.inchomingencoder.proceedshiftpos := offset,又是上面意思呢,myRetDINT,是什么意思? 那位帮忙解释下?
一句一句的解释啊?

最佳答案

这是一段主动回零的程序。
可以参考一下资料

1、程序首先定义了两个上升沿,当starthoming和axishomed来临时触发两个上升沿。
2、当上升沿mystarthomingrtrig触发后,赋值变量mystarthoming
表示开始回零,当上升沿myaxishomedrtrig触发,变量复位,回零结束(这个上升沿后面将触发)
3、myaxis.setconfigdata.typeofaxis.numberofencoders.
            encoder_1.inchomingencoder.proceedshiftpos := offset;
是设定一个偏移量,类型为LREAL,具体变量解释可以点击相应的轴看symbol browse,找到这个变量,看它的属性。
4、前面那个上升沿触发,并且轴使能后开始回零指令。myRetDINT只是在执行回零指令_homing()所要求定义的返回值,在VAR里面也定义了,可以随便定义名称的,是一个DINT型,有时可以根据这个返回值确定程序执行的状态。
5、当回零完成后,用轴的回零变量置位my_axishomed, 变量my_axishomed同时又触发上面的上升沿程序。
参考资料:http://www2.ad.siemens.com.cn/download/Upload/MC/application/A0452.pdf

提问者对于答案的评价:
大哥,你太强了,拜你为师了!
 留个联系方式可以吗?我的QQ:120801321 ,:)

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc159506.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月8日 下午5:34
下一篇 2017年6月8日 下午5:34

相关推荐