旧文备份:CANopen协议中SDO服务

SDO是服务数据对象接口(Service Data Obiect)的缩写,顾名思义提供服务数据的访问接口,服务数据就是一些实时性要求不高的数据,一般是指节点配置参数,因此,SDO一般用来配置和获得节点的配置参数。其优先级只比心跳(Heartbeat)高。

SDO既然称之为服务,那就要有服务的提供者和使用者,提供者就是SDO server,使用者就是SDO client,在CANopen网络中每个节点都要有一个SDO server,因为每个节点的对象字典大部分对象都是通过SDO来访问的,对象字典的被访问,提供所请求的服务当然要有个SDO server。

SDO请求和应答报文都是8个字节的数据,其中包括对象字典的索引、子索引、SDO命令和数据。这里要注意和我们熟知的以太网FTP不同,SDO的上传和下载正好与之相反,FTP是从client的角度出发去理解上传和下载,SDO是以server的角度去理解的,从服务器上获得数据即对对象字典进行读操作叫做上传,往服务器上写数据即对对象字典进行写操作叫做下载。

(于2007.1.31)

时间: 2024-10-14 10:59:45

旧文备份:CANopen协议中SDO服务的相关文章

旧文备份:CANopen中SYNC的功能和使用

SYNC是CANopen管理各节点同步数据收发的一种方法,相当于网络节拍,基于同步的PDO按照这个网络节拍来执行实时数据的收发.SYNC属于生产/消费型通讯方式,网络中有且只有一个SYNC生产者,一般有多个消费者,其网络标识符优先级很高,一般设置为0x80,基本上除了NMT优先级最高.SYNC生产者按照固定频率发送SYNC报文,需要SYNC的节点(消费者)将其接收并计数,当计数值达到节点相应TPDO要求时,该TPDO映射的数据被发送(根据PDO传输类型也可能是映射数据更新),此过程中SYNC生产

旧文备份: 工业网络中单片机节点的地址和波特率设置方式

在工业应用中有很多单片机组网的应用,无论是485网络.CAN网络还是其他什么网络,都会涉及到节点地址的设置问题,下面就来探讨几种地址的设置方式: 硬件设置 在单片机电路板上,加一个拨码开关,以二进制的开关状态表示地址值,拨码开关由单片机的I/O去检测,单片机可以在每次上电去检测一下拨码开关的状态,设置本节点的地址,也可已定期比如500mS去查询一次开关的状态,动态设置本节点地址,建议采用上电检测的方法,因为该方法简单实用,可以在检测后初始化与地址相关的一些资源,如果采用动态检测的方法,不但占用系

旧文备份: 怎样实现SDO服务

SDO是CANopen协议中最复杂的一部分,带有应答机制,有多种传输方式,并且完整的SDO功能节点需提供1个SDO server和多个SDO client,因此SDO的实现异常困难,协议多种传输方式的解析处理还有迹可循,多个SDO client服务和多个对SDO server的访问的协调就不容易了,这里介绍一种方法——SDO线程来解决. 注意,这里的线程可不是操作系统提供的多线程技术,况且为保证协议栈良好的移植性,在CANopen协议栈核心代码里中也不好去调与操作系统相关的库函数.我们这里的SD

旧文备份:怎样利用好单片机上的存储器资源来实现OD的存储与访问

我们知道OD(对象字典)是CANopen的核心,所有功能都是围绕它开展的,是协议栈的数据中心,良好的OD实现是协议栈高效稳定运行的基础,而OD的实现最基本的一点就是怎么去保存它.因为OD的内容比较杂,读写属性上,有只读数据.只写数据.可读写数据:保存要求上有非易失和掉电丢失两种类型:数据类型上有字符型.整型.长整型等等:存储格式上有8位.16位.32位等.其它的不管,本文现只讨论怎么利用单片机的资源去尽量满足OD的存储需求. 有人会以为这还要讨论么?只读的就放在只读存储器中,可写的就放在RAM中

旧文备份:rtlinux安装手册

前段时间接触了几天RTLinux,折腾了好几天才总算把它安装上,得益于Prof. Chang-Gun Lee的安装建议,觉得该文档可能会对准备尝试安装RTLinux的朋友们有帮助,本人英语很烂,也比较懒,好在也没几页,就试着翻译了一下,有需要的朋友可以将就着看看,英语好的可以去看原文. 总体感觉,RTLinux的硬件兼容性实在不敢恭维,同样的内核版本,同样的配置在有的平台上就跑不起来,反正我试了一个Intel845G主板的台式兼容机和一个SIS主板的神州移动PC,那个兼容机一加载RTLinux模

旧文备份:利用一个定时器实现多个虚拟定时器的两种方法

固定周期法 使用一个硬件定时器进行固定周期(比如1ms)定时,用一个结构体数组作为软定时器描述表,数组的结构体数就是最大虚拟定时器的数量,每个结构体的成员都包括虚拟定时器状态(空闲.激活.运行.超时触发.周期触发).定时值(换算成定时周期数,例如1ms的硬件定时周期,现进行125ms的定时,定时值就是125).标识ID和回调函数等:用一个变量作为定时周期计数器,每次进入定时中断,重置定时器,扫描结构体数组中的每个成员结构体,对定时值做减一操作,然后判断该定时值是否为0,是则判定该值对应的虚拟定时

旧文备份:FFTW介绍

1. FFTW介绍 FFTW由麻省理工学院计算机科学实验室超级计算技术组开发的一套离散傅立叶变换(DFT)的计算库,开源.高效和标准C语言编写的代码使其得到了非常广泛的应用,Intel的数学库和Scilib(类似于matlab的科学计算软件)都使用FFTW做FFT计算. FFTW是计算离散Fourier变换(DFT)的快速C程序的一个完整集合. l        它可计算一维或多维.实和复数据以及任意规模的DFT:甚至包括正弦/余弦变换和离散哈特莱变换(DHT). l        FFTW输入

旧文备份:Python国际化支持

Python通过gettext模块支持国际化(i18n),可以实现程序的多语言界面的支持,下面是我的多语言支持实现: 在python安装目录下的./Tools/i18n/(windows下例 D:\Program Files\Python25\Tools\i18n)目录中找到pygettext.py运行之,生成翻译文件模版messages.pot,内容大概是这个样子: # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # FI

旧文备份:安装cygwin及在console下输入和显示中文

1.下载Cygwin.exe文件,双击安装,首先在"Choose A Download Source"的时候选择"Download Without Installing",Next>. 2.选择本地包路径"Select Local Package Directory",即是选择将要下载的软件包的存放路径.默认在Cygwin.exe目录下.Next> 3.选择一个下载源"Choose A Download Site"