文档库 最新最全的文档下载
当前位置:文档库 › CANopen协议介绍

CANopen协议介绍

CANopen协议介绍(讲义)

2010-10-12 15:58:28| 分类:技术文档| 标签:|举报|字号大中小订阅

很长一段时间以来,很多人问我CANopen 总线优势到底在什么地方,我也大体的给了口头的讲述,但是比较笼统,没办法做到详细解释,加上纯技术的话语比较晦涩,遇上内行还能多聊几句,如果是刚接触的,那就是云里雾里了。这次正好要进行公司业务员培训,要讲讲CANopen,在整理过程中把我的讲义贴出来,希望能帮到大家,以下内容是我讲课的口述内容,比较白话,不能作为资料,大家见谅,鉴于我整理也比较辛苦,也算个小小的知识产权,所以PPT我就不

贴出来了。^-^

讲义内容:

通常CANopen协议相关的一些资料相对来说比较晦涩,非专业人士看起来比较困难。我尽量以浅显易懂的方式将CANopen 协议的框架和它在实际应用中存在的优缺

点展示给大家。

我按照最先接触的内容由浅入深的讲解,直接讲CANopen协议会有点跳跃的感觉,所以,我以产品作为切入点,分析一下如何使用,在这个过程中,让大家理解什么是CANopen协议。首先,我们拿到一个产品,比方说是编码器,它的用途是作为位置传感器,那我们就需要将编码器送出的数据进行采集。一般自然界中存在的信号有多种形式,大多以模拟量形式存在,类似于人感觉到温度的高低、水流的快慢、风力的大小等等。但这是很模糊的概念,今天热了还是冷了,风大风小,没有比较是很难界定的,为了规范这些量,方便描述时的统一性,温度计量标准有华氏和摄氏、水流有每秒多少立方、风力有级数。这些,就是数字量。数字量在人与人之间传递时,可以通过嘴和耳,语言和听力,在设备之间如何来传递呢?学过数电的人知道,灯泡有两种状态,亮和暗,在最基础的电路回路里,“通”和“断”是两个最基本的状态,我们可以把他理解为“1”和“0”,这样,就有了表述的方法。但是单独使用这两种状态是无法传递信息的,如何把编码器

的数据传递出去,就需要使用到协议,下面

我就讲讲协议。

我们知道,人与人交流需要用到语言,我们要表达出一个完整的意思就要使用一句话,一句话内会包含很多的字,每个字又由笔画构成。这样,我们协议的基本框架就出来了,在整个CANopen协议传递过程中,最大的单位称为“帧”,类似于一句话,“帧”由“字节”组成,就代表了字,每个“字节”由“位”组成,我们称为笔画。那地球上还有英语、法语、德语、还有听不懂的鸟语呢!那就是各个通讯协议,比如Profibus-DP、DeviceNet、CC-Link、Hart、Modbus等。让DP和CANopen通讯,那就是相当于一个讲德语的与讲中文的对话,鸡同鸭讲,能沟通吗?需要翻译,对吧。回过头来我们讲讲CANopen的帧格式,CANopen一帧数据由一个COB-ID(报文头)和最大8字节数据组成,其中COB-ID可以是11位(CAN2.0),也可以是29位(CAN2.0B),当然,CAN2.0B需要向下兼容11位CAN 报文。对于每字节数据由哪些位组成,这里

就不再赘述,因为这部分内容不在OSI模型的第七层应用层内描述,开发人员也不必过多考虑这块内容。由于CANopen协议内对COB-ID的各个地址段报文有详细规范,这里就花点时间讲一下,当然也没时间全部讨论,只选一些重要内容来说。

以前我们培训一直在说CANopen协议好,速度快,广播报文,这些关键字听的多了,但是大家可能不是很理解这些内容。现在就来解释一下。在编码器应用中,CAN报文我们常用的有SDO(Service Data Object 服务数据对象)和PDO(Process Data Object过程数据对象),从字面描述意义看,通常数据的发送读取是采用PDO来实现的,CAN参数的修改是通过SDO来实现的(当然这不是绝对的,具体的如果有兴趣可以会后询问)。先来说说PDO,我们在很多资料上会看到这样一张表

注意:PDO/SDO 发送/接收是由(slave)

CAN节点方观察的

表一:CANopen主/从连接集对象假设我们读取到一组编码器数据是这样的《0x181 0x30 0x1F 0x00 0x00》,我们应该如何理解呢?首先,“0x”只是一个符号,它代表了紧跟着的数据是十六进制的(等同于在数据后面直接标“H”,上述表达式也可以表述为《181H 30H 1FH 00H 00H》),“181”我们查看上表后发现,它包含在PDO1(发送)里面,它代表了是由编码器发出的过程数据对象,表上显示是“181H~1FFH”,这是因为COB-ID包含了节点号信息,地址1对应着181H,地址2对应了182H,以此类推,最大127个节点。“0x30 0x1F 0x00 0x00”就代表了数据内容,在CAN协议内,帧数据是低位在前,高位在后的。所以上述数据直接读取后得出编码器送出1F30H,这

就代表了编码器的当前位置值。那在总线上面,多个节点同时发送数据不会产生冲突么?以前我们说过,CAN协议具有仲裁,这里简单介绍一下仲裁是如何实现的。上面说了,COB-ID包含了节点号信息,也就是说,只要总线上的设备节点号不同,所送出的广播报文的COB-ID肯定是不同的,如果一个是182H,一个是183H,仲裁时怎么做?本文最开始的时候介绍了每个字由笔画组成,现在就要用到位(bit)的概念了,182H换算成二进制是0001 1000 0010(B),“B”代表了二进制,183H换算成二进制是0001 1000 0011(B),关于显性位、隐形位这里不再赘述,这个有兴趣可以找我要资料看,这里我就简单描述为“0”比“1”的优先级高,可以理解为拖后腿,“0”为低电平,“1”为高电平,在线上低电平会把高电平拉低,一旦183H发现数据传输过程中与自身数据不符合,就终止上传,保证了182H的数据

先上总线。

我们在实践中会发现,编码器的数据在不断的更新输出,那输出周期如何定义呢?这

