[CAN-bus/DeviceNet] 最近开始看CANopen的资料

[复制链接]
17489|30
 楼主| John_light 发表于 2008-1-26 16:56 | 显示全部楼层 |阅读模式
感觉只有两个字:晕菜<br /><br />一个又一个的新概念,前一个还没理解,后一个紧接着来了……<br /><br />现在只有硬着头皮啃,也不知道值不值回程票。<br /><br />一声叹息
JOHN_light 发表于 2008-1-27 22:21 | 显示全部楼层

鸟语把我整得够呛

“profile”是什么东西?<br /><br />A&nbsp;very&nbsp;important&nbsp;concept&nbsp;when&nbsp;discussing&nbsp;CANopen&nbsp;is&nbsp;the&nbsp;concept&nbsp;of&nbsp;a&nbsp;profile.&nbsp;In&nbsp;network&nbsp;protocol&nbsp;terminology.&nbsp;a&nbsp;profile&nbsp;is&nbsp;a&nbsp;protocol&nbsp;specification&nbsp;that&nbsp;is&nbsp;based&nbsp;on&nbsp;other&nbsp;existing&nbsp;protocol&nbsp;specifications.&nbsp;Usually,&nbsp;a&nbsp;profile&nbsp;defines&nbsp;a&nbsp;subset&nbsp;of&nbsp;the&nbsp;services&nbsp;provided&nbsp;by&nbsp;the&nbsp;existing&nbsp;protocols&nbsp;that&nbsp;can&nbsp;be&nbsp;used&nbsp;for&nbsp;communication,&nbsp;and&nbsp;restricts&nbsp;the<br />way&nbsp;in&nbsp;which&nbsp;these&nbsp;services&nbsp;can&nbsp;be&nbsp;applied.<br /><br />在论述CANopen时,一个很重要的概念就是profile的概念。在网络协议术语中,profile是基于其它现有协议规范的协议规范。通常,profile定义了能够用于通迅的现存协议所提供服务的子集,并限定了应用这些服务的方法。<br /><br />Device&nbsp;Profile&nbsp;/&nbsp;Communication&nbsp;Profile,我晕
alice84 发表于 2008-1-27 22:23 | 显示全部楼层

a profile is a protocol

  
alice84 发表于 2008-1-27 22:28 | 显示全部楼层

设备协议/通信协议

设备协议估计是和设备通信时发送给和设备返回的值之类的协议<br />通信协议好想有很多种,如TCP/IP协议
john_light 发表于 2008-1-28 16:38 | 显示全部楼层

爱丽斯有心了

周立功公司在相关的文档翻译中好象把这个profile翻译为“子协议”。
alice84 发表于 2008-1-28 16:43 | 显示全部楼层

子协议???/

a&nbsp;profile&nbsp;defines&nbsp;a&nbsp;subset&nbsp;of&nbsp;the&nbsp;services&nbsp;provided&nbsp;by&nbsp;the&nbsp;existing&nbsp;protocols&nbsp;that&nbsp;can&nbsp;be&nbsp;used&nbsp;for&nbsp;communication
john_light 发表于 2008-1-29 10:01 | 显示全部楼层

随看随记

CANopen&nbsp;profile族指定了CANopen的通迅机制和设备功能。profile族由CiA(CAN&nbsp;in&nbsp;Automation)维护。<br /><br />CANopen规范涵盖了应用层和通迅profile(CiA&nbsp;DS-301)、<br />针对可编程设备的框架[framework](CiA&nbsp;DSP-302)、<br />推荐使用的电缆与连接器接法(CiA&nbsp;DRP-303-1)<br />和SI单位还有前缀表示法[prefix&nbsp;representations](CiA&nbsp;DRP-303-2)。<br />CANopen由许多的标准设备profiles、接口profiles还有应用profiles(CiA&nbsp;DS-4XX)补充。<br /><br /><hr><br /><b>CANopen参考模型</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/communication/reference-model.gif"><br />标准的设备profile、接口profile和应用profiles描述了设备、接口和应用的默认行为和可以选择实现的功能。<br /><br /><b>CANopen协议层交互</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/communication/protocol-layer.gif"><br />协议层交互描述了不同层的通迅。设备在CANopen应用层上交换信息和应用对象。所有这些对象都通过一个16位的索引和一个8位的子索引来访问。<br /><br />这些通迅对象[communication&nbsp;object](COB)都用预定义或已配置的标识符映射到一个或多个CAN帧中。CAN物理层指定了包括位速率的位电平。
john_light 发表于 2008-1-29 11:29 | 显示全部楼层

