ModbusPoll使用说明书.docx
- 文档编号:25504234
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:24
- 大小:1.76MB
ModbusPoll使用说明书.docx
《ModbusPoll使用说明书.docx》由会员分享,可在线阅读,更多相关《ModbusPoll使用说明书.docx(24页珍藏版)》请在冰豆网上搜索。
ModbusPoll使用说明书
ModbusPoll使用说明:
1.破解
按照文件中”注册过程.GIF"显示的方式即可完成注册。
调试的时候,只需要使用mbpoll,
因此只需完成mbpoll的注册。
note:
NoConnection表示未和串口连接。
3•建立,设置
F面针对演示modbuspoll怎样调试ascii模式下功能01:
readcoil(读线圈)
ps:
线圈(coil)是一个专业名称,我们可以把一个线圈为一位开关量,比如这次
的课设中读线圈就是读p2.0~p2.3的开关状态,写线圈就是控制p2.4~p2.7的Led
的亮、灭。
包括功能功能03060x10,量程上,下限,报警上下限,测量值是5个16位寄存器。
1)点击菜单Setup->PollDefinition出现如上图
Slave:
表示从机的地址。
(范围1-255,要与自己的从机的地址一致)
Function:
功能码的选择。
(readcoil的功能码为01)
Address:
表示线圈的起始地址。
(线圈的地址并不一定非要是物理地址(即单片机中
p2.0~p2.7的在单片机中的实际地址),可以使用逻辑地址,比如为0~7
length:
表示读取开关量的数量。
ScanRate:
可以先不管,按照默认设置。
EnablePoll如图设置(打上勾)。
点击0K
2)点击菜单Connection->connect出现如下图
选上ASCII选项,左边的5个选项和“串口调试助手”设置一样。
‘port4'即’com4'
其他选项按默认设置。
点击0K如果调试程序正确的话(当然参数是按照上面设置的)出现下面图Tx=166:
表示向主站发送数据帧次数,图中为166次;
Err=0:
表示通讯错误次数,图中为0次;
ID=2:
表示从机地址02,图中地址为2;
F=01:
表示所使用的Modbus功能码,图中为01功能码;
SR=1000ms:
表示扫描周期。
最下面的4行表示地址与对应线圈的状态,这是从从机获取的。
ps:
当然,刚开始调试的时候很有可能出现错误提示
timeouterror:
超时,很可能是单片机没有发送数据(响应帧)
crcerror:
校验出错,在ascii模式表示Ire校验出错
writeerror,bytemissingerror这些错误的原因都可在CommunieationTraffic中查至U
随便提一提菜单Display2个功能
1)最重要的功能是下面的CommunicationTraffic可以查看通讯数据帧,对单片机的程
序调试有很好的帮助。
点击Display->communication打开
Tx:
表示发送的数据帧(主机(电脑)->从机(单片机))
Rx:
表示接收的数据帧(从机->主机)
如上图就是功能01下正常情况下的一种显示;
ps:
如果只有Tx,没有Rx说明单片机没有向主机发送响应帧。
如果有RX选上stopon
err即停止,说明响应帧格式不对。
OOOOOO-Tx:
3A30323031303030303030303446390D0A
表示发送的数据帧
3A:
是’:
'的ascii码,在ascii模式中当起始位。
3032:
分别是’0','2'对应的ascii码。
3031:
分别是’0'1'的ascii码。
30303030:
表示被读线圈的起始地址(16位),前2个数高8位后两个数表示低8位,
因此起始地址是0X0000;如果起始地址是0x1234,主机发送的就是31323334了。
30303034:
表示读的线圈的个数(length16位),同样3030表示高8位,3034是低8位。
ps:
以上设置与第2个图对应。
4639:
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:
这个软件中Ire校验的结果对应是A,B,C,D,E,F大写ascii码,也就是说,比如算出的
Ire校验结果是0xF9,问题是发送4639对应的是'F','9';还是发送0x660x09'f,'9'对应
的ascii码?
这个调试软件选择是前者。
所以在写单片机程序特别注意。
lrc校验范例可以参考《modbus协议中文版》附录C
0d0a:
是回车换行符的ascii码。
因此可根据0x3a,0d,0a判断1帧数据的开始与结尾。
再根据协议的语法规则,也就知道了
所有。
000000-Rx:
3A303230313031304645440D0A
表示响应帧,左边是先被接受到的。
同样3A0D0A分别表示的是开始与结尾的标志。
3032:
从机地址。
3031:
功能码
3031:
字节数,这是有length决定的。
具体参考《modbus中文协议书》
3046:
对应的十六进制0x0F,不读的位0来填补。
CoiI3
CoiI2
CoiI1
CoiI0
0
0
0
0
1
1
1
1
lrc计算:
0x02+0x01+0x01+0x0F=0x13取反0xEC力口10xED转换为对应ascii码0x45
0x44
这个响应帧意味着在单片机要向SBUF先后写入
0x3A0x300x320x300x310x300x310x300x460x450x440x0D0x0A
2)PLCAddresses(Base1)protocolAddresses(Base0)选择。
地址格式设置:
Modbuspoll默认使用PLC地址,"Display”菜单中"PLCAddresses(Base1)”为默认
选中状态,默认寄存器的起始地址为1开始,如果测试时需要设置起始地址为0开始,可
选择“Protocol
Addresses(Base0).b
LRC校验test工具使用
Binary
Long
3血茄Inverse
回回回
Double
点击Function->testcenter打开如下窗口:
testcenter
使用说明:
选LRC选项。
比如要计算3032303130313046的Ire校验结果,如图输入
3A3032303130313046下面就可显示结果
ps:
一定要加3A,但注意LRC校验在ascii模式中开始位0x3A,与结束位0X0D0X0A,
不参与校验。
但在使用这个工具时一定要加在开始位加3A,不加0d0a。
功能03功能调试readHoldingregisters
读保持寄存器(多个)
Setup->polldefinition->Function->03readHoldingregisters女口下图
其他和slaveaddresslength选项和01的设置相似。
各自的具体含义可以参考《modbus
协议中文版》
一下图是modus程序的显示:
寄存器地址是从0开始编的,5个寄存器。
0,1,2,3,4,也可以只读其中的一部分连续的寄
存器,比如读2,3,4寄存器时,设置address为2,length为3.
第二幅图是对应地址与其数据,图上的显示采用的是16进制显示,也可选其他的方式。
如图3,Display的又一个功能。
□耳IH孕|X|□|冃1几为151622|1Q1|T
FileConnection.SetupFinclioilsDizplsyevWindowJjtelp
FcrHelp,pr«ssFLForEdit*double-clickona
|Fort4:
9600=8-8-1
05功能调试writesinglecoil
两种方式打开
JuilLiua^uTL-Iijvi/1III戏||皿||垃|
或直接点击工具栏上的05
功能061516的打开方式与之一样。
E]H]B|
龍」理仏上心-」jpZL^,
FiliCyiiA*clivltup[匸吩口施阪Display屮itwViIlImyMtlj
He
0A
0A
DD0-099
3丁66
44oo39oo3_3oo3-3
oo
33
Do
33
3。
30
oc
33
oo
391
55
33
30
00
2-2
39
aoo47^-Ta3A3D
00047S-Px:
9130
上施山ML£L.Cvil
7orHtli^PT415F】・f-erEd:
td#ubliclickont甲tin肩
Fil^匚mm电himlS*nii'Ftrirti*r.s1]i DlJHX U I龔直nLI5UL1^DE22Z31O1 *ijii;t;ii_J,1-*_r_f.irr'i2 fu-t4.9BOO-0-I-1虫 orpr»siFLForEHl二dknutilej: lickonairHu>i 在ascii模式中,FFOO值请求线圈的处于ON状态,0000H值规定线圈处于OFF状态。 具体可看协议。 响应正确会出现Responseok框。 出错的话也有对应的对话框,错误的原因可以从CommunicationTraffic中找到。 CommunicationTraffic是一个很好的查错工具。 ps: 上面的显示要最先打开CommunicationTraffic对话框。 06功能的调试writesingleregister 打开方式与05功能的一样。 发送前: 设置value的值, ps: value以什么形式输入,可点击Display选择,比如选上hex即以16进制输入。 点击send如下图 很容易看出00000对应的0x1234改变为FFFF。 下图是CommunicationTraffic显示的 发送帧与响应帧。 对照协议书,可确证帧是否符合规则。 □□□ 赵」"此2full-」3必;U FiliC3jj#c"ionSetipFuictiMiEDisp*lty听iwih4ow D沖事场XrI®1=A050615162223iu |j«rHdp.jh*电二二FlFsrEdi百d^ulle«lickcnaval^c.T^rt1C620-S-S-1 ps: modbuspoll读和写可以同时工作。 读寄存器和写寄存器可以同时工作。 如果写寄存器的时候,取消读的功能 打开polldefinition(打开方式上面以说明,Setup) 去掉Enablepoll勾选项。 然后点击ok 06功能帧的格式具体见《modbus协议中文版》 15号功能的调试writemultiplecoils 打开方式不再赘述 写多个线圈, □□匚 Pil*ConA.ectioiLiilupPun'-iiociiDisplayVie*fiiMciwNelp DOS0X"皑自r050615162223 D」* Tx-〔 cacao口口口口100002naooT 口口004 的| □□aiSS-Tir- no 33nD 33 Do 33 66 id Ec 33 22 33I„J 33 oD 3o 12 m4os 34 44 33 DD 33oo 33 Do 33Do 33 ma4541iinn』 04 F*tH*liyprtii: 71TerRdi也dtubltrlipiea^tlus £ H.MpiB.3* 再看一例 再看一例: jvllu■;r心;1-」mg/u 回SI[可 FiLvCviLfwctioaou邮Viwli&dMHilf 口M OD na: mXr昱©几葩命诂iG垃甜io,豐鬱 [伽乐Ip*茁盼FlFm肌込dwjblE皿吐onrFilueFwrl4二90001旷鬥 上面分别是对应线圈发送0000,0110,1001的两种图示。 打钩表示1,否则0.帧格式见《modbus协议中文版》 16号功能,writemultipleregisters 写多个寄存器。 发送前,设置要发送的数(左键双击要设置的数) F^rl中OEXlO-tlK-] F*iTl.ForEJi—doall«slickoxb«vala.«・ 点击send如下图 □□□ □USXrQIA05CB15162223 221;E匚i; 1; □3;SR ID口i3ra= £1Lt匚cmjHctiM5*50Fi^.rtisH> 已」LU Pwt4flfinri-fl-N-1 诡」”11“ILL FwH*l>rDFfrusFLForMiJdouM电clickmawOise □□OOO=OXFFFFCCOOl=JxFFFF00002二OxFFFF00003三OxFFFFODUUi-F- ! &■"i汕j|JE.■Ij>Mf■■義j區讥Ft(_E£JJ □ Simp~ |OCIO=OtiFFEF Sen-i 1 OOL-drtTfPF 1 AddrcEE: |J CO3=iknPF LixiceJ- UJ4=OkZJIZ Size Pit 1 □tqfi 1 Save 1 ps: 如果有错,可以查看一下看CommunicationTraffic的显示,不过要在打开16功能 窗口之前就要打开CommunicationTraffic窗口,才能实时看到对应的数据帧。 再看一个例子 send前设置 点击send □□□ 可以看出对应的寄存器的值已经改变,modbuspoll同时工作在读寄存器与写寄存器状态。 ps: 写modbus,由于程序较大,要用破解版的keil。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ModbusPoll 使用 说明书
![提示](https://static.bdocx.com/images/bang_tan.gif)