个我们就来讨论一下引申的PDO传送方式。我们以前在培训时一直介绍CANopen 协议与DP协议相比的好处在于DP是轮询的,问答方式浪费了大量的时间,而CAN 协议是广播的,可以将1MHz的速率发挥至极致。这种说法形象,一般可以解释给初步接触CANopen的人听。其实CANopen的报文形式很多样化,在不同的应用场合可以采取不同的方式,上面说的称为异步方式,异步方式也分两种,一种是上面的内部时钟触发,也就是按照固定时间间隔发送,另一种是事件触发,假设编码器发生转动,数据相应送出。还有一种同步方式,我们也可以口述为踏拍方式,当主站要求报数是,所有从节点按照仲裁的优先顺序进行数据发送。这三种报文方式分别在哪些场合适用呢?我们以车辆来举例。车辆开在路上,在整个车辆控制内,最重要的,具有高优先级的,应该是牵涉到安全的制动(刹车),安全气囊等等。其次是转向、车灯。再次是音响、影视系统(当然,我对车不是很熟悉,这是我的主观认识,作为一个例程)。我们可以

把小的节点号分配给制动系统,以保证数据能及时送达控制器,并采用定时报数,实时监测车辆制动系统的情况。对于音箱什么的,我们可以采用事件触发方式,在有输入控制时(比方说打开收音机)进行响应。同步数据一般用在实时数据监测方面,比方是在同一时间点查阅角度、位置、重量、压力、流量等等信息,保证所监测的各个数据在很小的时间变化范围内。当然CANopen不可能摒弃问答方式的数据采集,这可以通过

SDO访问OD来实现。

讲到SDO——服务数据对象,我们可以这么理解,PDO报文在发送出去后不需要反馈信号,总线上能消化这个数据的都可以消化,所以白话叫广播报文。而SDO报文是需要响应的,每一帧SDO发出后需要等待反馈。那这会不会引起无反馈时总线死机呢?不会,CAN数据链路内规定了超时,在一定时间内得不到回答,总线将进行后面的作业,多次询问无果,总线会对错误节点进行屏蔽处理。SDO的帧格式和PDO的帧格式是一致的,但对有些字节的定义不同,下

面就简单介绍一些编码器修改参数时用到

的帧格式。

SDO中实现了5个请求/应答协议,这里我只讲讲启动域下载与上传,其他的有兴趣

可以问我要资料看。

我来解释一下上表,COB-ID引用第一张表的SDO地址段。假设主站需要读取1号编码器对象字典(OD)6200H内的参数,我们应该如何做呢?我们需要发送

0x601 0x40 0x00 0x62 0x00 0x00 0x00

0x00 0x00

我们得到编码器的反馈数据是

0x581 0x4B 0x00 0x62 0x00 0x0A 0x00

0x00 0x00

上述命令的解释是,控制器通过SDO指令读取1号编码器OD为6200H的编码器发送数据周期的参数,得到编码器的回答是每隔10ms发送一次。40H和4BH是启动

域上传的命令字。

如果需要将6200H的参数修改为20ms 一次数据,我们应该怎么做?

发送:0x601 0x22 0x00 0x62 0x00 0x14

0x00 0x00 0x00

反馈:0x581 0x60 0x00 0x62 0x00 0x00

0x00 0x00 0x00

未完待续。。。

作为十大总线来说,CANOpen的开放性等等就不赘述了。该协议最早在汽车总线中得到了大量的推广。目前很多厂家都支持CANOpen总线。比如施耐德、菲尼克斯等。尤其是施耐德,目前在所有的传动产品、中高端的PLC上都支持CANOpen总线。可能是由于所有产品在总线支持上不然

Rockwell和西门子的缘故吧。

目前CANOpen在连接现场从站设备时,很多厂家的PLC 已经可以像step7软件组态profibus DP从站设备一样,只

需导入eds文件后,在软件中直接选择或拖拉即可。相关参数的地址定义等等都自动完成。相对来说比较简单。

当然如果软件即便不支持上述方式,有个公司专门开发了一个sycon的软件,利用sycon软件也可以直接定义CANOpen 从站设备。相对来说也比较简单。只不过需要做sycon到PLC软件的地址的映射的操作。

CANOpen总线与Profibus DP总线相比:

1. CANOpen的通讯速率较低,最高1Mbps。而Profibus DP

最高支持12Mbps;

2. 两种总线随着距离的增加都会衰减,但是CANOpen衰减

的更快一些;

3. 理论上CANOpen支持127个子站(当然和CANOpen 主站设备有关,在实际PLC产品中一般最大只能支持64,有的只能支持32或16个),而Profibus DP在子站支持能

力上较强;

4. CANOPen的中继器支持树形结构连接,这一点与

Profibus的总线型连接方式有区别;

5. 从组态来说,集成CANOpen总线的设备组态方式与Profibus DP的组态方式类似。只需导入eds文件即可;

6. 抗干扰能力经过我使用了,感觉和Profibus DP差不多。当然CANOpen电缆有4种,DP应该分普通和复杂环境两种。从电缆来说,CANOpen电缆的适用性更强一些。

以上内容,只是一己之见,不含任何广告内容,也请各位批

评指正

于CANopen协议的分布式控制系统设计

孙树文杨建武

(北京工业大学机械工程与应用电子学院,北京100022)摘要:针对印刷机外围设备多分散、数据传输信息量大、实时性和可靠性要求高等问题,设计了一种基于CAN现场总线的分布式控制系统。监控主机运行软PLC程序,通过PC-CAN卡与现场I/O从站进行通信,形成分布式网络,简化了系统结构,提高了可靠性。本文介绍了分布式监控系统的整体结构、工作原理及特点;分析了CANopen协议、详细说明了采用P87C591单片机开发I/O从站的硬件电路、软件设计流程以及从站节点的调试方法。经系统测试和模拟运行表明,I/O从站与监控主机通讯可靠、准确,实时性满足了印刷机控制系统的要求,具有一定

的参考价值和广阔的应用前景。

关键词:CANopen;CAN总线;软PLC;分布式控制系统;

P87C591

中国分类号:TP247文献标识码:A

TheDesignofDistributedControlSystemI/OSlaveBasedonCANo

penProtocol

SunShuwen,YangJianwu,ZhangHuihui,ZhaoJianguang

(CollegeofMechanicalEngineering&AppliedElectronicsTechnol ogy,BeijingUniversityofTechnology,Beijing100022,China)

