modbuspoll使用说明

  • 格式:pdf
  • 大小:866.45 KB
  • 文档页数:15

Modbus Poll 使用说明:使用说明:

1. 破解破解

按照按照 文件中"注册过程.GIF"显示的方式即可完成注册。调试的时候,只需要使用mbpoll,

因此只需完成mbpoll的注册。的注册。

2.破解后,点击mbpoll图标,显示下面主窗口。如果没有没有子窗口,点击file->New

note:No Connec󰆟on表示未和串口连接。表示未和串口连接。 3.建立,设置建立,设置

下面针对演示modbus poll怎样调试ascii模式下模式下 功能01:read coil (读线圈)(读线圈) ps:线圈(coil)是一个专业名称,我们可以把一个线圈为一位开关量,比如这次

的课设中读线圈就是读p2.0~p2.3的开关状态,写线圈就是控制p2.4~p2.7的Led的亮、灭。包括功能功能03 06 0x10, 量程上,下限,报警上下限,测量值是5个16位寄存

器。 

 1)点击菜单Setup->Poll Defini󰆟on 出现如上图出现如上图 Slave :表示从机的地址。(范围1-255,要与自己的从机的地址一致),要与自己的从机的地址一致)

Func󰆟on:功能码的选择。(read coil 的功能码为的功能码为 01) Address:表示线圈的起始地址。(线圈的地址并不一定非要是物理地址(即单片机中

p2.0~p2.7的在单片机中的实际地址),可以使用逻辑地址,比如为0~7

length :表示读取开关量的数量。表示读取开关量的数量。

Scan Rate:可以先不管,按照默认设置。:可以先不管,按照默认设置。 Enable Poll 如图设置(打上勾)。 

点击OK

2)点击菜单Connec󰆟on Connec󰆟on ––>connect 出现如下图出现如下图

 选上ASCII 选项,左边的5个选项和“串口调试助手”设置一样。‘port4’即‘com4’ 

其他选项按默认设置。其他选项按默认设置。

点击OK

如果调试程序正确的话(当然参数是按照上面设置的)出现下面图如果调试程序正确的话(当然参数是按照上面设置的)出现下面图

Tx = 166:表示向主站发送数据帧次数,图中为166次;次; Err = 0:表示通讯错误次数,图中为0次;次;

ID = 2:表示从机地址02,图中地址为2;

F = 01:表示所使用的Modbus功能码,图中为01功能码;功能码;

SR = 1000ms:表示扫描周期。:表示扫描周期。

最下面的4行表示地址与对应线圈的状态,这是从从机获取的。行表示地址与对应线圈的状态,这是从从机获取的。

ps:当然,刚开始调试的时候很有可能出现错误提示 󰆟meout error:超时,很可能是单片机没有发送数据(响应帧)。 

crc error :校验出错,在ascii 模式表示lrc校验出错校验出错 write error,byte missing error 这些错误的原因都可在Communica󰆟on Traffic 中查到中查到

 随便提一提菜单随便提一提菜单 Display 2个功能个功能

1) 最重要的功能是下面的Communica󰆟on Traffic 可以查看通讯数据帧,可以查看通讯数据帧,对单片机的程序调对单片机的程序调

试有很好的帮助。 

点击点击 Display->communica󰆟on打开打开

Tx:表示发送的数据帧(主机(电脑)->从机(单片机)) Rx:表示接收的数据帧表示接收的数据帧 (从机->主机)主机)

如上图就是功能01下正常情况下的一种显示;下正常情况下的一种显示; ps:如果只有Tx,没有Rx说明单片机没有向主机发送响应帧。如果有说明单片机没有向主机发送响应帧。如果有 RX选上stop on

err即停止,说明响应帧格式不对。即停止,说明响应帧格式不对。

000000-Tx:3A 30 32 30 31 30 30 30 30 30 30 30 34 46 39 0D 0A

表示发送的数据帧表示发送的数据帧 3A:是‘:’的ascii码,在ascii模式中当起始位。模式中当起始位。 30 32:分别是‘0’,‘2’对应的ascii码。码。

30 31:分别是‘0’,‘1’的ascii码。码。

30 30 30 30:表示被读线圈的起始地址(16位),前2个数高8位 后两个数表示低8位,因

此起始地址是0X0000;如果起始地址是0x1234,主机发送的就是31 32 33 34了。了。 30 30 30 34:表示读的线圈的个数(length 16位),同样30 30表示高8位,30 34 是低8位。 ps:以上设置与第2个图对应。 

46 39:Lrc校验(8位)的对应16进制,高四位的ascii码,与低4位的ascii码。码。

