logo资料库

CAN&CANopen学习笔记.pdf

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
PART1——CAN
1 CAN基础知识
1.1 CAN收发器
1.2 CAN总线终端电阻
1.3 CAN报文
1.4 数据链路层
PART2——CANopen
1 CANopen基础知识
1.1 SDO
1.2 PDO
1.3 NMT
1.4 节点保护
1.5 心跳保护
1.6 紧急报文
PART1——CAN 1 CAN 基础知识 CAN 总线是一种通用的串行通信协议,包含 OSI 网络模型中的物理层和数据链路层,全 部通过硬件来实现。 CAN 总线不分主从,每个节点只要需要,都可作为主站,向网络上其他节点发送信息。 物理层主要是通过 CAN 收发器来实现。 1.1 CAN 收发器 CAN 收发器安装在 CAN 控制器内部,负责逻辑信号和电信号的转换,也即信息的收发。 将逻辑信号转为电信号,并将其送入传输线;或者,将传输线的电信号转为逻辑信号。 传输线跟电线一样,分一高一低,即 CANH 和 CANL。 TIPS:电信号,指随着时间而变化的电压或电流 CAN 收发器如图 1.1 所示。由一个电路进行控制,也意味着控制单元的某个时间段只能 进行一个操作,收或者发。 VDD 图 1.1 收发器原理图
开关闭合输出低电平,用逻辑“0”来表示,即显性电平; 开关断开输出高电平,用逻辑“1”来表示,即隐性电平。 当总线上连接有多个节点时,只要其中 1 个节点输出低电平,则总线激活,总线电平为低 电平;总线上所有节点都输出高电平时,总线电平才为高电平,此时总线未激活。原理如图 1.2 所示。 VDD VDD VDD 图 1.2 多节点收发器原理图 1.2 CAN 总线终端电阻 CAN 网络中,网络的源端(起始节点)和末端需各安装一个终端电阻。注:上图所示电阻 并非终端电阻。有两种接法,一般采用左图接法,如图 1.3 所示,左边高速,右边低速。 主要作用是:  提高总线抗干扰能力  提高信号质量。 通过终端电阻来消除在通信电缆中的信号反射,在通信过程中,有两种原因导致信号反射: 阻抗不连续和阻抗不匹配。阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有, 信号在这个地方就会引起反射。数据收发器与传输电缆之间的阻抗不匹配,这种原因引起的反 射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱,为了提高网络节点的拓扑能力, CAN 总线两端需要接有 120Ω的抑制反射的终端电阻。
图 1.3 两种终端电阻接线方式 1.3 CAN 报文 CAN 总线的报文有 5 种类型,数据帧、远程帧、错误帧、过载帧和帧间隔。只介绍数据 帧和远程帧。 1) 数据帧 有两种格式,即标准帧和扩展帧。帧结构如图 1.4 所示。以标准帧为例,详细介绍如下: 帧起始 仲裁段 控制段 数据段 CRC 段 ACK 段 帧结束 图 1.4 帧结构图 帧起始:由单个显性位“0”组成,即总线激活。 仲裁段:有 CANID 和 RTR 位组成。对于标准帧, CANID 为 11 位(扩展帧 29 位),通 过此 CANID 来规定数据帧的优先级。RTR 位,远程帧发送标识位,为 1 代表是远程帧,数据 帧此位为 0。 控制段:IDE+1 个保留位+DLC,DLC 表示数据段长度。 数据段:标准帧数据段长 8 个字节。 CRC 段:CRC 校验值存在此段。
ACK 段:当一个接收节点接收的帧起始到 CRC 段之间的内容没发生错误时,它将在 ACK 段发送一个显性电平 帧结束:每个数据帧和远程帧均由 7 个隐性位“1”来标志该帧结束。 2) 远程帧 当一个节点想要获取另一个节点的数据时,就发送远程帧来请求数据。CAN 协议中,未 在 CANID 中定义目标节点 ID。此部分由应用层协议定义,如 CANopen。另远程帧需指定数 据长度。 与数据帧的唯一区别是无数据段,也分为标准帧和远程帧两种格式。 1.4 数据链路层 数据链路层由 CAN 控制器实现,负责以下操作: LLC:  接收报文的选择  过载通知  错误恢复 MAC:  数据的打包拆包  帧编码  错误检测及通知  串并行转换
PART2——CANopen 1 CANopen 基础知识 CANopen,一种架构在 CAN 上的高层通信协议,协议由通信子协议和设备子协议组成。 两个协议均包含在对象字典(OD)中,如下图,对象字典中的对象通过 16 位的索引及 8 位的 子索引来定位。 OD 对象列表 CANopen 完全基于 CAN 标准报文格式,细化了对 CAN 报文 11 位标识符的定义,其中 高 4 位定义为功能码,后 7 位为节点 ID。功能码标识报文类型,主要类型有 NMT、SYNC、 PDO、SDO 等,且给报文定义了优先级,如下:NMT→SYNC→EMERGENCY→TIME→PDO →SDO→NMT Err Control 1.1 SDO Service Data Object,服务器数据对象,主要用于对 OD 进行读写。一发一回模式,主站 发送请求帧,从站回复应答帧。  写 主站发送报文: 600H+NodeID Cs (1Byte) Index (2Bytes) Subindex (1Byte) Data (4Bytes) Cs 命令字随数据长度(DL)的变化而变化: 当 DL=1 时,CS=2F; DL=2 时,CS=2B;
DL=3 时。CS=27; DL=4 时,CS=23; If success,从站返回: 600H+NodeID 60 If failed,从站返回: 580H+NodeID 80  读 主站发送: Index (2Bytes) Subindex (1Byte) 00 00 00 00 Index (2Bytes) Subindex (1Byte) Error Code 600H+NodeID 40 Index (2Bytes) Subindex (1Byte) 00 00 00 00 若读取成功,从站返回: 580H+NodeID Cs CS 随数据长度变化而变化: 当 DL=1 时,CS=4F; DL=2 时,CS=4B; DL=3 时,CS=47; DL=4 时,CS=43; 若失败,则从站返回: 580H+NodeID 80 Index (2Bytes) Subindex (1Byte) Data Index (2Bytes) Subindex (1Byte) Erro code
1.2 PDO Process Data Object,过程数据对象,用于传输实时过程数据。生产/消费者模型,PDO 的传输由事件触发,由同步报文(SYNC)同步触发,或者由远程帧及设备子协议中特定事件 异步触发。 PDO 分为发送 PDO(TPDO)和接收 PDO(RPDO) 。一条 PDO 中可以包含 8 个字节 数据。 PDO 在对象字典中通过通信参数及映射参数来描述。对于 TPDO,通过映射参数将 OD 中数据调出,与通信参数组合成报文,发送到 CAN 网络中。对于 RPDO,接收到发来报文后, 通过映射参数将 CAN 报文中数据存放在指定的 OD 条目中。可以说, 映射参数指定具体的 I/O 口,TPDO 连接 Input,RPDO 连接 Output。 RPDO 通信参数  通信参数 包含 CANID,传输类型(0-255,定义了 PDO 的触发方式),限制时间,事件计时器等参 数。 PDO 传输类型分为同步和异步。 1) 同步:通过 SYNC 报文触发 PDO 传输, 周期:0-240,接收相应个数的 SYNC 报文后触发 PDO; 非周期: 指当 PDO 触发条件发生后(事件发生且接受到 SYNC)立即触发 PDO 报文 (0) 。另一种为远程帧预触发(252),接受到远程帧后,在 SYNC 报文之后立即触发。 2) 异步 远程帧触发(253)或者设备子协议中对象特定事件(255)触发
 映射参数 指定数据所在位置,也即 OD 的索引和子索引,还有数据的长度。例如: Index Subindex Object data Desciption 1601H 0 1 2 64110110 对应索引 6411H 子索引 01,数据长度位 10 位 被映射的条目数量 2 64110210 对应索引 6411H 子索引 02,数据长度位 10 位 1.3 NMT NMT,网络管理。主要功能是改变 CANopen 节点的状态。报文结构如下: 11 位CANID 0 2 字节数据 cs Node_ID Node_ID 为目标节点地址,为 0 表示所有节点。cs 命令字,不同命令字改变不同状态, 如下表: 命令字 描述 功能 操作后状态 1(01h) 2(02h) Start_Remote_ Node Stop_Remote_ Node 启动 CANopen 设备和 PDO 传输 OPERATIONAL 激活输出 停止 PDO 使输出处于错误状态 STOPPED or PREPARED 128(80h) Enter_Pre_ 停止 PDO, SDO 可用 PREOPERATIONAL Operational_State 129(81h) Reset_Node 初始化,所有配置重置为默认值 PREOPERATIONAL 130(82h) Reset_ 将所有通信参数重置为默认值 PREOPERATIONAL Communication
分享到:
收藏