多语言展示
当前在线:1132今日阅读:75今日分享:44

无法连接CAN总线设备

大家在CAN总线应用时经常会碰到无法连接CAN总线设备的情况,这个时候我们要耐心逐步排除问题原因,最后解决通信问题。
工具/原料
1

Windows系统电脑(台式、笔记本均可)

2

USBCAN分析仪一台

3

目标CAN总线设备

方法/步骤
1

首先您至少需要有一个USBCAN分析仪,淘宝、京东上有很多。没有USBCAN分析仪的话没有办法抓取目标设备的波特率、分析总线错误。USBCAN分析仪连上CAN总线之后还可以收发CAN原始报文、保存回发,是CAN总线领域的万用表。

2

步入正题了,CAN通信可简单的拆分成5个要素。通信波特率、接线情况、CAN网络电阻值、CAN设备A、CAN设备B。在本经验中,CAN设备A代表USBCAN分析仪,CAN设备B代表目标设备,如:汽车动力总线、伺服电机控制器、消防主机CAN通讯板、带CAN接口的开发板等等。

3

首先要考虑接线情况,现有最常见的两种接线方式是凤凰端子、DB9、OBD三种接线方式。凤凰端子要注意的是:拧端子螺丝的时候要顺时针拧紧,不要出现图中的错误,把引线卡在下面了。DB9接头的接线:2脚是CAN低(CANL),7脚是CAN高(CANH)。OBD接头的接线:大部分车是6脚、14脚分别是CAN高、CAN低,还有部分车是3脚、11脚分别是CAN高、CAN低。如果线比较乱,请用万用表测量下设备A和设备B的两条CAN线是否处于联通状态。本段要强调的是,线不要接错或者接反。

4

第二点要考虑的是终端电阻的问题。CAN总线要求最远的两个终端应各有一个120欧姆的电阻,以抵消电信号的反射。通常USBCAN分析仪的侧面会有拨码开关,方便使用者选择是否接入终端电阻,拨到ON的方向是接通。实验中发现绝大多数情况下,总线上接入一个120欧姆电阻即可实现1米左右的CAN通信。但在此还是要说明下,CAN总线上L和H之间的阻值在64欧姆左右才是稳定的状态,也就是说最好要在两个终端上各挂一个120欧姆电阻。本段要强调的是,要想实现CAN通信,至少要在CANL和CANH之间挂一个120欧姆电阻。

5

第三点也是最常见的是波特率问题。波特率就和收音机的FM频率一样,波特率如果不一致的话肯定是无法通讯的。这时就要使用USBCAN分析仪来进行波特率的识别了。所以大家购买USBCAN分析仪一定要注意这款分析仪是否具有CAN波特率识别功能。当然很多设备的波特率都是固定的,比如以下这些设备:汽油车:500K,250K,125K,100K柴油车:250K伺服电机控制器:250K,125KEPEC控制器:250K消防主机通信:5K,10K,13.3K

6

第四点就是检测手边的USBCAN分析仪是否工作正常了。大多数USBCAN分析仪具有自发自收的功能,即需要您在不接CAN线的前提下,选择自发自收模式,点击发送。如果能立刻收到一帧,就说明USBCAN分析仪没有问题。如果发现USBCAN分析仪在不接CAN线,且自发自收模式下不正常,请联系卖家维修。这种情况多半是有芯片烧坏了。

7

第五点就是目标CAN设备是否有问题了。粗暴的方法是测量电压值,使用万用表测量目标CAN设备CANH和CANL对地的电压值。如果不在2.5V±1V这个区间内的话,那一定是有问题的。要么压根不是CAN总线,要么设备坏掉了。正常的CAN总线设备,如果启动后不主动发出数据的话,CANH和CANL对地的电压应该在2.5V±0.2V左右。

8

Tip1:有一类特殊的目标CAN设备叫调试中的开发板。很多朋友说我的开发板正常通信没有任何问题,因为我自己的两块板子彼此可以通信。Oh,my god. 这理由根本不成立。因为开发板的波特率很有可能因为程序的问题造成偏差。举个例子,你希望设置的开发板波特率是250k,结果程序运行出来却是230K,自然不能和其他标准的CAN设备通信了。如果您用STM32F10X来开发CAN设备,可以用下这个波特率小工具,算出合适的波特率。http://pan.baidu.com/s/1mizadr6

9

Tip2:汽车CAN总线的连接也是一个大问题。第一,并不是所有的车都有CAN总线,09年之后国家强制要求汽油车安装OBDII接口,也就是说09年之前的车是不一定有CAN总线的。想解码的同志一定要事先测量下接口电压值。第二,并不是所有的车OBD接口的6脚和14脚都有数据。部分国产车的CAN总线数据在3脚和11脚。

10

Tip3:CANopen设备的连接。CANopen可能是目前最火的工业CAN总线高层协议了。CANopen的设备主要有轨道交通相关设备、工程机械、电梯控制器、医疗设备、吊车起重设备等。首先,很多CANopen的从站设备一上电只发一帧数据,然后就静默了。无论用什么办法也无法让它再发送数据。原因在于它是满足CANopen协议的设备,除非收到主站发出的数据,否则它是不会启动的。此时您需要通过USBCAN分析仪发送一帧启动命令打开它,帧ID为0x000,帧数据为01 00,标准数据帧。其次,很多使用软件来控制的CANopen的设备,其CAN通道并非一直开启的。举个例子,点击启动后,其CAN通道打开5秒钟并发出几帧数据,如果此时没有接收到其他CANopen设备发过来的数据,那么它的CAN通道将会关闭。

11

Tip4:特殊类型的CAN总线。有几类特殊的CAN总线,如果混淆的话一样是无法进行通信的。这里指的特殊主要指收发器的不同。我们平常用的CAN总线是高速CAN,代表的收发器有TJA1050,PCA82C251,MCP2551等等,这类CAN总线收发器占比90%以上。应用这类CAN收发器时应该注意,部分收发器在10K波特率以下无法通信,另一部分需要在引脚上做一下改动,才能正常通信。第二种是容错CAN,波形和高速CAN不一致,代表的收发器是TJA1054。一般是德系的车上有这类通信总线。如果需要通信,要么购买带容错CAN接口的USBCAN,要么购买容错CAN转接板。第三种是单线CAN,只有CANH,没有CANL。部分美系车和摩托车上有这类通信总线。需要通信可购买单线CAN转接板。

注意事项
1

CAN总线标准电压为2.5V±1V,请不要将任何电源接入CAN总线接口

2

CAN总线标准线路为双绞线或屏蔽双绞线,请不要使用平行线远距离传输CAN总线数据

推荐信息