目录1. CAN及CANOPen的概述 (2)1.1 CAN及CANopen的基本概念 (2)1.2 CAN优势 (2)1.3 CAN的硬件概述 (3)1.3 硬件说明 (3)2. 协议介绍 (5)2.1 模型介绍 (5)2.2 CANopen协议 (5)2.3 CANopen (5)2.3.1 对象字典 (6)2.3.2 CANopen通讯 (8)2.4 CANopen 专有名词 (10)1. CAN及CANOPen的概述1.1CAN及CANopen的基本概念CAN:最早的现场总线、最广泛应用的现场总线。
CAN 现场总线技术是集自动控制技术、通讯技术、传感技术、计算机技术、诊断技术、微电子技术、网络技术等于一体,是个革命性的技术,正被广泛应用于自动化各个领域。
CANopen是CIA 定义的最为成功的 CAN 应用层协议,在基于 CAN 的自动化系统中居于领导地位, CANOpen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定。
CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。
CANopen 标准包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。
1.2CAN优势1.节约布线成本,减少布线时间,减小出错机率(对于大型设备尤为突出,如果当驱动器、变频器、传感器等放置到现场的话,可以节省大量的电缆费用)2. 实时性更高(比传递 485 通讯速度大大提高,是 485 通讯速度的 100 倍左右,且避免了 485 通讯方式的多控制器之间交换方式,直接由一个 PLC 来协调处理,实时性大为提高)3. 物理层非常稳定4. CAN产品尺寸小,节省空间5. 价格低6.高速的数据传输速率高达 1Mbit/s7.CAN 协议最大的特点是废除了传统的站地址编码,代之以对数据通信数据块进行编码,可以多主方式工作;8. CAN 采用非破坏性仲裁技术,当两个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,有效避免了总线冲突9.任何一个节点均可自动发送报文,不需主站询问;10.可根据报文的 ID 决定接收或屏蔽该报文11.可靠的错误处理和检错机制12.可选择对网络进行三种操作:无处理、停止故障从站、停止整个网络13.CAN 节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其它操作不受影响14.发送的信息遭到破坏后可自动重发15.节点在错误严重的情况下具有自动退出总线的功能16.报文不包含源地址或目标地址,仅用标识符来指示功能信息优先级信息17.CAN 可以点对点、一点对多点(成组)及全局广播集中方式传送和接受数据;1.3CAN的硬件概述1.3硬件说明CAN 总线物理层没有严格规定,能够使用多种物理介质例如双绞线光纤等,最常用的就是双绞线信号,使用差分电压传送(常用总线收发器),两条信号线被称为CAN_H 和CAN_L ,静态时均是 2.5V 左右,此时状态表示为逻辑 1,也可以叫做隐位,用CAN_H 比CAN_L 高表示逻辑 0 ,称为显位,此时通常电压值为 CAN_H = 3.5V 和 CAN_L=1.5V,竞争时显位优先。
标准 CAN 从站 CAN 通讯接口图:图1.3.1九针接头注意:1、所有从站的2、7 脚直接相接即可,采用串连的方式接线,不能采用星型连接方式;2、PLC 端和最后一个负载端需要借 120 欧姆的终端电阻;3、通讯电缆请采用屏蔽线,并做好接地处理(短距离通讯时 3 脚地线可以不接,但是长距离、高波特率通讯时建议把 3 脚接地);4、各种波特率所能够通讯的最长距离:图1.3.2通讯距离图1.3.3通讯连接举例2.协议介绍2.1 模型介绍从OSI网络模型的角度来看同,现场总线网络一般只实现了第1层(物理层)、第2层(数据链路层)、第7层(应用层)。
因为现场总线通常只包括一个网段,因此不需要第3层(传输层)和第4层(网络层),也不需要第5层(会话层)第6层(描述层)的作用。
CAN(Controller Area Network)现场总线仅仅定义了第1层、第2层(见ISO11898标准);实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件(Software)或固件(Firmware)。
同时,CAN只定义物理层和数据链路层,没有规定应用层,本身并不完整,需要一个高层协议来定义CAN报文中的11/29位标识符、8字节数据的使用。
而且,基于CAN总线的工业自动化应用中,越来越需要一个开放的、标准化的高层协议:这个协议支持各种CAN厂商设备的互用性、互换性,能够实现在CAN网络中提供标准的、统一的系统通讯模式,提供设备功能描述方式,执行网络管理功能。
a) 应用层(Application layer):为网络中每一个有效设备都能够提供一组有用的服务与协议。
b) 通讯描述(Communication profile):提供配置设备、通讯数据的含义,定义数据通讯方式。
c) 设备描述(Device proflile):为设备(类)增加符合规范的行为。
2.2CANopen协议CAN-in-Automation(CiA)定义的标准之一,并且在发布后不久就获得了广泛的承认。
尤其是在欧洲,CANopen协议被认为是在基于CAN的工业系统中占领导地位的标准。
大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述”的协议中进行描述;“设备描述”定义了不同类型的标准设备及其相应的功能。
2.3 CANopen一个CANopen设备至少应该具有(最小能力设备):(1). 一个节点ID,(2). 一个对象字典(内容由设备功能决定),(3). 一个SDO,能够访问对象字典中必需的对象(只读),(4). 支持下列NMT从设备服务:Reset_Node, Enter_Preoperational_State, Start_Remote_Node,Stop_Remote_Node, Reset_Communication,(5). 缺省的标识符分配。
2.3.1对象字典CANopen 设备都需要具备对象字典,用来设定设备组态及进行非即时的通讯。
对象字典的entry 定义如下:索引 (Index):对象 16 位元的位址。
对象名称 (Object name):一个代表对象的symbolic type,可以是阵列、纪录或只是一个变量。
名称 (Name):描述此 entry 的字串。
形态 (Type):变量的资料形态。
属性 (Attribute):提供此 entry 是否可读/可写的资料,有下列四种:可读/写、只读、唯写、只读常数。
必须(Mandatory)/可选 (Optional)字段定义属于特定设备规范下的设备,是否必须实现某些对象。
在 CANopen 标准中定义了对象字典中的基本资料型态,包括逻辑值、整数及浮点数。
也定义了复合对象:如阵列、记录及字串。
复合对象用一个 8 位元的数值作为其子索引(subindex)。
记录或阵列中子索引 0 的位置记录此数据结构的元素个数,资料型态为 UNSIGNED8。
例如在 CiA301 标准中,设备通讯的参数放在索引范围 0x1000 – 0x1FFF (通讯行规区)。
此区域的前几项如下:图2.1 设备通讯结构CANopen对象字典通用结构图2.2 对象字典通用结构CANopen网络中每个节点都有一个对象字典。
对象字典包含了描述这个设备和它的网络行为的所有参数。
一个节点的对象字典是在电子数据文档(EDS:Electronic Data Sheet)中描述或者记录在纸上。
不必要也不需要通过CAN-bus“审问”一个节点的对象字典中的所有参数。
如果一个节点严格按照在纸上的对象字典进行描述其行为,也是可以的。
节点本身只需要能够提供对象字典中必需的对象(而在CANopen规定中必需的项实际上是很少的),以及其它可选择的、构成节点部分可配置功能的对象。
注意:一个设备的通讯功能、通讯对象、与设备相关的对象以及对象的缺省值由电子数据文档(EDS:Electronic Data Sheet)中提供。
单个设备的对象配置的描述文件称作设备配置文件(DCF:Device Configuration File),它和EDS有相同的结构。
二者文件类型都在CANopen规范中定义。
2.3.2CANopen通讯1.NMT 协议NMT(网络管理, Network management)协议会定义(设备内部)状态机的状态变更命令(如启动设备或停止设备)、侦测远端设备 bootup及故障情形。
NMT master 使用的模组控制协定可变更设备的状态。
其 COB-ID 为 0,其功能码及节点 ID 均为 0,因此网络上的所有节点均会处理这个信息。
在此信息的数据部份会有此信息实际针对节点的ID,此 ID 也可为 0,表示所有节点都要变更为指定的状态。
2.心跳协议(Heartbeat protocol)是用来监控网络中的节点及确认其正常工作。
心跳信息的生产者(一般是 slave 设备)周期性的送出功能码 1110、ID 为本身节点 ID 的讯息,信息的数据部份有一个表示节点状态的位。
而心跳信息的消费者负责接收上述数据,若在指定时间(于设备的对象字典中定义)内,消费者均未收到信息,可采取相应动作(例如显示错误或重置该设备)。
其格式为:COBID + DATA(status of node) CANopen 设备需要在 bootup 时自动从 Initializing 状态切换至 Pre-operational 状态,设备会在切换完成后送出一个心跳信息,这就是心跳协议。
有一种 pull model 的 NMT 协议,称作节点监控(Node guarding)协议,也可以作从机的监控。
3. SDO 协议是服务数据对象(SDO)可用来存取远端节点的对象字典,读取或设定其中的数据。
提供对象字典的节点称为SDO server,存取对象字典的节点称为SDO client。
SDO 通讯一定由SDO client 开始,并提供初始化相关的参数。
在CANopen 的术语中,上传是指由 SDO server 中读取数据,而下载是指设定 SDO server 的数据。
由于对象字典中的数据长度可能超过8个字节,无法只用一个CAN数据包传输,SDO也支援长数据包的分割(segmentation)和合并(desegmentation)。
这样的对象有二种:SDO下载/上传(SDO download/upload)及SDO区块下载/上传(SDO Block download/upload)。