Abstract:Counteringtheproblemsexistingintheprintingmachine, suchastheexcessiveanddistributedperipheralequipment,manyi nformationexchange,thereliability,veracityandrealtimefeatureof datacommunication,adistributedcontrolsystembasedonCAN(C ontrolAreaNetworks)Busisdesigned.TheSo’sbrilliantandvalidity beyondtraditionalcontrolmethodsandissuitableforsimilarpractic

alengineering.

Keywords:CANopen,CANbus,So

0引言

印刷机有大量的外围设备,存在大量的I/O信号,如何保证外围设备与控制主机之间的实时通讯,使得印刷机可靠运行,目前采用的方式主要有2种:1)采用传统的PLC构成集散型控制系统(DCS);2)采用基于现场总线的分布式I/O系统。采用前一种方式存在系统不开放、硬件投资大、布线复杂、维修不便的缺点,具有明显的局限性[1]。而采用第二种方式基本局限于

国外产品,如西门子公司的基于Profibus分布式I/O系统,WAGO 公司基于CANbus、DeviceNET、Profibus分布式I/O系统,但价格较高。因此我们设计了基于CAN现场总线技术与软PLC的

印刷机分布式控制系统。

CAN(ControllerAreaNetwork)总线,又称控制器局域网,是由德国Bosch公司在80年代初为分布式系统在强电磁干扰环境下可靠工作而开发的一种串行数据通信网络,并有效支持分布式控制和实时控制。目前CAN总线规范已被ISO国际标准组织指定为国际标准,并得到了Motorola,Intel,Philips,Siemens,NEC等公司的支持[1]。CANopen是CAN总线的一种有影响力的应用层协议,近年来得到了广泛的应用,它保证了各种厂商设备的互用性、互换性,同时提高了信息传输的可靠性,实时性。其应用范围已经扩展到了汽车行业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械、家用电器及传感器等领域。软PLC是一种基于PC机的新兴自动控制技术,不仅能够实现硬PLC的所有功能,而且遵循IEC61131-3编程标准,为用户

提供了更多的开放性和适用性。

1 控制系统的整体构成[2]

整个控制系统由监控计算机、PC-CAN适配卡、I/O从站节点(n<110)、CAN总线网络组成,其系统结构如图1所示。分布在现场的I/O从站节点连接印刷机的外围设备,并通过CAN 通信接口与总线相连;监控计算机运行软PLC软件并通过

PC-CAN适配卡和连接在CAN总线网络上的各个从站节点之间进行实时通信,从而实现整个印刷机组的分散控制和集中监管。

控制系统中的I/O从站节点由CAN控制器、CAN收发器和外围电路(如:光电隔离、I2C、LED显示等)组成。监控计算机可以选用普通PC或工控机IPC。PC-CAN适配卡用来完成CAN总线和监控计算机之间的协议转换,可以选用PCI总线适配卡、ISA总线适配卡。各个控制节点之间通过屏蔽双绞线互联构成CAN总线网络,总线两端连接120Ω的阻抗匹配电阻,用来提高系统的稳定性、增强系统的抗干扰能力。

2 I/O从站的硬件设计

目前,有两种CAN总线器件可以选择:一种是带片上CAN 的微控制器,如P8XC591/2、87C196CA/CB、MC68376等;另一种是独立的CAN控制器,如控制Philips公司的SJA1000、82C200,Intel公司的82526、以及Microchip公司的MCP2510等,但是独立的CAN控制芯片需要外接一个微处理器,接收外部CPU的控制才能运行。本系统选用的是Philips公司的带有在片CAN控制器的P87C591微型控制器,这样大大简化了节点的硬件设计,提高系统的可靠性[2]。

I/O从站节点的硬件设计上采用了模块化结构,由微控制器、CAN通信模块、输入/输出接口模块、扩展接口模块、参数设置模块组成,其整体结构如图2所示。

P87C591是一款8位高性能微控制器,具有片内CAN控制

器,从80C51微控制器家族派生而来,采用了强大的80C51指令集并成功的包括了Philips半导体SJA1000CAN控制器的PeliCAN功能。CAN收发器采用的是PhilipsPCA82C250芯片,它具有高速稳定的差动发送和接收能力;为了提高抗干扰能力,系统中采用双路电源模块供电,在控制器和传输介质之间加接光电隔离器件ADuM1201高速数字隔离器替代传统的光电耦合器(如6N137),简化了电路,极大的降低了功耗。从站节点I/O 接口模块采用了光电隔离电路,提高了抗干扰能力;为了使本系统具有更好的适用性和扩展性,预留了基于I2C总线扩展接口模块。此外,从站节点还外扩了RS232接口;以及电源信号、通讯状态、I/O端口、故障信号等状态的LED显示。

3 I/O从站的软件设计

在I/O从站的软件设计中,使用C51Windows编程语言实现各种功能,与从站节点的硬件设计相一致,软件设计也遵循模块化的设计原则,使控制软件具有易读、易扩展和易维护的优点。各功能模块之间通过入口和出口参数相互联系,组合灵活且方便

[3]。从站节点的软件设计流程如图3所示。

3.1 CANopen通讯协议[4][5]

CANopen协议是CiA协会基于CAN总线定义的应用层协议之一,在各种控制系统中得到了广泛应用。CANopen设备模型如图4所示,不同设备通过CAN总线进行连接组网,CANopen通信协议接口用于提供在总线上收发通信对象的服

务;不同CANopen设备间的通信都是通过交换通信对象来完成

的。

CANopen协议中定义了4种通信对象(通讯模式),用于处理不同作用的信息,包括:1)NMT对象,用来传递主节点对整个网络系统的管理信息;2)SDO对象,用来传递网络系统中的配置信息;3)PDO对象,用来实时传送过程数据信息;4)特殊功能对象,包括同步对象(Sync)紧急对象(Emergency)时间戳对象(TimeStamp)等,详细内容可参考CANopen协议相关文档[4]。设备对象字典是CANopen协议的核心概念,描述了该设备使用的所有数据类型、通信对象和应用对象,CANopen 协议的网络系统中每一个设备都要实现一个唯一的对象字典,区别在于设备类型不同其内容则不同。对象字典中每个对象拥有一个唯一的16位主索引和8位子索引,由此实现对其中各种对象的访问。对象字典在系统软件设计中得以实现,然后使用标准化的EDS文件对其进行描述。EDS文件的编写,基本可以借鉴同类设备的EDS文件,只需针对具体不同应用做出相应修改即可。

