您的位置:控制工程论坛网论坛 » 现场总线 » Device Net总线知识汇总贴

chenwh78

chenwh78   |   当前状态:在线

总积分:6174  2024年可用积分:0

注册时间: 2008-10-10

最后登录时间: 2019-06-16

空间 发短消息加为好友

Device Net总线知识汇总贴

chenwh78  发表于 2008/10/21 8:32:31      2226 查看 5 回复  [上一主题]  [下一主题]

手机阅读

        我想把论坛内几种总线知识的相关贴汇总到各个主题贴中!以便大家分类学习!同时欢迎大家跟帖!
1楼 0 0 回复
  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/20 9:37:08

    DeviceNet现场总线简介

    点击看原图

      DeviceNet是一种低成本的通讯总线。它将工业设备(如:限位开关,光电传感器,阀组,马达启动器,过程传感器,条形码读取器,变频驱动器,面板显示器和操作员接口)连接到网络,从而消除了昂贵的硬接线成本。直接互连性改善了设备间的通讯,并同时提供了相当重要的设备级诊断功能,这是通过硬接线I/O接口很难实现的。
      DeviceNet是一种简单的网络解决方案,它在提供多供货商同类部件间的可互换性的同时,减少了配线和安装工业自动化设备的成本和时间。DeviceNet不仅仅使设备之间以一根电缆互相连接和通讯,更重要的是它给系统所带来的设备级的诊断功能。该功能在传统的I/O上是很难实现的。

      DeviceNet是一个开放的网络标准。规范和协议都是开放的,供货商将设备连接到系统时,无需为硬件,软件或授权付费。任何对DeviceNet技术感兴趣的组织或个人都可以从开放式DeciceNet供货商协会(ODVA)获得DeviceNet规范,并可以加入ODVA,参加对DeviceNet规范进行增补的技术工作组。


      DeviceNet的许多特性沿袭于CAN,CAN总线是一种设计良好的通信总线,它主要用于实时传输控制数据。DeviceNet的主要特点是:
    短帧传输,每帧的最大数据为8个字节;无破坏性的逐位仲裁技术;网络最多可连接64个节点;数据传输波特率为125kb/s、250kb/s、500kb/s;点对点、多主或主/从通信方式;采用CAN的物理和数据链路层规约。[详细

      DeviceNet带来的好处:
    1、提高设计的弹性
    ·通过提供网络数据流的能力来提供无限制的IO端口
    ·提供互操作性和即插即用能力
    2、改善的过程数据管理
    ·提供对等(Peer-to-Peer)或主/从(Master/Slave)管理
    ·作为一个快速响应处理元的结果,提高了吞吐量和可重复性
    -包含在位置刻度和预先事件及报警通知中的隐含诊断信息
    -在诊断中可延长定期检修的间隔周期
    3、降低安装成本
    - 简化配线,避免了潜在的错误点,减少了所需的文件,减少劳动力资源并节省了安装空间
    2楼 回复本楼

    引用 chenwh78 2008/10/20 9:37:08 发表于2楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/20 9:43:18

    DeviceNet现场总线协议

      DeviceNet协议是一个简单、廉价而且高效的协议,适用于最低层的现场总线,例如:过程传感器、执行器、阀组、电动机起动器、条形码读取器、变频驱动器、面板显示器、操作员接口和其他控制单元的网络。可通过DeviceNet连接的设备包括从简单的挡光板到复杂的真空泵各种半导体产品。DeviceNet也是一种串行通信链接,可以减少昂贵的硬接线。DeviceNet所提供的直接互连性不仅改善了设备间的通信,而且同时提供了相当重要的设备级诊断功能,这是通过硬接线I/O接口很难实现的。
      除了提供ISO模型的第7层(应用层)定义之外,DeviceNet规范还定义了部分第1层(物理收发器)和第0层(传输介质)。图为DeviceNet在ISO模型中的相关层。对DeviceNet节点的物理连接也作了清楚的规定。连接器、电缆类型和电缆长度,以及与通信相关的指示器、开关、相关的室内铭牌都作了详细规定。
      DeviceNet网络最大可以操作64个节点,可用的通讯波特率分别为125kbps、250kbps和500kbps三种。设备可由DeviceNet总线供电(最大总电流8A)或使用独立电源供电。 DeviceNet网络电缆传送网络通讯信号,并可以给网络设备供电。宽范围的应用导致规定了不同规格的电缆:粗电缆、细电缆和扁平电缆,以能够适用于工业环境。
      DeviceNet设备的物理接口可在系统运行时连接到网络或从网络断开,并具有极性反接保护功能。可通过同一个网络,在处理数据交换的同时对DeviceNet设备进行配置和参数设置,这样使复杂系统的试运行和维护变得比较简单;而且现在有许多的高效工具供系统集成者使用,开发变得容易。
      DeviceNet使用“生产者-消费者”通讯模型以及CAN协议的基本原理。DeviceNet发送节点生产网络上的数据,而DeviceNet接收节点则消费网络上的数据;两个或多个设备之间的通信总是符合基于连接的通讯模式。
    3楼 回复本楼

    引用 chenwh78 2008/10/20 9:43:18 发表于3楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/21 8:23:10

    DeviceNet开发者必须考虑一些问题如通讯要求,CAN收发器和协议控制器的选择等。设计人员要从DeviceNet协议栈的特点和所使用的开发工具出发,来决定这些事项。市场上的大部分DeviceNet产品都只有从站功能,因此大部分的文章都只讨论从站的开发设计。如果你考虑要设计带有主站功能的产品,我们建议你与一个或几个提供DeviceNet服务的公司联系。 

       从站开发中首先要考虑的是I/O通讯的方式。初期,DeviceNet只定义了位选通(bit-strobe)和轮询(polled)两种I/O通讯的方式可以在主站中使用。然而,随着一些公司的带有状态改变(COS)或循环(Cyclic)I/O交换方式的主站产品如所有的Allen-Bradley的扫描模块得到应用,即使今天的客户可以不要求这些功能,但在设计的时候也要考虑到这些I/O数据交换方式。 

       位选通(Bit-strobe)主要用于传感器设备或其它一些只有很少(1Bit)或没有输出数据(output data)要求的从站。除此外,位选通也用于将输出数据同步送达多个设备。但是,由于选通帧的使用并未在DeviceNet协议中被标准化,因此一些设备自身拥有的应用将受到限制。 

       轮询(Polling)属于“bread and butter”型的I/O交换方式。由于所有的主站设备都支持这种方式,所以这是开发必须考虑的。 

       状态改变(COS)是一种功能很强大的I/O数据交换方式,它能增加网络的吞吐量,降低某一时间的网络负载。这些数据交换方式都允许完全使用CAN协议固有的多主系统能力,因此对于所有新的开发都要考虑到。虽然位选能(Bit-strobe)仅限于最大1bit消耗数据(consumed data)和64bits生产数据(produced data),但轮询,状态改变和循环的I/O数据交换方式都没有这样的限制。如果你的I/O数据要求大于CAN固有的64bits(8bytes)的数据长度,则要考虑分段协议,用户将不必处理任何分段协议的细节,因为所有的分段和重组都由DeviceNet协议自动完成。 

       尽管分段协议不是必须要支持的,但如果允许在回应显性报文的消息中使用完整的32个字符长的产品名称,则要考虑使用分段协议。如果你支持一些特性如通过DeviceNet完成组态下载或固件升级的功能,你就必须使用分段协议来发送和接收报文。 

    物理层要求 

       DeviceNet标准允许使用四种连接器:迷你型(mini),微型(micro),开放型(open)和带螺丝终端(screw terminals)。如果可能,使用迷你型,微型,开放型连接器允许随意的即插即用安装。所有非IP65/67的设备都可以使用Phoenix或其它一些厂商的开放型连接器。螺丝终端仅用于不能使用其它连接器的地方。螺丝终端同样支持从网络上断开而不影响主干线。如果你不使用迷你型,微型或开放型连接器,那建议你在早期的开发过程中与一致性测试实验室联系,以考虑他们在连接方法的一致性方面的意见。 

       如果你想把SDS(Smart Distributed System)的产品转换为DeviceNet或在后期在你的产品上实现SDS协议,那你要知道事实上微型和开放型连接器的开口销与DeviceNet协议不一样。因此,已经存在的SDS和CAN OPEN设备的电路可能不符合DeviceNet的接线保护要求,所以将来可能会必须作修改。DeviceNet所要求的接线保护电路并未被排除在SDS或CANopen环境之外。 

       DeviceNet只支持125K,250K,500K波特率,而不支持另外一些基于CAN的网络(如SDS和CANopen)所支持的1M波特率,因为此波特率下对网络长度有严格的限制。DeviceNet并不要求三种波特率都支持,尽管不支持所有的波特率的产品在市场上会处于劣势,但DeviceNet并未要求都支持所有的波特率。 

       DeviceNet对收发器(transceivers)的要求超过了ISO11898的要求,主要是因为DeviceNet的物理节点会扩展到64个。是否使用物理隔离一般是基于你的产品类型的,与外部无电气连接且完全使用总线供电的设备,典型的如传感器就不需要隔离,但与外部有连接的设备几乎都要有物理隔离的。使用隔离光耦要注意,因为这将增加收发器的延迟,协议要求通过光耦的最大延迟时间为40ns,记住使用快速的光耦就意味着低的传送延迟。目前DeviceNet使用的典型器件是500MHz的器件。 

       所有的DeviceNet节点都要求CAN的收发器部分从总线上获取电源,以保证连接到总线的CAN收发器不会因未加电而影响到总线的数据传送。 

    CAN协议控制器硬件 

       由于有各种不同的CAN芯片和单片机芯片可以使用,所以这里只给出一些通用的做法: 

       * 不要使用SLIO。在现今的SLIO设备中,你已经无法用它来实现DeviceNet协议规定的最小要求了。 

       * 所有使用11-bit确认区的CAN芯片都可以使用。DeviceNet网络既不要求使用29-bit长确认区也不允许其存在于网络之中。 

       * BasicCAN芯片可以很好的使用在只有group 2 only 的从设备中。协议中的group 2 only的描述对BasicCAN是最优化的。 

       * 当使用结合了CAN芯片的微处理器时要将其组件减到最少,这可能只推荐使用于微处理器与CAN芯片集成在一起并精确的符合设备的要求的场合。选择独立于单片机的CAN芯片可以实现更加复杂的设计,在作出选择之前,要考虑到任何一个带CAN芯片的处理器其指令的处理方式。 

       * 每一个DeviceNet节点都必须支持一个32-bit的序列号(serial number),它是由厂商提供的每台设备都有的唯一识别码。因此,你的设备可能需要非易失可读写存储器,如果你的设备支持可以设定参数,则非易失存储器是必须的。 

       * 当CAN控制器复位和加电/掉电的时候要特别注意CAN_H和CAN_L线上的状态。这时CAN芯片将会漂移或被驱动到不同的电平,使总线被驱动为显性。所以使用被动上拉或下拉,设置控制寄存器和在TXD到收发器之间使用逆变器以保证上述情况不会对总线产生不良影响。 

       * 不能允许不使用CAN控制器的输入(RX0或RX1)而将其留空。应将其连接到收发器的VCC/2或使用电压分配器,将输入留空基本上一定会引起错误帧。一些CAN控制器也提供一个寄存器来关闭未使用输入的功能,直到不出现这一现象,甚至当引脚被禁止掉也会起作用。 

    DeviceNet协议的软件 

       由于没有人一定要从别人那里购买DeviceNet软件,所以市场上有各种不同的DeviceNet软件包可以很成功的用来组合成DeviceNet产品。选择使用一个特殊的软件包要考虑其工具的特点和供应商提供的服务支持。定价会成为一个问题,但通常都说你只是支付你获得的部分。 

       一些基本的问题必须考虑: 

       * 所考虑的软件是否在我的硬件上可以使用? 

       * 有没有任何汇编的代码需要重写? 

       * 需要重写多少硬件驱动程序? 

       * 执行的速度是否符合我的应用要求? 

       * 我的应用是否要求所有的通讯方式(I/O和Explicit messaging)? 

       * 是否支持分段协议(如果我的应用要求)? 

       * 使用什么编译器?我所使用的是否和此编译器相似? 

       * 是否支持EDS文件? 

       * 我可以从此软件包的供应商获得什么支持? 

       这是每个电气设备供应商必须参考的,做出决定应该考虑如下问题: 

       * 公司内部是否有足够的基础技术,如CAN和单片机技术? 

       * 这是一次性的工作呢,还是可以按自己的期望对产品进行更深的修改? 

       简单的从站可以很容易实现(一些公司可以在几星期内实现基本的设备功能),但对于更复杂的设备,尤其是带主站功能的设备,建议你在商业软件包的基础上进行设计。

    组态(configuration)需求 

       EDS (Electronic Data Sheet)是一种用于DeviceNet设备组态的强有力工具,无论你的设备可能没有或是很少有参数可以通过网络访问来进行修改,都强烈推荐你生成EDS文件。 

       设备的组态可以分为两个部分,第一部分是与网络通讯相关的参数设定,包括波特率和MAC ID。许多设备通过拨码开关来设定其参数,而另外一些设备可以通过DeviceNet连接来访问这些参数,这在Allen-Bradley DeviceNet管理软件里被称为“device commissioning”。一些产品支持自动波特率侦测,对于用户来说这使用起来会简单些,但显然必须要有些设备能够先在网络上建立一个固定的波特率。换句话说,自动波特率侦测必须要求至少有一个节点设定了一种波特率,或预先配置了一种波特率。出于此原因所以建议主站设备不要使用自动波特率侦测以提供给网络一个可参考的波特率。 

       另一部分是设备组态的主要部分,即与应用相关的参数设定。如果一个设备的EDS被配置后,所有的参数(可写的和只读的)都会以文本或帮助指令的开式集中显示。可以用通俗的方式和实际的格式来修改参数,且bits和bytes不会混乱。设备“增强配置”中的参数显示也可以在线监视参数的实际值,对参数的监视反映了通过EDS参数列表来对参数进行访问。然而,这些参数可以通过显性报文来读取,因此快速的传送可能丢失但静态值则不会出现问题。 

       EDS文件非常容易编写,如果一个产品支持参数类(parameter class)的实例,可以通过DeviceNet管理软件来在线生成EDS文件。DeviceNet规范第二卷第四章包括了如果生成这个文件的细节和例子。 

    一致性测试 

       一致性测试可以由ODVA测试实验室来完成。测试包括了协议兼容性,也包括物理层的兼容性,结果分为通过或失败。互操作性测试也在进行,但目前还没有正式的测试步骤。互操作性的测试的结果会提交给供应商,但不会有通过或失败的定义。 

       尽管强烈推荐你进行一致性测试,且有些用户明确要求,但ODVA或DeviceNet并不强迫你做任何一致性测试。通过一致性测试将增强你的用户对你的产品的信任,且可以帮助你开发更好的产品。一致性测试分为两步: 

       第一步,设计者使用一致性测试软件(可从ODVA获得)的描述工具描述产品所具有的对象的细节。这个描述是一致性测试软件对产品所具有的协议特性进行测试所必需的。自从一致性测试软件可以运行于开发模式,可以对协议某个部分进行测试以来,开发者就可以在开发的过程中进行预测试。强烈建议在代码调试的早期就开始使用一致性测试软件。一致性特别兴趣小组把它看着是一开发工具,同时也是协议确认工具。 

       如果产品通过开发实验室的测试,就可以进行第二步,在ODVA注册产品的一致性测试,然后开发者必须联系其中一个ODVA测试实验室以安排测试会议,开发者并不必一定参加实际的测试,不过建议参加实际测试以可以快速排出一个小问题。 

       如果产品通过测试,ODVA将发布测试结果,如果测试不通过,则只有测试实验室和ODVA知道结果。 

    开发工具 

       这部分内容不是提供开发产品所必需的工具的完整列表,只是指出一些所必须的工具的类型。 

       通常假设你充分具备了单片机开发的技术,因此,此部分将只讨论DeviceNet(CAN)相关的工具。 

       作为最小开发系统,你需要一个CAN监视器,典型的为一张插入PC的CAN卡及配套的应用软件。兼容PC的DeviceNet卡可以从一些公司获得如Softing, STZP, Huron Networks, SST或是其它一些公司。参考最新的ODVA产品列表或在线列表,可以找到一个完整的提供这种卡的厂商列表,性能与报价各有不同,确认他的产品与你的PC的兼容性及在这张卡上运行的软件的类型后,再作出选择。 

       DeviceNet或CAN监视软件包有不同的价格和性能,Allen-Bradley的从站开发工具是典型的低端工具,而Vector的CANalyzer显然是一商端的工具,价格比Allen-Bradley产品高出十倍,通常一分钱一分货。因此,一个低端的工具可能是一个好的起点,在整个简单产品的开发中都可以使用,但对于复杂的产品当然得使用更加强大的工具。再次强调,ODVA产品列表(文档或在线版本)是很好的信息来源,如果你只从事CAN级的工作,则有很多公司提供支持CAN第二层协议的监视器,CiA(CAN in Automation)可以帮助你。 

       一旦你的产品可以操作了,你可能想把产品放到更典型的工业控制环境中运行,首先你应该把产品放到将来产品所要用到的典型环境中运行。包括在组态工具中运行,看看你的产品如果回应显示报文请求以改变你的设备的可配置属性值。这也可以检查EDS文件是否正确。 

    最小模式要求 

       DeviceNet是一个限制很少的很开放的网络,但某些原则在开发开始之前也应该考虑到,且在产品投放到市场之前必须遵守。 

       唯一的注册要求是注册厂商ID号,厂商ID号必须与现有产品的厂商号不同,购买协议规范后你可以从ODVA获得你的厂商号,标记包括同意使用的时间并返回给ODVA。一旦你收到你的厂商ID号,则必须在你的公司的所有产品中使用,不同的分公司可以申请不同的厂商ID号,但他们必须分别购买协议规范并标明同意使用的时间期限。 

       无一致性测试的ID号可能被取代,除非ODVA已经将此ID号分配给你的公司。

    4楼 回复本楼

    引用 chenwh78 2008/10/21 8:23:10 发表于4楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/21 8:28:24

    DeviceNet是由Allen-Bradley公司(Rockwell自动化)开发的一种基于CAN的开放的现场总线标准。DeviceNet作为一种高性能的协议,目前在美国和亚洲的市场上处于领导地位,其系统解决方案在欧洲也取得了显著的业绩增长。ODVA( DeviceNet用户组织)负责发布DeviceNet规范以及对DeviceNet标准进行维护,另外,ODVA也负责DeviceNet在世界范围内的推广。现在,最新版本的DeviceNet 2.0标准提供了更多的功能并修正了旧版本中的一些错误。

    DeviceNet是一个开放性的协议,每个 ODVA成员都有资格发行基于 DeviceNet标准开发的后续产品。除了加入ODVA组织须交纳的会员费以及实际购买规范的费用外,使用DeviceNet是免版税的。现在已经有超过300家的公司注册成为ODVA的成员。全世界共有超过500家的公司提供DeviceNet产品。

    DeviceNet协议设计简单,实现成本较为低廉,但对于采用最底层的现场总线的系统(例如,由传感器、制动器以及相应的控制器构成的网络)来说,却是性能极高的。DeviceNet设备涉及的范围从简单的光电开关一直到复杂的半导体制造业中的用到的真空泵。

    就像其他的协议一样,DeviceNet 协议最基本的功能是在设备及其相应的控制器之间进行数据交换。因此,这种通信是基于面向连接的(点对点或多点传送)通讯模型建立的。这样,DeviceNet 既可以工作在主从模式,也可以工作在多主模式。

    DeviceNet的报文主要分为高优先级的进程报文(I/O报文)和低优先级的管理报文(直接报文)。两种类型的报文都可以通过分段模式来传输不限长度的数据。

    所谓的"预定义主/从连接集"适用于简单的DeviceNet从站设备。作为DeviceNet协议的子集,它支持从主站到从站传送的直接报文,轮询I/O报文,位选通I/O报文以及由从站向主站传送的状态变化/循环I/O报文。

    "非连接报文管理端口(UCMM)"以及动态生成"直接及I/O连接"则适用于从站比较复杂的情况,这些从站可支持多个主站并能与其他设备维持点到点互联。设备启动报文和设备关闭报文是特别为安全相关系统设计的"离线连接设置"则简化了对非常规组件的配置工作。

    DeviceNet的通信和应用都是基于对象模型的。预先定义好的对象简化了不同厂商的不同设备间的数据交换。通过建立不同设备的子集,用户可以从进一步的规范化中获益。

    除第7层(应用层)外,DeviceNet规范还对一部分第1层(收发器)以及第0层(传输介质)进行了规定,这就为DeviceNet节点的物理连接提供了标准。协议对连接器、电缆类型、电缆长度以及基于通信的显示、操作元素及其相应的封装形式等等都进行了规定。

    5楼 回复本楼

    引用 chenwh78 2008/10/21 8:28:24 发表于5楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/21 8:32:31

    1 DeviceNet简介
      DeviceNet(设备网)是20世纪90年代中期发展起来的一种基于CAN技术的开放型,低成本、高性能的通信网络,目前已成为底层现场总线标准之一。在DeviceNet现场总线体系中属于设备级的总线协议,在协议的分层结构中,它只包括ISO开放系统七层模型结构中三层,即物理层、数据链路层和应用层。
      DeviceNet是基于CAN总线实现的现场总线协议,因此它的许多特性完全沿袭于CAN,是一种无冲突的载波侦听总线协议。这样的协议在载波侦听方面与以太网是一样的,它的特别之处是:当总线上的多个节点在侦听到总线空闲时,同时向总线发送数据。
      在CAN总线中,被传送的每一帧数据的优先级是由位于帧头的标识来决定,因此它们首先发送的是各自的标识数据。此时,只要有一个节点发送了位数据“0”,那么总线上的所有节点监听到的总线状态就是“0”;相反,只有当同时发送数据的节点所发送的位数据为“1”时,总线的状态才为“1”。因此,当某个节点侦听到网络空闲,开始发送标识数据以后,如果此节点在发送标识数据段的过程中,侦听到的总线状态与它自身所发送的数据位不一致,则此节点会认为有其他节点也在发送数据,总线处于竞争状态,而且其他节点的发送数据具有更高的优先级,最终此节点停止发送数据,节点返回至总线监听状态。
      在目前的CAN2.0版本中,标识数据可以是11位或29位,DeviceNet只支持11位的标识,能够产生2032种不同的标识。在总线中,为了保证在并发情况下数据传输的一致性,不同的节点所发送数据的标识是不同的,这样才不会发生同时有多个节点传输各自的整个数据帧而产生冲突的情况。DeviceNet协议制定规范来确定每个DeviceNet节点数据帧标识的分配,其中对于应用极为普遍的M/S网络,DeviceNet协议制定了一套预先定义好的CAN数据帧的标识分配方案。
      
      2 DeviceNet应用层协议
      DeviceNet的应用层协议是用面向对象的方法来进行描述。它对协议本身所应完成功能进行了抽象和定义,把协议功能划分为多个模块,每个模块抽象出它所具有的属性、完成的任务和与其他模块的接口,然后把这个模块对象化。DeviceNet应用层协议的对象模型如图1所示:整个协议的结构是由对象为基本组成单元;对象之间通过数据交换相互联系。图中用对象之间的连线来表示这些联系,下面对这些对象的功能作简要介绍。非连接通讯对象是用于处理以本设备为目的地址的非连接数据包,它是这个设备与外部设备建立连接通讯的起始点。连接通讯对象的功能与非连接通讯对象的功能相对应,是完成对连接数据包的处理。路由对象对从上述2个通讯对象传来的数据包,根据数据包所指示的目的对象地址或此数据包所完成的功能,把收到的数据分发到相应的对象。数据汇集对象把本设备所需传输的数据集合在一起,组成本设备预先定义的数据格式以便传输;而对于收到的数据,按照一定的格式,抽取相应的数据发送给指定的对象。参数对象、设备身份对象和DeviceNet对象是对设备中的诸多参数的归类、封装,完成的功能比较简单。应用对象是针对具体设备完成复杂功能的对象,例如在DeviceNet的协议规范中,除了定义了基本的模拟量和数字量应用对象外,对于软启动器有软启动应用对象,对于位置控制器有位置控制器应用对象等,而且像这样定义的特定应用设备的对象还会随着DeviceNet设备的发展而不断增多。
       



      3 DeviceNet应用层协议实现
      在实际的DeviceNet产品应用中,目前都是M/S结构的协议实现,而且应用中最为普遍的是运用对CAN的标识进行预先定义分配的方式来实现DeviceNet网络。以下介绍DeviceNet协议的实现。Redstation是DeviceNet的从设备,是一种智能开关设备,功能较为简单,整个设备的应用层对象由4个数字量输入和2个数字量输出组成,通过预定义CAN标识来完成数据帧的传送。
      3.1 硬件部分
      此设备的硬件部分主要由MCS51单片机8031,CAN控制器SJA1000,8 kb动态存储器6264,64kb EPROM27512,CAN总线驱动器82c51以及相应的外围电路组成,其原理图如图2所示。实际电路中还必须有相应的锁存器、电源保护电路、看门狗电路和设置节点地址及波特率的拨码开关等电路单元。
      
      




      3.2 应用层协议部分
      DeviceNet协议中,应用层协议的实现是通过编制程序来完成。此设备是基于单片机系统的,在实现过程中采用单片机的C语言。
      DeviceNet应用层协议是通过面向对象的方式加以描述的,其中对于协议中的各个对象都详细定义了它们的属性、数据类型等基本信息;而且通过事件触发方式来具体定义了各个对象的行为:因此在实现过程中,完全可以按照面向对象的编程方法来编制协议原代码。
      在面向对象编程中,除了定义对象的属性及行为以外,还要构造事件驱动的机制。这里指的事件驱动的机制包括事件的产生,事件队列的实现,事件处理优先级的规定,以及事件的处理等。在一般的面向对象的高级编程中,主要是完成事件的处理,其它的与事件相关的事情都是由操作系统来完成,对编程者来说是透明的,而在此相关事情则必须编程实现。面向对象的程序实现框架使各个对象之间的联系体现的十分明确,对象之间的关联都是与事件的触发紧密相关,整个程序结构非常清晰。
      协议实现的软件主体结构如图3所示,整个软件的编制工作都是围绕着“事件”而展开的。“事件”是由外部中断或程序内部产生,在实际程序中用事件变量来实现事件队列,它是一个无符号的整型变量,每个特定位代表某个具体的事件,如图4所示。
      
      








      



      协议主程序的结构如图5所示,在程序的开始是对DeviceNet协议中的对象的定义,C51编译器不支持“类”,因此用“结构”类型来定义对象。在完成对CAN控制器和单片机芯片的初始化工作以后,主程序进入事件处理的无限循环。为了能够及时响应高优先级事件,在每完成一次事件的处理以后,都要执行“e=global_event”语句,刷新事件中间变量e。事件的优先级在定义事件的时候就已经确定了,低数据位事件具有高的优先级,如第一个数据位表示IO轮讯请求事件,它就具有最高的优先级,其他事件的优先级随着在global_event中所被代表的数据位的上升而降低。高优先级的事件的响应较低优先级的事件为先,程序中“(e&IO_POLL_REQUEST)&&!(e&(IO_POLL_REQUEST-1))”语句是判定待执行的事件是否是事件队列中具有最高优先级的事件。在进入事件处理程序部分以后,首先清除事件队列中的此事件,以表明此事件已得到响应,然后再进行相应的程序执行。
      
     
      4 结束语
      DeviceNet的面向对象的协议描述能够清晰地阐明协议各模块之间的数据处理关系,此特点在实现中充分地体现出来;而且对象化的程序实现使得程序代码可以很方便的重复使用,在开发不同的设备时,原先的设备原代码大部分可以得到再利用,这样可以缩短产品开发的时间,同时也利于在实际应用中的推广。

    6楼 回复本楼

    引用 chenwh78 2008/10/21 8:32:31 发表于6楼的内容

总共 , 当前 /