版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3 MODBUS基本通信原理3.1 串行通信本设计中,上位计算机与下位TDM508 仪表所连接的接口用的是RS-485 接口。下面将具体讨论RS-232C 和 RS-485 接口标准。3.1.1 RS-232 接口标准RS-485 是由 RS-232C 发展而来的。而 RS-232C 是由美国电子工业协会EIA 推荐的标准接口, 原本是用于串行二进制数据交换的数据通信设备和数据终端设备之间的标准接口,是目前最常用的一种串行接口标准。RS-232C 的信号线是单方向的,两个方向的数据传输线共用一个地线,接口电路采用双极性电源供电。使用的最高传输速率为几十Kbps,最大传输距离为15m。 RS-2
2、32C 采用全双工方式。(1) 数据终端设备DTE 和数据通信设备DCE数据终端设备DTE 是产生二进制信号的数据源,也是接收数据的目的地,一般可以认为 DTE 就是一台计算机。数据通信设备DCE 是一个使传输信号符合线路要求,或者满足DTE 要求的信号匹配器。DCE 是提供 DTE 与通信线路之间通信的建立、维持和终止连接等功能的设备。调制解调器Modem 就是一个典型的DCE。RS-232C 是一种为DTE 和 DCE 之间通信而定义的接口标准,在微机系统中主要用于主机与调制解调器Modem 之间的通信。现在 RS-232C 也已经广泛地运用于微机系统之间的通信,即 DTE 和 DCE 之
3、间的通信,成为一种被普遍接受的通信接口标准。(2) RS-232C 的电气性能RS-232C 标准中的信号电平是按负逻辑定义的。逻辑“1 ”(标准中标识为MARK )的电平标准为-3V-25V ;逻辑“0”(标识为SPACE)的电平标准为+3V+25V 。控制信号的接通状态ON 规定为SPACE;断开状态OFF 规定为 MARK 。噪声容限为±(3V5V ) 。输入端开路时,终端定义为MARK 。RS-232C 规定的逻辑电平与TTL 电平、 MOS 电平均不一样,在应用中需要进行RS-232C电平同其他信号电平的转换。MC1488 与 MC1489 是实现 TTL 电平与 RS-2
4、32C 电平转换的专用集成芯片。(3) RS-232C 接口功能RS-232C 标准定义了25 个接口信号,使用25 芯的 D 型插座。在微机的串行通信中最常用的信号有10 个,如表3-1 所示。这些信号可以分为二类,一类是基本的数据传输信号,有 TxD 、 RxD 和 GND,这三个信号可以构成最简单的连接方式。另一类是传输控制信号,包括 DTR 、 RTS、 DSR、 CTS、 DCD 等。 PGND 是保护地,一般与设备的机架相连或接电 缆的屏蔽层。表 3-1 常用的 RS-232C 接口信号引脚符号方向功能1PGND屏蔽地,保护地2TxDO发送数据3RxDI接收数据4RTSO请求发送5
5、CTSI允许发送6DSRI数据装置准备好7GND信号地8DCDI载波检测20DTRO数据终端准备好22RII振铃信号3.1.2 RS-485 接口标准RS-485 标准是一种差分平衡的电气接口,即采用一对平衡差分信号线,可以实现多站点的通信。RS-485 是半双工的电气接口,由使能信号EN 控制发送或接收,接口功能示意图 3-1 所示。 SN75176 就是一种典型的RS-485 电气接口。RS-485 采用平衡驱动和差分接收,接收器输入电压的范围为-7V+12V ,接收器输入灵敏度为±200mV。 传输的最大速率在距离为12m 处时为 10Mbps; 120m 时为1Mbps; 1
6、200m时为 100Kbps。图 3-1RS-485 电气接口与互连RS-485 标准可以看作是RS-422 标准的一种变形,主要区别在于RS-422 是全双工的接口。 RS-485 标准克服或改善了RS-232C 标准的许多不足,特别是在提高抗干扰能力方面RS-485 大大地优于RS-232C,因而在许多场合得到广泛的应用。RS-485 需要 2 个终接电阻,其阻值要求等于传输电缆的特性阻抗。在近距离传输时可不需终接电阻,即一般在300m 以下不要终接电阻。终接电阻接在传输总线的两端。3.2 MODBUS通讯协议3.2.1 MODBUS协议简述MODBUS 协议是应用于电子控制器上的一种通用
7、语言。本设计所用到的TDM508 系列仪表使用的就是MODBUS-RTU 通讯协议。MODBUS 协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。MODBUS 协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。MODBUS 协议只允许在主机(PC、 PLC 等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。当数据帧到达终端设备时,
8、它通过一个简单的 “端口”进入被寻址到的设备,该设备去掉数据帧的 “信封” (数据头), 读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中, 把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function) 、执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功的响应,或者返回一个错误指示帧。表3-2 表示了 MODBUS 的数据帧格式。表 3-2 MODBUS 的数据帧格式地址(Address)域功能(Function )域数据(Data)域错误校验(Ch
9、eck)域8-Bits8-BitsN× 8-Bits16-Bits3.2.2 地址( Address )域地址域在帧的开始部分,由一个字节(8 位二进制码)组成,十进制为0 255,在我们的系统中只使用1247,其它地址保留。这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。当终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。3.2.3 功能( Function )域功能域代码告诉了被寻址到的终端执行何种功能。表3-3 列出了 TDM508 系列仪表用到的功能
10、码,以及它们的意义和功能。表 3-3 TDM508 系列仪表用到的功能码代码意义行为01读 DO 状态获得数字(继电器)输出的当前状态(ON/OFF )02读 DI 状态获得数字输入的当前状态(ON/OFF)03读数据寄存器获得一个或多个寄存器的当前二进制值05控制DO控制数字(继电器)输出状态(ON/OFF)16预置多寄存器设定二进制值到一系列多寄存器中3.2.4 数据(Data)域数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这些数据的内容可能是数值、参考地址或者设置值。例如:功能域码告诉终端读取一个寄存器,数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的
11、地址和数据依照类型和从机之间的不同内容而有所不同。3.2.5 错误校验(Check)域该域允许主机和终端检查传输过程中的错误。有时, 由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,错误校验使用了16 位循环冗余的方法(CRC16) 。错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。CRC 值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC 值,然后与接收到的 CRC 域中的值进行比较,如果这两个值不相等,就发生了错误
12、。CRC 运算时,首先将一个16 位的寄存器预置为全1,然后连续把数据帧中的每个字节中的 8 位与该寄存器的当前值进行运算,仅仅每个字节的8 个数据位参与生成CRC,起始位和终止位以及可能使用的奇偶位都不影响CRC 。在生成CRC 时,每个字节的8 位与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位(LSB )移出并检测,如果是1 ,该寄存器就与一个预设的固定值(0A001H )进行一次异或运算,如果最低位为0,不作任何处理。上述处理重复进行,直到执行完了8 次移位操作,当最后一位(第8 位)移完以后,下一个 8 位字节与寄存器的当前值进行异或运算,同样进行上述的另一
13、个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 步来处理
14、下一个八位,直到所有的字节处理结束。7. 最终 CRC 寄存器的值就是CRC 的值。本设计中,用了CRC16 查表法来实现MODBUS 最后两个字节的错误校验域,具体程序详见附录。8. 2.6 查询回应周期查询: 查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03 是要求从设备读保持寄存器并返回它们的内容。 数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。回应: 如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括
15、了从设备收集的数据:象寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。图 3-2 主从 查询回应周期表3.3 通讯应用格式详解3.3.1 读 DO状态(功能码01)查询数据帧:主机发送给从机的数据帧。01 号功能允许用户获得指定地址的从机的DO(继电器)输出状态ON/OFF( 1 = ON , 0 = OFF ) ,除了从机地址和功能域,数据帧还需要在数据域中包含将被读取DO(继电器)的初始地址和要读取的DO(继电器)数量。TDM508 系列中DO(继电器)的地址从0000H 开始( D
16、O1=0000H , DO2=0001H ) 。3-4 的例子是从地址为10 的从机读取DO1 到 DO2 的状态。TDM508 系列有 2 个 DO, DO 的地址为0000H 0001H)表 3-4 功能码 01 (查询数据帧)AddrFunDO startreg hiDO startreg loDO #ofregs hiDO #ofregs loCRC16 hiCRC16 lo0AH01H00H00H00H02HBCHB0H响应数据帧:从机回应主机的数据帧 . 包含从机地址、功能码、数据的数量和 CRC 错 误校验,数据包中每个 DO 占用一位( 1 = ON , 0 = OFF ) ,
17、第一个字节的最低位为 DO1 的 值,第二位为 DO2 的值。下面表 3-5 的例子是读数字输出状态响应的实例。表 3-5 功能码 01 (响应数据帧)AddrFunByte countDataCRC16 hiCRC16 lo0AH01H01H02HD2H6DH错误指示码:如果主机请求的地址不存在或数据个数不正确则返回错误指示码:FFH。3.3.2 读 DI 状态(功能码02)查询数据帧:此功能允许用户获得DI 的状态ON / OFF( 1 = ON , 0 = OFF ) , 除了从机地址和功能域,数据帧还需要在数据域中包含将被读取DI 的初始地址和要读取的DI 数量。TDM508 系列中
18、DI 的地址从0000H 开始( DI1=0000H , DI2=0001H ) 。下面表 3-6 的例子是从地址为10 的从机读取DI1 到 DI2 的状态。表 3-6 功能码 02(查询数据帧)AddrFunDI start reghiDI start regloDI #of regshiDI #of regsloCRC16 hiCRC16 lo0AH02H00H00H00H02HF8HB0H响应数据帧:响应包含从机地址、功能码、数据的数量和CRC 错误校验,数据帧中每个 DI 占用一位 ( 1= ON ,0 = OFF ) , 第一个字节的最低位为DI1 的值, 第二位为DI2 的值。下
19、面表 3-7 的例子为读数字输入状态响应的实例。表 3-7 功能码02(响应数据帧)AddrFunByte countDataCRC16 hiCRC16 lo0AH02H01H01H62H6CH错误指示码:如果主机请求的地址不存在或数据个数不正确则返回错误指示码:FFH。3.3.3 读数据寄存器(功能码03)主机一次请求的查询数据帧:此功能允许用户获得设备采集与记录的数据及系统参数。数据个数没有限制,但不能超出定义的地址范围。下面表 3-8的例子是从10号从机读3个采集到的基本数据(数据帧中每个地址占用2个字节)F、 Va、 Vb, TDM508 系列中F的地址为0130H, Va的地址为01
20、31H, Vb的地址为0132H。表 3-8 功能码03(查询数据帧)AddrFunData startreg hiData startreg loData #ofregs hiData #ofregs loCRC16 hiCRC16 lo0AH03H01H30H00H03H05H43H响应数据帧:响应包含从机地址、功能码、数据的数量和CRC 错误校验。下 面 表 3-9 的 例 子 是 读 取 F 、 Va 、 Vb(F=1388H(5000Hz) 、 Va=03E7H(99.9v)Vb=03E9H(100.1v) 的响应。表 3-9 功能码03(响应数据帧)AddrFunByte coun
21、tData1hiData1loData2hiData2loData3hiData3loCRC16hiCRC16lo0AH03H06H13H88H03HE7H03HE9HC1HF4H错误指示码:如果主机请求的地址不存在则返回错误指示码:FFH。3.3.4 控制DO(继电器)(功能码05)查询数据帧:该数据帧强行设置一个独立的DO为 ON或 OFF, TDM508 系列的 DO的地址从 0000H开始( DO1=0000H , DO2=0001H )。注意:ON 的定义不一定是输出回路的闭合,根据设置参数的不同设置一次ON 时,也可能在硬件上输出一个脉冲。数据FF00H将设DO为 ON状态,而0000H则将设DO为 OFF状态;所有其它的值都将导致从机发送错误指示码,并且不影响DO状态。3-10的例子是请求10号从机设置DO1 为 ON状态。表 3-10 功能码05(查询数据帧)AddrFunDO addr hiDO addr loValue hiValue loCRC16 hiCRC16 lo0AH05H00H00HFFH00H8DH41HDO状态改变以后回传接收到的数据。表 3-11 功能码 05(响应数据帧)AddrFunDO addr hiDO addr loValue hiValue loCRC16 hiCRC16 lo0A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 廉洁从业课件
- 【课件】部编语文三上12 总也倒不了的老屋【国家级】一
- 《光合作用说课》课件
- 《品德服装销售》课件
- 儿童手术全麻介绍
- 一年级数学两位数加减一位数题过关测验题大全附答案
- 现代殡葬技术与管理专业群课程主题遗体覆盖党旗相关规定
- 新大陆云服务平台的使用综合案例智慧养老技术概论
- 圣诞微商活动策划方案
- 大班社会活动红绿灯
- 2024年工程承包合同协议书模板
- 第五节 错觉课件
- 江苏省南通市2024-2025学年高一上学期11月期中英语试题(无答案)
- 2024-2030年中国水煤浆行业发展规模及投资可行性分析报告
- 2024中国石油报社高校毕业生招聘6人管理单位遴选500模拟题附带答案详解
- 2024年国际船舶买卖合同(散货船)
- 自然资源调查监测技能竞赛理论考试题库大全-下(判断题)
- TS3000在航天炉煤化工中应用
- 呕吐(急性胃肠炎)诊疗指南(制订)编制说明排版
- 江堤道路工程施工方案#江苏
- 李燕璇植树问题卡通版5
评论
0/150
提交评论