位定时

<b>位定时规范</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/timing/bit-timing-specification.gif"><br />在1&nbsp;Mbit/s的位速率下,每一位由多于8份的时间量组成;在800&nbsp;kbit/s时,多于10份时间量;从500&nbsp;kbit/s到10&nbsp;kbit/s,多于16份时间量。<br />CANopen只使用单次采样方式。<br /><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/timing/bit-timing.gif"><br />每个CANopen模块都必须支持以上列出的指定位速率中的一种。<br />整个总线的长度估计(最坏的情况)以5&nbsp;ns/m的延时传播,内部设备的进出延时总体实际为:<br />1M&nbsp;-&nbsp;800&nbsp;kbit/s:&nbsp;&nbsp;210&nbsp;ns<br />500&nbsp;-&nbsp;200&nbsp;kbit/s:&nbsp;300&nbsp;ns&nbsp;(包括光耦的2×40&nbsp;ns)<br />125&nbsp;kbit/s:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;450&nbsp;ns&nbsp;(包括光耦的2×100&nbsp;ns)<br />50&nbsp;-&nbsp;10&nbsp;kbit/s:&nbsp;&nbsp;&nbsp;1.5份时间量;实际延时=(隐性到显性&nbsp;+&nbsp;显性到隐性)/2<br /><br />对于总线长度超过200&nbsp;m的情况,建议使用光耦。<br />对于总线长度超过1&nbsp;km的情况,可能需要使用中继器。
john_light 发表于 2008-1-29 11:46 | 显示全部楼层

连接器引脚分配

<b>引脚分配</b><br />CANopen设备通迅所使用的物理介质是依照ISO&nbsp;11898标准的带公共回路的差分驱动两线总线。<br />CiA&nbsp;DPR-303-1&nbsp;CANopen&nbsp;recommendation定义了9针D-sub&nbsp;connector(DIN&nbsp;41652或者对应的国际标准)、5针mini&nbsp;style&nbsp;connector、open&nbsp;style&nbsp;connector、multi-pole&nbsp;connector和其它的连接器[connector]。<br />D-Sub&nbsp;connector连接遵循CiA&nbsp;DS-102。<br /><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/physical-layer/pin-assignment.gif"><br /><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/physical-layer/mini-style-connector.gif"><br /><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/physical-layer/open-style-connector.gif"><br />
john_light 发表于 2008-1-29 13:44 | 显示全部楼层

CANopen设备模型

<b>CANopen设备模型</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/device-model.gif"><br /><br />我们可以将一个CANopen设备分为三部分:<br />1、通迅接口[communication&nbsp;interface]和协议软件[protocol&nbsp;software];<br />2、对象字典[object&nbsp;dictionary];<br />3、过程接口[process&nbsp;interface]和应用程序[application&nbsp;program]。<br /><br />通迅接口和协议软件提供在总线上发送和接收通迅对象的服务。<br />对象字典描述在该设备中使用的所有数据类型、通迅对象和应用对象。它是应用软件的接口。<br />应用程序提供内部控制功能,也提供到各过程硬件接口的接口[The&nbsp;application&nbsp;program&nbsp;provides&nbsp;the&nbsp;internal&nbsp;control&nbsp;functionality&nbsp;as&nbsp;well&nbsp;as&nbsp;the&nbsp;interface&nbsp;to&nbsp;the&nbsp;process&nbsp;hardware&nbsp;interfaces]。<br /><hr><br /><b>对象字典的规划</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/device-model/object-dictionary-layout.gif"><br /><br />一个CANopen设备最重要的部分就是对象字典。对象字典本质上是可通过网络访问的顺序预定义样式的分组对象。字典中的每个对象都通过一个16位索引和一个8位子索引来访问。<br /><br />标准对象字典的整体规划和其它工业现场总线的原理一致。<br /><br />对象字典概念迎合任意的设备特性,这意味着生产商不必在它的设备上提供某些扩展功能,不过如果他想这么做,他必须以预定义的样式来实现。<br /><br />通过针对预期增长的功能来定义对象字典条目,任何类型的生产商希望这样实现增强功能时都必须以相同的方式来完成。
john_light 发表于 2008-1-30 09:10 | 显示全部楼层

