回复:CP341的Modbus多从站通讯

eaglesky

  • 帖子

    660
  • 精华

    22
  • 被关注

    16

论坛等级:侠圣

注册时间:2005-12-05

普通 普通 如何晋级?

发布于 2010-11-10 09:11:03

25楼

很久没上网了。没正式上网,有几个月没摸PLC了。。。。
看到前面的内容,我就有猜到可能是因为程序处理方式上的问题。我之前有写过串口通讯,虽然不是Modbus,当时琢磨了很长时间,最后完成的时候,程序却并不是很长。
串口通讯总线上的设备会有“掉线”,如某个仪表掉电、坏了、线松了等等,个人认为这是必须考虑的情况。从通讯的性能上说,倾向于使用信号标识进行判断,但是从“掉线”来说,这样显然不完善。所以我当时做的就是正常情况下使用标识位,同时做延时判断,注意延时判断时间要合适。
而对于出现延时问题的仪表,我的处理是直接过去了,去和下一个仪表通讯了,而不进行重发。因为我觉得没重发的必要。理由是:1。还有其他的仪表在等着通讯呢;2。下一个循环过来,自然会再次尝试通讯;3。重发的处理太麻烦,需要判断,需要重发,还需要限制次数,总不能无限制的去努力和一块可能都没上电的仪表通讯吧。我当时的做法的结果是,在所有仪表通讯正常的情况下,一个轮巡下来的时间不算很长,但是如果其中有某块表掉线,就要靠延时判断,导致通讯时间直接延长了。
其实我做的也不完善,还有些功能我有想了,但是没做到的。比如:如果某块表掉线,在上位画面中应该有所显示,否则上位画面显示的是最后一次的正常数据,不对仪表应该的数据很熟悉的话是发现不了问题的;这点后来倒是处理了一下,但是方式不是非常好,至少不是我自己十分满意的。还有就是,应该做一个屏蔽功能,就是把长时间掉线的仪表通讯屏蔽掉,以节约总线通讯时间,这点当时也没有做到。
没有个性的签名就别签了。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54759条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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