微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于DeviceNet总线的从设备通信适配器设计

基于DeviceNet总线的从设备通信适配器设计

时间:07-25 来源:互联网 点击:
表1 DeviceNet地址组件范围

  
图3是一个通用DeviceNet设备的对象模型;表2是DeviceNet产品中典型的对象类。


  
② 设备描述(Device Profiles)。DeviceNet规范不仅仅是一个物理连接协议规范。它通过定义标准的设备模型促进不同厂商设备之间的互操作性。属于同一设备模型的所有设备都必须支持共同的标识和通信状态数据。设备描述是针对各种设备而定义的。设备描述中包括设备各种特定的数据。符合设备类型描述的多个供货商提供的简单设备(例如:按钮、马达启动器、光电池、气动阀执行器)在逻辑上是可互换的。
DeviceNet规范定义了一个电子数据文件(EDS)。EDS是一个简单的文件格式,供货商可以将产品的特殊信息提供给其它供货商。这样可以具有友好的用户配置工具,可以很容易地更新,无需经常修正配置软件工具。

3 通信适配器软件系统设计

下面主要介绍通信协议的设计。软件的实现是以DeviceNet协议规范的2.0版本为指导的,不同的应用有不同的具体实现。本文只给出设计的原理和指导思想及原则。

3.1 DeviceNet通信设备的上电状态流图
  
每个设备上电以前都有一个例行的状态流转过程。该过程描述了设备能够在DeviceNet上通信之前必须完成的以下工作(例如重复MAC ID检测等),以及对设备通信产生影响的网络事件。
  
图4是DeviceNet设备上电后的状态流图,其中一共有4个状态:发送重复MAC ID检测报文状态、等待重复MAC ID检测报文状态、在线状态、通信出错状态。



3.2 CAN芯片的初始化
  
在建立CAN总线的通信之前要预先有一些初始化过程。一般,独立式CAN芯片SJA1000在上电后或者上电后进行软件功能重置时要初始化一下工作寄存器。当系统上电后,处理器首先运行自己的特殊初始化过程,然后再进入SJA1000的连接建立过程(SJA1000的17引脚获得1个Reset低电平脉冲,并进入Reset模式)。在初始化SJA1000的寄存器之前,主微处理器应该检测Reset的mode/request标志。如果SJA1000已经是Reset模式,因为所有的寄存器只能在Reset模式下进行写操作,所有的寄存器都将获得相应的配置信息。
  
在完成所有的初始化工作后,SJA1000就进入工作模式,并且使CAN控制器的中断功能有效。用C51编写的SJA1000初始化及一个模拟发送、接收过程的程序请见本刊网站补充版。http://www.dpj.com.cn

3.3 报文收发程序和分段服务
  
这里所讲的报文收发协议对不同的通信协议有不同的定义。另外,CAN的数据长度不能超过8个字节,如何支持大于8个字节的报文要涉及到分段服务。分段协议信息由1个字节组成,其中高2位表示分段的类型,低6位作为分段的计数器,用来标识每个数据包.其计算方式是:
fragmentCount=(fragmentcount+1) mod 64。 表3是具体的分段类型。

表2 DeviceNet产品中典型的对象类


表3 分段协议信息

  
因此在程序的设计中,应当加入对分段服务协议的支持。
  
发送报文的处理与接收的过程是一个逆向过程。需要注意的是编写程序的时候要严格按照DeviceNet协议规范的定义,否则将产生不可预测的错误,为将来的协议一致性测试和底层调试都带来许多麻烦。

3.4 DeviceNet通信适配器主程序的设计
  
软件由头文件、初始化程序、功能子程序和主程序组成。
  
软件的组成结构提供了硬件和软件升级的方便。软件中将对与主处理器、CAN控制器等硬件接口的部分进行比较独立的设计,而主程序和功能子程序主要集中在协议的完成。这对将来的硬件改型和可能的协议修改都提供了较大的方便。

软件用Franklin C51语言编写,通过伟福E51L单片机开发装置进行调试。

软件结构如图5所示。


  
在实现所有的功能模块以后,最重要的是如何构造一个有机的主程序模块,将这些零散的模块组织起来,进行系统的初始化工作。另外,还要设计一个优化的循环体并周期性地执行以对DeviceNet网络上的报文产生动作。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top