刚刚接触can,如何去了解j1939,如何将can与j1939联系起来
美国汽车工业协会车用CAN总线标准,采用导体20AWG和18AWG两种规格的总线电缆。
感谢题主的邀请,我来说下我的看法:
J1939协议是CAN总线最为常见的几种高层协议之一,一般它用于柴油发动机车辆的CAN总线高层规则定义。另外,很多的电动车的CAN总线也都采用J1939作为标准的CAN协议。如果你需要能够解析相关协议的USBCAN设备的话,可以前往我们的网站进行具体咨询,欢迎来访。
汽车仪表是汽车与驾驶员进行信息交流的窗口,是汽车信息的中心,能够集中、直观、迅速地反映汽车在行驶过程中的各种动态指标,如行驶速度、里程、电系状况、制动、压力、发动机转速、冷却液温度、油量、各种危险报警。
FAN100这里给出一种基于CAN(Controller Area Network)总线的汽车仪表设计方案。该仪表利用CAN总线使其成为车身网络一部分,遵循SAE J1939协议读取发动机转速、水温等信息。仪表还能接收传感器的车速、油量、油压、制动气压等信号并显示,为驾驶员提供实时车辆工况。所设计的仪表主要应用于重型运输车等领域,在某重型车辆工厂进行的试验结果表明,该仪表能够满足数据可靠性及实时性等要求。
1 CAN总线及SAE J1939协议
1.1 CAN总线及SAE J1939协议简介
FAN100CAN总线属于现场总线的范畴,是德国Bosch公司在20世纪80年代初为解决现代汽车中众多的控制和测试仪器之间的数据交换而开发的一种有效支持分布式控制或实时控制的串行通信网络。CAN总线的通信实时性强,数据传输速率可高达1 Mb/s,通信介质可以是双绞线、同轴电缆或者光导纤维,通过标准的插接件能够方便的连接。CAN总线的数据通信具有突出的可靠性、实时性和灵活性,是目前应用最广泛的一种汽车总线。
FAN100SAE J1939协议是美国汽车工程师协会SAE(Societv of AutomoTIve Engineer)发布的以CAN2.0B作为网络核心协议的车辆网络串行通信和控制协议。J1939是参照ISO的开放式数据互联模型定义的7层基准参考模型而制定的。该协议明确规定汽车内部ECU的地址配置、命名、通讯方式以及报文发送优先级等,并且对汽车内部各个具体的ECU通讯作了详细的说明。它使用多路复用技术,为汽车上的各种传感器、执行器和控制器提供建立在CAN总线基础上的标准化的高速网络连接,在车载电子装置之间实现高速数据共享,有效地减少了电子线束的数量,提高了车辆电子控制系统的灵活性、可靠性、可维修性和标准化程度,更大程度地发挥了CAN优异的性能。
1.2 SAE J1939数据帧格式
FAN100SAE J1939数据帧是以PDU(协议数据单元)为单位,共由优先权(P)、保留位(R)、数据页(DP)、PDU格式(PF)、PDU细节(Ps)、源地址 (SA)及数据域(Date Field)等7个域组成。除了数据域之外的PDU对应于CAN扩展帧的29位标识符。其中PS是1个8位段,其定义取决于PF值。若PF值小于 240,PS是目标地址(DA)。若PF值介于240和255之间,则PS为组扩展(GE)。
FAN100有些CAN数据帧不是在PDU中定义,包括SOF、SRR、IDE、RTR、控制域部分、CRC域、ACK域和EOF域。这些域是由CAN定义的,SAE J1939不作修改。
2 CAN总线汽车仪表设计
2.1 仪表整体设计
FAN100该汽车仪表系统由数据采集、处理以及显示3个模块组成。其中数据采集模块负责接收车辆的各种数据,并将数据预处理后发送至微处理器。其中模拟量信号、脉冲信号以及开关量信号等传感器信号在各传感器处采集后,分别经过分压、滤波整形以及光电隔离后发送至微处理器。而发动机转速、水温和故障代码等CAN总线数据通过发动机CAN模块发送至CAN总线后,通过CAN收发器进行接收。微处理器接收到需要的数据后,根据预定的算法对数据进行处理,并将处理结果输出。显示模块包括指针、 LCD以及各种信号灯的显示。微处理器将发动机转速、车速等结果输出至电机驱动器,驱动器驱动步进电机转动,从而带动指针显示;微处理器直接驱动LCD显示及LED灯的亮灭。汽车仪表系统结构如图1所示。
FAN100根据对汽车仪表的整体分析,汽车仪表盘由3个分表盘组成,左分表盘显示发动机转速、油量等数据,右分表盘显示车速、油压等数据,中分表盘用于放置LCD显示屏以及各种指示灯。仪表指针全部采用步进电机驱动。仪表接收到的各种数据中,从CAN总线获取发动机转速、水温以及电压,从各种传感器获取车速、油量、气压以及油压。2.2 系统硬件设计
FAN100仪表采用Luminarv公司的LM3S2948处理器。这是一款基于ARMCortexM3内核的微处理器,采用32位RISC,内嵌CAN控制器、模数转换器(ADC)、模拟比较器等功能模块,减少了外围电路,降低了系统设计成本。LM3S2948处理器内置CAN模块方便了CAN总线数据的传输,同时使仪表的通信容易实现,提高了可靠性。其内置CAN模块具有以下特点:支持CAN 2.0B协议并支持符合SAE J1939协议的扩展帧的报文传输:位速率可高达l Mb/s;具有32个报文对象,每个对象都具有自己的标识符屏蔽码;包含可屏蔽中断,针对时间触发的CAN(1TrCAN)应用,可选择禁止自动重发送模式;通过CANOTx和CANORx引脚与外部CAN PHY无缝连接;具有可编程的F1F0模式。
FAN100LM3S2948微处理器具有运算速度快、功耗小、体积小、价位低等特点。其CAN控制器模块特性完全满足CAN总线汽车仪表的应用要求。该处理器具有强大的处理能力,在车辆的各种工况下都能够实时反映车辆信息,同时该处理器具有很大的可扩展空间,有利于后续开发。
FAN100由于LM3S2948内置CAN控制器模块,所以只需外接一个CAN收发器即可接收总线数据。该仪表选用CTM8251T作为CAN收发器。 CTM8251T是一款通用的带隔离的CAN收发器,该器件内部集成所有必需的CAN隔离及CAN收发器。该器件可连接任何一款CAN协议控制器,实现 CAN节点的收发与隔离功能。该器件设计体积小,集成度高,可取代传统的CAN收发器及其外围电路,降低了电路的复杂程度,减少了设计成本,如图2所示。
FAN100仪表采用VID6606驱动器驱动步进电机。每片VID6606可同时驱动4路步进电机。在其频率控制端输入脉冲序列F(SCX),即可控制输出端使步进电机的输出轴以微步转动,每个微步电机输出轴转动1/12(°),最大角速度可达600(°)/s。该电机驱动器具有以下特点:硬件微步驱动、简单易用,电机只需速度F(sex)和方向(CW/CCW)2个控制端、所有输入引脚都有干扰过滤器、宽工作电压、低电磁干扰辐射。仪表板指针采用VID-29电机驱动,电机内置减速比180/1的齿轮系,能够将数字信号直接准确地转为模拟的显示输出。该电机具有很高的显示精度,其步距角最小可达到1/2(°)。图 3所示为VID6606驱动仪表电路。
FAN100该仪表利用LCD显示时间、燃油消耗量以及产生故障时故障名称,处理器发送的信号先经74HC245功率放大后,然后送至液晶屏F2000LCD显示。 LCD电路如图4所示。
2.3 系统软件设计
FAN100系统软件设计分为主程序、CAN通信、数据采集处理和数据显示等4个模块。主程序模块通过调用各个子模块程序来处理数据处理:CAN通信模块负责发送和接收数据;数据采集及处理模块完成对各种类型数据的采集以及计算;数据显示模块将车速、油压以及信号灯等信息显示在仪表上。
FAN100图5为系统主程序流程,该系统主程序流程分为:1)系统初始化。系统初始化主要包括初始化系统时钟、CAN节点、LCD液晶屏、步进电机等,并使能CAN 中断,设置CAN屏蔽码和验收码。CAN节点初始化主要是初始化CAN控制器并中断CAN控制器:2)读取传感器以及CAN总线数据,并驱动指针以及 LCD等显示,同时等待CAN接收中断。3)CAN接收中断产生,进入接收中断子程序读取数据。判断数据是否符合数据接收条件,如果符合,则接收数据。此过程逐位比较接收到的29位标识符与验收码、屏蔽码,只有标识符相应位与验收码相应位相同,系统才开始接收数据。4)处理器将接收的报文进行解析,提取需要的数据并进行处理。处理器对传感器传来的数据和CAN总线读取的数据进行处理计算,得到相应的指针驱动参数,计算出指针转角,并根据初始化的步进电机的参数计算出指针转动速度。指针转动速度与相应的参数变化速度成正比。同时计算出车辆行驶里程并累加到总路程上。5)处理器将包含车辆工况的一组脉冲序列发送至步进电机驱动器,驱动器驱动步进电机以微步方式转动,指示出相应的发动机转速、车速、水温以及油压等;处理器将包含车辆总路程等信息的数据发送至 LCD控制器,控制器控制LCD显示相应的总路程等:处理器改变相应的I/O引脚状态直接点亮/关闭相应的指示灯。
2.4 故障显示
FAN100该仪表能够从CAN总线接收故障代码并对故障代码进行解析,与预先写入的故障码比对后找到对应的故障信息并显示在LCD屏幕上。每一类型的数据都有特定的数据帧ID,系统根据帧ID判断故障产生的位置。如果收到的是单帧故障,则系统来提取总字节数和总包数;如果收到的是多帧故障,系统则连续提取故障诊断报文至特定的字节,然后根据故障代码查找故障类型。
3 结束语
在研究CAN总线和SAE J1939协议的基础上,设计CAN总线汽车仪表。该设计充分利用LM3S2948以及VID6606的功能,较大程度上降低了系统外围电路的设计以及成本。多次实车试验结果表明,相对于常规仪表,该CAN总线仪表具有以下优点:抗干扰能力强,传输速率高,能够保证数据有效、快速、稳定地传输;减少车身布线,硬件方案软件化实现,简化了设计,降低了成本;及时、直观地查看车辆故障;CAN总线将整车构成一个网络系统,能够提升系统的灵活性,方便地增加设备,扩大了可开发的空间。
CAN分为CAN 2.0A(11bit的ID地址) 和 CAN 2.0B(29bit的ID地址)。
其中CAN 2.0B(29bit的ID地址)是扩展型的,可以定义5.36亿个不同的ID地址,可是一般情况下一个控制系统中不可能有这么多ECU,造成了明显了浪费。
J1939是SAE(美国汽车协会)基于CAN 2.0B总线的规范,对仲裁场部分的29位ID的重新解释,其它部分完全一样。目的是解决不同发动机厂商、不同ECU厂商的兼容性问题。
你可以理解为J1939是CAN通信的升级版本,比如,CAN是广播类型的总线,所有节点都可以“侦听”到所有传输,无法向一个特定的节点发送报文。而J1939可以选择广播或者定向。
再比如J1939定义了 发动机、变速器、车轴等汽车上各部件的信息,对参数的表示方法(状态和值)又定义了SLOT(Scaling比例、Limit界限、Offset偏移、Transfer传送)
建议参考文献,这个pdf讲的很生动,推荐
https://canlandbucket.s3-eu-west-1.amazonaws.com/productionResourcesFiles/fedc714c-ab2e-45ef-8aef-521cf431344f/j1939-by-kvaser.pdf
https://canlandbucket.s3-eu-west-1.amazonaws.com/productionResourcesFiles/cd638950-16dd-456b-9721-0fd822c1ca34/Kvaser%20CAN%20Protocol%20Tutorial.pdf
去淘宝买个模块,实际操作学习会更快
Ti有SAE J1939 Protocol Stack (Application Software & Frameworks),买一个Ti的板子,在来一个8051 两个做通信,就学会了。
看下这篇文章,应该有帮助。http://www.elecfans.com/qichedianzi/20100708220191.html
求助现场总线的问题关于(CAN、RS232、RS485、Ethernet)
【来源---拷贝与其他网页】简单说,现场总线就是以数字通信替代了传统4-20mA模拟信号及普通开关量信号的传输,是连接智能现场设备和自动化系统的全数字、双向、多站的通信系统。主要解决工业现场的智能化仪器仪表、控制器、执行机构等现场设备间的数字通信以及这些现场控制设备和高级控制系统之间的信息传递...
最近用USB CAN分析仪总是电脑蓝屏 有没有什么解决方法
刚上线就看到你的问题了 USB CAN导致电脑蓝屏的原因可能是驱动没有装好或者在总线跑数据的时候端口接触不良,导致PC瞬间识别不到设备然后电脑端的软件卡死了,建议重新安装驱动或者把接口弄紧点再跑起来试试,如果问题没有解决再沟通~
汽车can通讯故障的解决方法是什么?
汽车can通讯故障的解决方法是:1、首先需要查看具体的故障症状,根据故障症状初步分析故障原因。例如,如果汽车的车灯无法正常工作,那么可能是电路接触不良或者灯具损坏等原因导致。因此,需要仔细检查电路连接是否正常,以及灯具是否损坏。如果发现电路连接正常,但是灯具损坏,那么需要更换灯具。如果汽车的发动机...
CAN通信错误
总线错误中断的处理是复位该节点,重新初始化CAN控制器,这样可以消除错误,给节点一个很好的初态。由于CAN总线两条传输线之间的误接触,也易造成CAN总线关闭,使节点无法工作,在主程序中查询状态寄存器中当前CAN总线状态,及时复位该节点,使节点正常工作。 同时,为了更方便直观地查看CAN总线的工作状态,设计了一个指示灯,...
很感谢您回答我前两个问题,我在做CAN通信时又遇到了一些问题,想请教一...
EDS 文件是硬件驱动文件,EDS文件是一个文本文件,可以应用文本编辑器打开它。我刚好也在做can通信,编写eds文件,具体怎么写也在研究中,现在可以告诉你的就是eds文件要用其专用编写器
外贸新人求助,收到“ can you send to me catalogues and samples”的...
Catalogues是产品目录的意思 你收到这样的回复说明你和客户是刚刚接触,时间不长.那么这时先简单做一份产品目录表给他,让他了解你们的产品。至于样品你告诉客户说,样品我们是可以提供的,但只有当您确定好需要哪一个产品时,我们才能为您寄送最合适的样品。(至于样品费,在此封邮件避而不答,到下一封...
如何学习C语言
很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言? 我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你...
canopen开发出接口需要那些东西?
最好买个辅助的,类似于canopen开发模块,这样就有基础,再根据您的想法改一下就ok了 !
驱动can总线系统中可以使用dso测量的故障类型有哪些
无论是哪种情况,最好先检查无法接触的控制单元插头。2019 汽车can通讯故障怎么解决 CAN总线系统中拥有一个CAN控制器、一个信息收发器、两个数据传输终端及两条数据传输总线,除了数据总线外,其他各元件都置于各控制单元的内部。分析CAN总线系统产生故障的原因一般有以下三种:1.汽车电源系统引起的故障:...
手机刚准备充电,刚接触电源线接口。结果就黑屏了
您好!根据您的描述可以尝试以下方法:1.您可以尝试充电20分钟再长按电源键10秒试一下是否可以开机的(手机完全没电再充电是没有任何提示的)。2.手机关机状态同时按住音量上键以及电源键3到4秒手机出现vivo手机标志后,放开按键进入recovery模式,先选择wipe data\/factory reset,完成等待界面跳转后选择...
暨素纽枢: 从资源利用的角度来说,可以如您所理解的那样.CAN总线就是一个多主的系统,总线上的节点都可以利用这个总线向目标节点发送数据.CAN用总线仲裁来避免多个节点同时发送数据而产生的问题.要学习CAN总线技术,需要有单片机(51单片机都行)编程基础.通常选择SJA1000做CAN控制器,PCA82C250做收发器,单片机实现对SJA1000的操作.可以从了解以上器件入手学习.这类技术的学习,只有进行具体的练习才算学习,光看书是不行的.要理论与实践结合.
上栗县19594665902: 如何学习汽车CAN总线相关的知识? - ?
暨素纽枢: 其实这个不难的,首先,网上有很多资料,对于汽车CAN总线相关知识的学习,首先要了解CAN通信的理论知识,可参考《项目驱动-CANbus现场总线基础教程》.另外还需要多点实战,真实的去接触与CAN相关的设备,分析其通信数据的形式与特点,可以找一个USBCAN-2E-U的设备就可以在PC上拓展出一个标准的CAN接口用于数据的收发.
上栗县19594665902: 最近刚刚接触气相, 不知道大家碰到过这个问题没有: 空气发生器每隔一定时间会自动放气,基线就会下降, - ?
暨素纽枢: 空气发生器最多只是提供一种助燃气,它的使用量一般根据仪器的不同可能会是250-450ml/min吧,但一般情况...
上栗县19594665902: 刚怀孕一个多月,因为半年前家里养过狗,我一般都不接触狗,从来不摸他们,因为老公喜欢,现在想咨询弓形虫 - ?
暨素纽枢: 看来要给你补习一下这方面的知识~~呵呵~~狗不是弓形虫的最终宿主,它不具备传染给人类弓形虫的本事,如果非...
上栗县19594665902: 大学刚刚接触软件工程什么也不知道怎么办 - ?
暨素纽枢: 您好.基本是好多学生都没有接触过自己的专业课 比如说,酒店管理,建筑工程,汽车工程,机械工程,数字媒体技术等等这些专业,大部分学生都是在高考前没有接触过的.都是从不会到会的过程,所以您要加油呀 大一的时候学好数学英语,大二以后跟着老师学专业课,不会就互相讨论 看着别人做,自己学
上栗县19594665902: 我刚刚接触雕刻,请问在type3中进入CAMS模块后具体应若何操作 多谢指点 - ?
暨素纽枢: 进入后就可以做刀具路径了啊
上栗县19594665902: 刚刚接触大唐无双,关于游戏职业方面有很多不懂的地方,不知道如何选择?请教高手解答 - ?
暨素纽枢: 蜀山!“进可攻,退可...
上栗县19594665902: 新手刚接触吉他怎样2至3月速成 只是哪来解闷 - ?
暨素纽枢: 速成两三个月应该足够了,自己解闷,弹弹和弦,唱唱歌,说是解闷,大家要求别太高了. 左手学一些基本的和弦: C D E F G A B和Cm Dm Em Fm Gm Am Bm 如果要求不是很高的话,可以弹唱所有歌曲了,就是效果可能没有那么出色 右手的话学习一些基本的拨弦和扫弦的节奏 这些没有什么技巧的活,三个月 唱唱歌是没有问题了. 其实学一个调的和弦怎么按 通过变调也可以弹弹不同的曲目哦 所以C调G调的多练习下 基本可以搞定的 像c调和弦 C Dm Em F G Am Bdim 学会这些就可以弹很多歌曲了
上栗县19594665902: 请问原油指数是期货吗?刚接触这方面,想了解下,望指点 - ?
暨素纽枢: 原油指数是国际上的期货价格