欢迎来到天天文库
浏览记录
ID:35198994
大小:107.00 KB
页数:6页
时间:2019-03-21
《canopen协议介绍》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、EnDat信号补充晚安,2010-欧迪的2010纪念册CANopen协议介绍(讲义)2010-10-1215:58:28
2、分类:技术文档
3、举报
4、字号订阅很长一段时间以来,很多人问我CANopen总线优势到底在什么地方,我也大体的给了口头的讲述,但是比较笼统,没办法做到详细解释,加上纯技术的话语比较晦涩,遇上内行还能多聊几句,如果是刚接触的,那就是云里雾里了。这次正好要进行公司业务员培训,要讲讲CANopen,在整理过程中把我的讲义贴出来,希望能帮到大家,以下内容是我讲课的口述内容,比较白话,不能作为资料,大家见谅,鉴于我整理也比较辛苦,也算个小小的知识产权,所以PPT我
5、就不贴出来了。^-^讲义内容:通常CANopen协议相关的一些资料相对来说比较晦涩,非专业人士看起来比较困难。我尽量以浅显易懂的方式将CANopen协议的框架和它在实际应用中存在的优缺点展示给大家。我按照最先接触的内容由浅入深的讲解,直接讲CANopen协议会有点跳跃的感觉,所以,我以产品作为切入点,分析一下如何使用,在这个过程中,让大家理解什么是CANopen协议。首先,我们拿到一个产品,比方说是编码器,它的用途是作为位置传感器,那我们就需要将编码器送出的数据进行采集。一般自然界中存在的信号有多种形式,大多以模拟量形式存在,类似于人感觉到温度的高低、水流的快慢、风力的
6、大小等等。但这是很模糊的概念,今天热了还是冷了,风大风小,没有比较是很难界定的,为了规范这些量,方便描述时的统一性,温度计量标准有华氏和摄氏、水流有每秒多少立方、风力有级数。这些,就是数字量。数字量在人与人之间传递时,可以通过嘴和耳,语言和听力,在设备之间如何来传递呢?学过数电的人知道,灯泡有两种状态,亮和暗,在最基础的电路回路里,“通”和“断”是两个最基本的状态,我们可以把他理解为“1”和“0”,这样,就有了表述的方法。但是单独使用这两种状态是无法传递信息的,如何把编码器的数据传递出去,就需要使用到协议,下面我就讲讲协议。我们知道,人与人交流需要用到语言,我们要表达出
7、一个完整的意思就要使用一句话,一句话内会包含很多的字,每个字又由笔画构成。这样,我们协议的基本框架就出来了,在整个CANopen协议传递过程中,最大的单位称为“帧”,类似于一句话,“帧”由“字节”组成,就代表了字,每个“字节”由“位”组成,我们称为笔画。那地球上还有英语、法语、德语、还有听不懂的鸟语呢!那就是各个通讯协议,比如Profibus-DP、DeviceNet、CC-Link、Hart、Modbus等。让DP和CANopen通讯,那就是相当于一个讲德语的与讲中文的对话,鸡同鸭讲,能沟通吗?需要翻译,对吧。回过头来我们讲讲CANopen的帧格式,CANopen一帧
8、数据由一个COB-ID(报文头)和最大8字节数据组成,其中COB-ID可以是11位(CAN2.0),也可以是29位(CAN2.0B),当然,CAN2.0B需要向下兼容11位CAN报文。对于每字节数据由哪些位组成,这里就不再赘述,因为这部分内容不在OSI模型的第七层应用层内描述,开发人员也不必过多考虑这块内容。由于CANopen协议内对COB-ID的各个地址段报文有详细规范,这里就花点时间讲一下,当然也没时间全部讨论,只选一些重要内容来说。以前我们培训一直在说CANopen协议好,速度快,广播报文,这些关键字听的多了,但是大家可能不是很理解这些内容。现在就来解释一下。在编
9、码器应用中,CAN报文我们常用的有SDO(ServiceDataObject服务数据对象)和PDO(ProcessDataObject过程数据对象),从字面描述意义看,通常数据的发送读取是采用PDO来实现的,CAN参数的修改是通过SDO来实现的(当然这不是绝对的,具体的如果有兴趣可以会后询问)。先来说说PDO,我们在很多资料上会看到这样一张表对象COB-ID通讯参数在OD中的索引紧急081H-0FFH1024H,1015HPDO1(发送)181H-1FFH1800HPDO1(接收)201H-27FH1400HPDO2(发送)281H-2FFH1801HPDO2(接收)3
10、01H-37FH1401HPDO3(发送)381H-3FFH1802HPDO3(接收)401H-47FH1402HPDO4(发送)481H-4FFH1803HPDO4(接收)501H-57FH1403HSDO(发送/服务器)581H-5FFH1200HSDO(接收/客户)601H-67FH1200HNMTErrorControl701H-77FH1016H-1017H注意:PDO/SDO发送/接收是由(slave)CAN节点方观察的表一:CANopen主/从连接集对象假设我们读取到一组编码器数据是这样的《0x1810x300x1F0x00
此文档下载收益归作者所有