- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【Word版本下载可任意编辑】
PAGE
1 - / NUMPAGES 1
嵌入式现场总线通信网关的设计与实现(二)
软件设计 的应用层定义 本文设计的现场总线通信网关定义了CANBUS的应用层协议. (1)规定网关收到的CAN数据帧中的第1个字节为CANBUS的功能码,该功能码为0x0F时,与MODBUS开展通信. (2)规定CAN数据帧中的第2个字节的高4位为该帧的标号位,低4位为该帧中包含的数据字节数,该字节数为MODBUS协议中数据域的字节数. (3)规定CAN 数据帧中的第3,第4 个字节分别为MODBUS的地址码和功能码. (4)规定从CAN 数据帧的第5个字节开始为 的数据域,由于MODBUS 的数据域一般为4 个字节,此时CAN数据帧的数据段恰好为8个字节. (5)当MODBUS 数据长度大于4 字节时,需要从2 个或者多个连续发送的标号相同的CAN 数据帧中获得完整的MODBUS数据.当获得的数据位数与帧中给出的位数不同时丢弃该帧. 定义一个数据缓冲区A,一个数据缓冲区B,分别用于临时存放CANBUS到MODBUS的数据和MODBUS到CANBUS的数据. 的收发程序设计 该部分包括CAN初始化,CAN发送程序,CAN接收程序.CAN 的初始化包括以下内容:配置嵌套向量中断控制器(NVIC),设置CAN的RX0和TX中断的响应优先级和抢占优先级,RX0和TX 中断使能.根据硬件连接配置GPIO,本文中RX 使用GPIOD0,TX 使用GPI-BOD2.设置波特率及过滤器配置. 数据的接收是通过接收邮箱(FIFO)中断开展处理的,当FIFO接收到一个新的报文时,过滤器根据预设的值判断报文的标示符是否匹配,若不匹配,直接丢弃该报文;若该报文的标示符与预设值匹配则中断处理程序将接收邮箱中的数据拷贝到数据缓冲区A,该数据将作为MODBUS 主站发往MODBUS 从站的数据. 数据接收程序流程如图5所示. 的数据发送同样使用邮箱机制,网关从数据缓冲区B中获得从MODBUS接收的数据,设置标示符和数据长度,选择一个发送邮箱,使能发送邮箱空中断.因此当该邮箱为空时产生一个中断,中断处理程序将数据从缓冲区拷贝到发送邮箱,该邮箱状态变为预定发送状态. 当CAN 总线进入空闲状态,预定发送邮箱中的报文就马上被发送,进入发送状态.邮箱中的报文被成功发送后,它马上变为空邮箱.CANBUS数据发送程序如图6所示. 主站.从站的收发程序设计 网关作为MODBUS从站时的主要工作是初始化串口,初始化定时器,配置嵌套向量中断控制器(NVIC),分别对串口接收数据中断和定时器中断设置响应优先级和抢占优先级.从数据缓冲区A中获得数据,对获得的数据生成CRC 校验码,组成MODBUS 帧从串口按照时序发送这一帧数据. 串口初始化如下: 设置波特率为 数据长度为8位 位停止位 无奇偶校验 无硬件流控制 使能串口发送和接收 协议规定了2 种传输模式:ASCII 模式和RTU 模式.本文设计的网关使用RTU模式传输,在此模式下报文中每个8位字节含有2个4位16进制字符它的优点是较高的数据密度,在相同的波特率下比ASCII 模式有更高的吞吐率.命令帧由地址码.功能码.数据语和CRC校验码构成.在RTU模式下,帧与帧之间必须由时长至少为3.5 个字符时间的空闲间隔区分.整个帧必须以连续的字符流发送,如果两个字符之间的空闲间隔大于1.5 个字符时间,则该帧被认为不完整的帧而被丢弃,接收设备假定下一字节是一个新消息的地址域. 主站程序需要使用3个定时器,其中TIM2用于控制发送的3.5 个字符的帧间隔.TIM3 用于控制接收MODBUS 从站的回应帧的3.5 个字符的帧间隔. 用于接收时确保字符间的间隔小于1.5 个字符时间.初始化TIM2 与TIM3,定时时间为定时3.645 8 ms(波特率为9 600 b/s时的3.5字符时间): 设置定时周期 设置预分频值 设置时钟分频 × 设置计数器增长方式 网关作MODBUS主站的工作流程如图7所示. 网关工作在MODBUS主站模式时对从站响应帧的接收使用中断处理的方式.在个字节传输结束后启动TIM4定时器,定时时间为1.5个字符时间,在后续的字节传输结束时清零计数器,保证一个帧中的字符间隔不超过1.5 个字符时间.接收完成后启动定时器TIM3,定时3.
文档评论(0)