回复:1200编程中的上升沿,下降沿指令

LionAL99

  • 帖子

    153
  • 精华

    4
  • 被关注

    1

论坛等级:游侠

注册时间:2007-03-20

普通 普通 如何晋级?

发布于 2013-09-25 22:32:59

3楼

quote:以下是引用violin在2013-09-24 20:17:32的发言:
quote:以下是引用尚成在2013-09-23 14:26:15的发言:
这里有了IN和M_BIT两个操作数,这里M_BIT可以记住上一个状态。方便你使用啊

这个状态基本没用呀,而且如果状态有变化的话,那上一状态我现在的状态是相反的。

*************************************************************************************************
这个状态很有用!
我之前刚做了一个项目,用的是日系某品牌,该项目在主程序中3次调用某子程序,子程序中有下降沿脉冲指令用于计数,在调试时发现计数不是按预计出现下降沿脉冲时计数一次,而是不停计数。
反复检查子程序逻辑,未发现问题。最后将子程序只调用一次则计数正常。

经再三思考,发现问题出在子程序中调用了脉冲指令,解释如下:
假设:子程序中使用了形参M0的下降沿脉冲指令,此指令对寄存器D0加计数。第一次调用实参为X0,第二次调用时实参为X1。
程序运行后X0接通,X1断开。程序执行如下:
1)X0接通;
2)第一次调用,进入子程序,M0接通;
3)第一次调用结束,M0保持ON;
4)第二次调用,此时因X1未接通,进入子程序时M0为OFF;
5)M0状态由ON变为OFF,出现下降沿脉冲,D20加1计数;
6)程序重复执行,则重复以上1~5步。

发生以上情况的原因是当退出子程序时,系统只能保持一次位变量前一周期扫描状态,当第二次调用子程序 时,此状态会被错误引用(只调用一次则没问题)

后来将子程序中脉冲指令移到子程序外,测试未发现问题。

我以查阅了其它PLC资料,发现另一日系品牌及S7-200存在相同问题。但S7-300/400/1200中则可设置可分别设置前一扫描周期状态保持位,不会发生以上问题。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15707条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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