文档详情

一种变流器ModBus通信程序设计方案(董志然).doc

发布:2018-08-22约1.45万字共13页下载文档
文本预览下载声明
北京科诺伟业科技有限公司 技术报告(董志然2012-4-13) 一种变流器ModBus通信程序设计方案 内容及目的 本技术报告提出了一种采用使用DSP实现变流器ModBus通信协议的方法。使用有限的DSP时间及空间资源,完成了变流器机侧控制器与主控PLC之间的Modbus协议的RTU模式数据传输。在现有RS232及RS485接口的基础上,完成了协议底层以及应用层功能,并成功应用于风力机模拟控制实验平台。 实现原理及思路 Modbus是一种主从方式的通信协议,即仅主设备可以初始化通信过程,从设备需要根据主设备提供的数据信息做出适当的响应。为减小通信开销,采用RTU的传输模式。标准的Modbus使用RS232C、RS422或者RS485串行接口,分析其通信流程,可见其可工作方式是半双工,本处使用RS232C通信接口实现半双工的通信方式。 变流器的控制器DSP2407工作过程中需要完成大量的数据运算及处理,故可利用的剩余的时间与空间资源非常有限,本处采用主循环与中断协调工作的方式完成通信数据帧的校验、解析与包装。 软硬件关键技术及控制流程 Modbus协议通信方式及数据格式 Modbus通信协议采用主从方式,在同一个网络中有一个主设备及最多达255台从设备,从设备的地址编码为 1~255。主设备地址码为0,通信时采用广播方式,可以将消息发送给所有的从设备,从设备收到主设备发送来的地址码后与自己的地址码进行比较,如果一致时则与主设备进行通信。Modbus通信以帧为单位,且定义了这些帧的意义,控制器只要按照协议解释其接收和发送的帧数据,就能与在同一网络中采用同样协议的控制器实现通信。常用的Modbus通信规约有两种:一种是Modbus ASCII格式;一种是Modbus RTU格式。一般来说,数据量少而且主要是文本的通信采用Modbus ASCII规约;数据量大而且是二进制数值的通信多采用Modbus RTU规约。本处正符合Modbus RTU格式特点,故选用第二种。数据格式如表3.1所示。 起始标志 设备地址 功能代码 数据 CRC校验 结束 T1-T2-T3-T4 8Bit 8Bit n个8Bit 16Bit T1-T2-T3-T4 表3.1 RTU数据格式 使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始。在程序中可以通过定时器完成。传输的第一个域是设备地址。网络设备不断侦测网络总线,包括停顿间隔时间,当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。?  整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过3.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的。 地址码可以根据需要自行设置。 功能码是通讯信息帧的第二个字节。ModBus通讯规约可定义的功能码范围为1~127,其中为用户预留的是65~72、100~110。根据实际需要,实现了以下功能码功能。 #define SCI_READ_HLD_REG 0x03 // word,read N hold_reg #define SCI_READ_HLD_REG 0x03 // word,read N hold_reg #define SCI_READ_AI 0x04 // word,read N input_reg #define SCI_SET_1_HLD_REG 0x06 // word,write 1 hold_reg #define SCI_SET_N_HLD_REG 0x10 // word,write N hold_reg #define SCI_MASK_HLD_REG 0x16 // word,mask write N hold_reg #define
显示全部
相似文档