现场总线技术CAN CANopen DeviceNet EtherNet.docx
- 文档编号:28131193
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:10
- 大小:17.43KB
现场总线技术CAN CANopen DeviceNet EtherNet.docx
《现场总线技术CAN CANopen DeviceNet EtherNet.docx》由会员分享,可在线阅读,更多相关《现场总线技术CAN CANopen DeviceNet EtherNet.docx(10页珍藏版)》请在冰豆网上搜索。
现场总线技术CANCANopenDeviceNetEtherNet
现场总线技术CANCANopenDeviceNetEtherNet/IPModbus
Modbus总线协议
工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。
Modbus就是工业控制器的网络协议中的一种。
1.协议概述
物理层:
传输方式:
RS485
通讯地址:
0-247
通讯波特率:
可设定
通讯介质:
屏蔽双绞线
传输方式:
主从半双工方式
协议在一根通讯线上使用应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。
首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,在相反的方向上终端设备发出的应答信号传输给主机。
协议只允许在主计算机和终端设备之间,而不允许独立的设备之间的数据交换,这就不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。
一个数据帧格式:
1位起始位,8位数据,1位或者无奇偶检验位、1位或者2位停止位。
一个数据包格式:
地址功能码数据校验码
8-Bits8-BitsNx8-Bits16-Bits
协议详细定义了校验码、数据格式、功能码等,这些都是特定数据交换的必要内容。
当数据帧到达终端设备时,它通过一个简单的“口”进入寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。
返回的响应数据中包含了以下内容:
终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。
发生任何错误都不会有成功的响应。
地址(Address)域
地址域在帧的开始部分,由8位(0~
255)组成,这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。
每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。
当终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。
功能(Function)域
功能域代码告诉了被寻址到的终端执行何种功能。
表1–
1列出了部分常用的功能码、它们的意义及它们的初始功能。
表1–1功能码
代码意义行为
03读保持寄存器获得一个或多个寄存器的当前二进制值
06预置单个寄存器放置一个特定的二进制值到一个寄存器中
16预置多个寄存器放置特定的二进制值到一系列寄存器中
数据域
数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。
这
些数据的内容可能是数值、参考地址或者极限值。
例如:
功能域代码告诉终端读取一个寄存器,数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同能力而有所不同。
校验域
该域允许主机和终端检查传输过程中的错误。
有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,出错校验使用了16位循环冗余的方法。
[注]发送序列总是相同的–地址、功能码、数据和与方向相关的出错校验。
错误检测
循环冗余校验(CRC)域占用两个字节,包含了一个16位的二进制值。
CRC值由传
送设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较,如果这两个值不相等,就发生了错误。
CRC运算时,首先将一个16位的寄存器预置为全1,然后连续把数据帧中的8位字节与该寄存器的当前值进行运算,仅仅每个字节的8个数据位参与生成CRC,起始位和停止位以及可能使用的奇偶位都不影响CRC。
在生成CRC时,每个8位字节与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位(LSB)移出并检测,如果是1,该寄存器就与一个预设的固定值进行一次异或运算,如果最低位为0,不作任何处理。
上述处理重复进行,直到执行完了8次移位操作,当最后一位(第8位)移完以后,下一个8位字节与寄存器的当前值进行异或运算,同样进行上述的另一个8次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是CRC值。
生成一个CRC的流程为:
预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。
把数据帧中的第一个8位字节与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。
将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。
如果最低位为0:
重复第2步(下一次移位)。
如果最低位为1:
将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。
重复第2步和第3步直到8次移位。
这样处理完了一个完整的八位。
重复第2步到第4步来处理下一个八位,直到所有的字节处理结束。
最终CRC寄存器的值就是CRC的值。
2.应用层功能详解
2.1读保持寄存器(功能码03)
查询
功能码03H允许用户读取多个保持寄存器的内容。
主站设备可设从保持寄存器的任何起始地址读取多个寄存器的值。
表2
–1的例子是从03号从机读3个数据U1,U2,U3,其中U1的地址为0001H,
U2的地址为0002H,
U3的地址为0003H,即寄存器起始地址为0001H,数据个数为0003H。
表2–1读U1、U2、U3的查询数据帧
地址功能码变量起始
地址高字节变量起始
地址低字节变量的个
数高字节变量的个
数低字节校对验码
低字节校对验码
高字节
03H03H00H01H00H03H55HE9H
响应
响应包含从机地址、功能码、数据的数量和CRC错误校验。
表2–
2的例子是读取U1,U2,U3的响应。
表2–2读U1,U2,U3的响应数据帧
地址功能
码变量
的总
字节
数?
变量
值高
字节变量
值低
字节变量
值高
字节变量
值低
字节变量
值高
字节变量
值低
字节校对
验码
低字
节校对
验码
高字
节
03H03H06H01H7CH01H7DH01H7CHF9H9BH
2.2预置多个寄存器(功能码10)
查询
功能码10H允许用户改变多个寄存器的内容,设备可从任何地址开始设置多个变量的值。
表2-3的例子是修改3号从站设备的负载监控1和负载监控2的动作及延时时间的设定值,其中负载监控1的动作设定值地址为2AH,延时时间的设定值为2BH,负载监控2的动作设定值地址为2CH,延时时间的设定值为2DH。
表2-3修改负载监控1和负载监控2的动作值及延时时间的设定值
地址功
能
码变量
起始
地址
高字
节变量
起始
地址
低字
节变量
的个
数高
字节变量
的个
数低
字节变量
的总
字节
数变量
值高
字节变量
值低
字节变量
值高
字节变量
值低
字节变量
值高
字节变量
值低
字节变量
值高
字节变量
值低
字节校对
验码
低字
节校对
验码
高字
节
03H10H00H2AH00H04H08H07HD0H00H0AH07HD0H00H0AH25H7CH
响应
响应包含从机地址、功能码、数据的数量和CRC错误校验。
表2–
4的例子是修改负载监控1和负载监控2的动作值及延时时间的设定值的响应。
表2-4修改负载监控1和负载监控2的动作值及延时时间的设定值的响应
地址功能码变量起始
地址高字节变量起始
地址低字节变量的个
数高字节变量的个
数低字节校对验码
低字节校对验码
高字节
0310H00H2AH00H04HEBH8DH
2.3预置单个寄存器(功能码06)
查询
功能码06允许用户改变单个寄存器的内容。
表2-5的例子是修改03号从机过载动作设定值Ir1,其中Ir1地址是002EH.
表2-5修改过载动作设定值Ir1
地址功能码变量起始
地址高字节变量起始
地址低字节变量值
高字节变量值低
字节校对验码
低字节校对验码
高字节
03H06H00H2EH07HD0HEBH8DH
响应
对于预置单个寄存器请求的正常响应是在寄存器值改变以后将接收到的数据传送回去。
表2-6修改过载动作设定值Ir1响应
地址功能码变量起始
地址高字节变量起始
地址低字节变量值高
字节变量值低
字节校对验码
低字节校对验码
高字节
03H06H00H2EH07HD0HEBH8DH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现场总线技术CAN CANopen DeviceNet EtherNet 现场总线 技术 CAN