CANopen数据类型

<b>数据类型(1)</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/device-model/data-types-1.gif"><br /><br />静态数据类型出于明确的目的(什么目的?)都放在对象字典中。<br />基本BOOLEAN型数据取TRUE或FALSE值。<br />基本INTEGERn型数据取整型值。其数值范围在负的2的(n-1)次方和正的2的(n-1)次方减1之间(长度为n的位序列)。<br />基本UNSIGNEDn型数据取非负整型值。其数值范围在零和正的2的(n-1)次方减1之间(长度为n的位序列)。<br />基本FLOAT型数据取实数值。<br /><br />VISIBLE_STRING型数据用后面的数据与数据类型定义语法来描述:Unsigned8&nbsp;-&nbsp;Visible&nbsp;Char,Visible&nbsp;Char数组&nbsp;-&nbsp;Visible&nbsp;String。Visible&nbsp;Char型数据可接受的数值为0h或者20h到7Eh之间的值。<br /><br />OCTET_STRING型数据用后面的数据与数据类型定义语法来描述:Unsigned8数组&nbsp;-&nbsp;Octet&nbsp;String。<br /><br />DATE型数据定义成长度为56的位序列,它包括毫秒(?)、分、时、标准或夏令时、日、星期、月、年和一些保留值。<br /><br />TIME_OF_DAY型数据表示绝对时间,它包括午夜零点过后的毫秒数和自1984年1月1日开始的天数。<br /><br />TIME_DEFFERENCS型数据表示天数与毫秒数的时间差(?)。<br /><br /><b>数据类型(2)</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/device-model/data-types-2.gif"><br /><br />CANopen为PDO和SDO参数指定了一些预定义复杂数据类型。<br />此外,对象字典为特定设备标准和复杂数据类型保留了入口。<br />对于象多轴控制器那样提供多个设备模块的设备或者设备profile,每个虚拟设备都可以使用它自己的数据类型。<br /><br /><b>对象描述</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/device-model/object-description.gif"><br /><br />对象代码必须在CANopen规范定义代码之一。<br />对于<b>简单变量</b>,属性描述只出现一次,无须子索引域和入口类项[For&nbsp;simple&nbsp;variables&nbsp;the&nbsp;attribute&nbsp;description&nbsp;appears&nbsp;once&nbsp;without&nbsp;the&nbsp;sub-index&nbsp;field&nbsp;and&nbsp;entry&nbsp;category.]。<br />对于<b>复杂数据类型</b>,必须为每个成员(子索引)定义属性描述[For&nbsp;complex&nbsp;data&nbsp;types&nbsp;the&nbsp;attribute&nbsp;description&nbsp;must&nbsp;be&nbsp;defined&nbsp;for&nbsp;each&nbsp;element(sub-index).]。<br /><br /><b>入口描述</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/device-model/entry-description.gif"><br /><br /><b>对象字典入口</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/device-model/object-dictionary-entry.gif"><br /><br />一个16位的索引被用来访问对象字典中的所有入口[entry](条目?)。<br />对于简单变量,它引用的就直接是变量的值。<br />然而,对于记录和数组,索引访问(寻址)了整个数据结构。<br /><br />对于复杂对象字典入口例如有多个数据域的数组或记录,子索引引用的是由主索引指向的数据结构中的域。<br /><br />例如,在一个单通道RS-232接口模块上,可能在定义该模块通迅参数的索引6092h处有一个数据结构。该结构包含了针对波特率、数据位、停止位和奇偶校验位的域。子索引概念能够象上图所示那般被用来访问这些独立的域。为了能够通过网络来访问这些数据结构的各个成员,这里定义了子索引。子索引的值总为零[The&nbsp;value&nbsp;for&nbsp;the&nbsp;sub-index&nbsp;is&nbsp;always&nbsp;zero.]。<br /><br /><b>通迅对象</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/device-model/communication-objects.gif"><br /><br /><b>错误寄存器</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/device-model/error-register.gif"><br /><br /><b>若某位被置1则表明发生了特定的错误。必须报告的唯一一个强制性错误是generic错误。在任何错误状态下都报generic错误。</b><br /><br />对于设备来说,对象1001h是一个错误寄存器。设备可以把内部错误映射到该字节。所有设备都必须具备该入口。它是紧急对象的一部分。<br /><br /><b>身份对象</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/device-model/identity-object.gif"><br /><br />1018h索引处的强制身份对象包含了有关虚拟设备的综合信息。<br />Vendor&nbsp;ID是一个Unsigned32型的数值,它由在CiA注册的公司的唯一号和该公司每个部门的唯一号(仅在需要时)组成。<br />Vendor&nbsp;ID的分配由CiA总部来管理。Vendor&nbsp;ID的两部分都必须由CiA注册在案,管理费用为128欧元+德国增值税。该服务对CiA成员免费。<br /><br />生产商特定产品代码标识了特定的设备版本。生产商特定修订号由主修订号(标识了特定的CANopen行为)和次修订号(标识了同一个CANopen行为的不同版本)组成。如果CANopen的功能被扩展了,那么必须增加主修订版本号。<br /><hr><br />问号处有疑问,稍后复查。<br />翻译得很糟糕的地方附上原文。
john_light 发表于 2008-1-30 10:58 | 显示全部楼层

