来自西门子技术支持热线的故事:计数器Counter的预设值PV,如何设定?

已锁定

西门子Auto

官方工程师

  • 帖子

    126
  • 精华

    16
  • 被关注

    234

论坛等级:侠圣

注册时间:2007-08-03

普通 普通 如何晋级?

来自西门子技术支持热线的故事:计数器Counter的预设值PV,如何设定?

7463

30

2011-10-10 11:39:59

早晨,我顺着北京早高峰的人流,辗转来到办公室,开始一天的热线工作。
我按登记电话,给客户打了过去,客户的彩铃很炫,“您好,我是接线员葛优,您呼叫的用户已经超出了地球服务区,我们将以广播找人的方式帮您联络。。。。。。”
终于接通了,“刘工您好,我是西门子热线,您有个计数器问题是吗?”
客户:“对。我搞了多年工控,居然计数器C都搞不定了,昨天折腾一天了。计数器预设值PV,到底怎么设?为啥时而正常,时而报错,甚至CPU停机,SF亮红灯,诊断信息显示BCD转换错误”
哦,肯定是编程错误了。“刘工,您的程序是不是计数器C编号冲突,在其他地方是不是也有这个C的定义?”
客户:“肯定没有冲突,我交叉参考表中都查了。我换了好几个C,也是这样的问题”
我继续挖,“刘工,您计数器C的预设值PV,是什么变量?是不是地址冲突?”
客户:“你就放心吧,我都查了,也换过地址,肯定没冲突。我干了多年PLC了,这些我都懂得”
莫非是预设值PV大于999了?我问道:“刘工,计数器C的范围是0~999,您没超限吧?”
客户:“没有,我的PV值是456,没超限的”
呦,看来问题有点复杂,编程问题是千头万绪的,这样语言沟通很难搞清楚。“刘工,您可否把出问题的这一块程序拷屏,把图片发过来?诊断信息也发来,好吗?”
客户动作麻利,很快就发邮件过来了。
客户程序如下图所示:






客户反映,在计数器预设值MW20小于等于9时,一切正常。MW20大于等于10时,置位S则CPU会停机,STOP亮黄灯,SF亮红灯。诊断信息如下图:



在程序中添加OB121后,再次置位S,则只SF亮红灯。诊断信息如下图:



有图有真相,我很快弄明白了客户的症结所在,问题就出在预设值MW20上。
首先,要知道计数器接口参数的数据类型,如下图。



可见,预设值PV是WORD类型,并且是C#<value>的格式。计数器C#<value>格式是什么呢?计数器C#<value>格式就是BCD码,范围为C#0 ~ C#999。
哈哈,看出问题了吧。客户用MW20做预设值PV,数据格式不对,必须转为BCD码才行。但为什么MW20等于小于9时,一切正常呢?这是因为9以内,和BCD码表示完全一样。大于9时,就大相径庭了。
正确做法,如下图所示。注意,MW20既可以做INT类型,也可做WORD类型。为严肃纪律,在此推荐用数据块DB地址,以便数据类型WORD和INT做明确定义。








来自西门子技术支持热线的故事:计数器Counter的预设值PV,如何设定? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54658条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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