CAN通信协议
控制器局域网(CAN)为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN的应用范围很广,从高速的网络到低价位的多路接线都可以使用CAN。在汽车电子行业里,使用CAN连接发动机控制单元、传感器、防刹车系统、等等,其传输速度可达1 Mbit/s。同时,可以将CAN安装在卡车本体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。
为了达到设计透明度以及实现柔韧性,CAN被细分为以下不同的层次:
• CAN对象层(the object layer)
• CAN传输层(the transfer layer)
• 物理层(the phyical layer)
对象层和传输层包括所有由ISO/OSI模型定义的数据链路层的服务和功能。
对象层的作用范围包括:
查找被发送的报文。
确定由实际要使用的传输层接收哪一个报文。
为应用层相关硬件提供接口。
在这里,定义对象处理较为灵活。传输层的作用主要是传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。总线上什么时候开始发送新报文及什么时候开始接收报文,均在传输层里确定。位定时的一些普通功能也可以看作是传输层的一部分。理所当然,传输层的修改是受到限制的。 物理层的作用是在不同节点之间根据所有的电气属性进行位信息的实际传输。当然,同一网络内,物理层对于所有的节点必须是相同的。尽管如此,在选择物理层方面还是很自由的。
CAN具有以下的属性:
• 报文的优先权
• 保证延迟时间
• 设置灵活
• 时间同步的多点接收
• 系统宽数据的连贯性
• 多主机
• 错误检测和标定
• 只要总线一处于空闲,就自动将破坏的报文重新传输
• 将节点的暂时性错误和永久性错误区分开来,并且可以自动关闭错误的节点
Allegro16.5怎样添加模型库,创建Xnet方法
以下各数是合法的十六进制整常数:
0X2A(十进制为42)、0XA0 (十进制为160)、0XFFFF (十进制为65535);
以下各数不是合法的十六进制整常数:
5A (无前缀0X)、0X3H (含有非十六进制数码)。
4) 整型常数的后缀:在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为0~65535,有符号数为-32768~+32767。八进制无符号数的表示范围为0~0177777。十六进制无符号数的表示范围为0X0~0XFFFF或0x0~0xFFFF。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。
例如:
十进制长整常数:
158L (十进制为158)、358000L (十进制为358000);
CAN总线协议通信的数据是什么格式,及其显示的波形图是怎样的?
控制器局域网CAN(Controller Area Network)是一种多主方式的串行通信总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。CAN在汽车上的应用,具有很多行业标准或者是国际标准,比如国际标准化组织(ISO)的ISO11992、ISO11783以及汽车工程协会(Societyof Automotive Engigeers)的SAE J1939。CAN总线已经作为汽车的一种标准设备列入汽车的整车设计中。 CAN通信协议规定了4种不同的帧格式,即数据帧、远程帧、错误帧和超载帧。基于以下几条基本规则进行通信协调:总线访问、仲裁、编码/解码、出错标注和超裁标注。CAN遵从OSI模型。按照OSI基准模型只有三层:物理层、数据链路层和哀告层,但应用层尚需用户自己定义。CAN总线作为一种有效支持分布式控制或实时控制的串行通信网络,应用范围遍及从高速网络到低成本的多线路网络。如:CAN在汽车中的发动机控制部件、ABS、抗滑系统等应用中的位速率可高达1Mbps。同时,它可以廉价地用于交通运载工具电器系统中,例如电气窗口、灯光聚束、座椅调节等,以替代所需要的硬件连接。其传输介制裁为双绞线,通信速率最高可达1Mbps/40m,直接传输距离最远可达10km/5kbps,挂接设备数最多可达110个。CAN为多主工作方式,通信方式灵活,无需站地址等节点信息,采用非破坏性总线仲裁技术,满足实时要求。另外,CAN采用短帧结构传输信号,传输时间短,具有较强的抗干扰能力。 CAN总线与其它通信协议的不同之处主要有两方面:一是报文传送不包含目标地址,它是以全网广播为基础,各接收站根据报文中反映数据性质的标识符过滤报文,其特点是可在线上网下网、即插即用和多站接收;另外一个方面就是特别强化了数据安全性,满足控制系统及其它较高数据要求系统的需求。 在现代汽车的设计中,CAN总线已经成为构建汽车网络的一种趋势;而汽车网络作为直接与汽车内部各个ECU连接并负责命令的传递、数据的发送及共享,其可靠性和稳定性与整车的性能紧密相关。本文的设计开发是在基于试验条件下搭建的仿真平台,节点之间的通信是通过对等的CAN通信节点进行的。试验表明其运行性能稳定可靠,但实用化仍需要进一步的研究和改进,且程序的通信处理能力、纠错和容错能力有待进一步的提高. 比如: 把CAN总线融合到嵌入式平台中,在其ARM-EP9315和ARM-S3C2440嵌入式平台上都做到了CAN总线功能的实现!ARM嵌入式控制平台,具有开放、集成度高、尺寸小、可扩展性强、低功耗等特点,非常适合与数字家电、车载设备、通信终端、网络设备等的应用。如今有了CAN总线的实现,使其在此方面的应用更为有效!求采纳
CAN总线协议通信的数据是什么格式,及其显示的波形图是怎样的?
CAN采用差分信号的方式通信,CAN_H=3.5 CAN_L=1.5, 示波器波形为方波,其帧结构及长度如下
标准帧:SOF+ID+RTR+r0+DLC+Data+CRC+CRCDel+ACK+ACKDel+EOF=1+11+1+1+1+4+(0~8)*8+15+1+1+1+7=44~108
扩展帧:SOF+ID+RTR+r0+DLC+Data+CRC+CRCDel+ACK+ACKDel+EOF=1+29+1+1+1+4+(0~8)*8+15+1+1+1+7=62~126
标准帧ID是11位,扩展帧ID是29为,数据场可以是0到8个字节,所以是(0~8)*8
更详细的可以追加给点分 问我哦 弄个这方面的专业工具对加深理解很有帮助的,我的答案我就是对照着CANspider的display数的绝不会错。
最简单的编程语言是什么
你是不是想象自己学会了编程,开了家公司,有很多的钱?可当你开始自学编程,却因为讲师对你讲听不懂的术语给忽悠了,从而放弃了学编程?其实,编程很有趣。下面小编——虾哥——为你介绍哪几种编程语言最容易。方法/步骤1/4分步阅读排名第一:Visual basicvisual的意思是“视觉”,basic是一种最适合初学者的编程语言。顾名思义。它是可以在窗口里拖组件的Basic编程语言。它由微软开发,简单易用,新手大师都适合。2/4排名第二:Visual C++VC++其实也是微软推出的C/C++语言集成开发环境。它功能简单,简单到连框架都可以省去一点(当然不可以全部省去),比较适合初学者。唯一让初学者接受不了的可能是新手只能开发控制台,学着学着会觉得开发这些黑底白字的东东没什么用。3/4排名第三:JavaJava最流行。有三种原因:1.Java程序员工资高。2.Java的优点是跨平台,适合做移动开发。3.因为以上两点,很多想学编程的人发现学Java的人多,所以就跟风学Java。Java比较难学,学过C/C++的人学Java更容易听懂。4/4还有Java script,HTML,PHP,RUBY等语言。如果你有足够的耐心,学以下几种编程语言也不是问题。但是还是建议按本篇经验所介绍的编程语言的顺序来学吧。注意事项本经验只是作者观点,学哪种语言都可以。