3986.net
小网站 大容量 大智慧
当前位置:首页 >> 信息与通信 >>

基于CANopen协议的分布式控制系统的研究_图文

广西大学 硕士学位论文 基于CANopen协议的分布式控制系统的研究 姓名:蒋智康 申请学位级别:硕士 专业:电力电子与电力传动 指导教师:宋春宁 20080625

基于CANopen协议的分布式控制系统的研究

摘要
基于现场总线的网络技术研究是自动控制领域发展的一个热点。在各 种工业现场总线中,CAN总线以其成本低、速度快、实时性和可靠性较高等 特点被广泛应用于各领域。CIA(CAN
in

Automati013)协会发布了完整的

CANopen协议,定义了应用层和通讯子协议,为基于现场总线的分布式控制 系统的广泛应用提供了解决之道。 本文研究国内外现场总线发展现状后,以改善现场总线网络通讯系统 的运行效率,提高实时性和信息处理能力为前提,浅析CAN总线高层通讯 协议CANopen,分析了主、从节点的各个功能,说明了功能的设计和实现方 案。


然后,本文将CANopen协议应用于分布式控制系统,详细论述了基于 PICl8控制器的从节点和基于DSP控制器的主节点的实现过程。主、从节点 具有基于CANopen协议的总线通信功能。从节点具有数字量和模拟量输入 输出功能。主节点可以通过键盘对各节点运行状态和各节点参数进行调整, 还可以通过液晶屏显示实时控制量和各节点运行状态。PC机能在线监测CAN 报文数据流。本文对两种类型节点的设计思想、硬件组成和软件设计均做 了详尽的阐述,并给出了部分关键硬件原理图和软件流程图。 最后,把已开发的从节点和主节点组成一个温度测控系统和一个电机 控制系统。经过实验室测试,证明系统具有良好的实时性,通讯稳定可靠, 解决了传统CAN总线节点通讯可控性差,无法灵活设置的问题。对目前国 内CAN总线应用中大多把精力放在硬件之上的底层软件开发,少有使用上 层软件协议的习惯,起到了一定的推动意义,提高了应用水平。 关键词:
CANopen DSP P l C1

8现场总线分布式控制系统

SOME RESEARCH ON DISTRIBUTED CONTROL SYSTEM BASED ON CANOPEN PROTOCOL

ABS丁RACT

The research of network technology based

on

the fieldbus has become



hotspot in




Automatic control area.In all kinds of the industrial fieldbus,CAN bus has_been used in

lot



of app l ication fields,because of its lower cost、faster speed、higher real-time and reliability.

CtA(CAN in Automation)established the higher layer

protocol

CANopen.The CANopen
can

Protocol defned application layer and communication sub-protoc01.The fieldbus
widely

be

used

in the distributed control system by thesis

CANopen Protoc01.
of filedbus

First of all,the

investigates the status and developing prospect

technology

in China and Abroad.For the purpose of improving operating efficiency of CAN

bus,enhancing real-time
of the master

and

data-handling capacity,the thesis analyses CANopcn’S functions design of CANopen’S functions.
to

and slave node and explains the

Then,CANopen protocol will be applied
elaborates the realization process of
PIC I 8

distributed control system.The thesis
on

CANopen Protocol base

the DSP module as well

as

module.CANopen

protocol of slave node is completed in PIC 1 8

module.The

slave

node

has the capacity of digital、analog input

and output measurement.CANopcn protocol of
change state

master

node

is completed in DSP

module.The master node Can
can

and parameter
state

of

slave nodes by nodes.PC

keyboard.The

LCD

display the control value

and real—time

of slave

Can monitor

CAN.bus transmitted data stream on.1ine.The hardware and sofware

design

of

two

types of nodes are wriRen in detail by this paper.This paper also gives some

circuit diagram and software flow chart.

Finally,two


distributed control systems are designed based
that is composed of


on

CANopen

protoc01.One is

temperature monitoring system


master

node and


two slave nodes.

Another is

DC motor control system that is composed of

master

node

and



slgve

node.Through communication test,the CANopen’S real-time and stability is acquired by this

system.The

CAN bus application of domestic
China.The
research
on

is usually made by hardware rather than by
on

upper software protocol in

this system

will

be raised to application

level of distributed control system based

CAN.bus.

KEY

WORDS:CANopen;DSP;PICl8;Field Bus;Distributed
II

Control Systen

广西大学学位论文原创性声明和学位论文使用授权说明 学位论文原创性声明
本人声明:所呈交的学位论文是在导师指导下完成的,研究工作所取得的成果和相

关知识产权属广西大学所有。除已注明部分外,论文中不包含其他人已经发表过的研究
成果,也不包含本人为获得其它学位而使用过的内容。对本文的研究工作提供过重要帮 助的个人和集体,均已在论文中明确说明并致谢。

论文作者签名:

萄%良

幻口影年(月?cJ

El

学位论文使用授权说明
本人完全了解广西大学关于收集、保存、使用学位论文的规定,即:本人保证不以 其它单位为第一署名单位发表或使用本论文的研究内容;按照学校要求提交学位论文的 印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并提供目录检索与阅览 服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的 的前提下,学校可以公布论文的部分或全部内容。

请选择发布时间: 口即时发布 口解密后发布

(保密论文需注明,并在解密后遵守此规定)

论文作者签名:满铝屠,师签名李殇当,功。睁c月弓。日

广。酉大学蛹瞳士掌位论文

基于CANopen协议的分布式控制系统的研究

第一章绪论

1.1现场总线技术
1.1.1现场总线技术概述 随着控制、计算机、通信、网络等技术的发展,信息交换沟通的领域正迅速覆盖从 工业的现场设备层到控制、管理的各个层次。信息技术的飞速发展,引起了自动化系统 结构的变革,逐步形成了以网络集成自动化系统为基础的企业信息系统。现场总线(Field bus)就是顺应了这一形势发展起来的新技术【¨。 所谓现场总线,按照国际电工委员会IEC/SC65C的定义,是指安装在制造或过程区 域的现场装置之间以及现场装置于控制室内的自动控制装置之间的数字式、串行和多点 通讯的数据总线。现场总线技术是指可应用在生产现场、在微机化测量控制设备之间实
现双向串行多节点数字通信的系统,也被称为开放式、数字化、多点通信的底层控制网

络。现场总线是一个开放的通信网络,又是一个全分布控制系统。它作为智能设备的联 系纽带,把智能设备挂接在总线上作为节点连接成网络系统,并进一步构成自动化系统,
实现基本控制,形成以补偿计算、参数修改、报警、显示、监控、数字通信、网络为主 要内容的综合技术12J。

1.1.2现场总线技术的特点 现场总线技术的全部优点都源于它的三大特点:(1)系统精度提高;现场设备的信息 增加几十倍,可用于自诊断、系统调试和管理,提高了系统的有效性。(2)打破了个别厂 商的垄断,给技术以强大的支持群体,促进公平竞争,促进技术进步。(3)用高智能的现
场设备来分散地完成DCS控制器的功能,弱化甚至省去了集中控制器的层次,降低了设

备费用,使控制风险彻底分散,提高系统控制的自治性和可靠性。 由于现场总线技术适应了工业控制系统向分散化、网络化、智能化发展的方向,它 一经生产便成为了全球工业自动化的技术热点,受到了全世界的普遍关注。导致了传统 控制系统结构的变革,形成了新型的网络集散式全分布控制系统—现场总线控制系统
FCS(Field bus
Control

system)。

1.1.3现场总线技术的发展现状
从20世纪80年代中期至今的短短20多年中,现场总线经历了概念提出、标准制定和

软硬件产品的研制,已经出现了好几种现场总线技术走向成熟并且得到了推广和广泛地
应用。

广西大掣蝠炙士学位论文

基于CANopen协议的分布式控制勇。宽的研究

下面是几种具有代表性现场总线:(1)基金会现场总线@F):1994年,由ISPF和World FIP=IP,美分会联合成立了现场总线基金会。该基金会集众家之长,致力于开发出国际上
统一的现场总线协议,即基金会现场总线(Foundation Field bus,缩写FF)。该总线主要

用于过程自动化。(2)PROFIBUS:1986年,德国开始制定PROFIBUS标准。1990年完成
了PROFIBUS.FMS和PROFIBUS.DP协议的制定工作,1994年又制定了用于过程自动化

的PROFIBUS.PA通信协议,可实现总线供电与本质安全防爆。(3)LonWorks:LonWorks 是由美国Echelon公司推出并由它与摩托罗拉、东芝公司共同倡导,于1990年正式公布而 形成的。LonWorks技术采用的LonTalk协议被封装在称之为Neuron的神经元芯片中得以 实现。该总线主要用于智能家庭自动化。(4)HART:HART是Highway
Addressable Remote

Transducer的缩写。是由Roscmount公司开发并得到80多家著名仪表公司的支持,于1993 年成立了HART通信基金会。它是一种模拟信号与数字信号混合的通信协议。能利用总 线供电,可满足本质安全防爆要求,并可组成由手持编程器与管理系统主机作为设备的 双主设备系统。此外还有本文所要研究和应用的CAN(Controller Area Network)总线。 现场总线技术在中国的推广已取得了一定的成绩。但在现场总线的应用中,多种总 线共存的格局己在国际和国内成为定式,应该选择协议真正开放,在技术上有作为的, 支持国内生产各类装置的企业开发总线产品的现场总线,建立一个具有预测性、开放性、 动态性的现场总线标准体系,在实践中逐步解决现场总线应用中所存在的问题。

1.2

CAN总线
CAN总线概述

1.2-1

CAN(ControllerArea Network)称为控制器局域网,属于总线式通讯网络13]。它是20
世纪80年代初德国BOSCH公司提出为解决汽车内部众多控制与测量设备之间的数据交 换而开发的一种串行数据通信总线,是一种有效支持分布式控制系统或实时控制的串行 通信网络【4】【51。后来,由于其成本低、可靠性高、抗干扰能力和实时性强等特点使其应

用范围逐渐扩大。CAN总线的技术规范包括CAN2.0A和CAN2.0B两部分,CAN协议只
有物理层和数据链路层两个底层协议,规定了对数据通讯的成帧处理,包括位填充、数 据块编码、循环冗余检验、优先级判别等项的工作标准【6】。
1.2.2

CAN总线的优点

由于CAN总线采用了许多新技术及独特设计[71,CAN总线的数据通信具有突出的可
靠性、实时性和灵活性。其具体优点如下:

?CAN采用多主式工作,网络上任意节点均可以在任意时刻主动地向网络上的其
它节点发送信息,而不分主从,通讯方式灵活。

?CAN信息采用短帧结构,每一帧的有效字节数为8个,这样传输时间短,受干


广西j幽烦士掣q盘论文
扰的概率低。

a0于CANopen协议的分布式控制习0晓的研究

◆CAN协议废除了传统的站地址编码,而对通讯数据块进行编码,使网络中的节 点个数在理论上不受限制,网络中的不同节点同时接到相同的数据,使总线上
传输的信息总量减少。


●CAN网络上的信息可分成不同的优先级,满足不同的实时性要求。

◆CAN采用非破坏性总线仲裁技术(CSMA]CD),大大节省了总线冲突裁决时间; 最重要的是在网络负载很重的情况下也不会出现网络瘫痪情况(以太网则可


能)。



◆CAN网络具有点对点、一点对多点和全局广播等几种通讯方式。 ●具有极好的检错效果,CAN的每帧信息都具有CRC校验和其他检错措施,保证

了错误的输出率极低。 ?CAN的直接通讯距离最远可达lOkm(速率5kbps以下.);通讯速率最高可达
1Mbps(此时距离最长40m):最多可接节点达l 10个。
1.2.3

CAN总线存在的不足

●CAN总线中没有路由器,网关等网络连接设备,网络规模有限,大型组网能力 和网络处理能力差嗍。 ?较适合于小型系统,当用于节点数较多的大型系统时,性能将会下降。
?

由于CAN总线是针对相对较少信息的发送而设计优化的一种串行通讯协议,传 输大数据量的能力较差。



由于CAN协议的物理层和数据链路层己被封装在硬件中,核心内容不透明,人 为对底层协议的开发和处理的余地小。



与其它的现场总线协议和以太网TCP/IP协议的互操作能力差,限制了网络规模 的扩大和通过TCP/IP与异地网络的信息共享。

1.2.4

CAN总线的应用

由于具有以上特性,CAN总线越来越受到人们的重视,目前已有许多大公司的产品 采用了这一技术。CAN总线的应用范围很广,其中汽车和交通领域占应用总数的80%以 上:还用在工业控制领域,楼宇自动化,机器人领域,装载器械,嵌入式网络,混合引 擎控制和医用电子,电话系统,模拟战争,高能量物理等一些特殊行业。目前,支持CAN 协议的有Intel、Motorola、Philips、Siemens、NEC、Honeywell等百余家国际著名大公司。
总之,CAN总线是现场总线中比较有前途的总线之一,受到了越来越广泛的重视。



基于CANopen协议的分布式控制系统的研究 1.3

CANopen协议
CAN协议只定义了物理层和数据链路层,本身并不完整,有些复杂的应用问题需要

一个更高层次的协议.应用层协议来实现。1993年,由Bosch领导的欧洲CAN-bus协会开

始研究基于CAN.bus通讯、系统、管理方面的原型,由此发展成为CANopen协议。这是 一个基于CAL(CAN Application Layer,CAN应用层)的子协议,用于产品部件的内部网
络控制。其后,CANopen协议被移交给CiA协会,由CiA协会管理、维护与发展。1995

