使用普通的USB-CAN设备读取和解析DTC 徐亮
- 格式:pdf
- 大小:382.48 KB
- 文档页数:4
如何使用IIPRO读取温湿度传感器的数据文档版本:2018/2/1如何使用IIPRO读取温湿度传感器的数据一、写作背景传感器设备是工业自动化,仪器仪表及其他很多生产活动中使用最广泛的设备之一。
大部分传感器设备在早期都是与控制器直接相连,并且各传感器设备之间无法直接通信,因此,如果一个庞大的控制系统中使用了大量的传感器设备,将会导致整个系统布线复杂、系统调试效率低、维护成本高等缺点。
由于CAN总线多主结构等特点,新一代的传感器多数都开始使用CAN总线作为通信总线,而基于CAN总线应用层的CANopen协议更是改变了设备与控制系统之间的通讯方式。
现在有CANopen协议的传感器得到了越来越多工程师的青睐,不过如何读取使用CANopen 协议的传感器的参数,成为了很多刚入手工程师的难点。
温湿度传感器如图1、2所示。
图1 温湿度传感器图片图2 温湿度传感器参数表二、读取数据的解决方案上文介绍的温湿度传感器是一个标准的CANopen从站设备,我们要想读出传感器的数据,根据CANopen协议规范,我们必须使用CANopen主站设备。
广成科技的USBCAN-II Pro分析仪(如图3)是一个标准的CAN总线调试分析设备,配合ECANTools软件的CANopen主站功能(如图4)可对CANopen从站(温湿度传感器)进行管理、参数读取、调试及数据分析等工作,并根据读取上来的PDO数据,按照传感器的使用手册来进行温度、湿度的解析。
图3 USBCAN II Pro设备图4 CANopen Master界面三、具体操作1、USBCAN-II Pro和传感器物理层连接CAN总线在实际接线时只需要将CAN_H连CAN_H,CAN_L连CAN_L即可建立通信。
CAN总线网络采用直线拓扑结构,总线最远的2个终端需要安装120Ω的终端电阻;如果节点数目大于2,中间节点不需要安装120Ω的终端电阻。
对于分支连接,其长度不应超过3米。
CAN总线的查找及连接方法CAN总线是一种常用的控制器局域网络,用于在不同设备之间进行通信。
CAN总线可以用于汽车、工业自动化、通信设备等领域,可以实现实时性高、稳定性好的数据传输。
在实际使用中,需要先查找并连接CAN总线才能实现通信功能。
下面将介绍CAN总线的查找及连接方法。
一、CAN总线的查找方法1.查看设备手册:首先,在需要使用CAN总线的设备手册中查看是否支持CAN总线通信。
设备手册中会详细说明CAN总线的参数、接口类型、通信速率等信息,从而确定是否支持CAN总线。
2.查看设备外部连接接口:如果设备支持CAN总线通信,可以通过查看设备的外部连接接口来确认CAN总线的接口类型和连接方式。
通常情况下,CAN总线的接口是一个圆形的9针插座,也有一些设备采用其他类型的接口,需要根据具体设备来确认。
3.使用专用工具进行扫描:如果无法确定设备是否支持CAN总线通信或者找不到外部接口,可以使用专用的CAN总线扫描工具来扫描设备,看是否可以检测到CAN总线信号。
扫描工具通常可以识别CAN总线的信号并显示通信状态,从而确认设备是否支持CAN总线通信。
二、CAN总线的连接方法1.准备CAN总线设备:在确认设备支持CAN总线通信后,需要准备好CAN总线设备,包括CAN总线模块、CAN总线数据线等。
2.连接CAN总线模块:将CAN总线模块插入设备上的CAN总线接口,确保插入正确,避免损坏设备。
通常情况下,CAN总线模块插入后会有“咔嚓”声,表示已连接成功。
3.连接CAN总线数据线:将CAN总线数据线连接到CAN总线模块上的引脚上,通常情况下,CAN总线数据线有两根线,一根为CAN_H,另一根为CAN_L,需要分别连接到CAN总线模块上对应的引脚上。
4.设置CAN总线参数:连接好CAN总线设备后,需要设置CAN总线的参数,包括通信速率、数据位率、校验方式等。
设置参数需要按照设备手册上的说明进行,确保设备之间能够正常通信。
汽车综合性能检测过程中CAN通信网络的使用方法CAN(Controller Area Network)通信网络在汽车综合性能检测过程中起到了至关重要的作用。
本文将介绍CAN通信网络的使用方法。
CAN通信网络是一种高效可靠的汽车通信网络,它能够实现车内各种电子设备之间的数据传输。
CAN通信网络中的每个设备都有一个唯一的标识符,用于区分不同设备。
在汽车综合性能检测过程中,我们可以通过CAN通信网络来读取和解析车辆传感器的数据。
通过CAN通信网络,我们可以获取车速、转速、油温等数据。
为了使用CAN通信网络进行数据读取,我们首先需要了解车辆中各个设备的CAN标识符。
这些标识符可以在车辆的技术手册或者相关的文档中找到。
一般来说,厂家会将CAN通信网络的标识符进行分类,例如将发动机相关的设备放在一个标识符范围内,将仪表盘相关的设备放在另一个标识符范围内。
一旦获取到了设备的CAN标识符,我们可以使用CAN通信工具来读取设备发送的数据。
CAN通信工具一般可以连接到车辆的OBD(On-board Diagnostics)接口上,通过该接口读取CAN数据。
通过CAN通信工具,我们可以选择要读取的设备和数据类型,并设置读取频率。
读取到的数据可以进行实时显示和记录。
在实际的检测中,我们可以使用PC或者移动设备来实时监测车辆的性能数据,例如车速、转速、油温等。
对于较复杂的检测,我们可以使用数据日志记录器来记录数据,以便后续分析和处理。
还可以使用CAN通信网络来向车辆发送控制命令。
通过CAN通信工具,我们可以选择要操作的设备和要执行的操作,并发送相应的控制命令。
我们可以通过CAN通信网络来控制车辆的车窗、车灯、空调等设备。
CAN通信网络在汽车综合性能检测中的使用方法包括以下几个步骤:了解设备的CAN标识符、使用CAN通信工具读取数据、实时显示和记录数据、发送控制命令。
通过合理使用CAN通信网络,我们能够更好地进行汽车综合性能检测,提高检测效率和准确性。
CAN信号值解析本⽂提供⼀种可以解析CAN信号各信号值的⼀种⽅法并进⾏说明。
⼀般情况下,⾼端⼀点的设备会计算每⼀个信号的值,但是接受到CAN信号的报⽂实际上有各种情况,如何通过设定的起始位和数据长度来获取某⼀信号的值,详情请参考,本⽂⽅法⽐较笨拙,如有更好的办法,欢迎指教。
假设,我们获取到的数据长度为8byte,即DLC为8。
CAN Matrix表格如下:我们约定,⼀种表⽰信号的⽅式如下:1. lsb起始位2. 数据长度按照上⾯的图来说,该信号起始位为40,长度为10。
所以,该信号表⽰值的范围在0-1023之间,⾄于具体表⽰的物理量的含义需要有其他的⽂件规定。
获取到⼀帧数据以后,如何通过⼀系列的运算来得到信号值呢?这⾥提供⼀种思路:根据起始位和长度信息确定信息跨越的byte位根据起始位确定LSB所在的bit位根据跨越的byte位组合为数据把以上组合的数据进⾏位与,得到信号值。
⼤概分为以上的4部分,以下分别说明:设定:lsbbit,lsbbyte,msbbyte,start,length.按照以上的例⼦就是: lsbbit = 0lsbbyte = 5msbbyte = 4start = 40length = 10计算lsbbit: lsbbit = start & 7计算lsbbyte: lsbbyte = start >> 3计算msbbyte: 由于数据是向byte减少的⽅向进⾏的。
所以: msbbyte = lsbbyte - x x为跨越的位数,也就是:lsbbit + length - 1所占的长度,如果⼤于7说明为另⼀⾏,即: msbbyte = lsbbyte - ((lsbbit + length - 1) >> 3)组合data: 我们知道数据介于msbbyte-lsbbyte之间,那么我们可以组合这两个数据: for(index = msbbyte -> (lsbbyte+1)): data_merge += data[index] << (( lsbbyte - index ) << 3)获取数据value: 去尾:value = data_merge >> lsbbit 按位与:value = value & ((1 << length) - 1)所以,最终得到的结果为筛选出来的信号值,然后根据该信号值关联上实际的物理值,就可以得到具体的物理数据了。
安装前准备:硬件:USBCAN、EPEC2024、相应的接插件和连线。
软件:PcanV iew、CANmoon、Codesys_21、Library。
一、安装PcanV iew1、点击\PcanV iew\USB-CANmodul_setup.exe进行软件安装:2、插上USBCAN硬件:3、在设备管理器中可以找到下图代表安装成功:4、点击菜单PcanV iew (USBCAN),Baudrate根据实际选择,一般都是250k:5、如果出现下图表示USBCAN硬件没有插好,或者驱动没有装好:二、安装CANmoon1、点击\CANmoon\install_CANmoon.exe进行软件安装:(会被认为是病毒,请添加为信任。
)2、拷贝\CANmoon\CanMoon.ini到C:\Program Files\CanMoon\文件夹。
3、删除开始->程序->CANmoon的快捷菜单。
4、在桌面上创建C:\Program Files\CanMoon\CANmoon.exe的快捷方式:。
5、点击程序CANmoon进行CAN Swttings,BaudRate一般选择250:表示CanMoon.ini文件没有拷贝。
表示驱动没有选对。
表示USBCAN硬件没有插好,或者驱动没有装好。
表示连接成功。
说明:(1) install_CANmoon.exe会被杀毒软件认为是病毒,请添加为信任。
三、EPEC2024程序上传下载1、硬件连接图:2、扫描节点:按上图连接好并打开CANmoon,EPEC2024初次上电会发送报文。
点击进行节点扫描,如果EPEC2024连接正常,会扫描到,第一个4表示当前节点,第二个4表示设置节点,2.18表示底层版本号。
(这里只是一个例子,实际的节点是由当前的控制器决定。
)3、上传EPEC2024的程序:(有:通信参数、应用参数、应用程序。
)(1)在中输入你扫描到的节点,点击将出现将上图的通信参数记录下来,留作后面使用。
使用USBCAN分析仪软件收不到数据的排查方法随着CAN总线应用场合越来越多,USBCAN分析仪的使用频率也越来越高。
使用USBCAN 调试CAN总线的时候经常会遇到收不到数据的情况。
本文展示了使用广成科技USBCAN分析仪调试CAN总线的一些经验和方法。
通常情况下收不到数据一般是因为接线问题、通信波特率不匹配、CAN总线电阻值不匹配、CAN总线目标设备或USBCAN分析仪问题。
准备工具:Windows系统电脑(台式、笔记本均可)广成科技USBCAN-II Pro分析仪一台目标CAN总线设备(汽车、伺服电机控制器、ARM开发板等)一、接线问题接线时需要将USBCAN-II Pro分析仪的CANL接到目标CAN设备的CANL上,USBCAN-II Pro 分析仪的CANH接到目标CAN设备的CANH上。
目前最常见接线方式是凤凰端子、DB9、OBD 三种接线方式。
凤凰端子接线时应注意以下几点:①接线时注意CAN1和CAN2通道要和上位机软件相对应;②H与L不要接反(不同厂家的CAN设备定义的位置不同,请按照标识接线);③拧端子螺丝的时候要顺时针拧紧;④通常接线时只需接入L与H,P为屏蔽线,如有强磁干扰时可以将P接入大地;⑤接线推荐使用双绞线。
若没有强电磁干扰,实验室环境下的短距离通信可以使用普通导线或杜邦线。
图1 接线端子DB9接头的接线:国际上通用的定义是2脚为CAN低(CANL),7脚为CAN高(CANH)。
如果出现一个DB9接头包含两路CAN的情况需要查询设备相关手册。
图2 DB9接头高速CAN定义OBD接头的接线:大部分车型是6脚、14脚为CAN高、CAN低,还有部分车型为3脚、11脚分别是CAN高、CAN低。
在接线前请先查阅相关手册或使用万用表测量被测引脚对地的电压值,确认被测引脚是否为CAN信号。
通常CAN信号的静默电压为2.5V。
若电压高于4V 或小于1V则可以确定不是高速CAN信号。
USB-CAN总线适配器 产品说明书说明书版本:V1.0更新日期:2015.01.01目录第一章产品简介 (3)1.1 概述 (3)1.2 性能与技术指标 (3)1.3 典型应用 (3)第二章外形与接口描述 (4)2.1 外观与接口 (4)2.2 信号定义 (4)2.3 出厂配置 (5)第三章调试软件使用说明 (5)第一章产品简介1.1 概述USB-CAN总线适配器是带有USB2.0接口和2路CAN接口的CAN总线适配器。
USB-CAN总线适配器可以被作为一个标准的CAN节点,是CAN总线产品开发、CAN总线设备测试、数据分析的强大工具。
采用该接口适配器,PC可以通过USB接口连接一个标准CAN网络,应用于构建现场总线测试实验室、工业控制、智能楼宇、汽车电子等领域中,进行数据处理、数据采集、数据通讯。
同时,USBCAN接口适配器具有体积小、方便安装等特点,也是便携式系统用户的最佳选择。
接口适配器产品可以利用厂家提供的USB工具软件,直接进行CAN总线的配置,发送和接收,在线调试。
1.2 性能与技术指标●USB与CAN总线的协议转换;●具备2个通道CAN接口;●USB接口支持USB2.0,兼容USB1.1;●支持CAN2.0A和CAN2.0B协议,支持标准帧和扩展帧;●支持双向传输,CAN发送、CAN接收;●支持数据帧,远程帧格式;●CAN控制器波特率在5Kbps-1Mbps之间可选,可以软件配置;●双模式,USB调试模式和CAN中继器模式(两CAN通道波特率可以不一致,上电默认进入中继器模式);●发送结果反馈机制,如果失败可以通过蜂鸣器进行报警提示;●两路供电电路,USB总线直接供电或外部电源(DC5V);●工作温度:-20~85℃;●外壳尺寸:100*74*29mm1.3 典型应用●通过PC或笔记本的USB接口实现对CAN总线网络的发送和接收;●快速CAN网络数据采集、数据分析;●CAN网关,连接两个不同波特率的CAN网络;●工业现场CAN网络数据监控。
使用纬图 USB-CAN适配器采集汽车CAN总线数据1、概述本文档介绍了如何使用纬图Ginkgo USB-CAN适配器来采集汽车CAN总线的数据,从而实现汽车上数字系统的信息采集及诊断功能。
2、汽车CAN总线介绍大家知道当今车辆的电控系统是越来越多,例如电子燃油喷射装置、ABS装置、安全气囊装置、电动门窗、主动悬架等等。
同时遍布于车身的各种传感器实时的监测车辆的状态信息,并将此信息发送至相对应的控制单元内。
车身上的这些控制单元并不是独立工作的,它们作为一个整体,需要信息的共享,那么这就存在一个信息传递的问题。
而因为CAN总线由于具有各节点之间数据通信实时性强、可靠性高、各节点之间可自由通信、结构简单以及开发周期短等优点,已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,同时也成为国际上应用最广泛的现场总线之一。
3、目的和意义用户可通过Ginkgo USB-CAN适配器采集到汽车CAN总线中的标准帧,如果用户了解该汽车CAN总线的上层协议(如ISO15765、J1939等),则可通过Ginkgo USB-CAN适配器读取到的标准帧解析出汽车当前实时的车速、转速和水温等具体数值,便于用户校对汽车仪表盘数值是否准确。
例如在ISO15765协议中规定的汽车传感器数据包括:发动机转速、冷却液温度、车辆速度、电压、进气歧管压力、进气温度、空气流速、节气门位置、氧传感器电压、燃油压力等等。
并且以上这些数据的数值变化都可以通过Ginkgo USB-CAN Extend实时的显示并保存在电脑中。
4、测试实例实例一:系统环境:Win7 64bit软件工具:Ginkgo USB-CAN Extend硬件设备:PC、Ginkgo USB-CAN接口适配器、OBD数据线。
硬件连接:主控(PC)<--> Ginkgo USB-CAN Interface <-OBD数据线-> 汽车OBD接口测试步骤:1、ViewTool官网下载Ginkgo USB-CAN Extend工具软件,下载地址:2、按照上述硬件连接方式连接好PC、USB-CAN 接口适配器以及汽车上的OBD接口3、运行Ginkgo USB-CAN Extend查看汽车上的CAN总线数据启动Ginkgo USB-CAN Extend按照下图方法设置:设备类型:USBCAN2工作模式:Normal波特率:500Kbps启动后Ginkgo USB-CAN Extend会自动接收并显示数据,如图:测试场景截图:实例二:系统环境:Android 6.0软件工具:Ginkgo USB-CAN APP硬件设备:安卓手机、Ginkgo USB-CAN接口适配器、OBD数据线、OTG数据线。
如何使用USBCAN控制伺服电机控制器(CANopen)————————————————————————————————作者:————————————————————————————————日期:如何使用USBCAN控制伺服电机控制器文档版本:2018/3/12一、写作背景现在,有很多工业场合都需要用到伺服电机,因为其精度很高、转速很快、抗过载能力强、运行时平稳、加减速相应时间短,并且发热和噪音不是特别明显。
在一些需要动力源并且对于精度要求高的,如数控机床、印刷设备、包装设备、纺织设备、激光加工设备、机器人、自动化生产线等对工艺精度、加工效率和工作可靠性等要求相对较高的设备,都会用到这种电机。
但是,在实际使用的时候,伺服电机可能需要CANopen变频器来驱动,而CANopen 变频器一般需要PLC等CANopen主站来控制。
最初在通讯的时候,可能会遇到通讯异常,通讯不上的问题,而PLC等CANopen主站显示问题方面不是很直观,就对解决通讯问题造成了不必要的麻烦。
二、解决问题的方法1、使用USBCAM分析仪调试伺服电机驱动器USBCAN分析仪可以用来调试所有的CAN总线设备,非常方便。
对于前面遇到的CANopen伺服电机通讯异常的问题就可以用到USBCAN分析仪来调试,下面我们用广成科技的USBCAN设备来调试伺服电机驱动器。
USBCAN-II Pro附带的Ecantools软件的具有CANopen主站功能,可以作为主站和从站通讯,并且界面可以显示从站反馈的信息,可以清楚的了解到从站的状态,从而发现问题。
2、接线实物接线图如下图1,这里只接了通讯线,电源线没有接,驱动器与伺服电机连接,驱动器的CAN端与USBCAN-II Pro的CAN1相连。
在调试的时候,先给伺服上电,在开启ECANtools 软件调试,波特率选择500k。
图1 实物接线图3、具体的调试和控制(1)打开软件,选择CANopen调试界面,由于我们已经知道了伺服电机驱动器的节点号使1号,所以选择添加节点1,如下图2所示。
如何解析和破解车载CAN协议基于USBCAN-E(2E)-U接口卡的DBC协议解析USBCAN-E(2E)-U是广州致远电子股份有限公司开发的新一代USB转CAN接口卡系列,USBCAN-E-U为单路CAN,USBCAN-2E-U为双路CAN。
这个系列不但提升了通讯性能与电气可靠性,而且增加了丰富的应用功能。
USBCAN-E(2E)-U每个CAN通道都可以独立支持车载CAN-bus应用协议的解析,只要用户在CANtest软件中导入相关的DBC文件,即可实现应用层数据的解析。
可用于车辆CAN 协议解析、车辆测试维修、破解车辆CAN协议等,如图1所示。
图 1 USBCAN-2E-U接口卡操作步骤打开CANtest通用测试软件,选择USBCAN-2E-U接口卡,并且选定总线的波特率,点击确定并启动,启动CAN接口卡。
如图 2所示;图 2 打开CANtest软件初始化点击菜单快捷操作中的DBC解析按钮,进入DBC解析界面,如图 3所示;图 3 打开DBC解析DBC解析界面中,点击加载DBC,选择对应的DBC文件打开,本文以J1939协议为例,选择j1939.dbc打开,解析柴油机、卡车或者公交车等协议,如图 4所示。
图 4 加载DBC文件此时接收数据即可进行DBC解析,用户可以使用分类显示或者刷新显示查看。
此时点击某个报文,下方解析框中将这帧包含的应用数据显示出来,如图 5所示,ID为0x0CF0041A 中第三个字节为0x6C,这个代表着EngSpeed(发动机转速)为6861.50rpm(转/分)。
图 5 DBC协议解析结果小技巧:运用分类显示功能时,软件会将有变化的数据标红,这样对于破解未知协议时,可以帮助用户快速完成变量识别工作。
比如,要想知道方向盘所对应CANID和数据段,即可使用此方法运行,转动方向盘,观察变红的变量,即对应。
应用范围•工业控制测试•汽车电子维护维修•协议破解。
目录1 产品介绍 (3)1.1 产品概述 (3)1.2 产品特性 (3)1.3 接口形式 (3)1.4 产品应用 (3)1.5 操作系统支持 (3)1.6 使用环境 (4)2 技术支持 (4)3 产品功能 (4)3.1概述 (4)3.2参数指标 (4)3.3产品外观 (5)4 设备使用 (5)4.1设备供电 (5)4.2 CAN总线连接 (6)4.3指示灯 (6)5 系统连接 (7)5.1 CAN-BUS连接 (7)5.2 USB总线连接 (8)6 修订历史 (8)附录1 CAN2.0B 协议帧格式 (9)附录2 标准波特率设置 (11)附录3 CAN 报文滤波器设置 (12)附录4 CAN总线通信距离(参考值) (17)1产品介绍1.1 产品概述USBCAN-2I型CAN接口卡集成2路独立CAN接口,通过USB接口实现PC与CAN网络的数据交换。
每一个CAN通道均集成电气隔离保护电路,并且符合CAN2.0A/B规范,支持5Kbps~1Mbps之间的任意波特率。
USBCAN-2I可方便的并且高可靠的将PC扩展成CAN总线的控制节点。
1.2 产品特性¾CAN:适用CAN2.0A/B, 符合 ISO11898规范;¾USB:适用USB2.0,符合 USB1.1协议规范;¾波特率:5Kbps~1Mbps之间任意设定;¾电源:USB供电或外接DC5V供电(≥500mA)。
1.3 接口形式¾USB:USB B型座;¾CAN:3位端子;¾端接电阻:拨码开关。
1.4 产品应用¾CAN总线数据分析;¾CAN通信设备调试;¾CAN网络节点扩展。
1.5 操作系统支持¾Windows98/Me/2000/XP/2003;¾Linux 2.4、Linux 2.6。
1.6 使用环境¾工作温度:-25°C ~ +85°C;¾储存温度:-40°C ~ +85°C。
「案例分享」吉普自由光行车过程中出现CAN线网络故障年限:2016年公里数:32684故障现象:客户反应顺畅路况下,车速40-50km/h左右,出现过3次仪表提示显示“维修变速器,ABS系统,电子转向助力系统‘’而且发动机故障灯亮,发动机声音很大,换挡冲击大,熄火后车辆无法再次起动,要休息十分钟后,才能起动,之后又一切正常。
出现时间不确定,有时20天左右,这次要求对车辆彻底检查。
检测过程:车辆进厂时故障没有再现,使用诊断仪读取故障码,DTC为:U0001-00 CAN C Bus-U0002-00 CAN C Bus Off Performance,U0151 Lost Communication with OccupantRestraint Controller(ORC),U017E stored Lost Communication with Seatbelt Sensor 1U0418 stored Implausible Data Received From Brake System Control Module 1等等。
可能原因:U0001:CAN C总线开路或短路CAN C相关模块CAN C相关星形接插件U0002:CAN 总线电路开路或短路车身控制模块(BCM)电源和接地BCM配置不正确车身控制模块(BCM)U0151-87 :CAN C总线(+)电路对电压端短路CAN C总线(-)电路对地短路乘员约束控制器(ORC)BCM配置不正确ORC电源和接地按照维修六步法,先验证故障现象,连接诊断仪,路试颠簸路,高速,水泥路面,故障均无法验证。
因为从服务顾问哪儿得到的故障描述信息有限,考虑到故障出现时不确定,要验证故障现象有难度。
直接与客户电话沟通了解到车辆出故障时,没有任何征兆,仪表“当“的响一声,仪表显示维修信息,雨刮器转,变速器换挡粗暴,发动机故障灯点亮。
诊断过程:通过下载的车辆扫描报告和冻结画面,事件数据报告。
CAN总线技术详解CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。
最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。
实际应用中,节点数目受网络硬件的电气特性所限制。
CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。
另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。
CAN总线技术原理CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。
CAN与I2C总线的许多细节很类似,但也有一些明显的区别。
当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。
对每个节点来说,无论数据是否是发给自己的,都对其进行接收。
每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。
在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。
当几个站同时竞争总线读取时,这种配置十分重要。
当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。
CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。
每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。
由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。
我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。
当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。
使用普通的USB-CAN设备读取和解析DTC 徐亮摘要:利用VBA编程实现数组转换,快速生成C#语言所需使用的字符常数组、利用visual 2013开发环境, C#语言,调用USB-CAN的二次开发函数库,实现USB-CAN设备与下位机(嵌入式产品)的通信,利用C#的List<>是泛型集合实现排序及查找。
最终实现DTC的读取与解析。
关键词:VBA数组转换、DTC读取与解析、UDS诊断随着汽车电子的发展,CAN总线技术几乎成了所有主机厂的标配,而CAN总线的开发,需要借助USB-CAN工具及软件的支持,这类工具以德国Vector公司开发的CANoe最为常用,并为大多数主机厂所采用,但是其高昂的价格决定了他并非能成为工程师人手必备的工具。
与此同时,市场上也不断涌现了大量的价格低廉的USB-CAN的工具,并且厂家提供给了丰富的二次开发函数库,但软件开发不足,大多都只能实现简单的通信功能,并不具备CANoe强大的数据分析及处理功能。
另外在项目开发阶段,由于排查问题的需求,工程师需要经常用到DTC(故障)的诊断以快速判断问题来源。
下面将分步骤介绍其实现方法(正文)1 使用VBA将Excel格式的诊断调查表,转换为C语言格式的一维数组诊断调查表的内容,一般会以excel表格格式编写。
如下图表1,由诊断调查表生成用于查询的字符型数组;可以应用excel的开发工具Visual Basic,编写一个宏,快速生成C#编程语言使用的一维字符型数组;方法如下:数组转换示例:DtcData[i / 4] = DtcBuffer + Datatempory[i + 1].ToString("X2") + Datatempory[i +2].ToString("X2");故障码状态转换示例:if (Datatempory[i + 3] == 0x09)DtcState[i / 4] = "CurrentandOldDTC";else if (Datatempory[i + 3] == 0x01)DtcState[i / 4] = "CurrentDTC";else if (Datatempory[i + 3] == 0x08)DtcState[i / 4] = "OldDTC";elseDtcState[i / 4] = "Error";4、解析与显示readonly string[] DtcNum //定义常数数组,拷贝步骤1中生成的数组{故障码1,故障码2,故障码3,…故障码n}readonly string[] DtcExplain ={故障描述1,故障描述2,故障描述3,…故障描述n}List<string> DTCList = DtcNum.ToList(); //使用list方法,排序Try{ //查找并显示对应故障码序号的故障码数组值及状态值DtcIndex = (byte)DTCList.IndexOf(DtcData[i]); //获取故障码对应位置序号listBox1.Items.Add(DtcExplain[DtcIndex] + "" + DtcState[i]); //将结果显示在列表框中listBox1.SelectedIndex = listBox1.Items.Count - 1;}Catch //如果接收到未定义的故障代码,提示用户未查到对应的故障码{listBox1.Items.Add("未查到" + DtcData[i] + "对应的DTC");listBox1.SelectedIndex = listBox1.Items.Count - 1;}5、界面设计界面由两个button和一个Listbox控件组成,点击“读DTC”button时,触发发送报文的事件,“清屏”button,用于清理屏幕显示结果。
USBCAN
近日,有客户联系我们,说他之前一直是使用我们公司的USBCAN分析仪读取汽车各种模块的数据,但最近他也遇到了一个问题,就是他有一个汽车的方向盘,这个方向盘以前是用在一款比较老的车型上的,但是现在他想把这个方向盘用到一款新车上面。
经过一系列测试后他发现这个两个车型的方向盘在工作时的数据都差不多,只是某些ID的数据的某几位会发生变化,询问我们有没有办法使他通用。
这个客户的需求是将一条数据的某几个字节的数据修改成其他的数据,如果仅仅是简单修改的话,那幺他直接使用手中的双通道USBCAN-II Pro分析仪即可实现。
USBCAN-II Pro支持脱机模式,可以在不使用电脑情况下,直接将CAN1和CAN2两个通道的数据互相转发,在转发的同时还可以对某些数据执行修改,基本可以满足他的需求。
在与顾工沟通过后,我们知道了顾工要修改的数据位置,具体是将ID为123456F4的数据的第三、四字节换成0E 6B,这种基本的数据修改是完全可以使用USBCAN-II Pro分析仪实现的,具体的脱机文件写法如下图所示。
我为大家解释一下这个文件的功能,这个脱机文件功能是:上电等待
10ms,初始化为CAN1收到数据后由CAN2转发出去,触发ID 123456F4。
USB协议是比较复杂的协议,初学者必定会遇到不少问题,由于本人学习过程中走了不少弯路,所以写了这篇文章,希望对初学者有所帮助。
下面是《USB 是怎么传输数据的,怎么识别设备的》(附件内有word版的),先看看这个文章,知道USB是怎么传输数据了,然后在仔细的研究协议,这样会少走很多弯路。
先看看它的全貌,知道它是什么了,然后再去研究它的内部(协议),这样才会很快掌握。
我的文章里有什么不清楚的地方请随时找我讨论。
文章里有我得QQ。
后面附件是一个软件USBAnalyser107,和一个U盘的列举过程《标准U 盘》,先把软件安装了,用这个软件把文件《标准U盘》打开,对照我的文档的内容看会更容易明白。
USB是怎么传输数据的,怎么识别设备的Jude(原名Dodo)原创于2008.6.15读这篇文章之前要对USB有一定的了解,知道什么是主机,设备,USB是一个主从结构的接口。
先说说USB主机是怎么识别一个U盘的吧,当你把一个U盘插到电脑上的时候,电脑的USB接口上会发生一些变化,这里先得说说USB数据线是怎样的,它里面一般有用的有四根线,ground,VCC,DM(D-),DP(D ),而DM,DP是用来传输数据的,当U盘(以后简称U)插到电脑上的时候,U会把DP(D )拉高,使DP,DM保持一个J状态(DP为高DM为低,有关总线的状态又有很多,想了解的自己去研究),电脑主板的USB主机芯片检测到这个J状态(DP(D )拉高),(大概是这样,愿意详细了解的要仔细看协议),知道有设备连接上了(这里提到的主机和设备是指连接在USB线两端的USB接口芯片),电脑的驱动会对连接上的这个设备进行识别,我们把它叫做列举,这个过程是为了让电脑知道连接上的这个设备是什么东西(是U盘,还是USB鼠标,还是USB键盘,或是其他的什么)。
以下是一个U盘的全部列举过程,用图来说明,(后面有两个附件,一个USB分析仪软件,一个是U盘的的全部列举过程,用USB分析仪软件打开)在这之前先说说USB数据是怎么在DM,DP上传输的吧,当主机检测到有设备连接上,驱动先会对这个设备作些必备的事情,识别他的速度(这个过程又有很多协议,不多说了,要了解的仔细研究协议),然后就是复位等等,之后就开始在总线(DM,DP)上发送1ms间隔的SOF包(全速)或125us间隔的SOF包(高速),低速(我也不太清楚,呵呵),什么是SOF包呢,SOF 就是start of frame (帧开始),其实就是帧开始的一个标记,其中有帧号,什么是帧呢,帧就是1ms 的间隔(全速)或125us的间隔(高速),所有的数据都是在帧内传输的。
聊聊usbcanOBD接口是如何实现汽车诊断的
OBD是一个缩写的专有名词,全称应该是OnBoardDiagnostics,也就是车载的自动诊断系统。
这套系统在汽车上可以实时检测发动机等其他模块的运行情况。
如果发现异常,就可以将异常具体诊断出来,然后存储到系统的存储器内。
收集到的信息对车辆的维修保养起到非常大的作用,维修人员就可以根据得到的数据对出问题的位置快速的定位,这样就大大的节省了修理的时间。
很早以前,因为生产厂商的OBD系统各不相同,互不兼容,所以美国汽车工程师协会(SAE)在1988年通过协商后制定了OBD-II标准。
OBD-II新增了汽车尾气排放检测系统,现在我们看自己的汽车看到的只能是一个小小的OBD接口,但是在这个小小的接口的背后,却是整个汽车控制中心。
现在的汽车大部分使用的是CAN-BUS,CAN-BUS
同样基于ISO协议,这个协议让汽车的检测得到了大大的简化,一台检测仪可以检测多台车,也为车主节约了成本。
欢迎大家找我讨论。
扒一扒在CAN总线上怎么获取所需数据——是不是想到了OBD盒子随着时代的前行,汽车已经步入千家万户,看外形、选配置已经是人们挑选车辆的重要指标。
车辆上丰富的电子配置,是不是都挑的花眼了。
在模拟电路中,电信号都是要经过电线来传递的,功能越复杂,其所需要的电线数量就会越多。
但是我们在拆解车辆后,发现了一个有趣的问题,电线的数量没有我们想象的那么多,是不是很不解。
其实,车辆应用了一项总线技术——CAN总线。
市面上的OBD盒子都是在这个技术上发展起来的。
汽车检测CAN总线说的简单点就是两根电线,有的人会疑惑两根线就能把车辆想要传递的数据传递出去?那我们来打个简单的比方,大家都要用到的——手机数据线,数据线拆过的朋友会发现里面其实也只有4根电线,只能充电的就只有2根电线。
用排除法来排除充电的两根电源线,剩下来的两根就是数据传输线,传图片、视频、甚至刷机都是靠这两根电线来传递数据的。
现在,我们好理解了,汽车上的这两根线也是可以传递车辆需要的各种数据,他们有专用的名称——CAN_H和CAN_L。
从字面上解释,就是一根电线高电平,另一根就是低电平,这种差分信号有个好处就是数据传输可靠,两根电线的信号不匹配,说明数据有问题,那就丢掉。
CAN总线技术相当的复杂,想要研究透那是需要下苦功夫的,这里我只讲怎么来获取想要的数据。
1.CAN总线波特率:车辆CAN总线通讯时,会用到一定的数据发送速度,我们所用的设备必须和它保持一致才可以读取数据。
过快或过慢,都不能准确的获取每bit的数据。
常用的波特率有500kbps和1000kbps,我们可以进行尝试来识别正确的波特率。
波特率不正确或接线有问题时,有的车辆会报错的,各大重要部件一起来,比如发动机故障、变速箱故障、ESP故障等等。
不用紧张,将我们设备上的CAN总线拔掉,关闭车辆ACC电源,心情愉快的哼首小曲后,再打开ACC电源,是不是故障全没有了。
2.获取协议相关数据:ISO15765协议规范了一些常用的数据,比如速度、转速、发动机负荷、冷却液温度、电瓶电压等100多个常用的数据。
使用普通的USB-CAN设备读取和解析DTC 徐亮
发表时间:2018-05-22T16:28:13.320Z 来源:《基层建设》2018年第7期作者:徐亮
[导读] 摘要:利用VBA编程实现数组转换,快速生成C#语言所需使用的字符常数组、利用visual 2013开发环境, C#语言,调用USB-CAN 的二次开发函数库,实现USB-CAN设备与下位机(嵌入式产品)的通信,利用C#的List<>是泛型集合实现排序及查找。
上海交通大学上海 200030
摘要:利用VBA编程实现数组转换,快速生成C#语言所需使用的字符常数组、利用visual 2013开发环境, C#语言,调用USB-CAN的二次开发函数库,实现USB-CAN设备与下位机(嵌入式产品)的通信,利用C#的List<>是泛型集合实现排序及查找。
最终实现DTC的读取与解析。
关键词:VBA数组转换、DTC读取与解析、UDS诊断
随着汽车电子的发展,CAN总线技术几乎成了所有主机厂的标配,而CAN总线的开发,需要借助USB-CAN工具及软件的支持,这类工具以德国Vector公司开发的CANoe最为常用,并为大多数主机厂所采用,但是其高昂的价格决定了他并非能成为工程师人手必备的工具。
与此同时,市场上也不断涌现了大量的价格低廉的USB-CAN的工具,并且厂家提供给了丰富的二次开发函数库,但软件开发不足,大多都只能实现简单的通信功能,并不具备CANoe强大的数据分析及处理功能。
另外在项目开发阶段,由于排查问题的需求,工程师需要经常用到DTC(故障)的诊断以快速判断问题来源。
下面将分步骤介绍其实现方法(正文)
1 使用VBA将Excel格式的诊断调查表,转换为C语言格式的一维数组
诊断调查表的内容,一般会以excel表格格式编写。
如下图表1,由诊断调查表生成用于查询的字符型数组;可以应用excel的开发工具Visual Basic,编写一个宏,快速生成C#编程语言使用的一维字符型数组;方法如下:
数组转换示例: DtcData[i / 4] = DtcBuffer + Datatempory[i + 1].ToString("X2") + Datatempory[i + 2].ToString("X2");
故障码状态转换示例: if (Datatempory[i + 3] == 0x09) DtcState[i / 4] = "CurrentandOldDTC"; else if (Datatempory[i + 3] == 0x01) DtcState[i / 4] = "CurrentDTC"; else if (Datatempory[i + 3] == 0x08) DtcState[i / 4] = "OldDTC"; else DtcState[i / 4] = "Error";
4、解析与显示 readonly string[] DtcNum //定义常数数组,拷贝步骤1中生成的数组 {
故障码1, 故障码2, 故障码3, …
故障码n } readonly string[] DtcExplain = {
故障描述1,故障描述2,故障描述3, …
故障描述n } List<string> DTCList = DtcNum.ToList(); //使用list方法,排序 Try { //查找并显示对应故障码序号的故障码数组值及状态值 DtcIndex = (byte)DTCList.IndexOf(DtcData[i]); //获取故障码对应位置序号 listBox1.Items.Add(DtcExplain[DtcIndex] + "" + DtcState[i]); //将结果显示在列表框中 listBox1.SelectedIndex = listBox1.Items.Count - 1; } Catch //如果接收到未定义的故障代码,提示用户未查到对应的故障码 { listBox1.Items.Add("未查到" + DtcData[i] + "对应的DTC"); listBox1.SelectedIndex = listBox1.Items.Count - 1;
}
5、界面设计
界面由两个button和一个Listbox控件组成,点击“读DTC”button时,触发发送报文的事件,“清屏”button,用于清理屏幕显示结果。
Listbox用于显示解析后的故障描述。
这个可由编程者自由灵活设计。
参考文献
[1]创芯科技. 接口函数库(二次开发库)使用说明书 V2.02. 2017。