3.2 I/O从站的CANopen通讯协议实现

I/O从站的软件设计遵循CANopen协议预定义主/从连接集,在程序中采用预定义的强制性的缺省标识符(CAN-ID)分配表。从站节点支持4个接收PDO对象,4个发送PDO对象,1个SDO对象,1个紧急对象和1个节点错误控制对象。协议的相关细节可查看文档[6]。在系统的软件设计中,结合通讯协议

的特点,大多采用了结构体的方式来定义诸如CAN报文、发送和接收PDO配置对象、CANopen协议配置对象等,通过定义结构体型指针变量完成对相关数据的读写,给程序的编制带来了方便。此外,利用定义数组的方法实现了对象字典和过程数据影像的操作。在SDO报文处理子函数中,通过被访问对象的主索引和子索引,以数组查询的方式实现了对对象字典的读写访问。CANopenI/O从站的状态机转换通过判断接收NMT报文命令字,对心跳报文标志字节代码进行读写,通过程序散转方式得以实现。对PDO、SDO通讯对象的处理则根据心跳报文标志字节代码指明的当前状态分别进行处理。

3.3 I/O从站的调试

从站节点的开发与调试采用了德国PEAK公司的CANopen 开发系统,硬件包括PCI和USB接口的CAN卡,软件是

PCANopenMagicPro3.0[7]专业开发版,很好的实现了对CANopen网络节点的配置、分析和实时监控。

调试所采用的通讯结构如图1所示,通过USB-CAN适配器监控主机与CAN总线网络连接,构成主-从式的网络结构,这种方式在后续系统组网调试时可以方便地实现对CAN总线网络的监控。通过PCANopenMagicPro3.0软件可以对网络上传输的CANopen通讯对象报文进行实时跟踪;通过加载从站设备的EDS文件实现对从站节点进行配置;可以方便地实现对某个设备对象字典的访问。在调试过程中,要注意保持CAN总线网络

中主从设备的CAN波特率要一致,否则将不能建立正常的通信。

4 控制系统的测试平台

控制系统的整体测试采用如图1所示的网络结构。监控计算机运行德国3S公司的CoDeSys软PLC软件及RTE实时程序组件,作为CAN总线网络的主站(相当于一台高性能可编程控制器),通过PCAN-PCI卡与自行设计开发的I/O从站节点进行数据通信,构成了基于软PLC和CAN现场总线的分布式I/O控

制系统。

在控制系统的硬件连接完成后,还需要在监控计算机上通过CoDeSys软件对整个网络进行组态,包括:安装系统支持的PCAN-PCI卡的驱动程序(由3S提供),并加载到RTE中;加载从站设备的EDS文件;设置CAN相关通讯参数(如波特率,本系统设置为250k/s);设置CANopen协议的相关参数(如从站ID号、启动方式、心跳报文时间等)。软PLC组态及监控界面如图5所示,可以看出挂接在网络系统上的主从设备都会在组态界面上显示出来,CANopenI/O从站节点的各个端口状态一目了然,可以实时监控输入/输出点的状态,并可以强制置位和复

位输出点。

5 控制系统测试结果

为了系统通讯测试,我们在上位机CoDeSys软PLC中编写了一个8位DO指示灯延时交替闪烁的I/O控制程序。在这之前,要在系统库管理中加入标准的CANopen协议库文件(3S提供),

这样上位机才能支持CANopen通讯协议;其次,要注意将程序中定义的变量和设备端口地址进行关联,否则系统进行程序编译时会报错。编好程序后,在系统运行前,不要忘记先开启CoDeSysSPRTE实时程序,否则系统会报出通讯错误。系统正常运行时,如图5所示,在上位机中CoDeSys提供了良好的监控界面,实时显示了8路DO指示灯延时交替闪烁的对应状态。在实际应用中,CoDeSys也很好的支持用户自行设计的人机交

互界面。

图6PCANopenMagicPro3.0软件监控界面如图6所示,系统建立正常通讯需要经过通讯初始化阶段。在这一阶段,从站启动后自动进入预操作状态,发送心跳报文表明当前状态,等待主站的询问;主站首先发送Bootup启动报文,然后通过SDO服务至少要向从站询问设备类型信息,更多的还可能有厂商ID、产品代码、版本号等;得到应答确认之后,主站发送NMT报文,命令从站进入操作状态,系统随即建立了正常通讯状态,开始了实时PDO数据的通讯。在本系统中利用挂接监控节点对CoDeSys与CANopenI/O从站通讯进行实时跟踪,网络中所有交互通讯报文可以按时间顺序清晰记录,这种方法对于CANopen协议的类似开发具有很好的借鉴意义。

6 结论

本文设计的基于CANopen协议的I/O从站,通过CAN现场总线与软PLC构成分布式控制系统,实现了监控主站与从站

CANopen协议讲解

根据DS301的内容进行介绍 1、CAN总线 CAN标准报文

2、CANopen应用层协议 CANopen 协议不针对某种特别的应用对象,具有较高的配置灵活性,高数据传输能力,较低的实现复杂度。同时,CANopen 完全基于CAN 标准报文格式,而无需扩展报文的支持,最多支持127个节点,并且协议开源。 一个标准的CANopen 节点(下图),在数据链路层之上,添加了应用层。该应用层一般由软件实现,和控制算法共同运行在实时处理单元内。 一个标准的CANopen 节点 CANopen 应用层协议细化了CAN 总线协议中关于标识符的定义。定义标准报文的11 比特标识符中高4 比特为功能码,后7 比特为节点号,重命名为通讯对象标识符(COB-ID)。功能码将所有的报文分为7个优先级,按照优先级从高至低依次为: 网络命令报文(NMT) 同步报文(SYNC) 紧急报文(EMERGENCY) 时间戳(TIME)

过程数据对象(PDO) 服务数据对象(SDO) 节点状态报文(NMT Err Control) 7 位的节点号则表明CANopen 网络最多可支持127个节点共存(0 号节点为主站)。 下表给出了各报文的COB-ID 范围。 NMT 命令为最高优先级报文,由CANopen 主站发出,用以更改从节点的运行状态。 SYNC 报文定期由CANopen 主站发出,所有的同步PDO 根据SYNC报文发送。 EMERGENCY报文由出现紧急状态的从节点发出,任何具备紧急事件监控与