通迅协议

<b>通讯协议</b><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;过程数据对象[Process&nbsp;Data&nbsp;Object](PDO)协议<br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;服务数据对象[Service&nbsp;Data&nbsp;Object](SDO)协议<br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;特殊对象协议[Special&nbsp;Object&nbsp;Protocols]:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;同步[Synchronization](SYNC)协议<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;时间戳[Time&nbsp;Stamp]协议<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;紧急[Emergency](EMCY)协议<br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;网络管理协议[Network&nbsp;Management&nbsp;Protocols]:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;NMT报文协议<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;启动[Boot-Up]协议<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;错误控制协议<br /><br />通过CAN网络传输的CANopen通迅对象均由服务和协议来描述。<br />它们分类如下:<br />&nbsp;&nbsp;+&nbsp;实时数据传输由过程数据对象(PDO)协议执行。<br />&nbsp;&nbsp;+&nbsp;通过服务数据对象(SDO)协议提供对设备对象字典入口(条目)的读和写访问。<br />&nbsp;&nbsp;+&nbsp;特殊功能对象协议提供应用特定的网络同步、时间戳和紧急报文传输。<br />&nbsp;&nbsp;+&nbsp;网络管理(NMT)协议为网络初始化、错误控制和设备状态控制提供服务。<br /><br /><b>生产者/消费者模型</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/communication-protocols/producer-consumer-model.gif"><br /><br />生产者/消费者模型完美地描述了CAN的广播通迅能力。<br />网络中的每个站点都侦听发送站点的报文。每个节点在接收了报文之后的任务就是决定是否接受该报文。因此在CAN节点中必须实现接收过滤器。<br /><br />CAN的广播通迅和无线电台向汽车驾驶员传送交通堵塞信息差不多。每位驾驶员都根据他所要去的方向来确定该信息对他是否重要。<br /><br />生产者/消费者模型允许的服务:发送报文(推模式)或请求报文(拉模式)。<br /><br /><b>客户机/服务器模型</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/communication-protocols/client-server-model.gif"><br /><br />在经典的客户机/服务器模型中,客户机发送一条将由服务器响应的报文,所以客户机得到一个confirmation(确认)。这就象发布一个必须确认的命令,你知道该命令能被领会。<br /><br />客户机/服务器模型被用来传输长度超过8字节的数据。因此,要传输的原始数据被分段并使用相同的标识符一段接一段地发送。整个报文的每个或者一组段都将由接收者确认。所以这是点对点的通迅。在这个客户机/服务器传输上的服务包括上传、下载和终止传输。<br /><br /><b>主机/从机模型</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/communication-protocols/master-slave-model.gif"><br /><br />主机/从机模型只允许由主机发动的通迅。从机总是必须等待主机的通迅请求。<br />这就象军队:军人将获得指令而他只能在被许可之后说话。<br /><br />在基于CAN的网络中,主机/从机通迅能够上适当的标识符分配来实现。Unconfirmed(非确认)的主机/从机通迅也允许广播。<br /><hr><br />CANopen交叉使用这三种模型吗?
john_light 发表于 2008-1-30 13:27 | 显示全部楼层