年,CiA协会发布了完整的CANopen协议;至2000年,CANopenJl办议已成为全欧洲最重
要的嵌入式网络标准[91。CANopcn协议就是将CANIq络中通讯数据的组建和传输进行标 准化,并给用户很大的自由度,允许用户随时添加自己所需要的新功能。CANopen协议
主要有以下内容110l:
?

以对象字典为核心概念,用来定义设备和通讯的相关参数与各类操作之间的接 口,其操作均需对对象字典进行访问。

◆针对数据流量需要和实时性要求的不同,定义了用于过程数据通讯(PDO)和服务
数据通讯(SDO)两种主要的通讯模式。

?定义了状态管理、节点保护和特殊标识符分配(DBT)等网络管理服务和应急对 象、时间标记同步信息(SYNC)预操作对象。

1.4课题的提出及意义
1.4.1课题的提出
CANopcn协议在国外己有很多方面的应用,受到了足够的重视【l¨。在欧洲,CANopcn

协议已被广泛的应用于医疗装置中,并进一步扩展应用到保安控制系统中;在美国, CANopcn协议己经成为装载机械和公共运输设备的协议标准,同时也应用于嵌入式系统

的控制。目前国外已有许多大公司开发YCANopen软件和硬件产品,比如:Northhampton 公司的CANopen开发工具,Downers Grove公司的CANopen控制模块,Elkhart公司的CAN
open开发工具和软件代码;还有一些公司开发了基于CANopen协议的组态软件和配套硬 件下载工具,比如:Micro
loper。

Control公司的uCAN.open.er和Philips公司的CANopen Deve

CAN总线在我国的应用已经比较广泛,从工业现场、过程控制到楼宇电子设备,但 是普遍停留在比较低层次的应用上,即简单的应用CAN控制器、CAN总线收发器完成
CANbus的一些简单应用,并且都是自己定义的一些简单的应用层协议,没有和国际的 标准CAN高层协议接轨。一方面这是因为应用的场合比较简单,要求不高;另一方面,

CAN总线高层协议(如CANopen)国内这方面的研究比较少,应用也比较少,即使应用
的话,也是使用现成的国际大公司的内嵌CANopcn协议的控制器产品,而没有自主开发

广西j4乒硕士学位论文

蓉于CANopen协议的分布式控制习0睫的研究

的产品,不能拥有自己的完整C√6峋pen协议源代码嗍。所以需要进行自主创新,解决自
主知识产权问题,加强我国CAN总线高层协议标准化的进程113J。 之所以选用CAN总线作为系统模块总线;是由于CAN总线为系统的实时性、可靠性 和易管理性提供了保障,相较于同等性能的其它总线技术也是一种技术成熟,成本低廉 且有多家芯片、国际机构和标准支持的总线技术【131。本文针对目前国P龟CANopen协议的
发展现状,结合分布式现场总线控制的要求,开发基于不同控制器的主、从节点,通过

CAN总线集成在一起,设计稳定可靠的,结构灵活并便于裁剪和扩充的,与有关国际标 准兼容的高性能价格比的控制系统。整个系统采用模块化设计,便于对系统进行裁剪和 扩充以满足不同层次用户的需求,同时也化解了系统复杂性便于用户的维护与使用。 1.4.2课题的意义 结合分布式控制系统的要求,以CANopcn高层协议为基础,开发一个现场总线网络 系统,实现了标准CAN总线应用层上的软件开发。不仅使设备与国际标准相接轨,还大 大提高了网络的运行效率,使各模块具有了较强的通用性和功能扩展性,对国内的应用 中大多把精力放在硬件之上的底层软件开发,少有使用上层软件协议的习惯,具有一定
的推动意义,提高了应用水平,减少了开发周期。

1.5课题的任务
课题的目的是设计出架构简洁、技术成熟的基-于CANopen应用协议的分布式现场总 线控制系统如图1.1所示。该系统具有良好的开放性、互操作性、可扩充性、可靠性,并

且性价比优越。以该系统为基础,仅仅通过完善总线节点类型、强化软件功能,就可以 构建更加复杂的现场总线控制系统。

图1.1分布式现场总线控制系统
Figt.1 Field bus ConU'oi System


墓于CANopen协议的分布式描明哪辱确乞的研究

具体设计此系统的步骤如下: 1.在PICl8控制器上移植CANopcn从节点协议,外扩数字、模拟量输入输出功能, 实现从节点的开发。 2.在DSP控制器上移植CANopcn主节点协议,外扩LCD显示、键盘输入、PC机监 控功能,实现主节点的开发。 3.将从节点,主节点组成分布式控制系统,设计出两个实验来观察整个网络和各 个节点的运行结果。 根据课题任务,论文具体章节的内容安排如下: 第一章简要介绍本课题研究的背景和意义
第二章浅析CANopcn协议的核心内容

第三章CANopcn网络中从节点的开发
第四章CANopcn网络中主节点的开发

第五章基于CANopen网络分布式系统实验结果 第六章总结了论文的主要内容、研究成果及意义,展望了需要解决的问题



广西大学喊士掌位论文

墓于CANopen协议的分布式控制系统的研究

第二章CANopen应用协议剖析

2.1概述
CAN协议包括CAN2。0A和CAN2.0B两部分内容,只定义了数据链路层和物理层,缺 少应用层和网络管理部分,用户可以根据实际应用开发自己的应用层协议。目前基于
CAN的应用层协议有:DeviceNet、SDS、CA[,/CANopen等。所有的CAL(CANApplication

Layer)都得到C认(CAN 现。

in

Automation)的支持。本文采用CAN2.0B和CANopcn应用层协

议,组成~个完整的网络协议,CAN2.0B主要由硬件实现,CANopcn主要由软件编程实


2.2

CAN总线
CAN总线概述

2.2.1

控制器局域网(CAN)为串行通信协议,其应用范围很广,从高速的网络到低价位
的多路接线都可以使用CAN,其传输速度可以达到lM/s。

CAN技术规范是建立在国际标准组织的开放系统互联模型基础上的,目的是为了在
任何两个CAN仪器之间建立兼容性,可是,兼容性有不同的方面,比如电气特性和数据 转换的解释。为了达到设计透明度以及实现柔韧性,CAN被细分为不同的模型结构层次。 其模型结构只有3层,即只取OSI底层的物理层、数据链路层和应用层。由于CAN的数据

结构简单,又是范围较小的局域网,因此不需要其它中间层,应用层数据直接取自数据 链路层或直接向链路层写数据。结构层次少,有利于系统中实时控制信号的传送【151。
2.2.2

CAN总线的分层结构

CAN作为串行通信协议,能有效地支持具有很高安全等级的分布式实时控制。为了 达到设计的透明度以及实施的灵活性,根据ISO/OSI参考模型,CAN被细分为以下不同
的层次:

1.数据链路层(Data

Link

Layer)
Link

?

●逻辑链路控制子层(LLC,Logical

Contr01);



墓于CANopen协议的分布式控翻系统的研究

?介质访问控制子层(MAC,Medium Access Contr01):
2.物理层(Physical Layer)

具体的层结构及各个层里所实现的功能如图2.1所示。

图2.1 CAN的ISO/OSI参考模型的层结构
Fig.2.1 CAN Layer Structure of ISO/OSI Model

2.2.3

CAN总线报文传输、、

CAN的报文有2种不同的帧格式【3】:标准帧和扩展帧。标准帧含有11位标识符,扩 展帧含有29位标识符。他们都可以传输以下4种不同类型的帧: ●数据帧:携带数据从一个发送节点到一个接收节点。 ?远程帧:它被从一个节点发送出去请求发送具有相同标识符的数据帧。 ?错误帧:在总线错误检测时由任意节点发送的帧。 ?过载帧:在相邻数据帧或远程帧之间提供附加的延时。 数据帧是CAN总线的核心。各个节点之间需要共享、交换、传输数据都是通过数据 帧完成的。CAN的标准数据帧可包含44位至108位的数据,扩展数据帧可包含64位至128 位的数据。按照数据流编码的不同,最多23个填充帧可被插入到标准数据帧中,最多28

广西大粤明日E士奄邑1立截吁≮

蓉于CANopen协议的分布式描镰l膏:统的研究

个填充帧可被插入到扩展数据帧中。因此,最大的数据帧长度为131位标准帧,156位扩 展数据帧。组成标准/扩展数据帧的比特位区域以及他们的位置如图2.2所示。


起始位仲裁区域控制位

.数据区
图2.2 CAN数据帧格式

CRC位

确认结束

Fig.2.2 The Structure of Data Frame

起始位标志着数据帧和远程帧的起始,仅由一个显性位组成。只在总线空闲时才允 许站点开始发送信号。所有的站必须同步于首先开始发送报文的站的帧起始前沿。 标准帧和扩展帧的仲裁域是不同的。在标准帧里,仲裁域由ll位标识符和RTR位组 成。在扩展帧里,仲裁域包括29位标识符、替代远程请求位(SRR)、标识符扩展位(IDE)、
扩展帧格式远程发送请求位(RTR)。 控制域由6位组成,其中DLC占.4位,表示数据域代码长度,另2位保留。数据域由 发送数据组成,它可以为O.8个字节,每字节包含8位。

循环冗余码(CRO域包括了CRC序列和CRC界定符。CRC序列对帧起始、仲裁域、
控制域和数据域进行循环冗余校验。

应答域长度为2位,发送节点发送两个包含应答间隙和应答界定符。在应答域里,“隐 性’’位。当接收器正确地接收到有效的信息时,接收器就会在应答间隙期间向发送器发 送一“显性"位以示应答。
停止域为帧结尾,由7个隐性位组成。


远程帧是一种在工程中非常常用的通讯方式。通过这种方式,本地节点可以向另外

的具有相同标识符的节点请求数据。请求到的数据可以由该节点自己接收,也可以用别
的节点接收,只要他们有相同的标识符。

2.3

CANopen应用协议剖析
CANopen协议概述
in Automation)协会针对CAN协议的不完整性而定义

2.3.1

CANopcn协议是由C认(CAN

出的一个更高层次的协议一应用层协议。一个CANopcn设备模块可分为3部分,如图2.3 所示。通信接口和协议软件用于提供在总线上收发通信对象的服务;不同CANopen设备
间的通信都是通过交换通信对象来完成的,这一部分直接面向CAN控制器进行操作。对

象字典描述了设备使用的所有数据类型,通信对象和应用对象;对象字典位于通信程序 和应用程序之间,用于向应用程序提供接口。应用程序对对象字典进行操作,即可实现


基于CANopen协议的分布式控制系统的研究 CANopcrt通信。 它包括功能部分和通信部分,通信部分通过对对象字典进行操作实现

CANopcr通信; 而功能部分则根据应用要求来实现【161。
CAN


通信接口
PD0 SDO

对象字典

应用程【序
设备子协议

I/o
-1.

特殊功能对象

数据类型 通信列裳
应I用对象

NMT对象


实现

图2.3

CANope]【放备模型

Fi92.3 CANoI圮n Device Model

在CANopcnl网络系统中每个节点都有唯一的一个对象字典,而且每个节点的对象字 典都具有相同的结构,但具体的内容要根据不同的设备而定,包含了描述该设备及其网 络行为的所有参数。CANopcn协议还定义了4种报文(通信对象),用于对不同作用的信 息进行处理,分别为管理报文(Ⅻ订T)、服务数据对象(SDO)、过程数据对象(PDO)
和预定义报文或特殊功能对象。各部分将在下几节详细介绍。

2.3.2主节点和从节点的概念
在CANopenl网络中,主节点(Master)负责各种网络管理,并对网络中的通讯做合

理的调度。主节点主要的功能是:初始化时控制从节点的状态;程序运行中间启动或终 止从节点,或改变从节点的状态;通过SDO通讯对对象字典的参数进行读取和修改;监视 从节点的运行状况和是否发生错误(即进行节点保护);由从节点中获得相应的信息和运 行状态;启动和终止SDO通讯;发送SYNC报文;提供分配特定标识符(DBT)等网络管
理的服务。

从节点(Slave)主要负责底层的网络通讯和控制任务。每个从节点只完成属于自己 范围内的特定任务,进行实时数据的传输(PDO通讯),响应主节点发送的管理信息帧, 对自己负责的底层设备进行数据采集和控制。 2.3.3过程数据对象(PDO)
过程数据对象(Process
Data

Object-PDO)用来传输实时数据,借助于COB—ID

(Communication Object Identifier),它将数据从一个生产者(Producer)传到一个或多个消费

者(Consumer)。数据传送限制在O到8个字节,不需要额外的协议开销。由生产者发送的 PDO称为发送PDO(TPDO),同样消费者接收的PDO称为接收PDO(RPDO)。PDO的接收
10

|l于CANopen协议的分布式控制习U瓷的习"宅

不需要消费者的确认。TPDO和RPDO最多可以各自定义512个通信、映射参数。一个简 单的CAN0p钮设备支持4个PDO[16】【171。 每个PDO在对象字典中用2个参数描述:PDO通信参数和PDO映射参数。 1)PDO通信参数:包含哪个COB.ID将被PDO使用,传输类型,禁止时间和定时器
周期。

2)PDO映射参数:包含一个对象字典中对象的列表,这些对象映射至I]PDO里,包
括它们的数据长度(以位数的形式)。生产者和消费者必须知道这个映射,以解 释PDO内容。


图2.4显示了将对象字典中的入口映射到PDO中的过程【1羽

图2.4对象字典的内容映射到PDo
Fi92.4 Mapping
of Object Dictionary Entries into


PDO

2.3.4服务数据对象(SDO)
服务数据对象(Service
Data

Object)通过使用索I(Index)和子索弓I(Sub-index),使客

户机能够访问设备(服务器)对象字典中的项。

SDO采用客户一服务器模型来传送数据,数据的发送和接收访问通常由客户机启 动,由服务器为之服务。每个CANopcn设备必须有一个SDO服务器,这样才能访问它的 对象字典。SDO的发送需要两个不同的COB.ID:一个是客户到服务器的请求,另一个
是服务器对客户的响应。也就是说,SDO是确认服务类型【幡171。SDO的基本结构如图2.5。 SDO有两种传送机制:加速传送(Expedited transfer)-最多传送4个字节数据。分段传送 (Segmented transfer):传送数据长度大于4个字节。

广西大学司E士掣q立铽咒≮

基于CANopen协议的分布式控制系统的研究

字:Wo

字节1 索引

字节2
子索引

字节3-7
,Ic,Ic木宰

