CAN与CANOpen(四)
2016-05-15 17:02
169 查看
CAN与CANOpen(一)基本概念
CAN与CANOpen(二)报文格式
CAN与CANOpen(三)错误处理
CAN与CANOpen(四)CANOpen对象字典
CAN与CANOpen(五)PDO和SDO
CAN与CANOpen(六)网络管理和CAN FD
4.CANOpen
图21 CANOpen所处的位置
前面讲解的CAN的内容主要处于数据链路层,牵扯到了一点物理层。下面介绍的CANOpen协议是处于应用层。上图标识了CANOpen协议所在网络架构中的位置。
4.1模型
图22 CANOpen设备的模型
一个CANOpen设备从结构上可以分为上面3个模块(图22)。通讯模块可以收发总线上的各种通讯对象。对象字典描述了所有的数据类型,通讯对象和应用对象。应用模块提供了控制功能和处理硬件的接口。
对象字典是通讯模块和应用模块之间的接口。
4.2对象字典
4.2.1对象字典的结构
图23对象字典的结构
对象字典是CANOpen最重要的特性,它将设备的描述标准化。
对象字典中的每一个对象都由16位的索引和8位的子索引来寻址。对于单个的对象字典项子索引总是0.所以一个数据字典最多有65536项。
静态数据类型包含标准数据类型的定义,比如BOOLEAN, INTEGER, floating, string,等。
复杂数据类型包含那些由标准数据类型构成的预定义的数据结构,他们对所有设备都是通用的。
制造商定义的复杂数据类型是由标准数据类型构成的数据结构,但是这些数据类型只是特定的设备使用。
设备子协议可能会为它们的设备定义一些额外的数据类型其中静态数据类型存放在0060-007F,复杂数据类型存放在0080-009F。
通讯子协议区指定了CAN网络的一些参数,它们对所有设备都是通用的。
标准设备子协议区包含了一类设备的所有数据对象。它们可以通过CAN网络读写。
4.2.2数据类型
图24基本的数据类型
CANOpen协议的基本数据类型如图24所列。
4.2.2.1整数的表示方式
以INTEGER32为例:b=b0b1…b31
4.2.2.2浮点数的表示方式
以REAL32为例:b=b0b1…b31
4.2.3对象的表示方式
[align=left]Index (hex)[/align] | Object (Symbolic Name) | [align=left]Name[/align] | [align=left]Type[/align] | [align=left]Attrib.[/align] | [align=left]M/O[/align] |
一个对象有上图所示的6种基本属性。
十六进制的index指示了对象在对象字典中的位置。其中不包含子索引。
Object列指示了对象的类型,如下图所示
Name是用来表示对象作用的文本。
Type指定数据类型。比如Boolean,
Usigned8。如果对象是一个复杂类型,比如ARRAY。就会用子索引来指定组成复杂类型的每个基本类型。
Attrbi指定了对象的方位类型。如下图
M/O指定对象是必须的还是可选的。
4.2.4标识身份的对象
对象字典中的对象很多,但有几个是用来识别设备身份的,经常用到。图26用来身份识别的几个对象
图27 Identity Object的子对象
1008h记录设备的名字,1009h记录设备的硬件版本号,100Ah记录设备的软件版本号。1018h记录了设备的制造商代码,产品号,序列号等。
相关文章推荐
- llinux企业常用服务---HA+keepalived双机热备
- opensns 指定用户发送微博
- Opencv_remap
- Zedboard安装与移植OpenCV
- CAN与CANOpen(三)
- 分别在windows和linux下用信号量解决生产者消费者问题
- 全球杂志排行榜TOP100
- opencv Mat 转 iplImage*
- Hadoop HA 配置
- Linux下ln命令使用
- linux企业常用服务---nfs
- linux root执行/media可执行文件权限不够,chmod修改权限无效
- 渗透测试 - KALI Linux 学习 - kali linux如何启动METASPLOIT服务
- Linux下tail命令使用
- keepalived ,lvs,tomcat 高可用,高并发,高性能 应用架构的搭建
- Shell脚本输出斐波拉契数列前十项,每行显示两个数
- keepalived ,egnix ,tomcat 高可用,高并发 应用架构的搭建
- Linux下test命令使用
- opencv_mat_create
- Linux常见命令汇总-touch