MODBUS基本通信原理Word下载.docx
- 文档编号:15212216
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:9
- 大小:81.03KB
MODBUS基本通信原理Word下载.docx
《MODBUS基本通信原理Word下载.docx》由会员分享,可在线阅读,更多相关《MODBUS基本通信原理Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
逻辑“1”(标准中标识为MARK)的电平标准为-3V~-25V;
逻辑“0”(标识为SPACE)的电平标准为+3V~+25V。
控制信号的接通状态ON规定为SPACE;
断开状态OFF规定为MARK。
噪声容限为±
(3V~5V)。
输入端开路时,终端定义为MARK。
RS-232C规定的逻辑电平与TTL电平、MOS电平均不一样,在应用中需要进行RS-232C电平同其他信号电平的转换。
MC1488与MC1489是实现TTL电平与RS-232C电平转换的专用集成芯片。
(3)RS-232C接口功能
RS-232C标准定义了25个接口信号,使用25芯的D型插座。
在微机的串行通信中最常用的信号有10个,如表3-1所示。
这些信号可以分为二类,一类是基本的数据传输信号,有TxD、RxD和GND,这三个信号可以构成最简单的连接方式。
另一类是传输控制信号,包括DTR、RTS、DSR、CTS、DCD等。
PGND是保护地,一般与设备的机架相连或接电缆的屏蔽层。
表3-1常用的RS-232C接口信号
引脚
符号
方向
功能
1
PGND
屏蔽地,保护地
2
TxD
O
发送数据
3
RxD
I
接收数据
4
RTS
请求发送
5
CTS
允许发送
6
DSR
数据装置准备好
7
GND
信号地
8
DCD
载波检测
20
DTR
数据终端准备好
22
RI
振铃信号
3.1.2RS-485接口标准
RS-485标准是一种差分平衡的电气接口,即采用一对平衡差分信号线,可以实现多站点的通信。
RS-485是半双工的电气接口,由使能信号EN控制发送或接收,接口功能示意图3-1所示。
SN75176就是一种典型的RS-485电气接口。
RS-485采用平衡驱动和差分接收,接收器输入电压的范围为-7V~+12V,接收器输入灵敏度为±
200mV。
传输的最大速率在距离为12m处时为10Mbps;
120m时为1Mbps;
1200m时为100Kbps。
图3-1RS-485电气接口与互连
RS-485标准可以看作是RS-422标准的一种变形,主要区别在于RS-422是全双工的接口。
RS-485标准克服或改善了RS-232C标准的许多不足,特别是在提高抗干扰能力方面RS-485大大地优于RS-232C,因而在许多场合得到广泛的应用。
RS-485需要2个终接电阻,其阻值要求等于传输电缆的特性阻抗。
在近距离传输时可不需终接电阻,即一般在300m以下不要终接电阻。
终接电阻接在传输总线的两端。
3.2MODBUS通讯协议
3.2.1MODBUS协议简述
MODBUS协议是应用于电子控制器上的一种通用语言。
本设计所用到的TDM508系列仪表使用的就是MODBUS-RTU通讯协议。
MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。
MODBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。
首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。
MODBUS协议只允许在主机(PC、PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。
当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。
返回的响应数据中包含了以下内容:
终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。
发生任何错误都不会有成功的响应,或者返回一个错误指示帧。
表3-2表示了MODBUS的数据帧格式。
表3-2MODBUS的数据帧格式
地址(Address)域
功能(Function)域
数据(Data)域
错误校验(Check)域
8-Bits
N×
16-Bits
3.2.2地址(Address)域
地址域在帧的开始部分,由一个字节(8位二进制码)组成,十进制为0~255,在我们的系统中只使用1~247,其它地址保留。
这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。
每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。
当终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。
3.2.3功能(Function)域
功能域代码告诉了被寻址到的终端执行何种功能。
表3-3列出了TDM508系列仪表用到的功能码,以及它们的意义和功能。
表3-3TDM508系列仪表用到的功能码
代码
意义
行为
01
读DO状态
获得数字(继电器)输出的当前状态(ON/OFF)
02
读DI状态
获得数字输入的当前状态(ON/OFF)
03
读数据寄存器
获得一个或多个寄存器的当前二进制值
05
控制DO
控制数字(继电器)输出状态(ON/OFF)
16
预置多寄存器
设定二进制值到一系列多寄存器中
3.2.4数据(Data)域
数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。
这些数据的内容可能是数值、参考地址或者设置值。
例如:
功能域码告诉终端读取一个寄存器,数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同内容而有所不同。
3.2.5错误校验(Check)域
该域允许主机和终端检查传输过程中的错误。
有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,错误校验使用了16位循环冗余的方法(CRC16)。
错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。
CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较,如果这两个值不相等,就发生了错误。
CRC运算时,首先将一个16位的寄存器预置为全1,然后连续把数据帧中的每个字节中的8位与该寄存器的当前值进行运算,仅仅每个字节的8个数据位参与生成CRC,起始位和终止位以及可能使用的奇偶位都不影响CRC。
在生成CRC时,每个字节的8位与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位(LSB)移出并检测,如果是1,该寄存器就与一个预设的固定值(0A001H)进行一次异或运算,如果最低位为0,不作任何处理。
上述处理重复进行,直到执行完了8次移位操作,当最后一位(第8位)移完以后,下一个8位字节与寄存器的当前值进行异或运算,同样进行上述的另一个8次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是CRC值。
生成一个CRC的流程为:
(1)预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。
2.把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。
3.将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。
4.如果最低位为0,重复第三步(下一次移位);
如果最低位为1,将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。
5.重复第三步和第四步直到8次移位。
这样处理完了一个完整的八位。
6.重复第2步到第5步来处理下一个八位,直到所有的字节处理结束。
7.最终CRC寄存器的值就是CRC的值。
本设计中,用了CRC16查表法来实现MODBUS最后两个字节的错误校验域,具体程序详见附录。
3.2.6查询—回应周期
查询:
查询消息中的功能代码告之被选中的从设备要执行何种功能。
数据段包含了从设备要执行功能的任何附加信息。
例如功能代码03是要求从设备读保持寄存器并返回它们的内容。
数据段必须包含要告之从设备的信息:
从何寄存器开始读及要读的寄存器数量。
错误检测域为从设备提供了一种验证消息内容是否正确的方法。
回应:
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。
数据段包括了从设备收集的数据:
象寄存器值或状态。
如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。
错误检测域允许主设备确认消息内容是否可用。
图3-2主—从查询—回应周期表
3.3通讯应用格式详解
3.3.1读DO状态(功能码01)
查询数据帧:
主机发送给从机的数据帧。
01号功能允许用户获得指定地址的从机的DO(继电器)输出状态ON/OFF(1=ON,0=OFF),除了从机地址和功能域,数据帧还需要在数据域中包含将被读取DO(继电器)的初始地址和要读取的DO(继电器)数量。
TDM508系列中DO(继电器)的地址从0000H开始(DO1=0000H,DO2=0001H)。
下面表3-4的例子是从地址为10的从机读取DO1到DO2的状态。
(例如:
TDM508系列有2个DO,DO的地址为0000H~0001H)
表3-4功能码01(查询数据帧)
Addr
Fun
DOstartreghi
DOstartreglo
DO#ofregshi
DO#ofregslo
CRC16hi
CRC16lo
0AH
01H
00H
02H
BCH
B0H
响应数据帧:
从机回应主机的数据帧.包含从机地址、功能码、数据的数量和CRC错误校验,数据包中每个DO占用一位(1=ON,0=OFF),第一个字节的最低位为DO1的值,第二位为DO2的值。
下面表3-5的例子是读数字输出状态响应的实例。
表3-5功能码01(响应数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MODBUS 基本 通信 原理