SDO命令字节

图2.5 SDO基本结构

Fi92.5 SDO命令字包含如下信息: 1)下载/上传(Download/upload)

Structure of SDO

2)请求/应答(Request/response) 3)分段/加速传送(Segmented/expedited transfer) 4)CAN帧数据字节长度 5)用于后续每个分段的交替清零和置位的触发位(Toggle bit)
SDO中实现了5个请求/应答协议:启动域下载(Initiate Domain Download),域分段

Segment),启动域上传(Initiate Domain Upload),域分段上传 (Upload Domain Segment)和域传送dF.I.L(Abort Domain Transfer)。
下载(Download Domain

2.3.5特殊功能对象
特殊功能对象包括同步对象(SYNC)、时间戳对象(Time Stamp Object)和紧急事件对 象(EMCY)。

同步对象(Synchronization Object)由生产者通过广播的形式周期性的发出,该对象将 提供基本的网络时钟。SYNC报文除了COB.ID外,不携带任何数据。
时间戳对象(Time Stamp Object)为应用设备提供公共的时间帧参考。由时间标记发

生器周期性地发送时间标记报文,报文中包含日期和时间两种数据。它也是基于生产者 .消费者模型的。
紧急事件对象(Emergency Objec0在设备发生内部错误的情况下触发,并且由生产者

发送到设备上。它很适合用于中断类型错误的警报。每个错误事件的紧急事件对象只发 送一次。 2.3.6网络管理对象(NMT)
网络管理包括启动(Boot-up)、节点保护(Node Guard)、寿命保护(Life Guard)和心跳 报文(Heartbeat)。 1.CANopen启动过程

在网络初始化过程中,CANopen支持最小化的启动过程。 程可以用图2.6所示的节点状态转换图来表示【171[191。
12

CANopen最小化启动过

广西大胄翰炙士酋邑位荫吁≮

基于CANopen恸吨叉的分布式控制膏漱的研究

42.6 CANopcn最小化启动节点状态转换图
Fig.2.6 State Transition Diagram for CANopcn Minimum Boot-up Node

乱眦b.Node

图中括号内的字母表示处于不同通讯状态下那些通信对象可以使用:
Guard,c.SDO,d.Emergency,e.PDO,£Boot-up.

状态转移(1.5由Ⅻ涯T服务发起),NMT命令字(在括号中):
1)Start Remote node(0x01) 2)Stop Remote node(Ox02) 3)Enter Pre—Operational State(Ox80) 4)Reset Node(0x81)

5)Reset Communication(Ox82)
设备初始化结束,自动进)kPre.Operational状态,发送Boot-up消息 在任何时候NMT服务都可使所有或者部分节点进入不同的工作状态。NMT服务的 CAN报文由CAN头(cos.ID=0)和两字节数据组成;第一个字节表示请求的服务类型 (1吼仃command specifies),第二个字节是节点ID,或者0(此时寻址所有节点)。 仅支持最小化启动的设备叫最小能力设备。最小能力设备在设备初始化结束后自动 进入预操作状态。在这个状态,可以通过SDO进行参数配置和进行COB.ID分配。 设备进入准备状态后,除了Ⅻ订T服务和节点保护服务(如果支持并且激活的话)外,
将停止通讯。 2.节点保护

通过节点保护,主站可以确定从站是否被激活以及从站所处的状态,其实现方式是: 主站向所保护的从站发送一个远程帧,从站则向主站发送一个包括其状态信息的字节作 为响应。若从站没有在规定的时间内响应或其操作状态不正确,则有可能从站发生错误;

毫戈产CANopen倒n义的分布式控制系统的研究

同样的,从站也可通过检测主站发送的远程帧之间的时间间隔来确定主站是否发生错
误。 3.寿命保护

作为节点保护的另一个选择,寿命保护也可以充当节点监控服务的角色。与节点保 护相比,主站向所保护的从站发送周期性的远程帧,从站则向主站发送一个包括其状态 信息的字节作为响应。若从站没有在规定的时间内响应或其操作状态不正确,主站则被 告知错误发生;同样,从站也能检测到主站的丢失。
4.心跳报文

一个节点可被配置为产生周期性的被称作心跳报文(Heartbeat)的报文。它是基于生 产者/消费者模型的,报文结构为COB.ID加上一个字节的状态信息。当一个Heartbeat节 点启动后,Boot-up报文是它的第一个Heartbeat报文。Heartbeat消费者通常是NMT.Master 节点,它为每个Heartbeat节点设置一个超时值,当超时发生时采取相应动作。 2.3.5对象字典的介绍
对象字典(Object Dictionary)是CANopen协议中的核心概念,其他的各种通讯模式和

相关网络管理都通过访问对象字典来实现【l 7J【l

9‘。

CANopcn网络中每个节点都有一个对象字典。对象字典包含了描述这个设备和它的
网络行为的所有参数。通过访问它可以得知各节点的状态,确定网络的通讯模式,选择

相应的网络管理,与输入输出端口相接、存储具体应用中的输入输出数据。 对象字典是一个有序的对象组,每个对象采用一个16位的索引值(Index)来寻址,为 了允许访问数据结构中的单个元素,同时定义了一个8位的子索iJi(Sub.index)。在每个索
引下,子索引入口参数的类型和属性可能不同[371。

CANopcn聩J络中通过SDO通讯对对象字典进行读写访问。进行读访问,系统操作采 用默认模式;进行写访问,系统根据用户的需求改变相应的操作模式。对象宇典中对不

同的参数规定不同的访问方式只读方式(I的),只写方式(WO),读写方式(WR)等。
一个节点的对象字典是在电子数据文档(EDS:Electronic
Data

Shee0中描述或者记

录在纸上。不必要也不需要通过CAN.bus“审问’’一个节点的对象字典中的所有参数。 如果一个节点严格按照在纸上的对象字典进行描述其行为,也是可以的。节点本身只需 要能够提供对象字典中必需的对象(而在CANopcn规定中必需的项实际上是很少的),以 及其它可选择的、构成节点部分可配置功能的对象。对象字典的入口参数(Entries)最多 可以定义65536个,每个入口下可以有256个子索引。 CANopen对象字典的通用结构如表2.1所示

14

|;于CANopen协议的分布式控制习∈统的研究 表2.1 CANol把'n对象字典的通用结构
Tab.2.1 General CANopen Object Dictionary structure

索引
0000 0001-001F 0020—003F 0040—005F 0060一007F 0080一009F

对象
未使用

静态数据类型
复杂数据类型 制造商规定的复杂数据类型 设备子协议规定的静态数据类型 设备子协议规定的复杂数据类型 保留 通讯子协议区域

00A0-0FFF
1000一1FFF

(如设备类型,支持PDO数目等)
2000一5FFF 6000一9FFF A000一FFFF

制造商特定子协议区域 标准的设备子协议区域 (如DSP-401 I/O模块子协议等)

保留

CANopen由一系列称为子协议的文档组成【20】
通讯子协议(Communication profile),描述对象字典的主要形式和对象字典中的通讯

子协议区域中的对象,通讯参数。同时描述CANopcn通讯对象。这个子协议适用于所有
的CANopcn设备。


还有各种设备子协议(Device profile),为各种不同类型设备定义对象字典中的对象。 目前已有5种不同的设备子协议【20】【211。设备子协议为对象字典中的每个对象描述了它的

功能、名字、索引和子索引、数据类型,以及这个对象是必需的还是可选的,这个对象
是只读、只写或者可读写等等。它定义了对象字典中哪些OD对象是必需的,哪些是可

选的;必需的对象应该保持最少数目以减小实现的工作量。可选项(在通讯部分和与设
备相关部分)可以根据需要增加以扩展CANopcn设备的功能。如果需要的项超过了设备 子协议中可以提供的,在设备子协议中已预留由足够空间提供给厂商的特定功能使用。

对象字典中描述通讯参数部分对所有CANopcn设备(例如在OD中的对象是相同的, 对象值不必一定相同)都是一样的。对象字典中设备相关部分对于不同类的设备是不同
的。
2.3.6

CANopen预定义连接组

为了减小网络的配置工作量,CANopcn定义了强制性的缺省标识符(CAN.1D)分配 表。这些标识符在预操作状态(Pre.operation)下可用,通过动态分配还可修改他们。
CANopcn设备必须向它所支持的通讯对象提供相应的标识符。缺省ID分配表是基于1l

位CAN.ID,它包含一个4位的功能码部分和一个7位的节点ID(Node.ID)部分。如图2.7
所示。

15

基于CANopen协议.的分布式控制习漱的研究
10





























功能码

!悟上Tn
H,试上”

图2.7预定义连接集ID
Fig.2.7 Predefined Connecttion ID

Node.ID由系统集成商定义,例如通过设备上的拨码开关设置。Node-ID范围是1到 127(0不允许被使用)。 预定义的连接集定义T4个接收PDO(RPDO),4个发送PDO(TPDO),1个SDO(用2 个CAN.ID),1个紧急对象,1个节点错误控制(Node—Error-Contr01)ID。也支持不需确认 的NMT-Module.Control服务,同步和时间标记对象的广播。缺省D分配表如表2.2所示。
表2.2 CANopcn预定义主/从连接集CAN标识符分配表
Tab2.2 Assignment of CAN identifiers in the CANopen Predefined/Slave Connection

0000 0001

0010 0001
0011

000H—- 080H 1005H。1006H,1007H 100H 1012H.1013H 08 1H-OFFH 10 14H.10 15H 181H一1FFH 1800H
201H一27FH 1400H

PD04(接受) (发送/服务器) SDOl对象

SD01对象

0100 0101 0110 01ll 1000 1001 1010 1011 1100 1110

281H-2FFH 30 1H-37FH 38 1H-3FFH
40 1H-47FH

1801H
140 1H 1 802H 1402H

481H-4FFH 50 1H-57FH 581H一5FFH 601H一67FH 701H一77FH

1803H 1403H 1200H 1200H 1016H,1017H

(接受/客户机)
NMT

ERROR对象

|l于CANopen协议的分布式扫明日习0兜的研究

第三章CANopen网络中从节点的开发
在任何控制系统中,都要通过测量装置获取环境和相关的输入参数,然后执行控制 算法,作出相应的控制决策,启动执行设备来实现对系统的控制。 CANopcn网络中的从节点(Slave)主要负责底层的网络通讯和控制任务。每个从节 点进行实时数据的传输(PDO通讯),响应主节点发送的管理信息帧,对自己负责的底层
设备进行数据采集和控制。

3.1从节点的硬件设计
3.1.1从节点的硬件结构



基于CAN总线的从节点遵从如图3.1所示的结构

图3.1从节点的硬件结构

主控制器单元是整个节点的控制中心,通过访问CAN控制器来实现对CAN总线的访 问;同时,控制具体功能单元来实现测量或控制功能。主控制器一般根据节点所需实现

的功能的复杂程度和技术需求来选择,可以是单片机,DSP处理器或其他高档次的CPU。

CAN通信单元由CAN总线驱动器构成,提供CAN控制器与物理总线之间的接口,
决定了总线终端,总线长度和节点数,是影响总线网络通信性能的关键因素之一。 输入和输出单元由输入单元和输出单元构成,实现节点在控制系统中的各个应用功 能,如:数据采集,输出控制,参数修改等,也是节点设计过程中相对灵活的部分。 3.1.2主控制器单元
主控制器是基于PIClgF458单片机设计,由主芯片、振荡器电路、复位电路、电源 电路和ICD2接口电路构成。

1.主芯片的介绍
17

广西大掣蛹瞳士掌位论文

基于CANopen协议的分布式删j0自乞的习阳电

主芯片选用的PICl8F458单片机【21】是美国微芯公司(Microchip)推出的产品,采用16 位的类RISC指令系统,指令周期短,处理能力强,运算能力高,可以不用外扩存储器就 能很好地完成大量的数据通讯和满足通信协议的要求,PICl8F458单片机片内集成了 A/D转换器、内部EEPROM存储器、比较输出、捕捉输入、PWM输出、12C和SPI接口、 异步串行通信田gJSART)接口电路、.CAN总线接口电路、FLAH程序存储器读/写等强大 的功能。芯片功能强大,I/Ol二l驱动能力强,可以直接与LCD液晶显示器接口连接,设 计电路简单可靠。其中单片机PICl8F458片内集成的可寻址的通用同步/异步收发器模块 和CAN控制模块可以方便地实现工业现场的数据通讯功能,具有很好的应用前景,其主
要功能包括: ?1536字节的RAM

?32Kb的FLASH,其中1Kb可专用于USB缓冲区
●256字节EEPROM数据存储器 ●可支持RS232、RS485及LIN串行接口的USART模块

?支持12C和SPI通信的主控同步串行端口 ?10位模数转换器,精确度高达1LSB,配备多达8条输入通道 ?两个模拟比较器
●具备16位数据捕捉和分辨率的捕捉/比较/PWM模块

●增强型捕捉/比较/PWM模块,有死区控制和故障保护输入
●4个定时器(3个16位,1个8位)

●可编程欠压复位及低电压检测电路 ?增强型在线调试功能,最多可加入三个硬件断点 2.主控制器单元电路的设计 一个系统要想工作最起码要有供电电源。控制器单元电路的电源部分是由硅桥、三 端稳压集成芯片LM7805,三个滤波电容,一个二极管及一个电阻组成。如图3.2所示, 输出的5V电源电压是核心电路的供电电源。
U3Ⅸ7∞5CT


暮:p12:470 研兰 强严i…』量
图3.2主控制器单元电源电路原理图
Fi93.2 Circuit of System Power
18

g-西大胄明炙士掣啦论文

基于CANopen协议的分布式搁制习臼晓的萄”己

单片机的复位电路是易受干扰的敏感部分,因此在设计复位电路时,既要保证整个 系统的可靠复位,又要考虑复位电路具有较好的抗干扰能力。在许多单片机应用场合需 要设置人工复位开关,以便在单片机运行出现死机的情况下,利用人工复位开关强行迫 使单片机复位,使程序重新开始运行。人工复位的实现,就是单片机在执行程序期间, 在MCRL复位端加入一个低电平信号就会令其复位。控制器单元电路的复位部分如图
3.3(a)所显,是由电阻R1和R2、二极管D、电容C及复位按钮K组成。其作用有上电复位

功能,在复位按钮未被按下的情况下,给单片机加电,当VDD上升到规定1.乱1.8V时,
就会产生一个复位信号,需经一定的延时,才会使单片机复位。此时电阻R1对于引脚内 部电路起到限流保护作用。电路还有人工复位功能,单片机在执行程序期间,只要在人 工复位端加入一个低电平信号,就会令其复位。当按钮按下时,在复位端就会产生一个 低电平的复位信号。 单片机内部的各种功能电路绝大多数是由数字电路构成的。数字电路的工作过程, 尤其是时序逻辑电路的工作过程.,离不开时钟脉冲信号,即时间基准信号,每一步细微 的动作都是在一个共同的时间基准信号驱动之下完成的。PIC单片机设计了4种类型的时 基振荡方式可供选择:标准的晶体振荡器谐振器振荡方式XT;高频的晶体振荡器谐振 器振荡方式HS(4MI-Iz以上);低频的晶体振荡器谐振器振荡方式LP(32.768kHz);外
接电阻电容元件的阻容振荡方式RC。设计如图3.3(b)所示,选择了频率为20MHz的外部 时钟电路,振荡方式选为HS方式。PICl8F458单片机的单指令周期为10s,可以满足系 统的要求。 选用的PICl8F458芯片,通常使用Microehip公司推出的MPLAB集成开发环境(IDE)、 HTSOFT公司的H1.TECH PICCl8编译器、MPLAB ICD2在线调试器进行开发[2211231。,



图3.3控制器单元复位和震荡器电路原理图
Fi够.3 Circuit of System.Clock

19

广西大曹瞻炙士掌位论文
3.1.3

|;于CANopen协议的分布式控_融j0兜的研究

CAN通信单元

PICl8F458芯片内部集成了CAN控制器,执行的是Bosch公司规范的CAN2.0A/B协 议。PICl8F458的CAN控制器是用于与其他外围设备或单片机进行通信的串行接口,这 种接121/协议能在噪声环境下进行通信,具有良好的抗干扰能力。此模块由协议驱动和信 息缓冲与控制组成。CAN协议驱动CAN总线上接收和发送信息的所有功能,信息首先装 载到某个相应的数据寄存密,然后再发送,通过相应的控制寄存器可以检测状态与错误 信息。在CAN上检测到的任何信息都要进行错误检查。然后与过滤器进行比较,判断是 否应该接收和存储到2个接收寄存器之一。CAN控制器通过第3571脚CANTX和第3671脚

C朋岍Ⅸ引脚与CAN收发器相连。
本设计中收发器采用TMieroehip(微芯)公司生产的具有高抗干扰能力的MCP2551 接口芯片。MCP2551是一个可容错的高速CAN收发器件,是CAN协议控制器和物理传 输总线的接口。MCP2551为CAN协议控制器提供差分收发能力,它完全符合ISO.11898 标准,它的工作速率高达1Mb/s。为了有效地增加通信距离和系统的抗干扰能力,系统 中使用光电隔离芯片6-N137将控制部分和接口部分隔离【24】。

CAN总线驱动器MCP2551输出CAN CAN总线接口模块部分如图3.4所示

H、CAN

L差分信号,通过插座接入物理线路。

图3.4 CAN总线接口电路

Fi驴.4 Circuit of CAN Communication Interface

从图中可以看出为了增强CAN总线节点的抗干扰能力,PICl8F458的CAN_ZXD和
CAN_RXD并不是直接与MCP2551的TXD和RXD相连,而是通过高速光电耦合器r6N137

后与MCP2551相连,这样就很好地实现了总线上各CAN节点之间的电气隔离。MCP2551
的CANH和CANL引脚上的120Q的电阻为匹配总线阻抗,起着相当重要的作用,忽略掉 它们,会使数据通信的抗干扰性、可靠性大大降低,甚至无法通信【24】。

基于CANopen协议的分布式稻哺I系统的研究

3.1.4输入和输出单元 输入和输出单元共有四个接口完成四种功能:DI(数字量输入)、DO(数字量输出)、

AI(模拟量输入)、AO(模拟量输出)。下面将对四个接口模块一一进行说明。朋接口模块:
单片机内集成的AD转换器提供2路10位A/D功能,输入范围为0.Vcc,为单级性能输入形 式。DI接口模块:利用单片机的SPI串行外设接口扩展了两路开关量输入通道。AO接口 模块:在工业现场中,常常需要用到D/A转换器输出模拟信号,利用SPI串行外设接DA 芯片实现D/A转换。DO接口模块:PORTD的2个引脚与2个发光二级管相连,输出为0为 点亮,输出为1为熄灭,从而进行简单的开关量输出。

3.2从节点的软件设计
3.2.1从节点的软件模型
我们依据从节点的硬件模型,CANopen应用协议,以及系统的实际情况,提出了从 节点的软件模型,如图3.5所显示:

图3.5从节点的软件模型
Fi93.5 Software Frame of Slave Node

从节点软件由4部分构成;CAN通信部分、应用层协议、对象字典和应用。在每个
21

广西大曾明炙士掌位戳咒≮

墓于CANopen协议的分布式控制系统的研究

从节点中,CAN通信部分和应用层协议部分是完全相同的。对象字典具有相同框架,而 仅有过程数据区和相关联节点数据区有区别,我们把其分做成模块,在编写不同从节点 软件时仅对摸板做相应的修改,就可以完成这些部分的编写。各个从节点的应用部分的 程序因节点功能的不同而有所区别,只好采用独立编写的方式。这样在编写从节点系统 软件时,将这几个区别不很大的模块进行简单地修改,就可以完成大部分工作;然后针 对具体应用进行少量地编程,就可以完成整个节点软件的编写。
3.2.2

CAN通信程序设计

CAN基本通信就是完成对CAN控制器的管理与操作,实现数据收发,错误处理等工 作。它们主要由以下程序来实现。
1.CAN控制器初始化

CAN控制器初始化只有在复位模式下才可以进行,初始化包括工作方式的设置,波 特率寄存器BRGCON的设置,发送、接收滤波寄存器的设置,发送、接收屏蔽寄存器的 设置,发送、接收控制寄存器的设置,发送、接收数据的数据长度代码寄存器的设置和 初始发送、接收的数据,以及中断允许寄存器PIE3和中断高优先级寄存器IPR3的设置。
初始化CAN控制器步骤:

1’)设置CANCON寄存器中的CAN操作方式请求位为lxx,I要PREQOP--Ixx。
2)判断CANSTAT寄存器中的操作方式状态位是否为100,置100进入配置方式。

