×
嵌入式开发 > 详情

PIC18单片机的CANopen通信协议

发布时间:2020-06-20 发布时间:
|

引 言

CAN总线由于具有实时性和可靠性高、组网成本低等优点,近年来在汽车工业、楼宇自动化、工厂自动化、机器人控制等领域得到广泛应用。CANopen协议不仅定义了通信规范,而且为可编程系统、不同器件、接口等设备应用子协议定义了大量的行规。遵循CANopen协议开发出的设备能实现不同生产厂家的产品间的互操作。

要掌握CANopen协议,重点是对对象字典和设备模型的理解以及对4类通信对象的掌握。本文先对CANopen协议进行削析,再重点介绍在PICl8F458单片机上开发基于CANopen协议的节点,最后通过温度测控系统实验验证了系统信息传递的可靠性、准确性和实时性。

1 CANopen通信协议简介

CANopen协议是CiA协会基于CAN总线定义的应用层协议之一,在各种控制系统中得到了广泛应用。它以CAN芯片为硬件基础,有效利用CAN芯片所提供的简单通信功能来满足工业控制网络的复杂应用层协议要求。CANopen网络是主从站(Master―Slave)结构,系统的运行由主站控制,主站可以对127个从设备进行控制,不同设备通过CAN总线进行连接组网。图1为CANopen设备模型。CANopen通信协议接口用于提供在总线上收发通信对象的服务,不同CANopen设备间的通信都是通过交换通信对象来完成的。CANopen协议中定义了4种通信对象(通信模式),用于对不同作用的信息进行处理:NMT对象(网络管理对象)、SDO对象(服务数据对象)、PDO对象(过程数据对象)、特殊功能对象。

设备对象字典是CANopen协议的核心概念,位于CANopen设备模型中通信层和用户应用层之间,为用户应用层提供接口。它是一个结构标准化的、有序的对象组,描述了该设备使用的所有数据类型、通信对象和应用对象。基于CANopen协议的网络系统中每一个设备都要实现一个唯一的对象字典,区别在于设备类型不同其内容则不同。对象字典中每个对象拥有一个唯一的16位主索引和8位子索引,由此实现对其中各种对象的访问。对象字典在系统软件设计中得以实现,然后使用标准化的EDS文件对其进行描述。

2 温度测控系统的软、硬件设计

2.1 温度测控系统组成

图2所示温度测控系统包含3个节点,它们构成一个CAN网络。传感温度节点发送测到的温度,此节点由主芯片和温度传感器组成。温度调节节点接收到从传感温度节点发送的温度数据后,低于下限温度加热,高于上限温度降温,并发送调节状态;此节点由主芯片、状态显示灯和空调设备组成。命令节点接收从传感温度节点发送的温度和温度调节节点发送的状态在液晶屏上显示,并有按钮可以发送NMT对象,对整个系统进行控制;此节点由主芯片、液晶屏、状态显示灯和按钮组成。

针对系统的要求,选用PICl8F458单片机作为从节点的主芯片。它是Microchip公司的单片16位高性能微控制器,具有片内CAN控制器,CAN模块符合CAN2.0B标准,带有3个发送缓冲区、2个接收缓冲区、2个接收屏蔽寄存器、6个完全接收滤波器。CAN收发器采用PCA82C250芯片,它具有高速稳定的差动发送和接收能力,可作为CAN协议控制器和物理总线接口。此外,为了便于调试和与主控制器的通信,系统中还扩展了RS232接口。

对于各个节点都采用预定义连接集中规定的11位ID。它由4位功能码和7位节点ID组成。其中各通信对象具体分配的COB―ID为NMT SERVICE一000、EMER―GENCY一080、TIMESTAMP一100、SYNC一080、TPD01―180、RPD01―200、TPD02―280、RPD02―300、TSDO一580、RSDO一600、HEARTBEAT一700。

设定传感温度节点的ID为6,以TPDO对象方式发送测到的温度。所以发送对象的COB―ID分别为TP―D02(200+6)、TSD()(580+6)、HEARTBEAT(700+6)、EMERGENCY(080+6),接收对象的COB―ID分别为NMT SERVICE(000)、RSD()(600+6)。

设定温度调节节点的ID为7,以RPDO对象方式接收从传感温度节点发送的温度,并以TPDO对象方式发送调节状态。所以发送对象的COB―ID分别为TPD01(180+7)、TSDO(580+7)、HEARTBEAT(700+7)、EMERGENCY(080+7),接收对象的COB―ID分别为NMT SERVICE(000)、RSDO(600+7)、RPDO2(280+6)。

设定命令节点的ID为8,以RPDO对象方式分别接收从传感温度节点发送的温度和从温度调节节点发送的调节状态,也可用NMT对象方式发送NMT报文。所以发送对象的COB―ID分别为TSDO(580+8)、HEART―BEAT(700+8)、EMERGENCY(080+8)、NMT MAS―TER(000),接收对象的COB―ID分别为NMT SERVICE(000)、RSD0(600+8)、RPD02(280+6)、RPD01(180+7)。

2.2 节点对象字典的建立

对象字典的内容除了包括CANopen协议规定的必需项外,还包括调用的各功能模块和参数设定项。它的正确配置和使用,是保证整个CANopen网络正常运行的核心,是节点实现其预定功能的必要保证。对象字典的组建采用C语言在头文件中编写,通过Struct(结构)语句实现对象字典内容的寻址。对象字典的规划赋值设计按照CANopen协议规定的格式完成,每个节点的对象字典都具有相同的结构,但具体内容要根据不同的设备而定义,包含了描述这个设备和它网络的所有参数。对象字典的操作是CANopen协议软件的核心,通过对象字典实现网络间参数的映射从而完成各种数据的处理,需要编写对象字典解码子函数、读对象字典子函数和写对象字典子函数。下面以温度调节节点为例介绍对象字典的创建、赋值和具体操作。表1显示了此节点中PDO的各个参数。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
内核日志及printk结构浅析