CAN 和 CANopen
基于CAN和CANOpen能从master接收指令,执行一系列的运动模式执行
- homing operation
- point-to-to-point motion
- profile velocity motion
- profile torque
- interpolation motion
CAN
CAN协议分层如下所示
其有如下特性:
- multi-master
- message-oriented communication
- flexibility
- prioritizing the message
- unique fault confinement
定义物理层和传输层,提供高速、可靠的网络
CAN网络物理层拓扑结构
CAN是基于比特流串行通讯的总线,采用一对双绞线作为传输介质。总线上的节点并联连接,在总线的两端,采用120Ω端接。
实际使用时,可用9-pin的D-sub连接器连接,至少需要3根线,分别是CAN-High、CAN-Low和Ground
传输距离和线速率
传输距离与线速率呈反相关。CAN网络最大的比特率为1Mbps,当通信速率超过250kbps则称为高速CAN,否则称为低速CAN
物理电气定义
理想情况下CAN的物理电气定义如下:
位时钟
NOMINAL BIT RATE
归一化比特率是理想情况下每秒传输的比特数目
NOMINAL BIT TIME
NOMINAL BIT TIME = 1/NOMINAL BIT RATE
Nominal Bit Time又被分为几个互不重叠的部分
- synchronization segment(SYNC_REG)
- propagation time segment(PROP_SEG)
- phase buffer segment1(PHASE_SEG1)
- phase buffer segment2(PHASE_SEG2)
SYNC_REG
用于同步总线上不同节点,边沿最好位于该区间内
PROP_SEG
用于补偿在网络中传输引入的时延,是信号传输时延总和的2倍(输入和输出)
PHASE_SEG1,PHASE_SEG2
用于补偿边沿错误,可以由resynchronizaiton 后变长或变短
Informatication Processing Time
Time Quantum
从晶振得到的固定时钟单元,有一个预分频系数m,从1~32
TIME QUANTUM = m*MINIMUM TIME QUANTUM
同步
CAN数据链路层
CAN传输消息定义为帧,具有以下四种类型:
- Data frame: for data transmission
- Remote frame:for requesting data
- Overload frame:flow control
- Error frame:error detection and notification
Data frame格式如下
注意 CAN2.0A与CAN2.0B略有区别:A中仲裁字段为12比特;B中仲裁字段为32比特
其中各个字段具体的定义如下
总线的仲裁
https://www.sohu.com/a/305298875_100281310
在CAN网络总,每个节点时钟都会对总线进行监听,只有当总线空闲时,才能发送数据。
如果多个节点开始开始发送数据,CSMA/CA(carrier sense multi Access with collision avoidance)机制起作用。
当逻辑“1” 被写进总线时,CANH和CANL的电平都是2.5V,这种状态并被定义为“隐性”位;当逻辑“0”被写进总线时CANH会上拉到为5V,CANL被下拉到地0V,这种状态被定义为“显性”位。如果显性位和隐性位被不同的节点同时写进总线时,总线会表现为“显性”位。“显性位覆盖隐性位”是CAN总线冲突检测的基础。
当节点开始传送它们各自的报文时,如果一个节点写进了隐性位而读回显性位,节点会知道另一个高优先权节点正在占用总线,该节点会停止传送报文并继续接收总线报文。这种技术叫做**“非破坏性逐位”**仲裁。
CANopen
首先理解CANopen中的2个概念,Object和Profiles
CANopen中所有的处理都基于对象,对象有用于执行不同的任务:
- identification object
- error object
- communication object
- network configuration object
- network management object
配置文件将对象转化为它们的任务,存在2种类型
- 标准配置文件
- 设备上私有配置文件
标准配置文件
标准配置文件用户不得修改,有以下类型
- communication Profiles(eg DS301/2)
- DS 40x设备配置文件
- 数字IO设备DS401
- 驱动 DS402
- 操作面板DS403
- 传感器和控制器DS 404
- 可编程控制器DS405
- 编码器D406
CANopen profile
定义网络中的设备类型
CANopen 运动控制系统框架
控制环路在每个独立的节点(Amplifier)形成闭环,在网络中独立
Master完成多个节点之间的协同
Amplifier能想maser或amplifier发送信息
CANopen网络最大支持127个节点,每个节点有一个7比特的ID,范围从1-127。Node ID 0由Master占用,slave的地址从1~127
CAN协议
CANopen协议
实现了2个目标
- 明确将多个CAN消息,组合成一个更大的数据块
- 标准化、简化设备之间,不同类型应用之间的通讯
EtherCAT CoE
EtherCAT是基于以太网硬件的一种通讯协议
支持一下通信方式
- CAN application profile over EtherCAT
- File Access over EtherCAT
- Ethernet over EtherCAT
- Servo drive profile, according to IEC 61800-2-201(SoE)
CANopen设备的定义与访问
设备的定义
CANopen网络中,设备中的参数及状态信息被主站读写。参数及状态信息被定义为设备的对象。
设备对象的集合被称为设备的对象字典。
CANopen网络中每个设备都有自己的对象字典。
对象字典本质是一个接口,用于设备与网络中其他实体(主站、设备)之间的通讯。
CANopen Profiles 与 Object Dictionary
CANopen Profiles 指明对象字典中强制对象和可选对象
COmmunication Profiles指明CAN网络中所有的设备如何通讯
Device profile 指明访问设备功能的方法
对象字典结构
对象字典是一个查找表,每个对象有16比特索引,8比特自索引。
简单的对象通过索引就可以直接访问,大量相关的参数可以通过主索引+子索引的方式访问
访问对象字典
CANopen提供2种访问设备对象字典的方式
- SDO service data object
- PDO process data object
SDO与PDO之间的区别
Communication Profile每个设备至少需要一个SDO,用于完成Master对sales的配置