处理能力的节点会接收并处理紧急报文。

TIME 报文由CANopen 主站发出,用于同步所有从站的内部时钟。 PDO 分为4 对发送和接收PDO,每一个节点默认拥有4对发送PDO 和接收PDO,用于过程数据的传递。 SDO 分为发送SDO 和接收SDO,用于读写对象字典。 MT Error Control报文由从节点发出,用以监测从节点的运行状态。 状态机 CANopen 的每一个节点都维护了一个状态机。该状态机的状态决定了该节点当前支持的通讯方式以及节点行为。 初始化时,节点将自动设置自身参数和CANopen 对象字典,发出节点启动报文,并不接收任何网络报文。 初始化完成后,自动进入预运行状态。在该状态,节点等待主站的网络命令,接收主站的配置请求,因此可以接收和发送除了PDO 以外的所有报文。 运行状态为节点的正常工作状态,接收并发送所有通讯报文。 停止状态为一种临时状态,只能接收主站的网络命令,以恢复运行或者重新启动。

CANopen协议介绍

CANopen ?????????CAN-bus????

?? 1??? (1) 2?CAL ?? (2) 3?CANopen (3) 3ˊ1 ????OD (3) 3ˊ2 CANopen?? (4) 3ˊ3 CANopen8?Н??▊ (6) 3ˊ4 CANopen????? (8) 3ˊ5 CANopen boot-up?? (8) 3ˊ6 CANopen?????? (9) 4??? (18) 5??? (19)

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 ??Ё????????????????????????????????ˊ???z ????Application layer?????Ё??????????????????????? z ?????Communication profile???????????????Н??Н???????z ?????Device proflile?????????????????? ??????????CAN??????CAL?????CAL?????CANopen???CANopen ???CAN-in-Automation(CiA)?Н???П?????????Й?????????????????CANopen?????????CAN?????Ё?:??????????????????????????????????????????????????????????????ā????ā???Ё?????ā????ā?Н????????????????????CANopen????????????????????????? ?OSI??Ё?CAN???CANopen??П?????????? C iA DS P-401C iA DS P-404 CiA DSP-xxx Application C hip Data Link Physical Layer ?1.1 CAN?CANopen???OSI????Ё?????

CAN总线与CANopen协议

CAN总线与CANOpen协议 一CAN总线简介 1.1 引言 在20世纪90年代的汽车研究领域,采用总线分布式控制获得了很大的成功。用户要求汽车的控制系统具有优越的性能以保证汽车的安全性和舒适性,因此越来越多的具有超强计算能力的电子设备加载在汽车上。这就要求不同的电子设备之间能够进行通信和数据交换,以达到信息共享协调工作的目的。德国的博世公司(Bosch)率先将CAN总线(Controller Area Network)应用于汽车电子控制系统,解决了控制系统的部件之间的以及控制系统与测试设备主机的数据交换问题,替代了原有网络(用于车体控制的LIN网络、用于厂内环境控制的MOST 网络及原有车内通信的Flecray网络等)实现的功能。由于其独特的设计思想和高可靠性,在不同总线标准的竞争中获得了广泛的认可,并逐渐成为汽车最基本的控制网络,广泛应用于火车、机器人、楼宇控制、机械制造、数字机床、医疗器械、自动化仪表等领域。 图1.1 早期的ECU(汽车电子控制单元)通信 CAN总线是一种串行通信协议,具有较高的通信速率的和较强的抗干扰能力,可以作为现场总线应用于电磁噪声较大的场合。由于CAN总线本身只定义ISO/OSI模型中的第一层(物理层)和第二层(数据链路层),通常情况下CAN 总线网络都是独立的网络,所以没有网络层。在实际使用中,用户还需要自己定义应用层的协议,因此在CAN总线的发展过程中出现了各种版本的CAN应用

层协议,现阶段最流行的CAN应用层协议主要有CANopen、DeviceNet和J1939等协议。 图1.2 基于总线(CAN)的ECU通信 1.2 CAN总线的特点 CAN总线并不采用物理地址的模式传送数据,而是每个消息有自己的标识符用来识别总线上的节点。标识符主要有2个功能:消息滤波和消息优先级确定。节点利用标识符确定是否接收总线上的传送的消息当有2个或更多节点需要传送数据时,根据标识符确定消息的优先级。总线访问采用多主原则,所有节点都可以作为主节点占用总线。CAN总线相对于Ethernet具有非破坏性避免总线冲突的特点(CSMA/CA协议,与CSMA/CD协议相似),这种方式可以保证在产生总线冲突的情况下,具有更高优先级的信息没有被延时传输。 其物理传输层详细和高效的定义,使得CAN总线具有其它总线无法达到的优势,注定其在工业现场总线中占有不可动摇的地位,CAN总线通信主要具有如下所示的优势和特点: (1)CAN总线上任意节点均可在任意时刻主动的向其它节点发起通信,节点没有主从之分,但在同一时刻优先级高的节点能获得总线的使用权,在高优先级的节点释放总线后,任意节点都可使用总线; (2)CAN总线传输波特率为5Kbps~1Mbps,在5Kbps的通信波特率下最远传输距离可以达到10Km,即使在1Mbps的波特率下也能传输40m的距离。在1Mbps波特率下节点发送一帧数据最多需要134μs; (3)CAN总线采用载波监听多路访问、逐位仲裁的非破坏性总线仲裁技术。在节点需要发送信息时,节点先监听总线是否空闲,只有节点监听到总线空

can总线与canopen协议

竭诚为您提供优质文档/双击可除can总线与canopen协议 篇一:?canopen协议讲解 根据ds301的内容进行介绍 1、can总线 can标准报文 2、canopen应用层协议 canopen协议不针对某种特别的应用对象,具有较高的配置灵活性,高数据传输能力,较低的实现复杂度。同时,canopen完全基于can标准报文格式,而无需扩展报文的支持,最多支持127个节点,并且协议开源。 一个标准的canopen节点(下图),在数据链路层之上,添加了应用层。该应用层一般由软件实现,和控制算法共同运行在实时处理单元内。 一个标准的canopen节点 canopen应用层协议细化了can总线协议中关于标识符的定义。定义标准报文的11比特标识符中高4比特为功能码,后7比特为节点号,重命名为通讯对象标识符(cob-id)。功能码将所有的报文分为7个优先级,按照优先级从高至低

