旧文备份:CANopen协议PDO的几种传输方式
(于2007.1.22)
由于PDO所传输的数据内容是无协议的且分配的标识符范围较SDO靠前,因此,其效率和优先级都是较高的,通常用于实时过程数据的传输.
PDO是生产/消费类型的通讯方式,数据只有一个生产者(发送),但是消费者(接收)可以有多个,生产者和消费者事先都已知道数据的类型和内容(通过设置PDO映射来管理).
对PDO通讯参数的设置可以实现四种通讯方式:
- 同步传输.在收到SYNC消息后触发PDO发送,可以定义收到几个SYNC后触发一次TPDO,在有SYNC的CANopen网络中,SYNC就相当于一个网络节拍,数据根据节拍来进行固定周期的过程数据传输.比如网络中有一个压力传感器,一个温度传感器,一个物位传感器,网络中有一个HMI监控终端来实时监控三个传感器采集的数据,压力传感器可能检测的是一个快速的压力变化,那可以每隔200mS更新一次数据,温度可能需要1S更新一次数据,物位可能5S更新一次数据,(假设各传感器的数据采集周期都比数据更新周期小,如果大的话数据更新快可能没有意义,呵呵)现在我可以设置一个200mS周期的SYNC消息,压力传感器每收到一个SYNC就向HMI传输一次数据,温度传感器可以每隔5个SYNC传输一次数据,同样物位传感器就是每收到25个SYNC发送一次数据.这种通讯方式显得比较规矩,好管理,系统运行效率高,适合周期性数据更新的应用.
- 远程请求.在需要网络上某个节点的数据的时候,我发一个远程数据请求过去,对方在接收到请求后,把我要的数据给发过来,这种方式是在我需要的时候去主动获取.
- 定时发送.这个有别于SYNC,它是在本节点实现周期发送,通过设置PDO参数,定一个周期,每隔固定的时间向网络上发送一次PDO,它与SYNC无关,在网络设计中主要按照传感器的数据采集速度和数据更新要求来设定定时周期.
- 事件触发.当节点的某个时间发生触发的一次数据发送,例如当某个接着报警开关的开关量采集节点的报警状态发生变化时,触发一次PDO将报警状态发送到网络上,使系统能够及时获得该报警状态信息.该方式是实时性最好的一种传输方式,特别适合系统运行出错报警和重大事件的及时处理上.
上面的几种传输方式各有所长,在CANopen网络的设计中,按照不同的应用灵活配合使用才能构建一个优秀的解决方案.
旧文备份:CANopen协议PDO的几种传输方式的更多相关文章
- 旧文备份:CANopen协议中SDO服务
SDO是服务数据对象接口(Service Data Obiect)的缩写,顾名思义提供服务数据的访问接口,服务数据就是一些实时性要求不高的数据,一般是指节点配置参数,因此,SDO一般用来配置和获得节点 ...
- 旧文备份: CANopen的LSS子协议中文翻译
有关节点地址和网络波特率的在线设置等:下载
- 旧文备份:CANopen中SYNC的功能和使用
SYNC是CANopen管理各节点同步数据收发的一种方法,相当于网络节拍,基于同步的PDO按照这个网络节拍来执行实时数据的收发.SYNC属于生产/消费型通讯方式,网络中有且只有一个SYNC生产者,一般 ...
- 旧文备份:简单CANOpen 协议说明
(十年前的旧文,不舍等扔) 创建日期:2005-11-17 修改日期:2005-11-17 文件名称:简单CANOpen 协议说明.doc 作者:winshton 版本:V1.0 (注:本文以24in ...
- 旧文备份: 怎样实现SDO服务
SDO是CANopen协议中最复杂的一部分,带有应答机制,有多种传输方式,并且完整的SDO功能节点需提供1个SDO server和多个SDO client,因此SDO的实现异常困难,协议多种传输方式的 ...
- 旧文备份:在CANopen网络中通过LSS服务设置节点地址和网络波特率
CANopen专有个子协议用来描述怎样去通过网络设置节点地址和波特率,就是CiA DSP-305,大伙都叫LSS协议,是Layer Setting Services的缩写,不太好翻译,可以叫底层设置服 ...
- 旧文备份:怎样利用好单片机上的存储器资源来实现OD的存储与访问
我们知道OD(对象字典)是CANopen的核心,所有功能都是围绕它开展的,是协议栈的数据中心,良好的OD实现是协议栈高效稳定运行的基础,而OD的实现最基本的一点就是怎么去保存它.因为OD的内容比较杂, ...
- 旧文备份:rtlinux安装手册
前段时间接触了几天RTLinux,折腾了好几天才总算把它安装上,得益于Prof. Chang-Gun Lee的安装建议,觉得该文档可能会对准备尝试安装RTLinux的朋友们有帮助,本人英语很烂,也比较 ...
- 旧文备份:FFTW介绍
1. FFTW介绍 FFTW由麻省理工学院计算机科学实验室超级计算技术组开发的一套离散傅立叶变换(DFT)的计算库,开源.高效和标准C语言编写的代码使其得到了非常广泛的应用,Intel的数学库和Sci ...
随机推荐
- C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理
在现今很多网站里面,都使用了微信开放平台的扫码登录认证处理,这样做相当于把身份认证交给较为权威的第三方进行认证,在应用网站里面可以不需要存储用户的密码了.本篇介绍如何基于微信开放平台的扫码进行网站的登 ...
- c#动态加载卸载DLL的方法
这篇文章介绍了c#动态加载卸载DLL的方法,有需要的朋友可以参考一下 c#中通过反射可以方便的动态加载dll程序集,但是如果你需要对dll进行更新,却发现.net类库没有提供卸载dll程序集的方法.在 ...
- Ajax制作智能提示搜索
一.效果图: 二.实现过程: 思路: 三.部分代码: html: <div id="searchbox"> <div><input type=&quo ...
- 使用T4模板合并js文件
不知道该怎么表达,或许直接贴图贴代码更好 前因:在第一个使用angularjs的项目中我将所有的controller写到一个文件里面,深知维护起来那滋味,所以再次使用angularjs的时候,我便把所 ...
- 十一个行为模式之状态模式(State Pattern)
定义: 当一个对象有多个状态,并且在每个状态下有不同的行为,可以使用状态模式来在其内部改变状态时改变其行为,而客户端不会察觉状态的改变,仍使用同样的方法或接口与对象进行交互. 结构图: Context ...
- VS 快捷键
项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt + L = 显示Solution Explorer(解决方案资源管理器) Shift + Alt+ C = 添加 ...
- .NET MVC 和 JAVA MVC有什么区别?
两者的主要区别是编程语言的不同. 最典型的JAVA MVC就是JSP + servlet + javabean的模式.比较好的MVC,老牌的有Struts.Webwork.新兴的MVC 框架有Spri ...
- [C/C++] DebugBreak
在代码中直接调用DebugBreak()函数,可以使程序中断运行,和在IDE中设置断点中断运行的道理是一样的. 用这种方式,一些情况下比打断点更方便调试,如下,在test()函数返回0时激活断点 #i ...
- 使用Object.create 克隆对象以及实现单继承
var Plane = function () { this.blood = 100; this.attack = 1; this.defense = 1; }; var plane = new Pl ...
- 火狐下多个span连在一起和换行写存在差异
当父元素的宽度确定,多个span换行写,span加起来占的宽度比预设的大