MB3480学习心得.docx

上传人:b****1 文档编号:939782 上传时间:2022-10-14 格式:DOCX 页数:13 大小:164.84KB
下载 相关 举报
MB3480学习心得.docx_第1页
第1页 / 共13页
MB3480学习心得.docx_第2页
第2页 / 共13页
MB3480学习心得.docx_第3页
第3页 / 共13页
MB3480学习心得.docx_第4页
第4页 / 共13页
MB3480学习心得.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

MB3480学习心得.docx

《MB3480学习心得.docx》由会员分享,可在线阅读,更多相关《MB3480学习心得.docx(13页珍藏版)》请在冰豆网上搜索。

MB3480学习心得.docx

MB3480学习心得

MB3480学习心得

一、基础知识:

1、什么是Modbus?

Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。

2、主--从结构:

主设备查询

查询消息中的功能代码告之被选中的从设备要执行何种功能。

数据段包含了从设备要执行功能的任何附加信息。

例如功能代码03是要求从设备读保持寄存器并返回它们的内容。

数据段必须包含要告之从设备的信息:

从何寄存器开始读及要读的寄存器数量。

错误检测域为从设备提供了一种验证消息内容是否正确的方法。

从设备回应

如果从设备产生正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。

数据段包括了从设备收集的数据:

像寄存器值或状态。

如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。

错误检测域允许主设备确认消息内容是否可用。

每个MODBUS帧都包括地址域  功能域  数据域 错误检测域

3、Modbus的三种通信协议:

Modbus协议分为三种通信方式:

ModbusRTU、ModbusASCII以及ModbusTCP。

首先,ModbusTCP的通信格式和ModbusRTU非常相似,唯一的差别只是ModbusRTU最后带两个字节的CRC校验,而ModbusTCP没有。

其次,ModbusASCII的通信格式与ModbusRTU其实“神合貌离”,就是把ModbusRTU的每一个字节(例如:

27H)高四位

(2)和低四位(7)拆分为两个字节,并以ASCII码的方式表现出来(3237),再给命令帧分别加上起始符和结束符便可以,当然ModbusRTU和ModbusASCII的校验的方式不同,这里暂不详述,所以同一条命令用ModbusRTU方式和ModbusASCII方式表现出来,虽然在命令长度的上有很大的区别,但其实际表达的意思却是一样。

4、RTU方式:

 

帧定界 :

MODBUSRTU方式下,每两个字符之间发送或者接收的时间间隔不能超过1.5倍字符传输时间。

如果两个字符时间间隔超过了3.5倍的字符传输时间,规约就认为一帧数据已经接收,新的一帧数据传输开始。

备注:

NPort与MGate产品的区别就在于,MGate在每帧报文的之后,增加了3.5倍的字符传输时间,而NPort则没有。

5、ASCII方式:

 

帧定界:

“:

”帧起始   “CRLF” 帧结束

 ASCII方式用两个ASCII字符表示一个8位数据,比如16进制的3A用字符“3”和字符“A”表示。

6、ModbusTCP

ModbusTCP数据帧包含报文头、功能代码和数据3个部分:

 

MBAP报文头(MBAP:

ModbusApplicationProtocol,Modbus应用协议)分4个域,共7个字节:

1)主从模式的设定:

以PC端作为Master、装置作为Slave为例;

 

2)设置串口状态:

 

3)ID映射:

 

说明:

a)ModbusTCP通信标准端口号为502,所有的端口号都是502,串口通过ID好识别;

a)ID表中设置情况:

1~5:

Port1;

6~10:

Port2;

b)从站偏移量:

可不设,以下为例子,假定偏移量为3;

 

4、使用的软件:

前提说明:

两套软件:

软件一:

自己在网上找的ModbusPoll和ModbusSlave,注意:

ModbusPoll:

只作为Master(主端)(TCPMaster和RTUMaster都用它);

ModbusSlave:

只作为Slave(从端)(TCPSlave和RTUSlave都用它);

软件二:

刘丹提供的ModScan32和ModSim32,注意:

ModScan32:

只作为Master(主端)(TCPMaster和RTUMaster都用它);

ModSim32:

只作为Slave(从端)(TCPSlave和RTUSlave都用它);

软件一:

ModbusPoll(用于TCPMaster)

ModbusSlave(用于串口的Slave)

1)打开ModbusSlave:

 

选择“Connectiong”

 

注意:

UPort1150映射为主机的COM2口,使用这里选择Port2;

 

ID号:

1;功能码:

3;

2)打开ModbusPoll:

 

选择“Connection”,端口号为502;

 

ID号:

1;功能码:

3;

3)注意事项:

a)ModbusPoll和ModbusSlave设置的ID号、功能码必须一致;

b)通信成功的判断:

可从ModbusPoll软件本身、MGateManager的“监控”来观察;

注意:

MdobusSlave软件无法判断连接是否成功;

通信成功的界面:

ModbusPoll:

Tx值不断增加,Err值为0(Err指响应的返回值);

 

MGateManager→“监控”:

 

通信不成功的界面:

比如:

