组态王MODBUS驱动的问题 点击:5609 | 回复:7



小鲨鱼

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 5回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2002年10月15日
发表于:2009-05-21 10:56:16
楼主

    今天发现了一个组态王MODBUS驱动的问题。

    我用组态王6.5读一个DI模块。该模块是MODBUS RTU协议的,16路开关量输入。由于只用了前7个输入,所以我就只定义了7个DI点。运行良好。

    今天,客户要求用力控来做,于是我就该力控了。同样定义了7个DI点。可是运行的时候力控老是说该DI模块通讯故障,百思不得其解。

    终于用串口捕获软件看看通讯过程后,发现原因了!!!!

    原因如下:

    原因1、我用的DI模块是sb。本来我只用前7个DI,力控读的时候,也只读了钱7个DI,发出如下命令(1号站):

                         01 02 00 00 00 07 39 C8

          正常情况下,模块返回:01 02 01 xx crc,可是这个sb模块返回的是:01 02 02 xx xx crc。就是说我只读了7个DI,他返回了大于8个的DI(应该是16个吧)。所以力控检查返回的时候,检查出错误了,就抱错了。

    原因2、组态王没仔细检查模块返回。(用组态王时,通讯过程和上面相同。)

    为了验证,我用MODBUS poll来读了一下该DI模块。读大于8个DI的时候,通讯正常;读小于9个DI的时候,MODBUS poll就报CRC校验错。

    我一直用组态王配该模块,而组态王就一直把问题掩盖了。

    不知道是组态王的BUG呢,还是组态王体贴用户,知道有些sb模块会不遵守MODBUS标准呢?

    总之,1、我以后再也不用那个公司的模块了。虽然便宜,可是保不准还有什么问题;2、我以后也会尽量少用组态王了。




bt001

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 167回
  • 年度积分:0
  • 历史总积分:540
  • 注册:2009年5月21日
发表于:2009-05-21 12:45:02
1楼

实际上不仅是国内还是国外的产品,由于设计工程师对现场总线协议理解的不同,造成编制程序的或多或少的兼容性问题。这个情况比较多,所以好的公司会对产品做兼容性测试或者做第三方认证等。我们也曾经用过国内某公司的8路模拟输入模块,问题和你这个IO模块差不多。至于组态软件对于不同模块的误差控制,个人认为当然容错性要越高越好了,这样选择余地比较大。当然关键问题不能错:比如能够识别CRC校验错误,能够识别正确的命令码以及地址码,能够识别正确的寄存器地址等等,数据长度至少大于等于实际长度吧?这些问题,同行们有时间可以测试一下。

bt10000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2009年5月21日
发表于:2009-05-21 15:02:25
2楼

    我个人觉得组态王这样的设计不妥当。

    举个例子。

    看样子,本例中,DI模块不管收到的读开关量命令是什么,都把16个开关量返回,那么DI0就在byte0的bit0,DI1在byte0的bit1,DI2在byte0的bit2,...,DI8在byte1的bit0,...。可是如果我要读的不是从DI0开始,比如是从DI2开始的几个开关量输入,那么根据协议,在返回中,DI2在byte0的bit0,DI3在byte0的bit1,...。显然组态王会把本例中模块的DI0作为DI2读入,...。

    简单的说,MODBUS协议响应中,并没有包含寄存器的起始地址信息,所以本例中的模块和组态王配合一定会产生问题,只是没暴露罢了。

    可能是这个公司的产品用的少吧,没有暴露出问题来。

桉树

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 5回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2002年10月15日
发表于:2009-05-21 15:46:05
3楼
期待组态王能答疑解惑!

长征三号

  • 精华:0帖
  • 求助:1帖
  • 帖子:54帖 | 910回
  • 年度积分:0
  • 历史总积分:1121
  • 注册:2008年6月16日
发表于:2009-05-24 22:47:17
4楼
大家可以留下QQ号码来交流一下吗,大家共同提高学习

dustya

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 54回
  • 年度积分:0
  • 历史总积分:197
  • 注册:2003年7月16日
发表于:2010-11-01 19:48:46
5楼

