lo-lo25 发表于 2011-1-24 09:44:04

有关modbus读不连续的寄存器数据怎么办?

设备定义了1000,1600,1700的寄存器号,如果我读起始的寄存器号为1000,个数为3;那么这时候设备要怎么响应啊?是正确读出1000,1600,1700寄存器的值;还是报错?

randyzzy 发表于 2011-1-24 10:59:53

如果你用工控软件这样操作是读不上你要的数据的,报不报错就看你下位机的响应,要是没有做相应的响应,工控软件就告诉你连接错误或无设备无响应(个人理解)

lo-lo25 发表于 2011-1-24 11:28:28

也就是说必须读寄存器必须是连续的了,否则就没有意义了吧。我看了modbus协议里面好像有讲到可以包括不连续的寄存器.
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_613121U33POY.JPG
(原文件名:不连续的寄存器.JPG)

randyzzy 发表于 2011-1-24 11:41:09

这个我还真没弄过,那样看你上位机用的是什么软件了,看此软件是否支持。

licheng0620 发表于 2011-1-24 12:11:54

不会报错,只能分3次读了

lylatyou 发表于 2011-1-24 18:53:43

要看对方协议怎么来编写的。可以让报异议,也可以不报异议。

My5A1 发表于 2011-1-24 19:11:00

协议的意思应该是:
如果读1000 开始的三个地址比如 1000,1002,1004,如果使用读多寄存器功能,假设上位机设置读5个连续地址,
那么1000,1001,1002,1003,1004 这5个会连续读上来,只取你需要的即可。

yuandong5251 发表于 2014-2-10 18:45:22

Modbus协议只支持连续地址读取,编程的时候,如果一次通讯较长连续地址的时间大于分段读取的时间,那就分段读取,也就是说读取数据的长度是个变量,你事先设置的,取决于波特率和从机反应总时间,系统要通讯的不连续地址间隔大于这个长度,就分几次读,

yuandong5251 发表于 2014-2-10 18:47:16

西门子的PPI MPI是支持一个通讯数据帧,读取若干任意不连续地址的,协议支持不连续读写
页: [1]
查看完整版本: 有关modbus读不连续的寄存器数据怎么办?