回复:轮询做不好,人都要疯掉了

dennyshen2549

西门子1847工业学习平台

  • 帖子

    156
  • 精华

    0
  • 被关注

    6

论坛等级:侠客

注册时间:2010-03-07

普通 普通 如何晋级?

发布于 2019-03-06 12:28:33

20楼

展开查看
以下是引用Zaxife在2019-03-06 11:57:03的发言 >16楼

MSG的指令说了,EN=1、且Done=1时,MSG的输出信息才是准确的。

如果EN=0后或者Done=0,MSG的输出信息都是不准确的。


当EN=1、且First上升沿时,MSG的输出Done=0,Error信息是无效的了。但是此时如果修改了MSG的输入参数,1000%会出现Error=6。


所以,想要取消66666?那就不要修改MSG的输入参数,再EN和First触发一次等Done为1时就完成了。如果有多个MSG不等Done就修改参数?就EN触发?那是你的程序作死问题了。

以下是引用dennyshen2549在2019-03-05 20:08:15的发言 >6楼:建是经我测试,一个...

引用6楼详细内容:

建是经我测试,一个MSG后,DONE标志位置1后,哪性EN失效,也不会复位哪,这个很难用这个去触发另一个MSG

以下是引用Zaxife在2019-03-05 17:27:24的发言 >3楼:如果你的程序里面只...

引用3楼详细内容:

如果你的程序里面只有一个MSG,那么你需要MSG的Done后的第二个主程序循环才能再次触发MSG的EN,否则绝对66666.....

也就是说,Done后必须保证MSG的EN为0一个主程序周期以上,不要让EN在执行完成后又立刻再次执行,那样First都还没建立就修改了MSG的参数妥妥的报6。

所以,我都是用两个MSG以上快速高效。

这个问题,我也想过,MSG标志位,这个为了验证EN=1、且Done=1时,MSG的输出信息才是准确的,我用这个标志位用计数,看看为不会置位及复位,我就是想让这个DONE完成后,变0,这样下次调用MSG后又变1,这样才能上升沿触发下一个MSG的使能端,但计数只有1,

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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