过程数据对象

<b>过程数据对象</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object.gif"><br /><br />PDO通迅可以用生产者/消费者模型来描述。<br />过程数据可以从一个设备(生产者)发送到另一个设备(消费者)或者到几个其它设备(广播)。PDO均以非确认(non-confirmed)的方式来发送。<br /><br />生产者发出带特定标识符的发送[Transmit]-PDO(T_PDO),它和一个或多个消费者的接收[Receive]-PDO(R_PDO)标识符相对应。<br /><br /><b>PDO协议</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object/pdo-protocol.gif"><br /><br />有两种PDO服务:写PDO和读PDO。<br /><br />写-PDO被映射到一个单独的CAN数据帧。读-PDO被映射到CAN远程帧,该远程帧将由对应的CAN数据帧响应。读-PDO是可选的,它依赖于设备的能力[capability](功能?)。<br /><br />多达8字节的完整数据域可以包含过程数据。设备的PDO号和长度基于特定的应用而且必须在设备profile中指定。<br /><br />PDO对应于对象字典中的入口并提供到应用对象的接口。数据类型和到PDO中的应用对象的映射由对象字典中相应的默认PDO映射结构决定。该结构在属于第一个R_PDO的1600h和属于第一个T_PDO的1A00h入口中定义。在一个CANopen网络中最多能够使用512个T_PDO和512个R_PDO。<br /><br /><b>PDO调度方式</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object/pdo-scheduling-modes.gif"><br /><br />CANopen通迅profile区分三种报文触发方式:<br />1、由设备profile中指定的对象特定事件的发生来触发报文传输。另外,周期性传输节点就算没有事件发生也会随着时间推移触发传输。<br />2、异步PDO的传输可以在接收到其它设备发出的远程请求后发动。<br />3、同步PDO由通过接收到SYNC对象所终止的特定传输周期同步来触发[Synchronous&nbsp;PDOs&nbsp;are&nbsp;triggered&nbsp;by&nbsp;the&nbsp;expiration&nbsp;of&nbsp;a&nbsp;specified&nbsp;transmission&nbsp;period&nbsp;synchronized&nbsp;by&nbsp;the&nbsp;reception&nbsp;of&nbsp;the&nbsp;SYNC&nbsp;object.]。<br /><br /><b>同步PDO</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object/synchronous-pdo.gif"><br /><br />CANopen区分以下传输方式:<br />1、同步传输。<br />2、异步传输。<br /><br />同步PDO在Sync对象后的同步窗中传输[Synchronous&nbsp;PDOs&nbsp;are&nbsp;transmitted&nbsp;within&nbsp;the&nbsp;synchronous&nbsp;window&nbsp;after&nbsp;the&nbsp;Sync&nbsp;Object.]。同步PDO的优先级比异步PDO的优先级要高。<br /><br />异步PDO和SDO可以每当关系到它们的优先级时传输。因此它们也可以在同步窗中传输[Asynchronous&nbsp;PDOs&nbsp;and&nbsp;SDOs&nbsp;can&nbsp;be&nbsp;transmitted&nbsp;at&nbsp;every&nbsp;time&nbsp;with&nbsp;respect&nbsp;to&nbsp;their&nbsp;priority.&nbsp;So&nbsp;they&nbsp;could&nbsp;also&nbsp;be&nbsp;transmitted&nbsp;within&nbsp;the&nbsp;synchronous&nbsp;window.]。<br /><br /><b>周期性和非周期性PDO</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object/cyclic-acyclic-pdo.gif"><br /><br />同步PDO的传输还可以细分为周期性和非周期性传输方式。<br /><br />同步周期性PDO在同步窗中传输。传输类号(1到240)指示了两个PDO传输之间的Sync对象总数。<br /><br />非周期性的同步PDO的传输是由特定应用事件触发的。报文应该和Sync对象同步但不定时地传输。<br /><br /><b>PDO传输类型</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object/pdo-transmission-types.gif"><br /><br />同步(传输类型0~240还有252)的意思是PDO的传输应该和SYNC对象关联。<br /><br />非周期性(传输类型0)意思是报文应该和SYNC对象同步但不定时地传输。<br /><br />比较好的做法是,设备使用SYNC作为输出或者开动的触发条件,以先前的同步接收-PDO为基础来各自更新后面同步发送-PDO的数据传输。这种机制的细节和设备类型有关,若可用则在设备profile中定义。<br /><br />一个PDO的传输类型在PDO通迅参数索引(对于第一个R_PDO为1400h,对于第一个T_PDO为1800h)中定义。<br /><br /><b>PDO参数“抑制时间”</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object/pdo-parameter-inhibit-time.gif"><br /><br />为了保证网络上低优先级通迅对象不会饿死,可以赋予PDO一个抑制时间。该抑制时间定义了一个PDO服务的两个连续会话之间必须经过的时间。<br /><br />在上图的例子中PDO_1获得比PDO_2和PDO_3更高的优先级。抑制时间使得第二个和第三个PDO即使优先权比第一个低也能够得到总线的访问权。<br /><br /><b>PDO参数集</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object/pdo-parameter-sets.gif"><br /><br /><b>通迅参数</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object/communication-parameter.gif"><br /><br />通迅参数描述了一个PDO的通迅行为。通迅参数集在对象字典中的20h索引处定义。<br /><br /><b>PDO映射</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object/pdo-mapping.gif"><br /><br />PDO映射参数定义了过程数据对象的内容。在CANopen设备profile中可以指定默认的PDO映射。<br /><br />CANopen还支持可变的PDO映射。如果一个设备支持可变的PDO映射,那么传输可以针对特定的应用进行最优化。<br /><br /><b>映射参数</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/process-data-object/mapping-parameter.gif"><br /><br />映射参数集在规范的21h索引处描述,应用对象都映射到一个PDO中。<br /><br />最多可以映射64个对象。
john_light 发表于 2008-1-30 13:54 | 显示全部楼层