3)设置BRGCONx寄存器,即配置正确的波特率,同步跳转宽度、采样次数。 4)设置发送邮箱和接收邮箱的标识符、邮箱数据长度、屏蔽寄存器、滤波寄存器
以及初始化邮箱的数据区。

5.)设置CANCON寄存器中的CAN操作方式请求位为000,ii0REQOP=000,使CAN
模块进入正常工作方式。 6)判断CANSTAT寄存器中操作方式状态位是否为000,置000进入正常工作方式。 2.CAN接收程序

PICl8F458有2个具有多重滤波器的接收缓冲器和1个单独信息组合的缓冲器。接收 邮箱初始化时,要设置其标识符及相关的屏蔽寄存器、接收优先级等。MAB寄存器接收 所有来自总线的下一条信息,RXBO和RXBI则接收来自协议驱动的完整信息。MAB接 收所有信息,但是只有满足过滤条件的信息才被传送到鼬mx中。 3.CAN发送程序 PICl8F458有3个发送邮箱缓冲器,每一个发送缓冲器的数据长度可以设置为1—8个 字节长度,信息发送的具体步骤如下: 1)初始化发送邮箱。 2)设置相应的发送请求位为1,即到D①xCONbits.TXREQ=I(x=I,2,3)。 3)若CAN总线允许发送,则启动发送最高优先级信息。

基于CANopen饲n叉的分布式控稚Ⅱj0晓的研究

4)若发送成功贝qTXREQ被清零,TXBxlF被置1,如果中断被使能,则会产生中断。

5)若信息发送失败,则ⅨtEQ保持为l,并置位相应的状态标志。
4.波特率的设置 在CAN总线上的所有节点必须有相同的波特率。CAN协议使用“反向不归零"(Nl屹) 编码,这个编码不能对数据串的时钟进行编码。因此,接收节点的时钟必须与发送节点 的时钟同步。


为了与以后的主节点正常通讯,设定整个总线上比特率为78.4kbps,时间当量Tq为

0.8烽,由此可得位时间为1/(78.4k*0.8炉16,标称位时间的具体分配:同步时间段为1Tq,
传输时间段为8Tq,相位缓冲时间段1为5Tq,相位缓冲时间2为2Tq,由以上参数配置寄 存器的值:BRGCONl=0x07j BRGCON2=0xBC,BRGCON3=0x01。
5.

COB.D的设置

COB.ID的设置主要是对单片机的消息接收过滤器标准标识符寄存器RXFnSIDH、
RXFnSIDL和发送缓冲器标准标识符寄存器TXBnSIDH、TXBnSIDL进行配置,其中高字

节寄存器组8位存放消息标志(COB.ID)的高8位,低字节寄存器组的高3位存放消息标志
(COB.ID)的低3位。所以SIDH=(COB—ID)/8;SIDL=(COB.ID)低3位*32。 从节点设计中需要发送的对象有SDO(客户端)对象、心跳报文对象、PD01对象、 PD02对象。需要接收的对象有SDO(服务器)对象、NMT对象、PD01对象、PD02对象。 具体的COB.ID设置如下表3.1: 表3.1 COB.ID对应单片机接收发送寄存器的设置
Tab3.1 Assignment of CAN COB-ID in the PIC I 8 Register
TXBnSI DH

TXBnSI
DL

报玻剡
SDO(客户端发) 心跳报文(发)

COB—ID 580+NODE ID 700+NODE ID 180+NODE
ID

作用 从节点向主节点发送SDO响应报文

BO
E0

xO x0 xO
xO RXFnSI DL

从节点向主节点发送心跳报文
从节点向总线发送PD0l报文 从节点向总线发送PD02报文 作用

30

PD01对象(发)
PD02对象(发)

50 RXFnSI
DH

280+NODE ID COB—ID 600+NODE ID 000 180+NODE IDn

报文类型
SD0(名沪,端收) NMT对象(收) PDOt对象.(收)

CO 00 30 50

xO OO yO yO

从节点接收莹节点发送的SD0请求报文 从节点接收主节点发送的咖T报文

从节点接l衄D01报文
从节点接l西于D02报文

PD02艨(收)

280+NODE IDn

3.2.3应用层协议程序设计 应用层协议根据CANopcn所制定的应用协议来编写,完成对接收报文的解析处理,
2,

广西大学硕士掌位铽譬≮

基于CANopen协议的分布式删蜀.躐的研究

以及组装待发送的报文。 1.接收报文的解析处理 当来自CAN总线的报文的COB.ID与从节点预定义的消息接收过滤器标准标识符相 匹配,从节点接收报文,再对接收到的报文进行分析,送到执行相应的子函数。相应的 子函数包括接收SDO信息帧子函数、接收SYNC信息帧子函数、接收PDO信息帧子函数、、
接收NMT信息帧子函数。
1)CO COMM SDO


RXEvent:当节点收到的是主节点SDO信息帧时,根据要求

对本节点的对象字典进行读写操作。
2)CO COMM SYNC

RXEvent:当节点收到来自主节点的SYNC信息帧时,进行 RXEvent:当接收到的是PDO信息帧,根据报文内容,参照对

相应的同步动作。
3)CO COMM
PDO

象字典的映射参数进行分析并存储。
4)CO COMM NMT

RXEvent:当节点接收到的是主节点NMT信息帧时,根据报

文内容进行本节点的状态转换或启动、停止操作。 以SDO接收报文的解析处理子函数为例,首先判断SDO命令字,如果是下载命令字,

先赋对象字典索引的入口地址,通过对象字典索引的入口地址和子索引将参数写入对象 字典,完成后组装响应报文并发送。如果是上传命令字,先赋对象字典索引的入口地址, 通过对象字典索引的入口地址和子索引读取对象字典中的参数,完成后组装响应报文并 发送。下面是部分代码:
if(CO

ERPOPERAT)态状OPERAT)// =etatSarepoTMN_ 作操或作操预在否是判


