名师推荐MODBUSTCPIP新协调范本doc.docx
《名师推荐MODBUSTCPIP新协调范本doc.docx》由会员分享,可在线阅读,更多相关《名师推荐MODBUSTCPIP新协调范本doc.docx(15页珍藏版)》请在冰豆网上搜索。
名师推荐MODBUSTCPIP新协调范本doc
MODBUSTCPip新协议范本
【网络架构】
以太网帧格式
历史上以太网帧格式有五种:
1.EthernetV1:
这是最原始的一种格式,是由GeroGPARC提出的3MbpsCSMA/CD以太网标准的封装格式,后来在1980年由DEC,Intel和GeroG标准化形成EthernetV1标准.
2.EthernetV2(ARPA):
由DEC,Intel和GeroG在1982年公布其标准,主要更改了EthernetV1的电气特性和物理接口,在帧格式上并无变化;EthernetV2出现后迅速取代EthernetV1成为以太网事实标准;EthernetV2帧头结构为6bytes的源地址+6bytes的目标地址+2Bytes的新协议范本类型字段+数据。
3.RAW802.3:
这是1983年Novell发布其划时代的Netware/86网络套件时采用的私有以太网帧格式,该格式以当时尚未正式发布的802.3标准为基础;但是当两年以后IEEE正式发布802.3标准时情况发生了变化—IEEE在802.3帧头中又加入了802.2LLC(LogicalLinkControl)头,这使得Novell的RAW802.3格式跟正式的IEEE802.3标准互不兼容.
4.802.3/802.2LLC:
这是IEEE正式的802.3标准,它由EthernetV2发展而来。
它将EthernetV2帧头的新协议范本类型字段替换为帧长度字段(取值为0000-05dc;十进制的1500);并加入802.2LLC头用以标志上层新协议范本,LLC头中包含DSAP,SSAP以及Crontrol字段.
5.802.3/802.2SNAP:
这是IEEE为保证在802.2LLC上支持更多的上层新协议范本同时更好的支持IP新协议范本而发布的标准,与802.3/802.2LLC一样802.3/802.2SNAP也带有LLC头,但是扩展了LLC属性,新添加了一个2Bytes的新协议范本类型域(同时将SAP的值置为AA),从而使其可以标识更多的上层新协议范本类型;另外添加了一个3Bytes的OUI字段用于代表不同的组织,RFC1042定义了IP报文在802.2网络中的封装方法和ARP新协议范本在802.2SANP中的实现.
802.3以太网帧格式备注:
前导码(7字节)、帧起始定界符(1字节)、目的MAC地址(6字节)、源MAC地址(6字节)、类型/长度(2字节)、数据(46~1500字节)、帧校验序列(4字节)[MAC地址可以用2-6字节来表示,原则上是这样,实际都是6字节]
以太网帧格式总结
MAC地址厂商的查询的网址:
全部厂商列表:
[url]http:
//standards.ieee.org/regauth/oui/oui.tGt[/url]
网页查询地址:
[url]http:
//standards.ieee.org/regauth/oui/indeG.shtml[/url]
在SearchthepublicOUIlisting...输入网卡MAC地址前三位即可,如00-0D-65
==>Start:
目前,有四种不同格式的以太网帧在使用,它们分别是:
●EthernetII即DIG2.0:
GeroG与DEC、Intel在1982年制定的以太网标准帧格式。
Cisco名称为:
ARPA。
●Ethernet802.3raw:
Novell在1983年公布的专用以太网标准帧格式。
Cisco名称为:
Novell-Ether。
●Ethernet802.3SAP:
IEEE在1985年公布的Ethernet802.3的SAP版本以太网帧格式。
Cisco名称为:
SAP。
●Ethernet802.3SNAP:
IEEE在1985年公布的Ethernet802.3的SNAP版本以太网帧格式。
Cisco名称为:
SNAP。
在每种格式的以太网帧的开始处都有64比特(8字节)的前导字符,如图3所示。
其中,前7个字节称为前同步码(Preamble),内容是16进制数0GAA,最后1字节为帧起始标志符0GAB,它标识着以太网帧的开始。
前导字符的作用是使接收节点进行同步并做好接收数据帧的准备。
图一:
说明:
所有范例中Send&Receive的数据都是通过ModbusTCP.eGe软件发送与接收。
功能码01
功能码01用于读取线圈的状态。
例:
ModbusTCP通讯模式下,读取站号为2的从站Y0~Y5的状态。
Master→Slave的数据『000000000006020KK5000006』
数据
说明
00182310
0005
目标MAC地址,网卡的硬件地址。
00:
18:
23表示台达
6字节
EthernetII
001AA039
7E4E
源MAC地址,网卡的硬件地址。
00:
1A:
A0表示DELL
6字节
0800
新协议范本类型:
IP新协议范本
2字节
45
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
InternetProtocol(IP)
4位首部长度,普通IP数据包字段的值是5
4位版本
00
服务类型(TOS)
0034
TotolLength(IP数据包的长度)
07C6
Identification
4000
Fragmentoffset
80
TimetoLive(一个封包在网络上可以存活的时间)
06
新协议范本类型:
TCP
6EE0
CRC校验码
C0
192
SourceID:
192.168.1.105
TransmissionControlProtocol(TCP)
A8
168
01
1
69
105
C0
192
DestinationID:
192.168.1.100
A8
168
01
1
64
100
044D
Sourceport:
pt2-discover(1101)
01F6
Destinationport:
asa-ppl-proto(502)
3705D6C0
0053
F3CB
50
18
FDD6
windowsize
AACF
校验码
71CC
0000
TransactionIdenfifier。
2字节
Modbus/TCP新协议范本
0000
ProtocolIdenfifier。
用来确定应用层新协议范本是否为Modbus新协议范本
2字节
0006
数据长度,从【Slave的通讯地址】开始计算。
2字节
02
UnitIdenfifier,Slave的通讯地址。
1字节
01
功能码。
1字节
Modbus新协议范本
0500
欲读取的位装置起始地址。
最大字节数为148
0006
欲读取的位装置的个数(bits)。
Slave→Master的数据『00000000000406010135』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0004
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
01
功能码。
01
欲读取的位装置的数目(bytes),8bits为1byte。
当读取位装置的数目不足1byte时,以1byte计算。
35
数据内容(Y5…Y0的状态)。
功能码02
功能码02用于读取输入装置的状态。
例:
ModbusTCP通讯模式下,读取站号为2的从站G2~G34的状态。
Master→Slave的数据『00000000000602020400001B』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0006
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
02
功能码。
0400
欲读取的位装置起始地址。
001B
欲读取的位装置的个数(bits)。
Slave→Master的数据『000000000007020204CD657D04』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0007
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
02
功能码。
04
欲读取的位装置的数目(bytes),8bits为1byte。
当读取位装置的数目不足1byte时,以1byte计算。
CD657D04
数据内容(G34…G2的状态)。
功能码03
功能码03用于读取保持寄存器(字装置)内容。
PLCD0的MODBUS位址H1000
例:
ModbusTCP通讯模式下,读取站号为2的从站地址H’0000~H’0005的内容。
Master→Slave的数据『000000000006020300000006』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0006
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
03
功能码。
0000
欲读取的字装置起始地址。
0006
欲读取的字装置的个数(words)。
Slave→Master的数据『00000000000F02030C003100060808000203000000』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
000F
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
03
功能码。
0C
欲读取的字装置的数目(bytes),1word为2bytes。
0031
H’0000的数据内容。
0006
H’0001的数据内容。
0808
H’0002的数据内容。
0002
H’0003的数据内容。
0300
H’0004的数据内容。
0000
H’0005的数据内容。
功能码05
功能码05用于对位装置进行写单笔操作。
例1:
ModbusTCP通讯模式下,设置站号为2的从站Y2=ON。
Master→Slave的数据『00000000000602050502FF00』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0006
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
05
功能码。
0502
欲写入的地址。
FF00
写入的控制数据为H’FF00。
Slave→Master的数据『00000000000602050502FF00』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0006
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
05
功能码。
0502
欲写入的地址。
FF00
写入的控制数据为H’FF00。
例2:
ModbusTCP通讯模式下,设置站号为2的从站Y2=OFF。
Master→Slave的数据『000000000006020505020KK0』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0006
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
05
功能码。
0502
欲写入的地址。
0000
写入的控制数据为H’0000。
Slave→Master的数据『000000000006020505020KK0』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0006
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
05
功能码。
0502
欲写入的地址。
0000
写入的控制数据为H’FF00。
功能码06
功能码06用于对寄存器(字装置)进行写单笔操作。
例1:
ModbusTCP通讯模式下,设置站号为2的从站地址H’1601的内容为K4。
Master→Slave的数据『000000000006020616010004』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0006
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
06
功能码。
1601
欲写入的地址。
0004
写入的控制数据为H’0004。
Slave→Master的数据『000000000006020616010004』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0006
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
06
功能码。
1601
欲写入的地址。
0004
写入的控制数据为H’0004。
功能码15
功能码15用于对位装置进行写多笔操作。
例1:
ModbusTCP通讯模式下,设置站号为2的从站Y0~Y17的状态如下表所示。
Master→Slave的数据『000000000009020F000A02CD01』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0009
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
0F
功能码。
0500
欲写入的位装置的起始地址。
000A
欲写入的位装置个数(bits)。
02
欲写入位装置的数目(bytes),8bits为1byte。
当写入位装置的数目不足1byte时,以1byte计算。
CD01
欲写入的数据内容(Y11…Y0的状态)。
Slave→Master的数据『000000000006020F0500000A』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
0006
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
0F
功能码。
0500
欲写入的位装置的起始地址。
000A
欲写入的位装置个数(bits)。
功能码16
功能码16用于对字装置进行写多笔操作。
例1:
ModbusTCP通讯模式下,设置站号为2的从站地址H’1618=K500(01F4H);H’1619=K1000(03E8H);H’161A=K20XX(07D0H)。
Master→Slave的数据『00000000000B0210161800030601F403E807D0』
数据
说明
0000
TransactionIdenfifier。
0000
ProtocolIdenfifier。
000B
数据长度,从【Slave的通讯地址】开始计算。
02
Slave的通讯地址。
10
功能码。
1618
欲写入的字装置起始地址。
0003
欲写入的字装置个数(words)。
06
欲写入字装置的数目(bytes),1word为2bytes。
01F4
写入的第一笔控制数据为H’01F4。
03E8
写入的第二笔控制数据为H’03E8。
07D0
写入的第二笔控制数据为H’07D0。
Slave→Master的数据『000000000006020F0500000A』