自勉

客有曰:&quot;梨益齿而损脾,枣益脾而损齿。&quot;一呆弟子思久之,曰:&quot;我食梨则嚼而不咽,不能伤我之脾;我食枣则吞而不嚼,不能伤我之齿。&quot;狎者曰:&quot;你真是囫囵吞却一个枣也。&quot;遂绝倒。
john_light 发表于 2008-1-31 11:35 | 显示全部楼层

服务数据对象

<b>服务数据对象</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object.gif"><br /><br />服务数据对象[Service&nbsp;Data&nbsp;Objects](SDO)提供对设备对象字典的访问。<br />因为该通迅是要确认的,所以一个SDO使用不同标识符的两个CAN数据帧。<br /><br />依靠SDO,可以在两个设备之间建立一个点对点的通迅通道。<br />被访问对象字典的所有者是SDO的服务器。一个设备可以支持多于一个SDO。<br />支持一个SDO是强制的也是默认的情况。<br /><br /><b>分段传输</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object/segmented-transfer.gif"><br /><br />SDO允许传输任意大小的数据。它们以一连串的片断来传输。<br />长度小于5字节的数据的传输可以依靠“Initiate&nbsp;Domain&nbsp;Down/Upload”协议来实现“无阻”传输。With&nbsp;these&nbsp;protocols&nbsp;the&nbsp;data&nbsp;transmission&nbsp;is&nbsp;performed&nbsp;within&nbsp;the&nbsp;initiate&nbsp;protocol.<br /><br />长度超过4字节的报文传输必须依靠分段传输来完成。由于数据能够分割进多个CAN报文中,因此允许传输任意长度的数据。在SDO的头一个CAN报文后的所有段都可以包含七字节的有用数据。最后的段可以含有一个结束指示符。<br /><br />SDO以“确认”方式来传输,也就是每个段的接收都由相应的CAN报文应答。<br />总是由客户机负责发动传输。被访问对象字典的所有者就是SDO的服务器。客户机和服务器都可以主动终止一个域(domain)(数据块?)的传输。<br /><br />可选地,SDO可以以一连串的块来传输。每个块都是一连串多达127个包含了一个顺序号和数据的段,不过只用一个报文确认。<br /><br /><b>对象字典的访问</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object/object-dictionary-access.gif"><br /><br />对CANopen对象字典的读写访问是通过SDO来完成的。客户机/服务器命令分类符包含了以下信息:<br />&nbsp;&nbsp;*&nbsp;下载/上传;<br />&nbsp;&nbsp;*&nbsp;请求/响应;<br />&nbsp;&nbsp;*&nbsp;分段/分块/无阻传输;<br />&nbsp;&nbsp;*&nbsp;数据字节总数;<br />&nbsp;&nbsp;*&nbsp;结束指示符;<br />&nbsp;&nbsp;*&nbsp;针对每个随后段的交替翻转位<br /><br />SDO由通迅参数描述。<br />默认的服务器-SDO(S_SDO)在入口1200h中定义,而头一个客户机-SDO在入口1280h中指定。<br /><br />在一个CANopen网络中可以使用多达256个SDO通道,每个通道需要两个CAN标识符。<br /><br /><b>开启SDO下载</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object/initiate-sdo-download.gif"><br /><br />我们要读写服务器设备的对象字典时,第一个要调用的是开启(initiate)SDO下载/上传的服务。<br /><br />要注意的是数据字节都是最高有效位最先发送。<br /><br /><b>下载SDO段</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object/download-sdo-segment.gif"><br /><br />每个SDO段的上传/下载在客户机和服务器之间交换两个CAN数据帧。<br />request传送了数据段还有分段控制信息。<br />response对每个段的接收进行应答。<br /><br />位t是翻转位,它在连续的域分段报文中来回翻转,在第一个段中它的初始值为零。<br /><br /><b>终止SDO传输</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object/abort-sdo-transfer.gif"><br /><br />终止SDO传输[Abort&nbsp;SDO&nbsp;Transfer]是用来向客户机或服务器通报SDO传输错误的。<br /><br />使用该服务的动机是指出保存在Error&nbsp;Class、Error&nbsp;Code和Additional&nbsp;Code域中一组错误代码[The&nbsp;reason&nbsp;for&nbsp;the&nbsp;invocation&nbsp;of&nbsp;this&nbsp;service&nbsp;is&nbsp;indicated&nbsp;as&nbsp;a&nbsp;set&nbsp;of&nbsp;error&nbsp;codes,&nbsp;stored&nbsp;in&nbsp;the&nbsp;fields&nbsp;Error&nbsp;Class,&nbsp;Error&nbsp;Code&nbsp;and&nbsp;Additional&nbsp;Code.]。<br /><br /><b>CANopen&nbsp;SDO&nbsp;块传输</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object/sdo-block-transfer.gif"><br /><br />SDO下载/上传块协议由Initiate&nbsp;SDO&nbsp;Down-/Upload报文启动,后面跟着一连串SDO&nbsp;Down-/Upload块。<br />该协议由End&nbsp;SDO&nbsp;Block&nbsp;Down-/Upload报文来结束。<br /><br /><b>CANopen下载SDO块</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object/download-sdo-block.gif"><br /><br />下载SDO块是由单个报文确认的多达127序列段。在确认报文中,如果c-位被置为1,那么该下载序列块已经被成功接收。<br />未成功完成由<b>终止SDO传输请求/指示</b>来指出。<br /><br /><b>CANopen结束SDO块下载</b>[CANopen&nbsp;End&nbsp;SDO&nbsp;Block&nbsp;Download]<br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object/end-sdo-block-download.gif"><br /><br />为了校验SDO块下载/上传的正确性,客户端和服务器都对块进行CRC计算,该CRC结果在End&nbsp;SDO&nbsp;Block&nbsp;Down-/Upload报文中交换并校验。校验的多项式格式为X^16&nbsp;+&nbsp;X^15&nbsp;+&nbsp;X^5&nbsp;+&nbsp;1。<br />CRC生成器在计算校验前必须初始化为0。校验过程可以计算或者使用多项式表。<br /><br /><b>CANopen&nbsp;SDO参数集</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object/sdo-parameter-set.gif"><br /><br /><b>CANopen&nbsp;SDO参数记录</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/service-data-object/sdo-parameter-record.gif"><br /><hr><br />翻译的让人头痛的是不知道如何以母语来贴切地表达一门外语。
疯子8972 发表于 2008-2-3 13:23 | 显示全部楼层

