PIC18单片机的CANopen通信协议

发布者:SparklingMoon最新更新时间:2011-05-19 关键字:PIC18单片机  CANopen  通信协议 手机看文章 扫描二维码
随时随地手机看文章
引 言
    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的各个参数。

    OD_ENTRY(0x3000,Ox00,ATTR_RW | ATTR_ROM,TempLo),(对象主索引3000-下限温度)OD_ENTRY(0x3001,0x00,ATTR_RW|ATTR_ROM,TempHi),(对象主索引3001-上限温度)
    OD_ENTRY(0x3100,0x00,ATTR_RO,Status),(对象主索引3100一状态)
    OD_ENTRY(0x3200,0x00,ATTR_RWW,RemoteTemperature),(对象主索引3200-远程温度)#define ODD_RPDO_PAR_COB_ID_0 Ox40000286L(RPDO的COB-ID为0x286)
    OD_ENTRY(0x160l,0x00,ATTR_RO | ATTR_ROM,ODE_RPDO_Mapping_NoOfEntries),OD_ENTRY(0x1601,0x01,ATTR_RO|ATTR_ROM,ODD_RPDO_MAP_0_1,(RPDO映射参数描述)
    #define ODD_RPDO_MAP_0_1 0x32000010L(RPDO定位对象字典索引3200子索引00长度2)
    OD_ENTRY(0xlA00,0x00,ATTR_RO|ATTR_ROM,ODE_TPDO_Mapping_NoOfEntries),
    OD_ENTRY(0xlA00,0x01,ATTR_RO|ATTR_ROM,ODD_TPD0_MAP_0_l,(TPDO映射参数描述)
    #define ODD_TPDO_MAP_0_1 0x31000008L(TP-DO定位对象字典索引3100子索引00长度1)
    if(RemoteTemperature    else if(RemoteTemperature>TempHi){Status=1;}(高于上限温度降温,为降温状态)
    else{Status=0;}(在设定温度范围内,为保持状态)
    在此例中,PDO报文是在对象字典中用通信参数和映射参数来描述的。通信参数决定哪个COB—ID将被PDO使用,此例中RPD0的COB—ID为286,TPDO的COB—ID为187。映射参数包含映射到PDO里的对象在对象字典中的索引和子索引,以及对象的数据长度。此例中映射到RPDO里的对象在对象字典中的索引为3200,子索引为OO,长度为2;映射到TPDO里的对象在对象字典中的索引为3100,子索引为00,长度为1。另外某些相关变量也由对象字典所描述,可以通过sD0对象传输方式进行下载修改或上传观察。此例中的上限温度、下限温度,就由对象字典主索引3000、子索引00和主索引3001、子索引00分别描述。
2.3 节点的CANopen协议的软件实现
    在节点上实现CANopen协议软件,首先要实现节点接收报文和发送报文的功能。接收报文的过程是,一旦有接收中断产生,就把CAN接收缓冲区接收到的数据和地址放到一内部阵列中,对接收到的报文进行分析,并送去执行相应的子函数(NMT报文接收处理子函数、SDO报文接收处理子函数、心跳报文接收处理子函数、SDO报文接收处理子函数),最后返回主程序。发送报文的过程是,把需要发送的变量放到对象字典里,再把它们映射封装成相应的对象,最后将报文发送到总线上。
    主程序按照通信流程编写,模块上电后先进行通信初始化。其首先初始化CANopen协议中的通信相关参数、对象字典、节点号,再初始化CAN控制器的硬件,包括单片机的内部寄存器、定时器、串行口、CAN控制器。通信初始化后自动进入节点初始化,并进行一些特定用户的初始化。完成后,发送一个启动报文自动进入预操作状态。此时用户的程序循环执行着,在每个循环里,调用接收报文1次。这个模块用来检查接收到的对象,并作相应的处理。在NMT报文到来之前一直持续在预操作状态。在
这个状态里,节点可以通过SD0被配置和设置参数,但是不允许发送PDO。在相应的NMT报文到来后,即收到启动远程节点命令后,进入操作状态,在这个状态就可以进行正常的通信了。在收到NMT报文,即停止远程节点命令,节点进入了停止状态,从而停止PDO和SDO通信。

3 实验结果
   
在软件设计中编写了与上位机的通信模块程序,可以将每个节点接收和发送报文的ID号、数据长度、数据转发到串口,便于上位机进行观测。
    图3为系统传输数据的过程,温度传感节点发送报文过程为发送自启动报文后以周期为1 s发送心跳报文,以周期为100 ms发送PDO1报文,发送数据为传感温度(分别为19°,20°,…,21°…)。上限温度和下限高温都为20°时,温度调节节点接收报文过程为接收到NMT报文命令后进入操作状态,不断接收PDOl报文。温度调节节点发送报文过程为发送自启动报文后以周期为1 s发送心跳报文,以事件触发方式发送PDOO报文(发送数据为工作状态长度为1,当接收到的温度低于20°时发送数据为02表示加热,当接收到的温度高于20°时发送数据为01表示降温,当接收的温度为20°时发送数据为OO表示保持),状态显示灯不断闪烁红色、黄色、蓝色。如在命令节点中发送SDO报文改变对象字典中的上限温度和下限温度,再观察各节点变化。情况1,当上限温度低于20°(为15°)时,温度调节节点一直在降温状态,状态显示灯为红色。情况2,当下限温度高于20°(为25°)时,温度调节节点一直在加热状态,状态显示灯为黄色,情况3,当上限温度高于20°(为25°),下限温度低于20°(为15°)时,温度调节节点一直在保持状态,状态显示灯为蓝色。命令节点在液晶显示屏中显示实时温度,在状态显示灯中显示实时状态。

    命令节点进行NMT对象操作时再观察各节点状态:当按下按钮1时,节点进入欲操作状态;当按下按钮2时,节点重启。
    从以上两个实验可以看出,整个系统在运行过程中达到了满意的控制效果,实现了基于CANopen协议的对象数据的交换,通信传输理想。


结 语
    应用PIC18单片机自行开发的基于CANopen协议的节点,实现了对4种通信对象信息的通信处理,并通过测试验证了系统信息传递的可靠性、准确性和实时性,很好地满足了基于CANopen协议的温度测控系统的要求;对于CANopen在国内的应用和普及,以及CAN网络和驱动产品尽早和国际接轨,具有重要的意义。

关键字:PIC18单片机  CANopen  通信协议 引用地址:PIC18单片机的CANopen通信协议

上一篇:PICC编译环境编写PIC单片机程序的探讨
下一篇:dsPIC33F系列DSC的 SD存储卡接口设计

推荐阅读最新更新时间:2024-03-16 12:35

CANopen总线产品通讯整合应用
前言:近年来,现场总线技术在愈来愈多的工业现场得到良好的应用,国外多家知名自动化厂商相继推出了现场总线类产品,为了适应工业自动化产品技术发展的需要,满足众多客户现场总线应用需求,台达也推出了CANopen总线产品,支持台达全系列自动化产品,同时支持自定义设备,可以支持其他厂商产品接入CANopen总线。 本项目就是利用台达CANopen总线和台达其他自动化产品整合应用,基于CANopen现场总线通讯协议,达到高速通讯响应的控制要求。 控制系统技术方案配置:详见下表 上述表格仅列举出技术方案主要元器件,此外还包括121Ω终端电阻以及其他通讯连接电缆等辅助器件,此处均不予赘述。 控制系统原理框图简要介绍: 采用CANopen现
[嵌入式]
C51单片机IIC总线通信协议及简单应用例程
首先我们要分清通信协议和通讯协议中的信和讯的含义 “通信”仅指数据通信,即通过计算机网络系统和数据通信系统实现数据的端到端传输。 通信的“信”指的是信息(Information),信息的载体是二进制的数据,数据则是可以用来表达传统媒体形式的信息,如声音、图像、动画等。 “通信”重在传输手段或使用方式,从这个角度,“通信”的概念包括了信息“传输”。 因此通信协议主要集中在ISO七层协议中的物理层、数据链路层、网络层和传输层。 先简单的说明以下I2C总线, I2C总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。 处理器和芯片间的通信可以形象的比喻成两个人讲话:1、你说的别人得能听懂:双方
[单片机]
STM32F407ZGT6串口通信讲解
串口(UART) 1 .UART概述 串口其实就是一种通信协议。 什么是通信协议? 通信双方在数据交流的过程中需要遵守的规则。 1.1 补充(常用通信协议分类及其特征介绍) 1. 同步、异步 同步:通信双方在同一个时钟脉冲下进行通信 异步:通信双方的时钟脉冲由各自提供 2. 单工、半双工、全双工 单工:在一个通信系统中,发送数据的一方叫发送发,接受数据的一方叫接受方,一旦角色确定下来后,永远不会改变。(遥控器) 半双工:在一个通信系统中,一个设备既可以作为发送方发送数据,也可以作为接收方接受数据,但是同一时刻只能拥有一种身份。----可以切换方向的单工 (对讲机) 全双工:在一个通信系统中,同一个设备同一时
[单片机]
STM32F407ZGT6串口通信讲解
基于FlexRay通信协议实现汽车分布式控制系统的设计
网络拓扑结构对于汽车网络系统安全具有重要的影响,要保证汽车环境下通讯系统的可用性和可*性,需要面向特定应用进行优化。在这方面,最近出现的FlexRay物理层技术具有很大潜力。本文将从简单的网络例子入手,由简至繁,最后推出一种可*精密的解决方案,在此过程中我们将讨论几种可能的不同网络配置以及它们的优缺点。 FlexRay具有创新的功能和安全的特点,能够使汽车系统安全达到一个很高的水平。FlexRay不仅能简化汽车电子和通信系统架构,同时还可帮助汽车电子单元变得更加稳定和可*。包括丰田、日产、本田、现代以及起亚汽车公司在内的主要亚洲汽车生产商都已经加入FlexRay联盟,进一步加强了该联盟在创建针对汽车线控操作(by-wire)技
[嵌入式]
基于FlexRay<font color='red'>通信协议</font>实现汽车分布式控制系统的设计
基于PROFIBUS-DP的FCS诊断软件的开发
  0 引言   PROFIBUS是工业自动化领域内市场占有率最高的一种现场总线技术,它包括用于制造业自动化的PROFIBUS-DP和用于流程工业领域的 PROFIBUS-PA,它是目前我国惟一的现场总线国家标准。随着越来越多工业控制系统采用了PROFIBUS现场总线技术,对这些控制系统进行具体的、直观的和实时的在线分析与诊断成为了最基本的要求,要想完成这样的任务,就需要有相应的工程分析诊断工具。国内外目前所研究的这些总线性能分析诊断工程工具存在着功能不够全面、界面不够完善、价格昂贵、不适合中国国情等问题。开发一款能够对总线系统进行分析和诊断,方便的、性能价格比高的分析诊断工程工具必将成为急需的产品。   由于在PRIFBUS
[工业控制]
Modbus 通信协议在分布式控制系统中的应用
一、引 言   现代工业的迅速发展,不断促进着自控技术及设备创新的日新月异。当前,DCS、IPC、PLC及智能仪表已广泛应用到工厂现场生产控制系统当中,并发展到由上述设备相互协同、共同面向整个生产过程的分布式工业自动控制系统。在此系统中,现场通信技术堪称关键。但由于开始没有统一的通信协议标准,各厂商自控产品通信协议各自为政,通信网络各成体系,造成不同厂家的自控设备网络连接困难甚至不能连接,给分布式控制系统的灵活应用造成了不便。一些公司为适应市场,纷纷将各自的协议标准公开化,可无偿使用。经过多年发展,一些通信协议如Modicon公司的Modbus通信协议因其兼容性、易用性的优势,在工业领域得到了广泛应用,已成为一种通用的工业通信
[嵌入式]
车载测试主要包含哪些内容
车载测试具体包含: 1、电子系统测试:对车辆的电子控制单元(ECU)进行测试,包括发动机控制单元(ECU)、传输控制单元(TCU)、刹车控制单元(BCU)、安全气囊控制单元(ACU)等。测试包括功能测试、性能测试、故障码读取和故障诊断。 2、发动机性能测试:评估发动机的性能、燃油经济性、排放水平等。测试项目包括加速性能、动力输出、燃油消耗、排放测量等。 3、底盘控制系统测试:测试车辆的底盘控制系统,包括悬挂系统、制动系统、转向系统等。测试项目包括悬挂系统的舒适性和稳定性、制动系统的制动力和制动距离、转向系统的灵敏度和准确性等。 4、安全系统测试:测试车辆的安全系统,包括防抱死制动系统(ABS)、电子稳定控制系统(ESC)、车道保持
[嵌入式]
寒假学习之stm32(16)----IIC通信协议
背景知识: https://zh.wikipedia.org/wiki/I%C2%B2C stm32中的IIC描述: I2C功能描述: I2C模块接收和发送数据,并将数据从串行转换成并行,或并行转换成串行。可以开启或禁止中断。接口通过数据引脚(SDA)和时钟引脚(SCL)连接到I2C总线。允许连接到标准(高达100kHz)或快速(高达400kHz)的I2C总线 模式选择 默认情况下,I2C接口总是工作在从模式。从从模式切换到主模式,需要产生一个起始条件。 接口可以下述4种模式中的一种运行: ● 从发送器模式 ● 从接收器模式 ● 主发送器模式 ● 主接收器模式 该模块默认地工作于从模式。接口在生成起始条件后自动地从从模
[单片机]
寒假学习之stm32(16)----IIC<font color='red'>通信协议</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved