产品推荐:水表|流量计|压力变送器|热电偶|液位计|冷热冲击试验箱|水质分析|光谱仪|试验机|试验箱


仪表网>技术中心>故障维护>正文

欢迎联系我

有什么可以帮您? 在线咨询

如何构建专属自己的CAN-bus应用层协议

   2017年05月10日 11:53  
  随着CAN-bus相关芯片价格的下降,内置CAN控制器MCU的增多,CAN-bus当前已经进入了众多早期由于成本问题无法使用的领域,成为生命力的现场总线,今天我们就来探讨如何构建专属自己的CAN-bus应用层协议。
 
  在CAN-bus网络上,CAN报文以广播的形式发送,CAN报文不包含地址信息,是否处理接收到的CAN报文由接收点的软件确定。CAN-bus只提供可靠的报文传输服务,CAN报文的使用由应用者定义, 所以CAN网络中的节点要相互通信就必须制定一个统一的规则。CAN应用层协议就是这样一个规则。
 
  这个规则,定义了CAN报文中帧ID及帧数据的使用方式,如将帧ID定义为需要处理该帧数据的CAN节点地址等。根据应用场合的不同,上出现了多种CAN应用层协议,常见的CAN-bus应用层协议如下:
 

 
图1
 
  接下来,我们看一下如何构建CAN-bus应用层协议
 
  构建一个现场总线网络,需要解决的关键技术问题有:
 
  总线传输信息的速度、容量、优先等级、节点容量等;
 
  高电磁干扰环境下的可靠数据传输;
 
  zui大传输距离时延时大小的确定;
 
  网络的容错技术;
 
  网络的监控和故障诊断功能。
 
  要解决以上问题,需要充分考虑现场总线网络所采用的总线类型,因为以上问题和总线的性能特点是密切相关的,那么我们就看一下CAN-bus总线的上述特性:
 
  CAN-bus网络传输速度zui高可达1Mbps,并采用无损仲裁,通过报文标识符指示报文优先级;
 
  CAN-bus采用差分信号传输,并采用可靠的数据校验和错误检测机制;
 
  CAN-bus采用帧传输,每个报文允许传输zui多8个字节,帧结构有严格规定,能够确定zui大传输延时;
 
  CAN-bus具有可靠的错误机制和检测机制,发送的信息遭到破坏后可以重新发送;节点在错误严重的情况下,具有自动退出总线的功能;
 
  可以通过制定严禁的CAN-bus应用层协议解决网络监控和诊断。
 
  CAN报文的分配
 
  包含报文标识符的分配和报文数据的分配,报文格式的定义,实质是将CAN报文的分配规则进行详细的描述。
 
  报文ID的定义:
 
  CAN2.0A帧:11位ID
 
  CAN2.0B帧,29位ID
 
  报文数据的定义:每帧报文zui多包含8字节数据
 
  CAN网络数据通信的实现
 
  在CAN网络中,通过报文的标识符进行信息的区分,因此通过报文的各种标识符分配来达到建立信息链接的目的。
 

 
图2 命令/响应模式通信
 
  CAN应用层协议:面向节点和面向报文的协议
 
  数据通信协议基本上可以划分为“面向节点的协议”和“面向报文的协议”两种类型,如下图:
 

 
图3:面向节点和面向报文的数据通信
 
  制定一个CAN应用层协议
 
  为了给读者演示CAN应用层协议的开发和使用方法,下面定义一个简单的CAN应用协议栈,该协议栈中只用到CAN标准帧中的数据帧,帧ID中的11个位的分配和使用方法如下表所列,协议中另外还定义了功能参数长度变量FunDataLen的功能参数数组FunData,该数组在需要时可以为某些特定功能函数提供足够的控制参数。
 

 
图4

免责声明

  • 凡本网注明“来源:仪表网”的所有作品,均为浙江兴旺宝明通网络有限公司-仪表网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:仪表网”。违反上述声明者,本网将追究其相关法律责任。
  • 本网转载并注明自其它来源(非仪表网)的作品,目的在于传递更多信息,并不代表本网赞同其观点或和对其真实性负责,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品第一来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
联系我们

客服热线: 15267989561

加盟热线: 15267989561

媒体合作: 0571-87759945

投诉热线: 0571-87759942

关注我们
  • 下载仪表站APP

  • Ybzhan手机版

  • Ybzhan公众号

  • Ybzhan小程序

企业未开通此功能
详询客服 : 0571-87759942