依次为: 网络命令报文(nmt) 同步报文(sync) 紧急报文(emeRgency) 时间戳(time) 过程数据对象(pdo) 服务数据对象(sdo) 节点状态报文(nmterrcontrol) 7位的节点号则表明canopen网络最多可支持127个节点共存(0号节点为主站)。 下表给出了各报文的cob-id范围。 nmt命令为最高优先级报文,由canopen主站发出,用以更改从节点的运行状态。 sync报文定期由canopen主站发出,所有的同步pdo根据sync报文发送。 emeRgency报文由出现紧急状态的从节点发出,任何具备紧急事件监控与处理能力的节点会接收并处理紧急报文。 time报文由canopen主站发出,用于同步所有从站的内部时钟。 pdo分为4对发送和接收pdo,每一个节点默认拥有4 对发送pdo和接收pdo,用于过程数据的传递。 sdo分为发送sdo和接收sdo,用于读写对象字典。

CANopen协议—PDO介绍

机械工程学院机械设计及理论研究所 目录 第一章PDO实例分析 (1) 一、目的: (1) 二、手段: (1) 三、分析: (1) 四、过程: (2) 4.1.对象字典的编写 (2) 4.1.1各节点ID分配表定义 (2) 4.1.2对节点1进行对象字典编写 (2) 4.1.3对节点2进行对象字典编写 (3) 4.1.4对节点3进行对象字典编写 (5) 4.2节点1发送数据至节点2、节点3 (6) 4.2.1节点1发送数据至总线 (6) 4.2.2 节点2、节点3从总线接收数据 (7) 4.3 节点2 发送数据至节点3 (8) 4.3.1 节点2 发送数据至总线 (8) 4.3.2 节点3从总线接收数据 (9) 参考文献 (10)

第一章PDO实例分析 一、目的: 实例的目的如图1-1所示,实现节点1的数据(A、B)传送到节点2、节点3,同时实现节点2传输数据(C、D)至节点3 。 图1-1 数据传输目的 二、手段: 使用PDO进行数据传送。 三、分析: 图1-2 SDO客户/服务器通讯模式[1] PDO通信是基于生产者/消费者(Producer/Consumer)模型,主要用于传输实时数据。产生数据的节点将带有自己节点号的数据放到总线上,需要该数据的节点可以配置为接收该节点发送的数据[3]。

四、过程: 4.1.对象字典的编写 对象字典的结构和条目对于所有设备是共同的,本例中采用索引定位,子索引确定对象的思想构建对象字典,方法是使用结构体定义子索引,子索引结构体的成员变量包含对象的属性(读写权限,数据类型,数据长度等)和指向对象的指针,定义索引时包含指向子索引的指针和子索引数目,对象字典各项在代码中采取如图1-3所示的方式来组织构建,这样可以方便地通过索引和子索引一找到对应的项,对象定义为指针的形式可以通过主站的SDO报文进行读写,实现对对象字典的灵活配置,同时这种方式实现通讯层与应用层共享数据变量的特点。对象字典的条目格式如图1-3所示: 图1-3 对象字典模块结构图 4.1.1各节点ID分配表定义 表1-1 各节点ID分配表 4.1.2对节点1进行对象字典编写 节点1发送数据至节点2、节点3,故需定义TPDO,我们在此处定义为TPDO1。节点1的应用数据区、TPDO1的通讯参数和映射参数在对象字典中的定义分别如表1-2、1-3和1-4所示。 表1-2 节点1的应用数据区在对象字典中的定义 表1-3 节点1的TPDO1通讯参数在对象字典中的定义

CANopen协议介绍

CANopen协议介绍(讲义) 2010-10-12 15:58:28| 分类:技术文档| 标签:|举报|字号大中小订阅 很长一段时间以来,很多人问我CANopen 总线优势到底在什么地方,我也大体的给了口头的讲述,但是比较笼统,没办法做到详细解释,加上纯技术的话语比较晦涩,遇上内行还能多聊几句,如果是刚接触的,那就是云里雾里了。这次正好要进行公司业务员培训,要讲讲CANopen,在整理过程中把我的讲义贴出来,希望能帮到大家,以下内容是我讲课的口述内容,比较白话,不能作为资料,大家见谅,鉴于我整理也比较辛苦,也算个小小的知识产权,所以PPT我就不 贴出来了。^-^ 讲义内容: 通常CANopen协议相关的一些资料相对来说比较晦涩,非专业人士看起来比较困难。我尽量以浅显易懂的方式将CANopen 协议的框架和它在实际应用中存在的优缺 点展示给大家。

我按照最先接触的内容由浅入深的讲解,直接讲CANopen协议会有点跳跃的感觉,所以,我以产品作为切入点,分析一下如何使用,在这个过程中,让大家理解什么是CANopen协议。首先,我们拿到一个产品,比方说是编码器,它的用途是作为位置传感器,那我们就需要将编码器送出的数据进行采集。一般自然界中存在的信号有多种形式,大多以模拟量形式存在,类似于人感觉到温度的高低、水流的快慢、风力的大小等等。但这是很模糊的概念,今天热了还是冷了,风大风小,没有比较是很难界定的,为了规范这些量,方便描述时的统一性,温度计量标准有华氏和摄氏、水流有每秒多少立方、风力有级数。这些,就是数字量。数字量在人与人之间传递时,可以通过嘴和耳,语言和听力,在设备之间如何来传递呢?学过数电的人知道,灯泡有两种状态,亮和暗,在最基础的电路回路里,“通”和“断”是两个最基本的状态,我们可以把他理解为“1”和“0”,这样,就有了表述的方法。但是单独使用这两种状态是无法传递信息的,如何把编码器

CANOPEN协议详解.pdf