将ModbusSlave的连接断开,则ModbusPoll会报错:

 

正确的连接,则Err=0;

MGateManager→“监控”:

 

图中:

TCPReq、RTUReq(通过MB3480转发到RTU串口的),没有Resp。

 

c)其他功能键的使用:

ModbusPoll:

 

Read/WriteDefinition:

可设置ID号、功能码、地址;

ResetCounters:

充值计数器;

其中:

地址可自定义,但是ModbusPoll和ModbusSlave的地址设置都要一致;

ModbusSlave:

 

SlaveDefinition:

可设置ID号、功能码、地址;

 

软件二:

ModScan32:

用于TCPMaster;

ModSim32:

用于RTUSlave;

1)打开ModSim32软件:

直接打开目录,点击“ModSim32.exe”即可;

 

点击“OK”;

 

等几秒钟,“OK”由灰色变为黑色即可点击;

 

等几秒钟,“OK”由灰色变为黑色即可点击;

“File”→“New”:

 

“Connection”→“Port2”---UPort1150在笔记本上映射的端口号为COM;

2)打开ModScan32软件:

直接打开目录,点击“ModScan32.exe”即可;

 

“Connection”→“RemoteTCP/IPServer”:

 

3)注意事项:

a)ModScan32和ModSim32的Address(地址)、DeviceId(ID号)、MODBUSPointType(功能码,为3)设置必须一致,其中:

ID号:

Port1为1~5;

功能码:

为3;

Address:

可自己设定,只要ModScan32和ModSim32的一致就可以了;

b)连接不成功的界面:

比如:

将Address一个设置为“0001”,另一个设置为“0100”,则会连接不成功,如下界面:

 

而ModSim32则不会有报错信息;

错误一:

出现“**MODBUSMessageTIME-OUT**”,如果正确的连接,则没有这行报错;

错误二:

NumberofPolls的值一直在增加,而ValidSlaveResponses的值不变,这说明TCPMaster一直发送请求,却一直没有得到回应;

当正确连接后,点击“ResetCtrs”后,这个计数值就会清零,重新累计,出现的数据应该是NumberofPolls与ValidSlaveResponses一致;

c)当修改设置后,参数会自动执行,不要重启软件或按键;

d)如果所有设置都正确,但是连接却还是报错,这种情况下,只要将ModScan32和ModSim32软件重新开启就可以了,因为这个软件是没有经过注册的;

5、监控和数据报文:

1)一个完整的轮询过程:

 

TCPReq(TCP请求)→转为RTUReq(RTU请求)→RTUResp(RTU回应)→TCPResp(TCP回应);

2)报文内容:

 

分析如下:

TCPReq:

010000000006010300630005

TCP请求MBAP报头从设备ID起始地址读寄存器个数

7个Byte(字节)功能码

MBAP报头格式:

 

MBAP包含7个字节:

0100:

处理标识ID,取决于设备的类型,取值一般为0000到FFFF;

0000:

协议ID,0=Modbus协议;

0006:

后面跟随的字节个数(包含从设备ID号),此例:

后面跟随了6个字节;

01:

从设备的ID号;

 

RTUReq:

01030063000575D7

RTU请求从设备ID起始地址读寄存器个数

功能码CRC校验码(高→低)---RTU方式;

RTUResp:

01030A00010002000300040005CF24

RTU回应从设备ID回复的数据校验码

长度CRC(高→低)

功能码

TCPResq:

TCP回应

01000000000D01030A00010002000300040005

MBAP报头从设备ID长度回复的数据

功能码

MBAP:

000D:

13---后面跟随13个字节;

6、较深入的报文内容:

1)ModbusPoll向多个寄存器发送数据的报文分析:

a)ModbusPoll中的设置:

双击红框部分,界面:

 

Value中填入要发送的数据,注意:

这是十进制,对于“监控”中是十六进制;

SlaveID:

Port所接从设备的ID;

Address:

这是寄存器地址,第1个是0,第2个是1……;

 

b)多寄存器报文分析:

监控中看到的数据:

 

分析:

第一组:

i)TCPReq:

TCP发送请求;

时间数据

0.00003360000000601030000000A

MBAP报头从设备ID起始地址读寄存器个数

功能码

MBAP:

0336:

处理标识ID;

0000:

协议ID,0=Mdobus;

0006:

后面跟随的字节个数;

01:

从设备ID;

 

ii)RTUReq:

通过MB3480转换到串口的请求;

时间数据

0.00001030000000AC5CD

从设备ID起始地址寄存器个数CRC校验码

功能码

注意:

i)与ii)的起始地址、寄存器个数是一样的;ii)在i)的基础上,去掉了MBAP报头,并且增加了CRC校验码;

 

iii)RTUResp:

从串口RTU回应的数据;

时间数据

0.090010314000F00100011001200000000000000000000

从设备ID长度1516171800001169

功能码校验码

一共10个寄存器:

000F:

表示15;

0010:

表示16;

0011:

表示17;

0012:

表示18;

其余寄存器为00,没有发送数据;

注意:

第i)、ii)是请

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1