计算的方式:0x02+0x01+0x00+0x00+0x00+0x04=0x07 取反0xF8 加一加一 0xF9 ‘F’对应的ascii

码0x46 ‘9’对应的ascii码0x39.大概就是除去起始位3a,从开始2个一对组成一个2位

16进制,相加,取反,加一。然后转换成2个ascii码。码。 ps:这个软件中lrc校验的结果对应是A,B,C,D,E,F大写ascii码,也就是说,比如算出的lrc

校验结果是0xF9,问题是发送46 39对应的是'F','9';还是发送0x66 0x09 'f','9'对应的ascii码?

这个调试软件选择是前者。所以在写单片机程序特别注意。 

lrc校验范例可以参考《modbus协议中文版》附录C

0d 0a :是回车换行符的ascii码。码。 因此可根据0x3a,0d,0a 判断1帧数据的开始与结尾。再根据协议的语法规则,也就知道了

所有。所有。

000000-Rx:3A 30 32 30 31 30 31 30 46 45 44 0D 0A

表示响应帧,左边是先被接受到的。表示响应帧,左边是先被接受到的。

同样3A 0D 0A分别表示的是开始与结尾的标志。分别表示的是开始与结尾的标志。 30 32:从机地址。:从机地址。

30 31:功能码:功能码

30 31:字节数,这是有length决定的。具体参考《modbus中文协议书》中文协议书》

30 46:对应的十六进制0x0F,不读的位0来填补。来填补。

Coil3 Coil2 Coil1 Coil0

0 0 0 0 1 1 1 1

lrc计算:0x02+0x01+0x01+0x0F=0x13 取反0xEC 加1 0xED转换为对应ascii码 0x45 0x44

这个响应帧意味着在单片机要向SBUF先后写入先后写入

0x3A 0x30 0x32 0x30 0x31 0x30 0x31 0x30 0x46 0x45 0x44 0x0D 0x0A

2)PLC Addresses (Base 1) protocol Addresses (Base 0)选择。选择。

地址格式设置:地址格式设置: Modbus poll默认使用PLC地址,“Display”菜单中“PLC Ad“PLC Adddresses(Base 1)”为默认选中状态,

默认寄存器的起始地址为1开始,如果测试时需要设置起始地址为0开始,可选择“Protocol AdAddresses(Base0dresses(Base0).b

LRC校验test工具使用 

点击Func󰆟on->test center打开如下窗口:test center

使用说明:使用说明:

选 LRC选项。选项。 比如要计算比如要计算 30 32 30 31 30 31 30 46的lrc校验结果,如图输入校验结果,如图输入

3A 30 32 30 31 30 31 30 46 下面就可显示结果下面就可显示结果 ps:一定要加3A,但注意LRC校验在ascii模式中开始位0x3A,与结束位0X0D 0X0A,不参与

校验。但在使用这个工具时一定要加在开始位加3A,不加0d 0a。 

功能03 功能调试read Holding registers

读保持寄存器(多个) Setup->poll defini󰆟on->Func󰆟on->03 read Holding registers 如下图如下图

其他和slave address length选项和01的设置相似。各自的具体含义可以参考《modbus协议协议

中文版》中文版》

一下图是modus程序的显示:程序的显示: 寄存器地址是从0开始编的,5个寄存器。0 ,1 ,2,3,4,也可以只读其中的一部分连续的寄存器,比如读2,3,4寄存器时,设置address为 2,length为 3.

第二幅图是对应地址与其数据,图上的显示采用的是16进制显示,也可选其他的方式。进制显示,也可选其他的方式。

如图3 ,Display的又一个功能。的又一个功能。

05功能调试write single coil

两种方式打开两种方式打开

 或直接点击工具栏上的05

功能功能 06 15 16 的打开方式与之一样。的打开方式与之一样。

 在ascii模式中,FF00值请求线圈的处于ON状态,0000H值规定线圈处于OFF状态。状态。

具体可看协议。具体可看协议。

响应正确响应正确 会出现Response ok框。框。

出错的话也有对应的对话框,错误的原因可以从Communica󰆟on Traffic中找到。Communica󰆟on Traffic是一个很好的查错工具。是一个很好的查错工具。

ps:上面的显示要最先打开Communication Traffic对话框。 

06功能的调试 write single register

打开方式与05功能的一样。功能的一样。 发送前:设置value的值,的值,

ps:value以什么形式输入,可点击Display选择,比如选上hex即以16进制输入。 

 点击send如下图如下图

 很容易看出00000对应的0x1234 改变为FFFF。下图是Communica󰆟on Traffic显示的发送帧

与响应帧。对照协议书,可确证帧是否符合规则。与响应帧。对照协议书,可确证帧是否符合规则。