一、CAN-BUS 介绍 1.CAN 的基本概念、特点 CAN 是Controller Area Network 的缩写(以下称为 CAN ),是ISO*1国际标准化 的串行通信协议。CAN 协议如表 3 所示涵盖了ISO 规定的OSI 基本参照模型中的传输层、数据链路层及物理层。 CAN 协议中关于ISO/OSI 基本参照模型中的传输层、数据链路层及物理层,具体有哪些定义如图所示。 . ISO/OSI 基本参照模型ISO/OSI 基本参照模型 各层定义的主要项目软件 控制 7 层:应用层 由实际应用程序提供可利用的服务。6 层:表示层 进行数据表现形式的转换。如:文字设定、数据压缩、加密等的控制5 层:会话层 为建立会话式的通信,控制数据正确地接收和发送。4 层:传输层控制数据传输的顺序、传送错误的恢复等,保证通信的品质。 如:错误修正、再传输控制。 3 层:网络层进行数据传送的路由选择或中继。 如:单元间的数据交换、地址管理。 硬件 控制 2 层:数据链路层 将物理层收到的信号(位序列)组成有意义的数据,提供传输错误控 制等数据传输控制流程。如:访问的方法、数据的形式。 通信方式、连接控制方式、同步方式、检错方式。应答方式、通信方式、包(帧)的构成。位的调制方式(包括位时序条件)。 1 层:物理层 规定了通信时使用的电缆、连接器等的媒体、电气信号规格等,以实 现设备间的信号传送。 如:信号电平、收发器、电缆、连接器等的形态。【注】*1 OSI :Open Systems Interconnection (开放式系统间互联)

CAN的特点 CAN 协议具有以下特点。 (1) 多主控制 在总线空闲时,所有的单元都可开始发送消息(多主控制)。最先访问总线的单元可获得发送权。 (2) 消息的发送 在CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连 的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利 的单元则立刻停止发送而进行接收工作。 (3) 系统的柔软性 与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在 总线上的其它单元的软硬件及应用层都不需要改变。 (4) 通信速度 根据整个网络的规模,可设定适合的通信速度。 在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度 与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以 有不同的通信速度。 (5) 远程数据请求 可通过发送“遥控帧”请求其他单元发送数据。 (6) 错误检测功能·错误通知功能·错误恢复功能 所有的单元都可以检测错误(错误检测功能)。 检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。 正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单 元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。 (7) 故障封闭 CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的 数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。 (8) 连接 CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。 但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连 接的单元数增加;提高通信速度,则可连接的单元数减少。 2. CAN协议及标准规格

CANOPEN协议详解

一、CAN-BUS介绍 1.CAN的基本概念、特点 CAN 是Controller Area Network的缩写(以下称为CAN),是ISO*1国际标准化的串行通信协议。 CAN 协议如表3 所示涵盖了ISO 规定的OSI 基本参照模型中的传输层、数据链路层及物理层。 CAN 协议中关于ISO/OSI 基本参照模型中的传输层、数据链路层及物理层,具体有哪些定义如图所示。 . ISO/OSI 基本参照模型 【注】*1 OSI:Open Systems Interconnection (开放式系统间互联)

CAN的特点 CAN 协议具有以下特点。 (1) 多主控制 在总线空闲时,所有的单元都可开始发送消息(多主控制)。最先访问总线的单元可获得发送权。 (2) 消息的发送 在CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。 (3) 系统的柔软性 与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。 (4) 通信速度 根据整个网络的规模,可设定适合的通信速度。 在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。 (5) 远程数据请求 可通过发送“遥控帧”请求其他单元发送数据。 (6) 错误检测功能·错误通知功能·错误恢复功能 所有的单元都可以检测错误(错误检测功能)。 检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。 正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。 (7) 故障封闭 CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。 (8) 连接 CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。 2. CAN协议及标准规格

CANOpen协议家族