我有一个问题,用的是modbus RTU, 我现在用kingview链接 一个控制器,走modbus RTU ,不能写实数过去,读的时候有的数对,有的数差一点,请高手指教
广东\袁(17505756)6:33:40 PM
我用modscan 32就能正常操作,多半是驱动问题,请问如何处理?
找回工程密码(952311560)6:38:42 PM
数据类型问题
广东\袁(17505756)6:39:05 PM
请说说看?
广东\袁(17505756)6:39:42 PM

广东\袁(17505756)6:39:57 PM
就这个4.1,用modscan 读写都可以
找回工程密码(952311560)6:39:52 PM
多试试,我也说不好
找回工程密码(952311560)6:40:03 PM
你的寄存器地址是多少
广东\袁(17505756)6:40:22 PM

广东\袁(17505756)6:40:51 PM
我选的驱动是莫迪康的modbus RTU
广东\袁(17505756)6:41:05 PM
我都试了
找回工程密码(952311560)6:41:00 PM

找回工程密码(952311560)6:41:03 PM
看不到图
广东\袁(17505756)6:41:29 PM
第一个读能看到不?
找回工程密码(952311560)6:41:22 PM
你的地址加1了吗
找回工程密码(952311560)6:41:29 PM
转换成十进制了吗
找回工程密码(952311560)6:41:46 PM
所有的图都看不到
广东\袁(17505756)6:42:02 PM
都没问题,只是小数后面有的对不上
找回工程密码(952311560)6:42:13 PM
看不到图
广东\袁(17505756)6:43:02 PM
比如说我在仪表上设置的4.5,我在kingview里也能读到4.5,如果是4.2可能读到的就不是4.2,整数似乎没问题
广东\袁(17505756)6:43:13 PM
写的话,就不会变
找回工程密码(952311560)6:44:03 PM
不是4.2,是什么
广东\袁(17505756)6:44:19 PM
如果都读不上来,那倒好说,现在主要是写不了,如果我写个4,发现我的仪表启动了
广东\袁(17505756)6:44:22 PM

广东\袁(17505756)6:45:19 PM
4.1875
广东\袁(17505756)6:45:43 PM
4.3, 4.2813
广东\袁(17505756)6:46:02 PM
4.4 4.3750
广东\袁(17505756)6:46:29 PM
4.5 4.5
广东\袁(17505756)6:46:45 PM
4.6 4.5938
找回工程密码(952311560)6:46:42 PM
哦,你只让他显示1位小数啊
广东\袁(17505756)6:47:05 PM
4.9 4.8750
找回工程密码(952311560)6:46:54 PM
正常
广东\袁(17505756)6:47:28 PM
5.0 5.0
广东\袁(17505756)6:48:24 PM
应该不正常,我以前用honeywell HC900应该是能都对上的
找回工程密码(952311560)6:48:22 PM
是你仪表的问题,这个正常
广东\袁(17505756)6:48:51 PM
但是我写不过去
找回工程密码(952311560)6:49:36 PM
读写属性,看看对吗
广东\袁(17505756)6:51:15 PM
这个没问题,而且我如果写数的话,如果我写16, 我的机器就开起来了,相当于给了启动信号
广东\袁(17505756)6:51:28 PM
说明有数写过去了
找回工程密码(952311560)6:52:18 PM

找回工程密码(952311560)6:52:28 PM
、这不知道了,慢慢研究
广东\袁(17505756)6:53:15 PM
只要我写过去的数,BCD第5位为1,就自己开起来,比如说16, 17,19
广东\袁(17505756)6:55:12 PM
比较郁闷,有时间也帮我想想,看来是要搞驱动了

称王之路

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 58回
  • 年度积分:0
  • 历史总积分:108
  • 注册:2010年10月30日
发表于:2010-11-01 20:51:57
6楼
大家可以留下QQ号码来交流一下吗,大家共同提高学习

rijqu84

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 18回
  • 年度积分:0
  • 历史总积分:28
  • 注册:2010年11月02日
发表于:2010-11-02 10:46:05
7楼
纪伟荣
浙江铭道通信技术有限公司
Tel: 0579-85113688转8012
Fax:0579-85113688转8007
15924262554
market@medou.com.cn
HTTP://www.medou.com.cn
********************************************************
专业研发、生产及销售:MDA(数模转换设备)、MDE(信令转换设备)
MDC(信令采集设备)、MDM(IP媒体网关)、MDR(专业大容量录音设备)
及高速信令板卡等。
********************************************************

热门招聘
相关主题

官方公众号

智造工程师