基于 CAN 总线的 CANopen 协议讲座(一)
CAN 总线简介
AN01010101
Date: 2009/11/14
V1.00
产品应用笔记
类别
关键词
摘 要
内容
CANopen CAN 总线 CAN-bus 现场总线 总线协议
CANopen 协议以其成熟的结构、抗干扰能力强等优势越来越
多的应用到各种工业活动中,也成为各种行业的标准,已经
成为未来现场总线发展的一种趋势。
Application
Note
广州致远电子有限公司
广州致远电子有限公司
基于 CAN 总线的 CANopen 协议
CAN 总线介绍
修订历史
版本
V1.00
日期
2009/11/14
原因
创建文档
产品应用笔记 ©2008 Guangzhou ZHIYUAN Electronics CO., LTD.
i
广州致远电子有限公司
基于 CAN 总线的 CANopen 协议
CAN 总线介绍
销售与服务网络(一)
广州周立功单片机发展有限公司
地址:广州市天河北路 689 号光大银行大厦 12 楼 F4
邮编:510630
电话:(020)38730916 38730917 38730972 38730976 38730977
传真:(020)38730925
网址:www.zlgmcu.com
广州专卖店
地址:广州市天河区新赛格电子城 203-204 室
电话:(020)87578634 87569917
传真:(020)87578842
北京周立功
地址:北京市海淀区知春路 113 号银网中心 A 座
1207-1208 室 (中发电子市场斜对面)
电话:(010)62536178 62536179 82628073
传真:(010)82614433
杭州周立功
地址:杭州市天目山路 217 号江南电子大厦 502 室
电话:(0571) 28139611 28139612 28139613
28139615 28139616 28139618
传真:(0571) 28139621
深圳周立功
地址:深圳市深南中路 2070 号电子科技大厦 C 座 4
楼 D 室
电话:(0755)83781788(5 线)
传真:(0755)83793285
上海周立功
地址:上海市北京东路 668 号科技京城东座 7E 室
电话:(021)53083452 53083453 53083496
传真:(021)53083491
南京周立功
地址:南京市珠江路 280 号珠江大厦 2006 室
电话:(025)83613221 83613271 83603500
传真:(025)83613271
重庆周立功
地址:重庆市石桥铺科园一路二号大西洋国际大厦
(赛格电子市场)1611 室
电话:(023)68796438 68796439
传真:(023)68796439
成都周立功
地址:成都市一环路南二段 1 号数码同人港 401 室
(磨子桥立交西北角)
电话:(028)85439836 85437446
传真:(028)85437896
武汉周立功
地址:武汉市洪山区广埠屯珞瑜路 158 号 12128 室
(华中电脑数码市场)
电话:(027)87168497 87168297 87168397
传真:(027)87163755
西安办事处
地址:西安市长安北路 54 号太平洋大厦 1201 室
电话:(029)87881296 83063000 87881295
传真:(029)87880865
产品应用笔记 ©2008 Guangzhou ZHIYUAN Electronics CO., LTD.
ii
广州致远电子有限公司
基于 CAN 总线的 CANopen 协议
CAN 总线介绍
销售与服务网络(二)
(楼宇自动化事业部)
广州致远电子有限公司
地址:广州市天河区车陂路黄洲工业区 3 栋 2 楼
邮编:510660
传真:(020)38601859
网址:www.embedtools.com (嵌入式系统事业部)
www.embedcontrol.com (工控网络事业部)
www.ecardsys.com
技术支持:
CAN-bus:
电话:(020)22644381 22644382 22644253
邮箱:can.support@embedcontrol.com
MiniARM:
电话:(020)28872684 28267813
邮箱:miniarm.support@embedtools.com
无线通讯:
电话:(020) 22644386
邮箱:wireless@embedcontrol.com
编程器:
电话:(020)22644371
邮箱:programmer@embedtools.com
ARM 嵌入式系统:
电话:(020)28872347 28872377 22644383 22644384
邮箱:arm.support@zlgmcu.com
iCAN 及数据采集:
电话:(020)28872344 22644373
邮箱:ican@embedcontrol.com
以太网:
电话:(020)22644380 22644385
邮箱:ethernet.support@embedcontrol.com
串行通讯:
电话:(020)28267800 22644385
邮箱:serial@embedcontrol.com
分析仪器:
电话:(020)22644375 28872624 28872345
邮箱:tools@embedtools.com
楼宇自动化:
电话:(020)22644376 22644389 28267806
邮箱:mjs.support@ecardsys.com
mifare.support@zlgmcu.com
销售:
电话:(020)22644249 22644399 22644372 22644261 28872524
28872342 28872349 28872569 28872573 38601786
维修:
电话:(020)22644245
产品应用笔记 ©2008 Guangzhou ZHIYUAN Electronics CO., LTD.
iii
广州致远电子有限公司
基于 CAN 总线的 CANopen 协议
CAN 总线介绍
目 录
1. 引言...........................................................................................................................1
2. CAN总线特点 ...........................................................................................................1
3. CAN控制器介绍 .......................................................................................................2
4. CAN总线网络结构 ...................................................................................................3
5. CAN总线应用层协议 ...............................................................................................4
6. 结语...........................................................................................................................4
产品应用笔记 ©2008 Guangzhou ZHIYUAN Electronics CO., LTD.
i
广州致远电子有限公司
基于 CAN 总线的 CANopen 协议
CAN 总线介绍
1. 引言
随着汽车工业的发展,20 世纪 80 年代中期,率先由 Bosch 公司研发出新一代的汽车总
线即控制器局域网(Controller Area Network,简称:CAN 总线或 CAN-bus),CAN 总线具
有布线简单、典型的总线型结构、可最大限度的节约布线与维护成本、稳定可靠、实时、抗
干扰能力强、传输距离远等特点,这些都决定了 CAN 总线必定是一种成功的总线。一经推
出不仅在汽车行业得到广泛的推广与应用,在诸如航天、电力、石化、冶金、纺织、造纸等
领域也得到广泛应用。在自动化仪表、工业生产现场、数控机床等系统中也越来越多的使用
了 CAN 总线,CAN 总线在未来的发展中依然充满活力,有着巨大的发展空间。
由于 CAN 总线本身只定义 ISO/OSI 模型中的第一层(物理层)和第二层(数据链路层),
通常情况下 CAN 总线网络都是独立的网络,所以没有网络层。在实际使用中,用户还需要
自己定义应用层的协议,因此在 CAN 总线的发展过程中出现了各种版本的 CAN 应用层协
议,现阶段最流行的 CAN 应用层协议主要有 CANopen、DeviceNet 和 J1939 等协议。
本系列文章主要介绍 CAN 总线、基于 CAN 总线的应用层协议—CANopen,以及
CANopen 设备的应用及组网方式。本文主要介绍 CAN 总线相关的概念及网络结构。
2. CAN总线特点
CAN总线采用差分信号传输,通常情况下只需要两根信号线(CAN-H和CAN-L)就可
以进行正常的通信。在干扰比较强的场合,还需要用到屏蔽地即CAN-G(主要功能是屏蔽
干扰信号),CAN协议推荐用户使用屏蔽双绞线作为CAN总线的传输线。在隐性状态下,
CAN-H与CAN-L的输入差分电压为 0V(最大不超过 0.5V),共模输入电压为 2.5V。在显
性状态下,CAN-H与CAN-L的输入差分电压为 2V(最小不小于 0.9V),如下图 1所示。
U
压
电
线
总
VCAN-L
VCAN-H
Vdiff
平均
电压
隐性位
显性位
隐性位
时间t
图 1 CAN 总线位电平特点
其物理传输层详细和高效的定义,使得 CAN 总线具有其它总线无法达到的优势,注定
其在工业现场总线中占有不可动摇的地位,CAN 总线通信主要具有如下所示的优势和特点。
CAN 总线上任意节点均可在任意时刻主动的向其它节点发起通信,节点没有主从
之分,但在同一时刻优先级高的节点能获得总线的使用权,在高优先级的节点释放
总线后,任意节点都可使用总线;
CAN 总线传输波特率为 5Kbps~1Mbps,在 5Kbps 的通信波特率下最远传输距离可
以达到 10Km,即使在 1Mbps 的波特率下也能传输 40m 的距离。在 1Mbps 波特率
下节点发送一帧数据最多需要 134μs;
CAN 总线采用载波监听多路访问、逐位仲裁的非破坏性总线仲裁技术。在节点需
要发送信息时,节点先监听总线是否空闲,只有节点监听到总线空闲时才能够发送
产品应用笔记 ©2008 Guangzhou ZHIYUAN Electronics CO., LTD.
1
广州致远电子有限公司
基于 CAN 总线的 CANopen 协议
CAN 总线介绍
数据,即载波监听多路访问方式。在总线出现两个以上的节点同时发送数据时,
CAN 协议规定,按位进行仲裁,按照显性位优先级大于隐性位优先级的规则进行
仲裁,最后高优先级的节点数据毫无破坏的被发送,其它节点停止发送数据(即逐
位仲裁无破坏的传输技术)。这样能大大的提高总线的使用效率及实时性;
CAN 总线所挂接的节点数量主要取决于 CAN 总线收发器或驱动器,目前的驱动器
一般都可以使同一网络容量达到 110 个节点。CAN 报文分为两个标准即 CAN2.0A
标准帧和 CAN2.0B 扩展帧,两个标准最大的区别在于 CAN2.0A 只有 11 位标识符,
CAN2.0B 具有 29 位标识符;
CAN 总线定义使用了硬件报文滤波,可实现点对点及点对多点的通信方式,不需
要软件来控制。数据采用短帧发送方式,每帧数据不超过 8 字节,抗干扰能力强,
每帧接收的数据都进行 CRC 校验,使得数据出错机率极大限度的降低。CAN 节点
在错误严重的情况下具有自动关闭的功能,避免了对总线上其它节点的干扰;
CAN 总线通信介质可采用双绞线、同轴电缆或光纤,选择极为灵活。可大大节约
组网成本。
3. CAN控制器介绍
随着 CAN 总线不断的发展壮大,符合 CAN2.0A 和 CAN2.0B 协议的独立芯片越来越多。
如 NXP 公司推出的 SJA1000 及 SJA1000F,可以直接与普通单片机组合,使该单片机具有
CAN 通信的能力。随着 CAN 需求的日益增大,芯片厂商也把 CAN 控制器直接集成到芯片
内部,例如 NXP 公司的 LPC2119、LPC2294、LPC2378 等。以下主要以 LPC2378 的集成
CAN 控制器为例,对 CAN 控制器作一个介绍。
LPC2378 CAN控制器结构如图 2所示。该控制器是一个带有发送和接收缓冲器的串行
接口,但它并不含有验收过滤器。验收过滤器是一个独立的模块,能够对所有CAN通道进
行CAN标识符过滤。
APB 总线
接口管理逻辑
CAN内核模块
错误管理逻辑
TX
RX
CAN
收发器
VIC
发送缓冲器 1、2
和3
通用状态寄存器
位时序逻辑
接收滤波器
接收缓冲器 1和2
位流处理器
图 2 LPC2378 CAN 控制器结构
LPC2378 CAN 控制器工作流程主要分为发送过程和接收过程。
发送过程
CAN控制器是完全受处理器控制,CPU通过内部总线向CAN控制器的发送寄存器里填
写需要发的数据,然后启动CAN控制器的发送使能,发送的数据分别经过位流管理器(变
成在总线上发送的二进制码)、错误管理逻辑(负责检测总线状态及发送是否出现错误)及
产品应用笔记 ©2008 Guangzhou ZHIYUAN Electronics CO., LTD.
2
广州致远电子有限公司
基于 CAN 总线的 CANopen 协议
CAN 总线介绍
位时序逻辑(管理数据在总线上的发送时序)、CAN收发器(负责把位流数据转换成CAN
总线够传输的差分电平),这样就完成了一帧CAN数据的发送,如图 3所示。
ARM7
处理器
内部总线
CAN中断
向量和
CAN通用
状态寄
存器
内部总线
发送
缓冲
器
位流
管理
器
错误管理
逻辑及位
时序逻辑
TX
RX
CAN
收发
器
CAN内核模块
CAN控制器
图 3 发送过程
s
u
b
-
N
A
C
接收过程
CAN数据的接收与CAN数据的发送是一个相反的过程,如图 4所示。当CAN收发器检
测到CAN总线上有数据时,CAN收发器把CAN总线上的差分信号转换成位流数据,经过错
误管理器及位时序逻辑单元对位数据流和时序进行检查,再经过位流管理器把位流数据转换
成字节数据并存放到接收缓冲器中,当一帧数据接收完了之后则由接收缓冲器产生数据接收
中断(通知CPU已经接收到一帧新数据),并将产生的各种状态通过改变状态寄存器的值来
表示。
内部总线
ARM7
处理器
CAN中断
向量和
CAN通用
状态寄
存器
内部总线
接送
缓冲
器
位流
管理
器
错误管理
逻辑及位
时序逻辑
TX
RX
CAN
收发
器
CAN内核模块
CAN验收过
滤器
CAN控制器
图 4 接收送过程
s
u
b
-
N
A
C
以上主要介绍 LPC2378 CAN 工作流程,CAN2.0A/B 标准协议在 CAN 控制器中都得以
实现,用户只需要操作相关的 CAN 寄存器就可以控制 CAN 控制器动作(控制器的具体操
作请参考 LPC2378 数据手册),因此可以大大提高 CAN 节点的开发时间,提高工作效率。
4. CAN总线网络结构
作为一个总线型网络,其结构如图 5所示,其组网与维护相当方便。CAN总线具有在
线增减设备,即总线在不断电的情况下也可以向网络中增加或减少节点。一条总线最多可以
容纳 110 个节点,通信波特率为 5Kbps~1Mbps,在通信的过程中要求每个节点的波特率保
持一致(误差不能超过 5%),否则会引起总线错误,从而导致节点的关闭,出现通信异常。
节点1
节点2
节点3
CAN总线
节点4
节点5
节点6
节点7
产品应用笔记 ©2008 Guangzhou ZHIYUAN Electronics CO., LTD.
3