CANOpen协议族入门学习笔记CANOPEN 2010-11-07 16:52:57 当我们使用CANOpen时,首先要明确我们 CANOPEN能干什么? 要用canopen干什么? 怎么用canopen来干活? CANOPEN能干什么? 首先需要明确canopen各个协议的功能,兄弟我最近在学习中大概总结了一些提纲如下: canopen分为两种协议类型: 1)基础题,应用层和通信层规范,主要是3xx系列的规范 2)解应用题,相当于用基础科目解应用题的一些套路,4xx系列规范 一般来讲,CANopen协议集定义了基于CAN的分布式工业自动化系统的应用标准以及CAN应用层通信标准。 CANopen是CAN-in-Automation(CiA)定义的标准之一,并且在发布后不久就获得了广泛的承认。尤其是在欧洲,CANopen被认为是在基于CAN的工业系统中占领导地位的标准。CANopen协议集基于所谓的"通信子集",该子集规定了基本的通信机制及其特性。 cAN物理层和数据链路层协议最初开发用作客车的车载网络。基于CAN的高层协议定义了如何根据特定的应用要求来使用CAN数据链路协议。除专用的基于CAN的高层协议外,还有多个国际标准化协议:用于嵌入式控制系统的CANopen、 用于工厂自动化的DeviceNet、用于卡车和其它车辆的基于J1939的解决方案(J1939-71、Isobus、ISO 11992、CiA 501/2)、用于客车诊断的ISO 15765。 分解学习CANOPEN 基础题类的3xx,等效于课本和字典,看个大概,用的时候再翻查也不迟,反正是开卷考试。最重要的莫过于301这个协议了,所有的应用题都是在这个基础题上的变化,国内的资料基本上都是讲解这部分,出于偷懒,我就不多讲了。 应用题类:既然是应用题,我把cia中文网站上的一些资料copy过来,作为我的纲要 CiA 401: 针对通用I/O模块的设备规范 CiA 402: 针对驱动装置和运动控制装置(伺服控制器、步进式电机控制器、

CANopen从站协议在stm32分析和说明

1 CANopen是一种架构在控制局域网路 (Control Area Network, CAN)上的高层通讯协定,其协议在嵌入式系统及单片机上广泛使用,是工业控制常用到的一种现场总线。依靠CANopen协议集的支持,可以对不同的从站设备通过总线进行配置和系统重构。相信在不久的将来随着国内对CANopen协议的研究深入,CANopen协议会在各个领域有广泛的应用。 CANopen 是OSI模型中的网络层以上(包括网络层)的协定。 CANopen 支持网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的传送。数据的传输和接收都基于CAN总线。如图1,通常多个从站设备靠CANopen网络传输数据给一个CANopen 主站设备。 CANopen需要有对象字典,SDO(服务数据对象)处理功能,PDO(过程数据对象)处理功能,定时器,NMT(网络管理)处理功能等。 2 CANopen对象字典介绍及设计 对象字典(od:object dictionary)是CANopen协议的核心。对象字典(od:object dictionary)是一个有序的对象组;每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8位的子索引。通过接收主站发送的SDO(服务数据对象)报文,可以设置从站的对象字典,主要对象字典请参见表1。从站在做事件处理时通常会读取对象字典,根据对象字典里的数据进行事件处理。 譬如从站的1017索引是记录从站发送心跳包的时间间隔。当从站程序运行时并且从站是准备、停止、运行状态时,程序会查找1017索引的0号子索引里的数据进行处理。如果里面有数据的话(假设数据为2000),程序则会根据数据所设置的时间通过定时器判断来每2000毫秒发送心跳包。 表1 从站主要对象字典介绍

CANopen协议分析指南

广州致远电子有限公司

修订历史

目录 1. CANopen协议分析插件简介 (1) 1.1 CANopen协议及其插件简介 (1) 1.2 CANopen协议插件安装说明 (1) 1.3 CANopen数据分析结果的实例 (2) 2. CANopen协议分析的方法 (3) 2.1 支持块传输的CANopen协议分析 (3) 2.2 不支持块传输的CANopen协议分析 (5) 2.3 发送CANopen协议帧 (7) 3. 免责声明 (12)

1. CANopen协议分析插件简介 1.1 CANopen协议及其插件简介 CANopen协议集定义了基于CAN总线的分布式工业自动化系统的应用标准以及CAN 总线应用层通信标准。其最核心部分是通过对象词典来描述设备功能并以EDS文件格式来记录,采用实时数据与服务数据分开传输,最大限度提高实时数据传输效率,灵活多变的数据传输方式以及强大的网络管理能力。一经推出便得到了广泛的应用,在车辆工业、工业机具、建筑物自动化、医疗设备、航海机具、餐厅设备、实验室器材及科研研究等行业中已得到广泛的应用。 CANopen协议分析插件是CANPro协议分析平台的一部分,与CAN分析仪配套使用。用于分析CANopen网络的数据、错误状态、网络负载,或模拟CANopen应用终端的工作状态等,是CANopen网络开发工程师的好帮手,可以大大缩短开发周期,方便实现网络维护、查错、管理等复杂工作。 1.2 CANopen协议插件安装说明 要使用CANopen协议插件对CANopen网络进行分析,您需要两个安装包:CANPro协议分析平台安装包和CANopen协议分析插件安装包。安装包可以从广州致远电子有限公司的网站上下载:https://www.wendangku.net/doc/6c6680488.html,/products/CANalyst/CANalyst.asp。 请注意,在安装CANopen协议分析插件之前,必须已安装好CANPro协议分析平台软件,且CANPro协议分析平台的版本需要1.40或更高的版本。否则,安装失败。出现下面的错误提示: 图1-1 插件安装错误提示(1) 图1-2 插件安装错误提示(2) 安装1.40或更高版本的CANPro协议分析平台后,就可以成功安装CANopen协议分析插件,开始分析CANopen网络数据了。 由于现在协议分析插件和协议分析平台都作了较大的修改,V1.00的插件只能和V1.40的CANPro协议分析平台配套使用,建议用户需要时,协议分析插件和协议分析平台均使用最新的版本。

CANOPEN从站协议在stm32f103zet6单片机上的实现-给人

CANopen从站协议在stm32f103zet6单片机上的实现 摘要:本文对CANopen从站协议在stm32f103zet6单片机上的实现做了分析和说明。介绍了CANopen协议的SDO(服务数据对象),PDO(过程数据对象)等报文处理的工作和实现原理,实现了向主站发送数据及处理主站报文等功能。本文中,做了一个从站与一个主站进行数据交互的实现,实验表明CANopen从站协议可以正常使用在stm32f103zet6单片机上,并且可以与CANopen主站进行数据传输等交互操作。 关键词:CANopen;从站协议;服务数据对象;过程数据对象;单片机 1引言 (STM32F103ZET6)(STM32F103ZET6)(STM32F103ZET6)从站设备 (STM32F103ZET6) 图1 CANOPEN连接示意图 CANopen是一种架构在控制局域网路(Control Area Network, CAN)上的高层通讯协定,其协议在嵌入式系统及单片机上广泛使用,是工业控制常用到的一种现场总线。依靠CANopen协议集的支持,可以对不同的从站设备通过总线进行配置和系统 重构。相信在不久的将来随着国内对CANo pen协议的研究深入,CANopen协议会在各个领域有广泛的应用。 CANopen 是OSI模型中的网络层以上(包括网络层)的协定。CANopen 支持网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的传送。数据的传输和接收都基于CAN总线。如图1,通常多个从站设备靠CANopen网络传输数据给一个CANopen主站设备。 CANopen需要有对象字典,SDO(服务数据对象)处理功能,PDO(过程数据对象)处理功能,定时器,NMT(网络管理)处理功能等。本文着重介绍了CANopen协议的各个功能以及CANopen协议在单片机上stm32f103zet6的设计与实现。 2 CANopen对象字典介绍及设计 对象字典(od:object dictionary)是CAN open协议的核心。对象字典(od:object dict ionary)是一个有序的对象组;每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8位的子索引。通过接收主站发送的SDO(服务数据对象)报文,可以设置从站的对象字典,主要对象字典请参见表1。从站在做事件处理时通常会读取对象字典,根据对象字典里的数据进行事件处理。 譬如从站的1017索引是记录从站发送心跳包的时间间隔。当从站程序运行时并且从站是准备、停止、运行状态时,程序会查找1017索引的0号子索引里的数据进行处理。如果里面有数据的话(假设数据为2000),程序则会根据数据所设置的时间通过定时器判断来每2000毫秒发送心跳包。 表1 从站主要对象字典介绍 索引:对象16 位元的位址。数据的类型:一个代表对象的类型,可以是阵列、纪录或只是一个变量。类型:变量的类型。属性:提供此是否可读/可写的资料,有下列四种:可读/写、只读、唯写、只读常数。 以下是建立6003索引的代码案例,并且里面的数据是(2.78593)*100000的代码片

相关文档