{switch(CO_RXCAN[RXQINDEX].Data.BYTE[0]>>5)
case

倒SDO命令字
//如果是SDO下载命令字

1:

pODE=CO_FindEntryInOD(奉((unsigned hat幸)&CO—RXCAN[RXC INDEX].Data,

CORXCAN[RXC

INDEX].Data.BYTE[3]);

//对象字典索引的入口地址

CQTXCAN[TXC_INDEX].Data.BY[I]=CQRXCAN[RXC

tNDEX].Data.BY【l】;

CO_TXCAN[TXC_INDEX].Data.BY[2I=CQRXCAN[RXQINDEX].Data.BY[2I;CQTX CAN[TXC INDEX].Data.BY[3]=CQRXCAN[RXQINDEX].Data.BY[3];
CQTXCAN[TXC_INDEX-].Data.DWORD[1】=0;

CQTXCAN[TXC_INDEX].Data.DWORD[II=CQOD_Write(pODE,(void幸)&CORXCA
N[RXC INDEX].Data.BY[4],i);
STATE=O; CO

//写对象字典内容;组装响应报文内容

TXCANscnd(TXC..INDEX);



∥发送响应报文 //如果是SDO上传命令字

esackaerb 2:

pODE=CO_FindEntryInOD(木((unsigned int木)&CO—RXCAN【RXC_INDEX].Data,
24

广西大学訇nb掌位嵌踅定

基于CANopen协议的分布式控制系统的研究 //对象字典索引的入口地址

rot



CO OD

Read(pODE,(void?)&CO_TXCAN[TXC_INDEX].Data.DWORD[1],4);

//读对象字典内容
CO_TXCAN[TXC_INDEX].Data.BY[1]=CO RXCAN[RXC INDEX].Data.BY【l】;
CO

TXCAN[TXC INDEX].Data.BY[2]=co RXCAN[RXC_INDEX].Data.BY[2];CO_TX

CAN[TXC INDEX].Data.BY[3]=CO_RXCAN[RXC_INDEX].Data.BY【3】;
CO

TXCAN[TXC_INDEX].Data.DWORD[I】=0; //组装响应报文内容

CO_TXCAN[TXC_INDEX].Data.DWORD[1】呵et;
co TXCAN[TXC INDEX].Data.BY[0]=0x43

S咖=0;‘

I((4-pODEo>length)“2);
//发送响应报文

CO_TXCANsend(TXC_INDEX); 2.组装待发送的报文

break;}

依据发送源标志区的置位情况,确定需要发送的对象类型,并按照协议规定的格式 构造待发送的CAN报文,再将构成的CAN报文存入对应的存储区域,并发送。其构造函
数有:
1)CO COMM PDO 2)CO COMM SD0

TXEvcnt:将PDO信息帧封装成CAN信息帧格式发送 TXEvent:当主节点要求访问对象字典,从节点将SDO信息

帧封装成CAN信息帧格式,并由此发送。
3)CO COMM NMTE TXEvent:响应接收到的主节点的节点保护信息帧,发送心 跳报文。


3.2.4对象字典部分的程序设计
对象字典的内容除了包括CANopcn协议的必须项外,还包括了可以由主节点调用的

各功能模块和参数设定项。它的正确配置和使用,是保证整个CANopcn网络正常运行的
核心,是节点完成其预定功能的必要保证。 对象字典的设计包括对象字典的组建、规划和操作三部分。

对象字典的组建采用C语言在头文件中编写,通过Struct(结构)语句实现对象字典中 的索引、子索引等内容的寻址。通过对象字典实现通讯参数与具体应用模块参数的互相 映射,以及实现设备功能的调用,在此基础上,使系统软件实现了模块化设计,便于设 备功能裁减和扩展。对象字典的Struct语句设计如下【30】【31J:
Type def struct{ unsigned int unsigned char unsigned char index; subindex;

//定义对象字典的索引 //定义对象字典的子索引


attribute;

,/定义对象字典的读写控制字

广西大掣明炙士擘啦嵌%≮
unsigned char length;

羞西产CANopen协议的分布式控制系统的研究

//定义对象字典的数据内容长度 //定义对象字典的数据内容

ROM void?pData;} CO_objectDictionaryEntry;

对象字典的规划按,照CANopcn协议规定的格式完成,每个节点的对象字典都具有相 同的结构,但具体的内容要根据不同的设备而定,包括描述这个设备和它的网络行为的 所有参数。对象字典的2000H.5FFFH为制造商特定子协议区域,6000H-9FFFH为标准的 设备子协议区域,它由C认在CANopcn设备和应用协议<CANopen
Device and Application

Profiles)中规定其内容。通过为对象字典中定义的唯一的16位主索引和8位子索引,就 可以方便地访问对象字典中的对象。这样,应用程序可以通过对象字典识别数据内容, 并将要发送的数据按照对象字典的相应类型按照帧格式发送出去,完成数据传输。 对象字典的操作是CANopcn协议软件的核心,通过对象字典实现网络间参数的映 射,从而完成各种数据的处理。对象字典的操作需要编写对象字典解码子函数、读对象 字典子函数和写对象字典子函数来完成对象字典的操作。对象字典是系统通讯接口和应 用程序间的中介,对象字典的操作函数有:
1)对象字典的解码子函数CO FindEntrylnOD0;通过它可以得到报文的索引和子

索引,确定对象字典的内容。 2)读对象字典子函数CO
内容。
OD

OdaeR.的典字象对取读数函码解据根; WriteO;根据对象字典解码函将参数写入对象字典。

3)写对象字典子函数CO 3-2-5应用程序设计

OD

应用部分负责管理控制从节点的具体功能单元,实现变量输入,控制输出等功能。 DI(开关量输入)应用程序:开关量采用SPI方式通过74HCl65输入。程序包括系统初 始化程序,SPI接收子程序。DO(数字量输出)应用程序:程序先配置PORTDCI为普通 I/O端口,并设置PORTD为输出端口,这样在程序中,赋值0、I给PORTD的任一引脚, 与其相连的发光二级管点亮、熄灭,从而进行简单的开关量输出和逻辑控制输出。趟 (模拟量输入)应用程序:程序采用中断方式完成对直流电压的A/D转换功能。程序包 括系统初始化程序,中断服务程序。AO(模拟量输出)应用程序:程序的作用是能通 过SPI方式控制DA芯片输出D/A,程序包括系统初始化程序,等待应答程序,向芯片输.
出D/A数据程序。

3.2.5系统主程序 基于单片机的系统主程序具有典型的嵌入式软件特征(图3.6)。从节点启动后,进行 相应的系统初始化(包括通讯初始化),之后软件进入一个死循环,在该循环中执行过程 数据对象的更新、具体应用功能的执行以及CAN报文的发送与接收等操作。在这里,不

基于CANopen协议的分布式控制系绞的研究 同的从节点, 其执行功能或有不同,但是他们的CAN通讯应用层协议一致。

图3.6节点主程序流程图
Fi93.6 Main Program Flow Chart of Slave Node

初始化的过程主要包括两方面:一方面是对设备通讯参数的初始化包括节点ID等信 息;另一方面是对各通讯对象的初始化(图3.7).



/,



开始

.)






l洲遁讹嚣‰栅

初始化 l 卜心跳服务、Boot—up、TSDO、RSDO





初始化
RPDO、TPDO

l映射过程数据对象


/厂



(\

结束





图3.7通讯初试化的流程图 Fi93.7 Communication
Initialzation Programe Flow Chart

广西,胡羹硕士学位论文

基于CANopen协议的分布式控制系统的研究

通讯程序是从节点初始化结束之后,进入程序循环,执行包括CAN报文通讯在内的 操作口8】。m3.8给出了从节点通讯操作流程图。设备程序循环地进入该流程,并进行CAN 通讯操作,主要包括发送设备启动报文、设备心跳服务报文,接收NMT报文,发送和接 收SDO,PDO,对报文内容进行解释和处理等内容。

图3.8通讯程序流程图
Fi93.8 Communication Program Flow Chart

3.3从节点的实例开发
在实现了从节点的开发后,针对具体应用功能,说明两个实例从节点的设计。

广西大学啁叵士dq立说吁≮

基于ChNopen协议的分布式控制系统的研究

3.3.1温度检测节点 温度检测节点的m为6,由从节点和温度传感器组成。温度传感器DSl8820采用片 内测温技术(Dallas专利技术)实现温度测量。温度的测量采用单根信号线,单总线既传输
时钟,又传输数据,而且数据传输是双向的。 1)节点的对象字典的编写
#def'me ODD TPD0 PAR I Tmm l 1000
OD OD OD

//PDO通讯参数描述

ENTRY(0x640 1,OxO 1,ATTR_RO,ODE_Read_Analog_Input[0]), ENTRY(0xlA01,o】【oo,ATTR_ROIATTR_ROM,ODE_TPDO_Mapping_NoOfEntries),’

ENTRY(0xlA01,0x01,ATTR_ROIATTR_ROM,ODD_TPDO_MAP一1—1,) #define ODD TPDO MAP l 1 0x640101 10/门呼DO映射参数描述 PDO报文是在对象字典中用通讯参数和映射参数来描述的。此例中映射到TPDO里 的对象在对象字典中的索引为6401,子索引为01,数据长度为2。 2)具体功能部分的编写
void

ReadTemperatureO

//温度读取函数