哈哈

又有一个CANOPEN的热心人<br />你是在哪里用CANOPEN啊<br />我在通讯技术里也贴了一点基础的东西<br />没有人回应<br />失去信心就没有再弄了<br />最近比较忙<br />有空要写个简易的东东<br />不管优化不优化<br />跑起来再说了:)<br />
huangxq_26 发表于 2008-2-5 14:26 | 显示全部楼层

看兄弟这么努力,搞定CANopen应该比较快!

  
john_light 发表于 2008-2-13 15:55 | 显示全部楼层

感谢16楼17楼两位同学的关注和鼓励

路仍远但在脚下。
john_light 发表于 2008-2-15 09:43 | 显示全部楼层

CANopen同步对象

<b>CANopen同步对象</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/synchronization-object.gif"><br /><br />Sync-Producer[同步生产者]为Sync-Consumer[同步消费者]提供同步信号。当Sync-Consumer接收到该信号时,它们开始执行它们的同步任务。<br />通常,同步PDO报文加上Sync对象的传输周期的固定传输时间保证了传感器设备可以整理采样过程变量而执行器同样可以应用它们的动作[actuation激励?]。<br />同步对象是标识符可在索引1005h处获得。<br /><br /><b>CANopen同步协议</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/synchronization-object/sync-protocol.gif"><br /><br /><b>同步对象</b>通过同步设备担当该对象的生产者来实现。为了保证同步对象及时地访问CAN总线,它被赋予一个很高优先级的标识符。<br />CANopen建议标识符取128,它是预定义连接集中使用的最高优先组中的一个值。在同步对象中不传输任何应用数据。默认情况下,同步对象不传输任何数据(这是不是啰嗦了?)。<br /><br /><b>CANopen同步时间定义</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/synchronization-object/sync-time-definitions.gif"><br /><br />PDO同步传输意味着关于同步对象的传输是在固定的时间内进行的。同步PDO在与同步传输相关的给定时间窗“synchronous&nbsp;window&nbsp;length[同步窗长度]”内传输,并且在每个同步周期内最多传输一次。同步对象之间的时间周期由参数“communication&nbsp;cycle&nbsp;period[通讯循环同期]”指定。<br />“synchronous&nbsp;window&nbsp;length”(1007h)和“communication&nbsp;cycle&nbsp;period”(1006h)在对象字典中指定,它们可以在启动过程中由配置工具向应用设备写入。<br />由于在同步对象之前可能刚好有另外的报文要发送,因此同步生产者的传输会存在与潜伏期相当接近的时间抖动。我们还必须考虑Sync被发送两次的情况。<br /><br /><b>CANopen同步操作</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/synchronization-object/synchronous-operations.gif"><br /><br />定期发送的同步报文可能使支持该功能的CANopen设备准同步地保存输入的实际值。然后它们在后面的时间帧中被发送给所有感兴趣的设备。<br /><br />在后面的时间帧中,CANopen设备传送输出值给传动装置(actuators)。不过,这些值在下一个同步报文被接收之前不会生效。
DAVIDYE 发表于 2008-2-25 10:27 | 显示全部楼层

john_light!

john_light&nbsp;的热情让人敬佩!&nbsp;加油!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

1094

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部