回复:运动控制指令中的Execute的用法

手机用户20190504240905

  • 帖子

    20
  • 精华

    0
  • 被关注

    5

论坛等级:游民

注册时间:2019-05-04

普通 普通 如何晋级?

发布于 2019-06-12 19:33:25

12楼

用更加直观的方法说明问题,假设程序简化模型如下。

//定义:ex bool;

//定义:blastex bool;

//定义:btrig bool;



ex := 1;//这是中断程序第1行


//带ex接口的电机块,其内部一定含有上升沿检测程序(否则功能块无法感知上升沿),假设其内部上升沿检测如下:

//电机功能块简化模型------开始

btrig := ex and (not blastex);//上升沿检测,这是电机定位块的一部分

blastex := ex;//上次输入记忆,这是电机定位块的一部分,方便下次上升沿检测

if btrig then

    //执行相关定位动作

end_if;

//电机功能块简化模型------结束


ex := 0;//这是中断程序最后行

//楼主源程序到此结束--------------


//修改,清零后再次执行一次功能块,让其内部的blastex也被清零,而此动作由于不会产生上升沿,对原程序动作不会有任何副作用

//电机功能块简化模型------开始

btrig := ex and (not blastex);//上升沿检测,这是电机定位块的一部分

blastex := ex;//上次输入记忆,这是电机定位块的一部分,方便下次上升沿检测

if btrig then

    //执行相关定位动作

end_if;

//电机功能块简化模型------结束

说明:

程序执行由于blastex在上电时被清零,此程序段首个上升沿检测显然正确。从第2个上升沿开始,由于ex清零已经是最后一行,功能块没有再次扫描,所以blastex一直保持为1。所以以后的上升沿都无法检测了。跟多长时间的中断一点关系都没有。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15647条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。