{reset_pulse0; WriteOneChar(0xCC); WriteOneChar(0x44); reset_pulse0; WritcOneChar(0xCC); WriteOneChar(0xBE); bufferl[0]=ReadOneChar0; bufferl[1]=ReadOneChar0; //夥&过读序号列号的操作 ∥读取温度寄存器等前两个就是温度 //读取温度值低位 //读取温度值高位 //跳过读序号列号的操作

//启动温度转换

nnn=bufferI[0];i=bufferl[I];仁(i<<4)/(n加>>4);}
main{..........

/牍取温度值
//主函数

If(BusyADC0一O){
ReadTemperatureO;ODE_Read_Analog_Input[0】=t; ’

//读取温度值

ff(CQNMTopcratingState===NMT_OPERATIONAL)
{CO_TPDO(I).WORD[0】-ODE_Read_Analog_Input[0];CO_TPDOsend(1);}//发送PDo
节点通过传感器DSl 8820读取温度,并将温度以PDO对象方式传输到CAN总线。

3.3.2温度调节节点 设定温度调节节点的ID为7,其DO模块外接状态显示灯显示系统加热\降温状态,其 AO模块外接执行设备控制系统温度。
1)节点的对象字典的编写

墓于CANopen恸嗽的分布式控制习。晓的研究
OD

ENTRY(0x3000,0x00,A'ITR RW[ATTR_ROM,Temp),

//设定温度
//状态

OD_ENTRY(0x3 100,0x00,ATTR_RO,Status), OD_ENTRY(0x3200,0x00,ATTR_RWW,RemoteTemperature),
#define ODD RPDO PAR COB ID 0 0x40000286L

//实时温度

//RPDO的COB.ID为0x286

OD_ENTRY(0x 1 60 1,0x00,ATTR_ROIATTR_ROM,ODE_RPDO_Mapping_NoOfEntries),

OD_ENTRY(0x1601,0x01,ATTR_ROIATTR_ROM,ODD—RPDO№P
#define ODD RPDO

0 1,

MAP

0 l 0x32000010L

//RPDO映射参数描述

OD_ENTRY(0xlA00,0x00,ATTR_ROIATTR_ROM,ODE_TPDO_Mapping_NoOfEntries), OD_ENTRY(0xlA00,Ox01,ATTR_ROIATTR_ROM,ODD—TPDO MAP
0 1,

#define

ODD TPDO

MAP 0

1 Ox3 1000008L

//TPDO映射参数描述

PDO报文是在对象字典中用通讯参数和映射参数来描述的。此例中RPDO的COB—ID 为286,TPDO的COB.ID为187。映射参数包含映射到PDO里的对象在对象字典中的索引 和子索引,以及对象的数据长度。映射到I冲DO里的对象在对象字典中的索引为3200, 子索引为oo,长度为2;映射到TPDO里的对象在对象字典中的索引为3100,子索引为00, 长度为1。另外某些相关变量也由对象字典所描述,可以通过SDO对象传输方式进行下 载修改或上传观察,此例中的设定温度就由对象字典主索713000子索7100描述。
2)具体功能部分的编写
void User

processlmslsr(void){

∥用户的lms周期的中断服务程序

if(RemoteTemperature<Temp){DigOut_COOLER=0;DigOut_HEATER=1;)
else

if(RemoteTemperature>Temp){DigOut_COOLER=1;DigOut_HEATER=O;>

else{DigOut_COOLER=0;DigOut_HEATER=O;>//根据PDO接受值温度决定系统状态
CO

TPDO(O).BYTE[0】=STATUS_BYTE;

//状态值赋TPDO对象

if(ODE_TPDO_.Parameter[0].Tram>一254)CO_TPDOsend(0);)
void main(void)

//TPDO对象发送

{.. if(DigOut_HEATER=I){RDl=1;Delay(500);RDI=O;)
else

//亮状态灯

if(DigOut_COOLER=1){ROE=l;Delay(500);RD2=0;}

else{RDI=0;RD2=0;}

¨) 在用户的程序中需要将温度以RPDO对象方式接收,根据与设定温度的比较决定状 态值亮状态灯,并以TPDO对象方式发送。

广西大攀硕士掌位论文

|H产CANopen协议的分布式控制膏£统的研究

第四章CANopen网络中主节点的开发
在基于CAN总线的控制系统中,上章介绍的是从节点,构成一个完整的分布式子系 统还需要设计开发主节点。主节点主要的功能有:通过卜H订T通讯在初始化时控制从节点 的状态,程序运行中间启动或终止从节点,或改变从节点的状态;通过SDO通讯对对象
字典的参数进行读取和修改;通过心跳报文通讯监视从节点的运行状况和是否发生错 误;通过PDO通讯由从节点中获得相应的信息。

4.1主节点的硬件设计
4.1.1主节点的硬件结构 主节点不同于一般从节点,其具有的外设包括:人机交互界面、数据存储、以及与
上位机通信等。根据这些功能的要求,我们选用北京瑞泰公司的ICETEK.F2812.A实验 箱。它是由核心板和运动控制外围电路构成,核心板的CPU是TMS320F2812,除此之外,

板上还扩展64K的RAM,4路DAC7617转换等;外围电路包括液晶显示,PS2dx键盘等【191。
图4.1是ICETEK.F2812.A的原理框图。

图4.1 ICETEK-F2812-A的原理框图
Fig.4.1 ICETEK-F28 12-A Hardware Schmatics

广西大葺明炙士学位说曙≮

基于CANopen协议的分布式控制系统的研究

4.1.2微处理器的介绍
微处理器选择TMS320F2812

DSPs,刑S320F28lx系列DSP是基于TMS320C 28xx内

核的定点数字信号处理器。处理器上集成了多种先进的外设(如图4.1所示),为基于CAN 总线的分布式控制系统中的主节点的实现提供良好的平台。,归纳起来,TMS320F2812
主要硬件性能如下【25】: 1)高性能静态CMOS(Static CMOS)技术


150MHz(时钟周期6.67ns)

●低功耗(核心电压1.8V,I/O口电压3.3V) ●FLASH编程电压3.3V

2)高性能32位中央处理器 3)片内存储器


128K×16位的Flash存储器

◆L0和L1:两块4Kx 16位的单周期访问随机存储器(SARAM) ?H0:一块8Kx 16位的单口随机存储器 ?M0和M1:两块1Kx 16位的单口随机存储器 ?可在片内扩展RAM存储空间 钔3-@32位的CPU定时器 5)电机控制外设 ●两个事件管理器(EVA、EVB) 6)串口外围设备

◆两个串行通信接口(SCIs),标准的UART

?增强的eCAN2.0B接口模块
?

多通道缓冲串行接口(McBSP)和串行外围接口模式

7)16通道12位的ADC ?2x8通道复用输入接口 ?两个采样保持器 ?单通道最快转换时间:200ns
●流水线最快转换周期时间:60ns

8)最多有56个独立的可编程、多用途通用输N输出(GPIO)引脚
TMS320F2812系YUDSP不但运行速度高,处理功能强大,并且具有丰富的片内外围 设备,便于接口和模块化设计,其性价比高,特别适用于有大批量数据处理的测控场合
[261。

32

基于CANopen协议的分布式控制习臼篦的研究

4.1.3人机界面介绍 人机界面包括两部分[271,一为键盘输入,二为液晶显示
键盘部分的介绍:TMS320F2812DSP的扩展存储器接口(EMIF)用来与大部分外

设进行连接。这一接口提供地址连线,数据连线和一组控制线,键盘电路通过将扩展存
储器接口与外设键盘相连来实现。如图4.2所示为键盘的设计原理:

捌IT▲t7:ot




/‘
I教餐镶存 、






脚眦Ess[a5:o】
CS





I I,---,

CⅡ—_
脚LT▲M争H

睾幸亍参位鸯存鼍I


址 舔








D爨lI

涪簟

aP曲

图4.2键盘的设计原理
Fi94.2 Design ofKeyboard

显示部分的介绍:液晶图形显示为128"64象素。由于液晶显示模块相对运行在 150MHz主频下的DSP属于较为慢速设备,连接时需要考虑数据线上的信号等待问题。 由于DSP为3.3V设备,而液晶显示模块属于5V设备,所以在连接控制线,数据线时候需
加电平隔离和转换设备。如图4.3所示为液晶屏的设计原理:

捌盯^【7:O】 触湘嘲ES3【15:O】

I…一l l…’l


DBC7:O】




使麓 奢褥嚣逸释 冒存嚣片选<左舅) 謇存基片选(右爿) 诿写

D▲T▲盼:01
t tS CSl CS2

C嚣

t 鼍 再

■重

I/'f



L∞


CP曲

辩●

图4.3液晶屏的设计原理
Fi94.3 Design of LCD

33

广西大学訇ne捌q芝论文

童西产CANopen仞嗽的分布式控制勇0曰明由研究

4.1.4通信部分 通信部分包括两个方面,一是实现与各从节点的通信,这方面的通信通过CAN网络 来实现;二是主节点与上位机进行数据交换的功能,这方面的通信通过RS232串口实现。 TMS320C28x系?UDSP芯片中的增强型CAN模块(简称eCAN),符合CAN2.0B协议标 准,可用在电噪声环境下与其他CAN控制器的串行通信中,方便地实现稳定性强、鲁棒 性好的串行通信接口。eCAN模块的增强功能主要表现在邮箱数增加至1132个,每个邮箱 都可编程配置为接收邮箱或发送邮箱,且每个邮箱都可设置各自独立的接收屏蔽码,使 标识符匹配检测更加灵活。另外,eCAN模块的网络通信速率最高可达1MbPs,并具有 睡眠、挂起等低功耗模式和CAN总线唤醒功能【25J。 CAN接口电路利用F2812内部的CAN控制器连接到CAN总线。其中,CANTX和
CANRX接F28 1 2的CAN管脚,CANH和CANL接外部CAN总线。F28 1 2内的CAN控制器

必须通过CAN驱动收发器才能与外部的CAN控制器进行通信。PCA82C250是CAN驱动
芯片,它是F2812的CAN控制器和物理总线间的接口,它可以提供对总线的差动发送能

力和对CAN控制器的差动接收能力,具有抗恶劣环境下韵瞬间干扰、保护总线的能力。 6N137是高速光耦,对F2812和物理总线进行光电隔离,以降低不同节点的高共模电压引
起的串扰甚至对器件的损坏,提高系统的可靠性。120欧姆电阻作为CAN终端匹配电阻。 RS232串口通讯部分,板上驱动电路中的芯片MAX232芯片已完成将输出电平转换 成异步串口电平的工作。所以只要将DB9端与PC机的COMl端相连就能实现硬件连接。

4.2主节点的软件设计
4.2.1主节点的软件模型
尽管主节点比从节点实现的功能更多,但总体看,主节点在基于CAN控制系统也是 一个节点,数据的交换主要还是通过CAN总线完成,CAN通信还是占主导地位。因为主

节点中没有设计对象字典,所以软件模型结构可简化为两层,应用接口层和硬件驱动层。 硬件驱动层实现CAN控制器的初始化、CAN报文的发送和接收、以及错误处理等。应用 接口层包括主节点报文处理程序和应用程序两部分。 4.2.2硬件驱动层部分的程序设计 1.eCAN模块初始化程序 F2812的eCAN模块在使用前必须进行初始化p2]。图4.4显示了模块初始化过程。在
配置模式激活之后,进行位定时配置,确定CAN通讯的波特率。最后必须确保CCE为0,

否则不能退出配置模式。模块的初始化完成后进行邮箱的初始化。主节点在CAN总线上 的报文传递,实际上是通过各邮箱的数据寄存器完成的。邮箱初始化过程如图4.5所示。

蓉于CANopen协议的分布式招明时习0晓的习”宅

图4.4 CAN模块初始化流程图 Fi94.4 CAN Module Initialzation Program Flow Chart

图4.5邮箱初始化流程图 Fi94.5 CAN Mailbox
Initialzation Program Flow Chart

广西大学啊炙士掣啦靛黯《
2.CAN中断接收和发送程序

基于CP峭open协议的分布式控制系统的研究

中断是CAN通讯里面经常使用且非常重要的操作方式。中断的处理过程如图4.6所 示[331。通常在接收邮箱中断服务程序中,读数据寄存器里面的数据。在发送邮箱中断服 务程序中,写数据寄存器以备下一次发送。需要指出的是,当某一个邮箱设置为自动应 答邮箱,用来应答远程帧请求时,若要改写他的数据寄存器,必须先将控制寄存器 (CANMC)内的改变数据请求位(CDR)设为1,然后设置目标邮箱号(MBNR),然 后才能改写数据寄存器。改写成功以后,必须将CDR位设为O,才能在下次收到远程帧
请求时将数据发送出去。

图4.6 CAN峙'断服务流程图
Fi94.6 CAN Interrupt Service Program Flow Chart

3.波特率的设置

为了保证不同节点传送到总线上的数据的比特长度、比特率时间参数相一致,实现 多个节点在同一网络上的时间同步,在eCAN模块工作之前必须对其时间参数进行配置。 CAN协议中有关的比特长度的规定【34】如图4.7所示:比特长度分为三部分,同步阶段 (SYNCSEG)、时间阶段1(TSEGI)和时间阶段2(TSEG2)。其中,SYNCSEG用于指示CAN 总线上的比特起始位置,长度等于一个时间量子(Tq),时间量子的值与DSPs的时钟频率 (SYSCLK)有关,满足式Tq=BRP/SYSCLK。TSEGl用于指示比特上升沿的时延,TSEG2 用于指示比特下降沿的时延,SJW用于调节TSEGl和TSEG2的宽度,采样点用于指示

eCAN模块对该比特的采样位置,由TSEGl和TSEG2的相应值决定。eCAN模块的比特长
度B满足式B=.TSEGl+TSEG2+1;传送数据的比特率满足式Bi=SYSCLK/(BRP*B)。

广西大学硕士掣啊止说哆巴

墓于CANopen协议的分布式控制j0睫的研究

….一Tq-…一

‘采样点

图4.7比特长度的规定 Fi94.7
SetofBps

实际应用中,在进行eCAN模块时间参数配置时,CAN总线上的比特长度和比特率
通常是给定的,需要参照eCAN模块的时钟频率,依据公式确定BRP、TSEGl和TSEG2 的值。 本系统中,K:AN模块时钟为150MHZ,时间量子Tq=0.8us,同步时间段为1Tq,TSEGl 为13Tq,TSEG2为2Tq,比特率为78.4kbps,BRP=-120,所以位时序配置寄存器应该按

如下设置:CANBTC.bit.BRP=119;CANBTC.bit.TSEG2=1;C触惦TC.bit.TSEGl=12;
这样设置,同一个局域网内所有CAN节点的比特长度和比特率才能一致【2妣91。
4.

COB—ID的设置

(IDE)决定比较位的数目,30位(伽)决定接收屏蔽使能位使用否,29位(AAM)
决定自动应答模式还是标准发送模式,28位.18位存放标准模式下的消息标志(COB.ID), 28位.O位存放扩展模式下的消息标志(COB.ID)。所以当邮箱不使用接受屏蔽使能位和 处于标准发送模式时,该邮箱MSGmc=(COB.ID)x 40000。

COB.ID的设置主要是对邮箱中的消息标志寄存器MSGID进行配置,MSGm的3l位

在与两个从节点相连的CAN网络中,主节点设计中需要发送的对象有SDOI(客户机) 对象、SD02(客户机)对象、NMT对象,需要接收的对象有SDOI(服务器)对象、SD02 (服务器)对象、NMTEl对象、NMTE2对象、PD01对象、PD02对象、PD03对象、PD04

对象。DSPs在eCAN模式下,有32个CAN邮箱可配置为接受或者发送模式,具体的配置


如下表:

广西大曹骗炙士掣啦论文

墓于CANopen协议的分布式控制系统的研究 表4.1 cCAN由g箱具体的配置

酬.1

Sct of eCan

Mailbox
作用

eCAN

邮箱号 邮箱O 邮箱1
邮箱2

MSGID

报文类型 SD01(服务器哆殳) SD02(服务器发)

COB-ID
600+NODE IDl

Oxl80x
0000 ,Oxl80y 0000 0x0000 0000 OxlC0x 0000 OxlC0y 0000 Ox060x 0000 Ox060y 0000

主节点向从节点l发送SD0请求报文

600+NODE

ID2

主节点向从节点2发送sDOi利t报文
主节点对所有从节点发送的删T控制报文

NMT对裳(发)
NMTEl对象(收) NMTEI对象(收) PD01对象(收)

0000
700+NODE IDl

邮箱16 邮箱17 邮箱18 邮箱19 邮箱20
邮箱21

主节点收到的从节点1睁D跳报文
主节点收到的从节点2的心跳报文 主节点收到的从节点1的TPD01报文 主节点收到的从节点2的TPD01报文 主节点收到的从节点1的TPD02报文 主节点收到的从节点2的TPD02报文 主节点收到的IDl从节点的SDO响应报文 主节点收到的ID2从节点白《JSDO响应报文

700+NODE

ID2

180+NODE

IDI

PD02艨(收)
PD03对裳(收)

180+NODE

ID2

0xOA0x
0000 0x0A0y 0000 Oxl60x 0000 Oxl60y 0000

280+NODE
280+NODE

IDI

PD04)艨(收)
SDOI(服务器收)

ID2

邮箱22 邮箱23

580+NODE

IDI

SD02(服务器收)

580+NODE

ID2

4.2.3主节点报文处理的程序设计
1.Boot-up报文处理

Boot-up报文是由从节点在预操作状态时发送的报文,通知主节点等待NMT状态报 文到来的信息。当主节点在中断服务程序通过邮箱动态分配判断接收到的报文为Boot-up 报文后,设置NMT报文发送标志,调用NMT报文发送函数使从节点进入操作状态 2.Heartbeat报文处理 Heartbeat报文是为了让主节点确定从节点当前状态,而由从节点定时发送的报文信 息。主节点通过自定义的时间窗检验从节点是否在规定的时间发送Heartbeat报文。为了 能够在液晶上实时地观察到各节点通讯是否正常。当主节点在规定的Heartbeat报文检测 时间内收到报文时,设置自定义的标识符,液晶显示程序的节点状态检测部分就会对标 识符进行判断,并显示当前节点的工作状态。
3.SDO报文处理

主节点的设计没有对象字典,对从节点的对象字典的操作需要通过发送SDO报文, 完成系统预定义的功能。当检测到键盘操作时,判断控制键功能后,就会根据需要启动 SDO上传/下载报文,对从节点的对象字典进行下载操作,能更新系统参数配置或者调用 某功能模块;如对从节点的对象字典的值进行上传操作。读取的对象字典的值通过液晶 进行显示;实现具体的按键操作。
4.NMT报文处理

基于CANopen协议的分布式控制系统的研究

测到键盘操作时,如判断是卜m盯服务,根据功能发送M瞅文对相应的从节点进行状
态控制,包括重启,停止等服务。 5.PDO报文处理

Ⅻ以T报文是主节点发送的网络管理报文,对系统的节点进行状态控制。当主节点检

PDO报文包含的是过程数据,大部分的模拟量、数字量、控制量都是通过PDO报文

进行传输。当主节点检测到有PDO报文接收标识位时,接收PDO报文,将读取的内容通 过液晶进行显示,实现对系统中通讯变量、控制变量的实时监测。 4.2.4应用程序设计 主节点的应用程序主要包括三个部分:键盘扫描,液晶显示和RS.232通信。下面分 别对这3部分进行详细说明。 键盘是人机界面的一部分,用户可以通过按下按键选择所需要的服务比如查看参 数,控制系统状态等。键盘的扫描码由DSPs的扩展地址0x108001给出,当有键盘输入时, 读此端口得到扫描码,当无键被按下时读此端口的结果为0。程序循环查询扫描码的值, 如有键盘输入产生,将扫描码转换成字符进行读取,注意在判断查询时要加入键盘去抖
部分。 液晶显示是人机界面的另一部分,实时地将各种参数例如输入值、输出值、控制值、

及系统的工作状态展示在用户面前,使用户对整个状况有一个直观的了解。液晶显示模 块的访问、控制是由DSPs对扩展接口的操作完成。控制口的地址如下:命令控制接口的
地址为0x108001,数据控制接口的地址为0x108003和0x108004,辅助控制接口的地址为

0x108002。在程序中显示数据,首先使用命令控制字选择操作位置(页数,列数)’然 后将待显示的数据写入液晶显示模块的缓存。将数据发送到相应数据控,0i/o接口。
RS.232通信可以实现主节点与上位机进行数据交换的功能,目的是使上位机记录整

个系统报文数据传输的过程。程序负责将CAN总线上的数据按时间先后记录下来,由 RS232串口传输至PC机,通过PC机显示接收到的数据。在CAN邮箱设置中要先设置邮箱 30使用接收屏蔽位,使能接收总线上所有类型的报文。程序先进行初始化SCI各控制寄 存器,完成后等待邮箱30接收标志位产生,一旦邮箱30接收数据,标志位发生改变,SCI 发送程序就将邮箱30的COB.ID,数据O.7一一赋给SCI发送数据缓冲寄存器进行发送, 发送完成后恢复标志位。上位机使用串口接收程序在设定相同的波特率情况下进行接收 进行监测。 4.2.5系统主程序
主节点在上电初始化后自动进入操作状态,等待从节点Boot.up报文,Heart.beat报

文和其他报文信息的到来,并做出相应的处理。此外可以在液晶屏上观测其显示的各节 点系统状态、不同类型的过程传输数据,还能通过键盘操作实现对各从节点的控制,包

广西大学蛹炙士掌位谴.文

蓉于CANopen协议的分布式控制系统的研究

括系统状态的转换和节点对象字典的读写。 主节点的系统主程序和从节点基本类似,都是一个循环检测程序。设备节点启动后, 进行相应的系统初始化(包括通讯初始化),之后软件进入一个循环,在该循环中执行过 程数据对象的更新、具体应用功能的执行以及CAN报文通讯等操作。 通讯程序的操作流程图如下图4.8.



44.8通讯程序的流程图
Fi94.8 Communication Program Flow Chart

4.3主节点的实例开发

CAN总线主节点的实例开发是针对与CAN从节点的两个实例组成的分布式系统的
开发。主节点能实现对整个系统的节点的控制和系统状态、运行状态、报文数据的监控。 部分程序代码如下:
void


User_ProcessImslsr(void){

∥用户的Ires周期的中断服务程序

CTRLCDLCR=STATUS;Delay(LCDDELAY); CTRLCDCR--0;Delay(LCDDELAY);

40

基于CANopen协议的分布式控制习∈统的习阳宅

CTRLCDLCR=OperateI

;Delay(LCDDELAY);

CTRLCDCR=0;Delay(LCDDELAY);
CTRLCDLCR=Operate2

;Delay(LCDDELAY);

CTRLCDCR=0;Delay(LCDDELAY); CTRLCDLCR=RemoteTemperature;Delay(LCDDELAY); CTRLCDCR=0;Delay(LCDDELAY); CTRLCDLCR=Temphi;Delay(LCDDELAY); CTRLCDCR=0;Delay(LCDDELAY);


//系统的温度、运行状态、各节点状态、设定温度液晶显示
…●●

scia_xmit(mbox20): …..,

//将整个系统的报文数据流发送到串口,PC机接收监控

void

main(void){

SDO_Dccode=Upload(0x3000,00,01);
(607).;

//请求SDOJ]艮务的类型CO_TXCANscnd //发送SDO请求服务报文 //处理SDO响应报文 t/处理节点l心跳报文

Temphi=ECanaMboxes.MBOX22.MDH.a11>>24; Opcmtel=ECanaMboxes.MBOXl6.MDH.a11>>24 Operate2=ECanaMboxes.MBOXl7.MDH.a11>>24

//处理节点2心跳报文

switch(DeboucigTimer){

c撇1000:
CO_TXCAN[NMT_MASTER].Data.BYTE[0]=NMT_ENTER_PRE_OPERATIONAL;


case

2000:

co

TXCAN[NMT MASTER].Data.BYTE[0】=NMT_ENTER_OPERATIONAL;
3000:

ease

co TXCAN[NMT MASTER].Data.BYTE[0】=NMT_RESET_NODE;}

CO_TXCAN[NMT_MASTER].Data.BYTE[1】_O; CO_TXCANscnd(NMT_MASTER);break;>//=种按钮,主节点发送对应类型的NMT对象 在lms定时器中断服务程序中实现液晶显示和报文数据流转发。在主程序中实现响
应按键发送NMT对象和接受处理SDO报文、心跳报文等功能。

41

墓于CANopen协议的分布式控制系统的研究

第五章基于CANopen协议的分布式控制系统实验结果
前面的章节先介绍了CAN总线的知识,并分别设计出了两种类型的节点,从节点, 主节点。本章将从节点,主节点组成分布式控制系统,设计出两个实验来观察整个网络
和各个节点的运行结果。

5.1温度测控系统实例的设计
基于CANopen协议的温度测控系统【35l如图5.1所示包含了三个节点,它们构成一个 CAN网络。其中有两个从节点分别实现温度的检测和温度的调节,一个主节点实现系统
的控制和监控。

温度检测节点由从节点和温度传感器组成。从节点发送测到的温度。温度调节节点 由从节点、状态显示灯组成。从节点接收到从温度检测节点发送的温度后,如低于设定 温度加热,高于设定温度降温,运行状态灯进行显示并发送运行状态。命令节点由主节 点组成。主节点接收从温度检测节点发送的温度和温度调节节点发送的状态,将其在液 晶屏上进行显示,并有按钮可以发送NMT对象对整个系统进行控制。主节点可以发送 SDO请求报文,修改、读取从节点的对象字典的参数(设定温度),将读取的参数在液
晶屏上显示。主节点还可以实现对系统的监控,可将CAN总线上的数据传输至PC机, 通过PC机显示报文数据流。

图5.1温度测控系统
Fi95.1 Temperature Control System

42

基于CANopen协议的分布式控制系统的研究

5.2温度测控系统实例的调试与结果
5.2.1不同设定温度下系统的状况 命令节点能从液晶屏中观测到系统的温度、运行状态、各节点状态、设定温度。运 行状态中02代表加热状态,01代表降温状态,00代表保持状态。温度调节节点能观测运 行状态灯。 1.在系统开始阶段,温度调节节点对象字典里设定温度值为20度。命令节点观测 到系统的温度在19.2l度之间变化,运行状态02、oo、0l不断变化,设定温度是 20度。温度调节节点的运行状态灯红、黄、灭间不断变化。如图5.2(a)所示:此 情况下温度在设定温度附近变化,所以系统运行状态也随之不断变化。 2.当按下键盘1,主节点发送对象字典写请求,修改设定温度为25度。命令节点观 测到系统的温度在19.21度之间变化,运行状态02,设定温度是25度。温度调节 节点的运行状态灯亮红灯。如图5.2(b)所示:此情况下温度在设定温度以下,所 以系统运行状态一直处在加热状态。 3.当按下键盘2,主节点发送对象字典写请求,修改设定温度为15度。命令节点观 测到系统的温度在19.21度之间变化,运行状态Ol,设定温度是15度。温度调节 节点的运行状态灯亮黄灯。如图5.2(c)所示:此情况下温度在设定温度以上,所 以系统运行状态一直处在降温状态。

测量运行限定 激状态激
图5.3(a)

测量运行限定 温度状态激

测量运行限定

温度状态激
图5.3(c)

图5.2不同设定温度下系统的状况
Fi95.2 System Operating Charactedstics
at

Different Temperature

命令节点通过按键能修改设定温度,说明主节点能对各节点的对象字典进行读写操 作,SDO对象传输正确。命令节点能实时地观测到系统的温度和运行状态,温度调节节 点能对应地变化运行状态灯,这些说明各个节点能实时地对过程数据对象进行传输,并 能根据对象字典对其映射参数和通讯参数的描述对其进行解析,PDO对象传输正确。

43

基于CANopen协议的分布式酬勇t统的研究
5-2.2不同控制命令下系统的状况 命令节点能从液晶屏中观测到系统节点的运行状态。 1.当按下键盘3,观测到液晶屏中两个从节点的状态字为7F,对应CANopen消息 语法说明每个从节点此时都处于预操作状态。
2.

当按下键盘4,观测到液晶屏中两个从节点的状态字为04,对应CANopcn消息 语法说明每个从节点此时都处于停止状态。 当按下键盘5,观测到液晶屏中两个从节点的状态字为05,对应CANopcn消息 语法说明每个从节点此时都处于操作状态。

3.

以上实验说明从节点的状态可以通过主节点的NMT报文进行控制。Nm对象、
Heartbeat对象传输正确。
5.2.3

PC机监控系统的报文数据流

PC机可监控系统报文数据流,下面将监控到的报文分类分析。以温度检测节点和温 度调节节点接受发送的报文为例分析系统运行状况。如图5.3所示系统传输数据过程: 1.温度检测节点发送报文过程为发送自启动报文后以周期为1s发送心跳报文,以 周期为lOOms发送PD01报文,发送数据为检测温度(19度、20度、…21度….)。 2.温度调节节点接收报文过程为接收到NMT报文命令后进入操作状态,不断接收
PD01报文。温度调节节点发送报文过程为发送自启动报文后以周期为1s发送心

跳报文,以事件触发方式发送PD00报文(发送数据为工作状态)
地址
706 286
706

长度
01 02 Ol 02 02

数据0


厢I
00

地址
000 236

长度
02 02 02 02 02

数据0.
, 01 19 19 20

月酝I
00 00 00 00 00

地址
707 107 707 187 187

长度
0l 0l Ol Ol 01

数据0. 00/
02 05‘一
00

00 19 05 20 19 00 00

N%报文


286 286

286 286

f报文 f(温度


|TPDc

236

19\
●●●

02

I…
286 286 286

286 706 286

02 Ol 02

21 05 19

00

02
02 02

21 20 19




1 I l

00 00 00

187 707 157

01 Ol Ol

0l 05 02

00

RPDo

报文 (温度)

淘度传感节点发趟}的报文

温度瑚I书节点接受的报文淘嬲■节节点发送的报文
图5.3系统传输数据过程

Fi95.3 Process of System Transmission data

从以上数据可以看出整个系统在运行过程中达到了满意的控制效果,实现了基于 CANopen协议的对象数据的交换,通讯传输理想。
44

广西大掣嘎士掌位馥吁≮ 5.3直流电机控制系统实例的设计

基于CANopen协议的分布式控镪Ij0宽的研究

基于CANopcn协议的直流电机控制系统如图5.4所示包含了两个节点,它们构成一

个CAN网络。控制节点由从节点、直流电机组成。从节点发送测到的电机转速给主节点, 并根据主节点发送的期望转速对电机进行实时PID控制。主节点将控制节点发送的电机 转速通过串口发送至lJPC机进行显示,将PC机设定的期望转速以SDO请求报文发送到控
制节点进行实时控制,实现人机交互。

图5.4直流电机控制系统
Fi95.4 DC Motor Control System


5.3.1直流电机控制系统中控制节点的设计
控制节点由从节点、直流电机组成。从节点是基于DSPs实验箱的设计,其ID为8。 直流电机带有速度反馈线路,反馈信号为方波脉冲,其频率与转速成正比(电机转动一 圈产生两个脉冲)。 控制节点的功能主要分两块,一是实现从节点的通讯功能,具体包括从节点将实时

速度以PDO对象方式发送给主节点。从节点接受主节点SDO请求报文,据此修改对象字 典里的控制参数:期望转速。二是实现直流电机的闭环控制,其设计原理图如图5.5所示。 从节点实时地通过速度反馈读取当前电机速度,根据当前速度和期望速度利用数字PID 控制算法程序控制输出PWM的脉宽,其发送的PWM波对直流电机的转速进行控制,从
而实现闭环调速控制。

43

广西大曹明炙士学位嵌昭≮

基于CANopen恸吨叉的分布式控制.系兢的研究

图5.5直流电机的闭环控制原理图 Fi驴.5 Control Principle Figure
of DC Motor

在软件上实现控制节点的程序主要分以下3个部分
1.从节点对象字典部分的编写 OD_ENTRY(0x3000,Ox00,ATTR_RWIATTR_ROM,SetSpced), OD_ENTRY(0x3 1 00,0x00,ATTR_RO,RealtimeSpeed),

//期望转速
//当前速度值

OD_ENTRY(0x l A00,0x00,ATTR_ROIATTR_ROM,ODE_TPDO_Mapping_NoOfEntries),.

OD_ENTRY(0x1A00,0x01,ATTR_ROIATTR_ROM,ODD_TPDQ衅旦j,
#define ODD TPDO

MAP

0 l 0x3 1

000008L胛PDO映射参数描述

PDO报文是在对象字典中用通讯参数和映射参数来描述的。此例中TPDO的COB—ID 为188。映射参数包含映射至IJPDO里的对象在对象字典中的索引和子索引,以及对象的 数据长度。映射到TPDO里的对象在对象字典中的索引为3100,子索引为00,长度为1。 另外某些相关变量也可由对象字典所描述,可以通过SDO对象传输方式进行下载修改或 上传观察,此例中的期望转速就由对象字典主索z313000子索引00描述。 2.通讯功能部分的编写
void User
CO




//用户的

//TPDO 当前速度值赋 】= [ETYB)0(ODPT_’象对 0 RealtimeSpeed;

if(ODE TPDO_Pararneter[0].Tram>=254)CO_TPDOsend(0);}

//TPDO对象发送

在通讯功能的程序中从节点需要将期望转速以SDO对象方式进行下载修改,以
TPDO对象方式发送当前速度值。

3.数字PD控制部分的编写 数字PID控制方法与模拟PID控制方法有些不同之处。模拟PID中,PID控制规律
如下公式(5.1):

|跌,;CANopen钓嵋叉的分布式控制习-躐的研究

∽=蛐m毒№魂+%警m。
其中:饰为比例系数,乃为积分常数,%为微分常数,‰控制常量。

仔?)

而在数字PID是把模拟PID引入计算机,用计算机实现PID控制规律。计算机控制是
一种采样控制,不能像模拟控制那样连续的输出控制量,所以公式(5.I)中的积分和

微分项不能直接使用,需要对其进行离散化处理。处理过程需要用到的变换公式这里就 不再一一列举,根据文【3卅得出增量式PID控制算法公式(5.2):
△“七=材t一甜I—l。AeI+Be.i}一l+CPI一2

(5—1)

其中‰为第k次采样时刻计算机的输出量,et为第k次采样时刻输入的偏差值,彳、‘
曰、C为各次偏差量的系数。 程序中我们采用一个全局变量,作为控制电机绕组电压的pwm波形的占空比,DSP 每秒钟从I/O端口读取直流电机转速。彳、B、C我们分别取彳=o.6,B=0.2,C=0.1。 数字PID控制算法程序如下:
void ...

PIDControl(mt rLint yk)
ek--rk-yk;

//rk、yk分别为当前速度值、期望速度



duk=kl宰ek+k2宰ekl们木elc2;
ek2=ekl;ekl=ek;

∥计算控制输出(kl、k2、k3为各次偏差量的系数)

if(duk>lO)duk=10; tz--(int)duk;

//幅度限制

p、Ⅵn.心
else

//计算当前占空比

if(pwm<O)pwm=0; if(pwm>99)pwm--99;}

5.3.2直流电机控制系统中主节点的设计 主节点是基于PICl8F458单片机的设计。主节点可将从节点发送的电机转速通过串 口发送至IJPC机进行显示,并将PC机发送的期望转速以SDO请求报文发送到从节点进行 实时控制,实现人机交互。 主节点接受PC机发送的期望转速并以SDO请求报文发送到控制节点的程序如下:
void interrupt

low_priority

LOW_ISR(void)

//中断服务程序

{if((RCIF一1)&&(RCIE一1))
{TMROON=l; TMRO=TMR0data; receive232[receive


//如果串口接收到数据 //使能TMl如

∥初始值重新赋值
接收数据并存储后, RCIF //;GERCR]tnuoC.零清动自
47

基于CANopen恸嗽的分布式控制习;统的研究
receive_count++;





If(Usfla萨1)

Usflag=0;
TXBOCON=Ox03; TXBOSIDH=OxCO; TXBOSIDL=OxCO; TXBODLC=0x08;

//接收到PC机串El中断标志 //,I=1转发再允许 //设置为发送最高优先级
//SID 1 0--SID3 //SID2-SID0 COB-ID=608

//发送数据长度为8字节 //发送的前4个字节

TXBOD0=0x2B;TXBOD I=0x00;TXBOD2=0x30;TXBOD3=0x00;

pointer=&receive232[0];TXBOD4=((*pointer++)-0x30)*l叭(幸pointer++)一Ox30);//期望速度
TXBOREQ=l; //请求发送 }

while(TXBOREQ一1);
if(CANreceive <

//等待发送成功

主节点将从节点发送的电机转速通过串口发送至lJPC机进行显示的程序如下:

—1)

//接收到来自

总线的数据

..fag=O;

galfeviecerNACN零AC清位志标收接//
//接收到的数据

send232[0】=RXBOD0; TXREG=RXBODO}

5.3.3直流电机控制系统中上位机的设计 在上位机端,要求开发一个界面清晰的应用程序,来对电机实时速度进行显示,并
可以设定新的电机期望速度。

系统的应用程序的开发有很多方法,本实验使用的是M公司提供的虚拟仪器专用开
发平台LabVIEW进行系统开发。在LabVIEW中具体利用VISA库实现串口通信、数据显 示的程序框图如下图5.6所示:

图5.6 LabVIEW程序框图
Fi95.6 Program Frame

ofLabVIEW

囊Z产CANopen协议的分布式控制习t统的研究

5.4直流电机控制系统实例的调试与结果
在直流电机控制系统实验中,通过上位机先后设定期望速度为70转,秒、40转/j眇、 80转/,秒。观测得到的电机实时控制的前面板和波形图如5.7所示:
黟渣
毫:

图5.7电机实时控制的前面板和波形图
Fi95.7 The Panel and Speed Oscillogram of DC

Motor Realtime Control

从实验结果中能得出以下结论:上位机能通过串口使命令节点修改系统中的电机期 望转速,说明主节点能对各节点的对象字典进行读写操作,SDO对象传输正确。上位机 能通过命令节点串口转发的数据,实时地观测到系统中的电机转速,这些说明各个节点 能实时地对过程数据对象进行传输,并能根据对象字典对其映射参数和通讯参数的描述 对其进行解析,PDO对象传输正确。所以,整个系统在运行过程中达到了满意的控制效 果,实现了基于CANopcn协议的对象数据的交换,通讯传输理想【加】。

49

g-西大掣瞻炙士掣q盘论文

基于CANopen协议的分布式控制膏瀛的研究

第六章结束语
基于现场总线的网络技术研究是自动控制领域发展的一个热点。在各种各样的工业 现场总线中,CAN总线具有成本低、速度快、实时性和可靠性较高等特点。CANopen 协议,它不仅定义了应用层和通讯子协议,也为可编程系统、不同器件、接口、应用子 协议定义了帧状态,为基于现场总线的全数字分布式控制系统的广泛应用和系统的一体 化管理提供了解决之道。基于CAN总线的以CANopcn为应用协议栈的分布式控制系统 的研究和实现,将会提高CAN总线应用中的底层软件开发水平。本文对基于两个不同 控制器上的CANopcn主、从节点协议的移植过程进行了详细介绍,并组成网络在分步 式控制系统得到初步验证,为以后实现基于CANopen协议的工程产品打下了良好的基
础。

综上所述,本文主要完成以下几方面的工作: 1.对CANbus高层协议CANopcn进行了仔细的剖析。
2.在PICl8控制器上编写CANopen从节点的协议,实现了PDO、SDO、NMT以

及Heartbeat对象的通讯,完成了基本的通讯和网络管理功能。在控制器上外扩 模拟、数字量输入输出功能,实现从节点的开发。 3.在DSP2812控制器上编写CANopcn主节点的协议,实现主节点的协议,外扩 液晶屏观测、键盘输入、PC机监测报文流功能,实现主节点的开发。 4.将从节点,主节点组成分布式控制系统,设计出两个实验分析了基于CANopcn、 协议的分布式控制系统的运行情况。 CANopen高层协议的功能十分丰富,本文只是对基于CAN总线的分布式控制系统 做初步的探讨,仍有待深入的研究,其中包括以下几个方面: 1.完善主节点的管理功能,使主节点可对网络进行动态设置,能对信息的标识符 进行动态分配;设置时间标记服务,使系统的同步具有更高的精度;当网络中 的节点数目增加或减少时,主节点对其进行标识。 2.从节点中对节点本身的错误进行监测和判别并进行进一步的处理;在没有主节 点的情况下对本节点进行初始化和状态设置。


3.研究CAN组网结构,从“一主多从"结构扩展到“多主”结构,真正发挥CAN 总线面向数据编码的特性。进一步开发CAN网络,能将CAN网通过网关连入
局域网和互连网。

墓于CANopen协议的分布式控制系统的研究

参考文献
f1】饶运涛,邹继军,郑勇芸.现场总线CAN原理与应用技术【M】.北京:北京航空航天大学出版社,
2003.

【2】邬宽明.CAN总线原理和应用系统设计口川.北京:北京航空航天大学出版社,1996 【3】Robert Bosch GmbH.CAN Specification
Version

2.0[EB].1991

【4】PHILIPS Semiconductors Incorporated.CAN SPECIFICATION[EB].1 991

【5】CAN基础知识D狙】.广州周立功单片机有限公司
【6】6

奖建文,林勇,韩江红.CAN总线通信协议的分析和实现阴.计算机工程,2002.28(2):219~220

【7】控制器局域网(CAN卜未来的工业微处理器串行通讯【z】.广州周立功单片机有限公司,1998
【8】宋晓强CAN bus高层协议CANopen的研究以及在模块化CAN控制器上的实现【D】.天津:天津
大学,2004 【9】9

Pro.Dr.Ing.Etschberger.基于CAN的较高层协议和子协议【z】.广州周立功单片机有限公司,1998
for

【10】H.Boterenbrood.CANopen:high—level protocol

CAN-bus[Z].2000


【1l】吕宁.CAN现场总线网络环境通讯协议研究与实现【D】.西安:西安电子科技大学,2004

【12】陈骥.基于CANopen高级协议和ED调度算法的电动汽车网络协议研究p】.天津:天津大学,2003
【13】刘莉.基于CANopen协议模块化CAN控制器的研究【D】.天津:天津大学,2003 【14】朴立华.基于CAN总线的远程监控系统分层设计研究田【D】.天津:天津大学,2004 【15】石磊.航空发动机分布式控制系统及CAN总线应用研究【D】.南京:南京航空航天大学,2007 【16]Vector-Informatik
GmbH.ProCANopen Manual

Version5.0.【OL】【M】.2001 Profile.CiA Draft
Standard 301 Version

【17】CANopy-Application
2002

Layer and Communication

4.02[Z].

【l

8】CANopeIl Object Dictionary(Software Manual).SYS TEC electronic GmbH[S].2003
DATA

【19]PICl8F458 【20]CiA

SHEET.Microchip Technology Inc[z].2005 4.0【S】.June
1999


DS?301,Version

[21】CiA DSP-401,Version 1.4【S】.Dec 1996 [22】刘和平等.PICl8FXXX单片机程序设计及应用【l咽.北京:北京航空航天大学出版社,2005 [23】刘建新,谭平.基于PIC 1 8F458的车载CAN总线仪表系统【J1.微计算机信息,2006(2)

【24】王帅字,张字河,郭萱.基于CAN总线伺服控制系统的设计及控制方法闭.北京理工大学学报,
2006.26(5):421,--424.


【25】Texas Instruments Incorporated.TMS320F2812 Digital signal Processors User Manual[f1.2003.7

【26】何衍庆,黎冰,黄海燕.可编程控制器编程语言及应用D订】.北京:电子工业出版社,2006.4
【27】瑞泰科技.ICETEK-F2812-A评估板硬件使用指导V2.00版本is].2004 【28】Tian Guangyu,Zhao Li-an,Han Xiaodong,Chen Quanshi.Hybridization of Fuel
City


CeIPower Train for

8us[j].EVSl9

Busan 2002 Evaluation of


【29】Dennis Doerfel,SuleimaaAbu-Sharkh.Performance Vehicle[J].EVSl9
Busan 2002

Low Cost Series Hybrid Electric

51

广西大学司nb掌位说曙≮
【30】Brian W.Kemigghan,Dennis M.Ritchie.The

基于CANopen协议的分布式控制习臼电的习门宅
C Programming

Languag[M1.北京:机械工业出版

社,2004 【31】谭浩强.c程序设计【M】.北京:北京清华大学出版社.1998
【32】贾佳.基于DSP和微控制器的现场总线高层通讯协议研【D】.西安:西安工程科技学院,2006 【33】王骏.基于DSP与CAN总线技术的新型馈线监控终端的研发【D】.合肥:合肥工业大学,2006 【34】赵宇萍.先进飞机电气系统测控平台关键技术研究【D】.西安:西北工业大学,2006

【35】戴明.基于CAN总线的温度监控系统p】.南京:南京理工大学,2006
【361
H.Boterenbrood.CANopcn

hi曲一level

protocol for

CAN-bus.Amsterdam:NIKHEF[J].2000

【37】High

Performance,Enhanced FLASH for PICl8 ECAN

Microeonlrollers with CANf【z】.PICl8F458.2003,
Technology

【38】A CANopcn Stack

Microeontrollers.Microchip

Incorporated[S].2004

p9]井科伟.基于DSP的直流无刷电机控制系统的研究田】.哈尔滨:哈尔滨工程大学,2003 [40】史久根,刘蓬,张培仁.CAN数据传送的实时性研究及其应用叨信息与控制,2004,(03).

广西大学硕士学位论文

囊西严CANopen钧岖叉I的分布式扫涮膏.渡的研究

致谢
衷心感谢宋春宁副教授对本人的精心指导和培养。他的言传身教让我终生受益。 感谢宋绍剑副教授、林小峰教授在课题研究过程中给予的指导和帮助。
感谢实验室的老师和同窗在我三年学习和生活中给予的关心和支持。


深深感谢远在家乡的父母。感谢他们对我经济上的支持、学习上的鼓励以及生活中 无微不至的关怀。 本课题承蒙国家科技部科技型中小企业技术创新基金的资助,特此殷切致谢。

53

|;于CAN总线的分布式删习0晓的研究
在学期间发表的学术论文与研究成果
【l】蒋智康,宋春宁.基于PICl8单片机的CANopen通讯协议的实现.《单片机与嵌入式系 统》已录用

基于CANopen协议的分布式控制系统的研究
作者: 学位授予单位: 蒋智康 广西大学

本文读者也读过(10条) 1. 张云廷 基于CANopen协议的从站的设计与应用[学位论文]2009 2. 孟诏 基于CANopen协议的CAN总线控制系统研究[学位论文]2008 3. 田山 基于CANopen协议的网络主控制器的设计[学位论文]2008 4. 宋威 CANOPEN现场总线应用层协议主站的开发与实现[学位论文]2008 5. 曹硕 基于CANopen协议的CAN总线应用抽象层的设计与实现[学位论文]2009 6. 赵峰 CANopen协议研究及一体化适配器开发[学位论文]2009 7. 刘海花 基于CANopen的智能监控下位系统研究[学位论文]2007 8. 周跃峰 CANopen协议在冗余系统中的应用研究[学位论文]2009 9. 张厚林 CANopen通讯协议设计与实现[学位论文]2009 10. 叶浩峰 CANopen总线的原理以及实现[学位论文]2005

本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1318481.aspx


网站首页 | 网站地图 | 学霸百科 | 新词新语
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com