说到Modbus报6那么火,我再补充一点。一点点。

已锁定

芳季

西门子1847工业学习平台

  • 帖子

    15507
  • 精华

    101
  • 被关注

    960

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

说到Modbus报6那么火,我再补充一点。一点点。

1324

11

2018-12-27 22:20:40

能用上modbus的,都不会是光用一条MSG指令的。用modbus图啥?当然是希望很少的硬件资源控制很多下位了。

这样的话一个程序里面就不止一两个MSG了。

比如说一个程序写5个变频器的给定。使用了5条MSG指令。每条指令都按规矩组织好了轮训。暂且避开一些错误或容错纠错不谈。只谈下面的一种现象。

通常这种结构的通讯,写好了轮训,基本就不用干预通讯的事情了。程序执行pid什么的算出了变频器的给定,就可以一下子给到msg的参数,然后msg该干啥干啥。程序pid算出什么变频器就做出什么反应。一切都相当的美好。

然而,有人按照这种架构布置在另一个程序里面,而这个程序也是给定几个变频器。但是有一点变化,就是数据的来源不是pid,而是触摸屏。触摸屏修改了一次频率然后就传送一次到plc,plc就下发到变频器。这次也成功通讯。

再后来,由于变频器数量多了,而且一个变频器读写的量也多了。几十条的msg指令只能分时轮询写入变频器而不采取全部轮询,采取变化就写,不变就不写。

然而却发现有时候触摸屏明明修改了频率,但是变频器就是没有发生变化。好比44改到50,变频器仍然是44运行。但是屏幕上确实50啊。无奈把50修改,但是就算不从新输入只是确认一下,变频器有时也可以成功变到50运行。久而久,看看程序发现在按确认的时候msg产生了6的报警。由于已经输入了50不变化,此msg指令也停留在报警的状态没有消除。才发现。

最后只能怀疑这个怀疑那个,不再使用“变化才写入”这个策略。

然而,有一种情况一般很难发现。

假设现在只有一个msg指令,并且遵守触发原则。但是,在触发了,并且Done位没有on的这段期间,修改了数据这个管脚的间接寻址的目的位置的值。也就是变频器的给定频率这个参数。会造成报警6。

由于屏幕修改的参数只有在变化的时候才向plc提交一次通讯更新请求,请求过之后就不再变化,不再请求了。然而,这次的请求却正好发生在上一个通讯的进行阶段。(可能上一个通讯是本变频器运行指令的写入。)所以msg没有发送这次的信息了。

但是最令你意想不到的事情是,msg报警号是6 。

为何前面的都可以?我一直都是这样用的,都没事。这句话大家都用过,大家都听过。

原因是前面的是不间断地写入。后来的是变化才写入。其实前面的pid可能写很多次都是报警6,但是总会有那么一次碰巧不报警了,成功了。但是因为通讯的速度很快,电脑监视和人眼根本不察觉已经报过很多次6。中期,虽然是屏只写一次刷新,但是也属于不间断的通讯,总可以写入期望的值。而到了后期,是间断写入,每一次写入都必须成功的。此时就发现了很多不成功的事实了。但是苦于报警指向不准确,很多人无法排除这样的错误。有条件轮训这种策略就只能止步在这里了。

说到Modbus报6那么火,我再补充一点。一点点。 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8936条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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