2

关于投票
工业以太网确定性调度的设计与实现
工业以太网确定性调度的设计与实现
 
摘  要:工业控制网络对网络的实时性要求很高,不仅要求传输速度快,数据传输还要具有确定性。以太网的通信存在不确定性,不能满足实时性要求,成为以太网应用于工业控制领域的主要障碍。本设计实现的实时以太网[2]就是网络中每个节点的通信被严格地限定在规定时间内,确保在同一网段内同时只有一台在发送数据。

关键词:工业以太网;确定性;调度;实时

1. 前言

  工业控制网络是一种特定应用的网络,和商业信息网络相比,它具有自身的要求和特点,其中非常重要的一点就是实时性要求高,不仅要求传输速度快,还要求响应快,并且数据传输要具有确定性。以太网的通信调度方式——带有冲突检测的载波侦听多路访问机制(CSMA/CD),是一种非确定性的通信调度方式。网络每个节点要通过竞争来取得信息的发送权:节点监听信道,只有发现信道空闲时才能发送信息。信息开始发送后,还需要检查是否发生碰撞,如发生碰撞,则需等待,等待的时间取决于“二进制指数退避算法”得出的随机延迟[1][4],这种随机延迟为工业通信的数据传输增加了难以避免的不确定性。

2. 系统模型

  本设计通过在以太网MAC层之上增加确定性调度层,上层采用了EPA[3](Ethernet of Plant Automation)协议的数据封装格式,因此使数据包的类型判断和调度发送时间的获取成为可能。EPA 是一种基于工业以太网的现场总线标准,是在控制系统与现场测量、控制装置之间,以及现场测量、执行机构之间进行通信的分布式数字控制系统。这样对所有的上层数据包在整个实时网段范围内进行数据包统一调度发送,从而避免碰撞现象的发生并确保数据传输的确定性要求。通信模型如图 1所示: 


图1 实时以太网通信模型

3. 系统设计

  本设计是在嵌入式平台下实现的,利用ARM7处理器和Cs8900网络接口芯片搭建的硬件平台进行开发,在同一网段中,每一个运行的设备等同于一个网络节点。

  上层采用EPA协议封装,分实时数据和非实时数据进行发送和接收。实时数据到达后,通过实时通信服务接口向下递交,对数据进行缓存处理,等待调度发送。下一个发送周期到来后,将用新的实时数据更新相应缓冲区;非实时通信服务通过OS中提供的BSD接口来提供,但是为了实现确定性的调度,非实时数据包穿越TCP/IP协议栈到达数据链路层时,不允许直接调用硬件驱动接口进行数据包收发操作,而是通过一个虚拟的驱动接口将数据包放入相应的发送和接收队列。修改原E-NIC的驱动接口,使其成为虚拟驱动接口,无法直接将数据递交给硬件驱动,而是入非周期队列。对硬件网卡的收发操作在硬件驱动接口中实现。设计图如图2:

点击看大图
图2 以太网确定性调度设计图

  确定性调度层负责何时调用硬件驱动接口收发数据帧。当确定性调度层收到数据帧时,根据以太网帧首部的type字段来区分实时数据帧和非实时数据帧。若是实时数据帧,将用收到的实时数据更新相应缓冲区;若是非实时数据,则将其放入相应的接收队列并通过任务通信机制通知上层协议栈数据帧到达事件。确定性调度层的调度表由调度算法生成。

4. 主要模块描述

  实时通信服务接口、虚拟驱动接口、时钟同步服务和实时调度算法为本设计的四个主要模块。

  4.1 实时通信服务接口

  实时通信服务接口负责为上层应用(协议)提供周期性实时消息的实时通信服务。

  周期性实时消息的发送和接收采用缓冲机制,即为本节点在运行过程中要发送的每个周期性实时消息在内存中定义相应的缓冲区,每当上层应用通过实时通信服务接口发送新的消息时,即用该新消息值更新其对应缓冲区中的旧消息值;为本节点在运行过程中要接收的每个周期性实时消息在内存中定义相应的缓冲,每当上层应用通过实时通信服务接口接收新的消息时,则将对应缓冲区中的消息值返回。节点在运行过程中将要发送的每个周期性实时消息必须要有与其对应的已知的目标地址(包括目标MAC地址-用于识别节点,端口号-用于识别实时消息所对应的缓冲区元素)。

  实时通信服务接口要提供以下接口函数:

  (1)RtAppInterface()

  创建实时接口函数,用于实时周期性消息的发送和接收。

  (2)RtMapping()

  将由RtAppInterface()函数创建的接口进程映射到特定的地址(MAC,端口号(即缓冲元素的索引))。

  (3)RtSend()

  使用已创建和映射完毕的实时接口进程进行实时消息的发送。

  (4)RtRecv()

  使用已创建和绑定完毕的实时接口进程进行实时消息的接收。

  4.2 虚拟驱动接口

  虚拟驱动接口负责为上层TCP/UDP/IP协议栈提供一套虚拟的驱动程序接口,该接口必须与上层协议栈所使用的原硬件驱动接口一致,但需改变该接口中的具体函数实现,使得虚拟驱动接口所对应的具体函数无法直接实现对硬件的控制(如打开,关闭设备,收发数据包等)。必须确保用虚拟驱动接口替换原硬件驱动接口后,从TCP/IP协议栈使用驱动接口的角度来看,和使用原硬件接口一样,即用虚拟驱动接口替换原硬件驱动接口的改动对于上层协议栈的使用而言必须是透明的。对上层协议栈发下来的数据包以FIFO的顺序缓存到消息队列,何时调用硬件驱动接口发送这些数据包由确定性调度层决定。

  虚拟驱动接口提供的主要函数:

  (1)RtVirtualIn( )

  接收IP层的发送数据包,根据数据包类型确定转存入队列还是向下递交。

  (2)RtVirtualOut( )

  调用驱动层的发送函数发送数据,接收发送返回信息。

  (3)RtVirtualPacketType()

  取对应字段,判断到来包类型(EPA类型字段 以太网类型字段)。

  4.3 时钟同步

  在实时网段内,时钟同步是非常关键的,因为实时网段内各节点上的任务运行和消息发送都是基于时间基准的,特别是总线上的消息调度,为了避免碰撞,消息间必须留出足够的间隙来容纳节点间的同步误差。为了提高时钟同步精度,应把时钟同步功能放在协议栈中尽可能靠近硬件的位置。本系统中时钟同步功能由确定性调度层来提供。时钟同步协议采用IEEE 1588协议[6]。

  在实时网段内选定一节点作为主时钟,主时钟定期发布时钟同步消息,时钟同步消息作为主时钟节点上的周期性消息。由于时钟同步消息在调度好的同步窗口中发送,可以保证时钟消息的发送独立于当前网络负载而无碰撞的发送,因而时钟消息从发布节点到各个接收节点的延迟对各个接收节点而言为一常量。

  4.4实时调度算法

  本设计采用的算法根据RM和EDF算法改进而成的[7],每个基本周期开始时动态生成此基本调度单位(ESU)的调度时间表。整个链路时间由连续等长的基本调度单位(ESU)组成,通常ESU为实时网段内所有周期性实时消息的周期的最大公约数HCF。每个ESU被分成周期性实时消息窗口(PW)和非周期性消息窗口(AW),如图3所示。PW中的调度根据事先由周期性实时消息调度算法生成的调度表来进行,调度表的长度为所有周期性实时消息的周期的最小公倍数LCM,调度表中与各个节点相关的部分被存放在各个节点中,各节点根据调度表中规定的时刻,以宏周期为循环单位周而复始的执行周期性实时消息的发送动作。在AW中,数据采用优先级队列节点轮询的方式发送。按照非周期数据实时要求将非周期数据划分为i个优先级,每个优先级在节点中维护一个非周期优先级队列,因此每个节点中的非实时优先级队列为i个。发送时采用节点轮询的方式按优先级从高到低的顺序进行发送,每次被轮询节点将指定优先级队列中的数据全部发送。


图3 基本周期内数据发送窗口

5.结论

  本系统所实现的实时以太网可以完成网段内数据的调度发送,基于本设计的实时以太网完全可以应用于一般的过程控制工业领域。通过改进原型系统的时钟同步机制等来可以进一步提高系统的实时性以及时钟精度,基于本设计的实时以太网改进的目标是把时钟精度提高到微秒级,进而应用于时间精度要求较高的工业领域,如运动控制等。

系统分类: 工业以太网
用户分类: 无分类
标签: 无标签
来源: 无分类
发表评论 阅读全文(227) | 回复(1)

2

关于投票
基于VB的计算机与三菱变频器通讯及监控软件的设计
基于VB的计算机与三菱变频器通讯及监控软件的设计
 
摘  要:本文介绍了一种基于VB的Mscomm控件进行计算机与三菱变频器通讯的软件设计方法,实现了计算机对变频器的通讯与监控,包括运行控制、状态监测、参数设置及校验。

关键词:VB 三菱变频器 监控软件

1 概述

  变频器在各种工业场合中有着广泛的应用,在使用变频器时,需要合理地设置其工作参数,以使整个变频调速系统能够满足工作要求,并尽可能的在最佳状态下运行。变频器的参数不仅数目众多,而且许多参数之间存在一定的关联。在一些比较复杂的运行场合,设置参数时需要根据系统的工作要求以及变频器的功能进行综合分析,通盘考虑。三菱变频器的参数设置可以通过变频器附带的操作面板进行,但是由于操作面板的结构非常紧凑,上面只有小键盘和几位LED显示器,参数的设置和读取不够方便,操作非常繁琐。

  为了方便、直观地对变频器进行参数设置和运行状态监控操作,可以采用计算机通过串行口来控制变频器(要求变频器具有通讯接口),也可以采用PLC+人机界面的方式,PLC可以通过数字量、模拟量或通讯接口来控制变频器。在本系统中,通过计算机的串行口以及接口转换电路来控制三菱变频器,如图1所示,并利用Visual Basic编制系统的监控软件,从而可以方便地对变频器的参数进行设置和校验,并能够直观地控制变频器运行和监视变频器的工作状态。


图1 计算机与三菱变频器的连接

2 接口转换设计

  通用的计算机一般只具有RS-232接口,而工控设备大多采用RS-485接口。本系统所用的三菱FR-E500变频器的通讯接口就是RS-485的形式,而且它采用的是较为少见的全双工485(共有四根数据线,接收和发送分开进行),与外部连接采用的是RJ45接口,连接电缆应采用符合EIA568标准的10BASE-T电缆。为了实现通用计算机与三菱变频器的通讯,我们设计了专门的接口转换电路,其结构原理图如图2所示。

点击看大图
图2  接口转换电路结构原理图

  接口转换电路利用两块MAXIM接口转换芯片(MAX202和MAX491)完成了RS232信号与RS485信号之间的转换,其原理如图2所示。MAX202可以实现RS232信号与TTL信号之间的转换,MAX491可以实现全双工RS485信号与TTL信号之间的转换。电路中还加入了DC-DC和光电耦合器件6N137,将232侧与485侧的信号隔离,以提高电路的抗干扰能力。

3 通讯及监控软件的设计

  本软件能够控制变频器运行,监视变频器的运行状态,对变频器的参数按照功能的分类和相互的制约关系进行设置,并在将设置好的参数下载到变频器之前根据一些规则进行校验。软件的整体结构如图3所示。


图3 通讯与监控软件的整体结构

  3.1 人机界面

  主界面如图4所示。在主界面中,可以直接对变频器进行基本运行操作,并实时显示频率和电流的当前值。关于系统通讯参数的设置和变频器工作参数的设置主要在通讯菜单和监控菜单中完成。


图4 监控软件的主界面

  通讯菜单用来操作计算机串口,包括打开串口、关闭串口、串口初始化、当前串口状态显示这4个子菜单项。监控菜单用来分组设置变频器的参数,包括频率限制、加减速运行、点动运行、直流制动、报警原因显示这5个子菜单项。

  变频器的参数不仅数目众多,而且许多参数互相关联,设置参数时需要前后呼应。本软件将变频器的参数按照功能和相互的制约关系分好类,作为子菜单列在监控菜单项下,按下子菜单后将弹出相应的对话框,设置与该子菜单功能有关的一系列参数。如单击频率限制后,会弹出如图5所示的频率限制参数设置对话框。

  本软件能够根据一些规则对设置好的参数进行校验。当用户设置好的参数之间互相矛盾时,软件能够向用户发出警告信息;当用户设置的参数超出了常用的变频器参数设置范围时,软件也能够向用户发出提示信息,要求用户确认。例如设定的频率下限低于启动频率时,将弹出如图6所示的对话框警告用户。


图5频率限制设置对话框

图6警告对话框

  3.2 数据处理

  要使计算机和变频器之间能进行正确的数据交换,必须有一个数据处理的过程,来完成人机界面中的数据、指令与符合变频器通讯协议数据格式的数据之间的转换。数据处理包括两个方面的内容,一是要将人机界面上的命令或输入数据转换为变频器能识别的数据格式,二是分析变频器返回的数据,将其转换成实际值,在人机界面上显示出来。

  计算机与变频器之间的数据通讯执行过程如图7所示。

点击看大图
图7 计算机与变频器之间的数据通讯执行过程

  图7中的三种数据具体的数据格式如下:

  点击看大图

  [注] ENQ、ACK、NAK、STX、ETX是控制代码,分别表示通讯请求、未发现数据错误、发现数据错误、数据开始、数据结束,它们都对应着特定的ASCII码。

  以写入频率为例,按照通讯请求数据的格式定义要发送的数组,依次发送ENQ,变频器站号,设定频率写入的指令代码,要写入的频率值,总和校验。其中总和校验不包括ENQ。注意,数据在计算机和变频器之间使用ASCII 码传输。

  3.3 通讯程序

  三菱变频器与PC机通讯前必须在变频器的初始化中设定通讯规格并复位变频器,否则通讯不能进行。需要设定的通讯规格包括变频器站号、通讯速率、字节长、停止位长、校验方式、等待时间等。通讯规格的设定可通过写入相应的参数来实现。

  本软件用VB中的Mscomm控件完成对计算机串行端口的操作。Mscomm控件是VB中用于串口发送和接收数据的ActiveX控件,利用它可以方便地访问串口。Mscomm控件有许多重要的属性,表1中列出了本文编程时用到的几个属性。

表1 MsComm控件的常用属性
点击看大图

  通讯程序的流程图如图8所示。由于本文中软件的主界面要实时显示频率和电流,需要每隔一段时间向变频器发送读频率和读电流的命令,所以发送其他控制指令如正转、停止时,应该先停止发送读频率和读电流的指令,完成后再重新发送读电流和读频率的命令,这是因为同时向串口发送几个命令会发生错误。读频率指令和读电流指令也不能同时发送,需要交替进行。另外,要注意每向变频器发送一个命令后,及时取走输入缓冲区中的返回码,以免影响下一次读取输入缓冲区的正确性。

点击看大图
图8 通讯程序的流程图

  通讯程序的部分源程序如下:

  ⑴初始化串口的程序为:

  MSComm1.CommPort = 2   ‘打开Com2

  MSComm1.Settings = "9600,n,8,1"

  ‘设置波特率为9600Kbps,无奇偶校验,8位数据位,1位停止位。

  MSComm1.PortOpen = True  ‘打开串口

  ⑵写入参数,如设定频率(以30Hz为例)写入的程序为:

  Dim outfrq(10) As Byte    ‘定义要发送的数组

  outfrq(0) = 5      ‘发送ENQ

  outfrq(1) = 48

  outfrq(2) = 49        ‘发送变频器的站号

  outfrq(3) = 69

  outfrq(4) = 69         ‘发送设定频率写入的指令代码

  outfrq(5) = 48

  outfrq(6) = 66

  outfrq(7) = 66

  outfrq(8) = 56        ‘发送要写入的频率值30Hz

  outfrq(9) = 68

  outfrq(10) = 55        ‘发送总和校验码

  MSComm1.Output = outfrq   ‘将通讯数据发送至串口

  ⑶读出参数,如读取变频器当前频率的程序为

  Dim outf(6) As Byte      ‘定义要发送的数组

  outf(0) = 5          ‘发送ENQ

  outf(1) = 48

  outf(2) = 49         ‘发送变频器的站号

  outf(3) = 54

  outf(4) = 70         ‘发送读频率的指令代码

  outf(5) = 68

  outf(6) = 68         ‘发送总和校验码

  MSComm1.Output = outf    ‘发送至串口

  Dim inf As Variant

  inf = MSComm1.Input     ‘读输入缓冲区,取出返回数据

  注意:发送读频率的命令后,要过一段时间再从输入缓冲区内读取数据,否则会发生错误。这段时间是等待时间与数据校验时间之和。

4 结束语

  本文介绍了一种软件设计方法,通过计算机的串行端口及接口转换电路来控制变频器,利用VB编制监控软件,可以方便、直观地控制变频器的运行,监视变频器的运行状态,设置变频器的参数并进行校验。在此基础上,还可以总结变频器参数设置方面的规则,根据系统功能的要求,自动设置变频器的工作参数,实现变频器应用的“智能化”。

系统分类: 其他技术
用户分类: 无分类
标签: 无标签
来源: 无分类
发表评论 阅读全文(164) | 回复(1)

2

关于投票
基于MATLAB GUI的钻井工具姿态采集处理系统
基于MATLAB GUI的钻井工具姿态采集处理系统
 
引 言

  在石油钻井中,准确测量井眼姿态是进行井眼轨迹控制的前提。为此,本文充分结合单片机和MATLAB的优点。

  基于事件驱动的通信机制,提出了一种MATLAB环境下基于GUI的PC与片上系统C8051F060实时串行通信的可视化数据处理方法,并实现了对井眼姿态的监测。该方法极大地简化了开发流程,提高了系统开发效率。更重要的是MATLAB的运算能力,为数据处理提供了保障。

1 系统介绍

  在本系统中,上位机是PC,下位机采用silabs公司推出的高速片上系统(SoC)C8051F060,使用三轴加速度计来敏感井眼姿态的变化。三轴加速度计两两正交,输出正方向满足右手螺旋法则,将三轴加速度的输出值通过坐标间的相互转换,利用三角关系式即可得到当前井眼空间姿态。由于PC串口与SoC的UART使用的是不同的电压标准,所以两者间通过电压转换芯片sp3223相连。三轴加速度敏感到的姿态信号经过调理电路和多路开关后,被SoC内部的A/D采样,采集得到的数据存储到片外存储器。数据的存储设备采用三星公司生产的超大容量存储器K9K8G08U0M,满足了系统长时间采集存储的需要。

  借助GUI开发的上位机软件通过串口实现与下位机间的命令及数据传输,并对下位机采集的数据进行处理。

2 硬件系统

  C8051060是完全集成的混合信号片上系统型MCU,其内部CIP-51内核采用流水线结构,指令执行速度可达25 MIPS。使用如此高性能的单片机使得系统硬件电路设计大为简化,单片机的UART、串口通过电压转换模块SP3223与PC进行通信,而C8051060的双串口为多系统的级联提供了方便。数据采集功能由其内部的ADC完成,采集的数据通过口线存储到片外的大容量存储器K9K8G08U0M。

  系统硬件框图如图1所示,其中实线为数据流,虚线为控制流。系统工作时,由上位机通过命令来控制下位机进行相应的操作。进行数据采集时,单片机控制电源给传感器供电。各路信号经过各自的调理电路后被送入多路开关。单片机通过控制多路开关来选择所要采样的信号,并将其送入SoC内置的ADC进行采样。采样值被存储后等待与上位机的通信。

  

3 下位机软件

  下位机SoC接收到PC的下发消息后,通过串口中断程序转入相应的子程序,执行相应操作,最后返回一个握手信号做为状态标志,确认命令是否被正确执行。

  C8051060使用UART0与PC进行串行通信。将该串口的工作方式设置为方式3,具有硬件地址识别和多处理器通讯的功能,并且用定时器1作为波特率发生器,设定波特率为115 200 b/s,每帧数据占11位——1个起始位,8个数据位,1个可编程的第九位,1个结束位。

  该软件的子程序包括:清参数区、清数据区、发送参数、接收参数、开始采集、接收数据、复位等,各子程序的具体实现在此不进行详细描述。软件框图如图2所示。

4 上位机软件

  本系统使用MATLAB提供的图像用户界面开发环境(GUIDE)完成界面设计及上位机软件编制。GUI"所见即所得"的编程方式简单明快,非常容易上手。本软件借助MATLAB自带的工具箱和系统中的Activex控件,编制了菜单栏和工具栏及各功能模块,实现了命令、参数以及数据的双向传输及显示、数据的滤波处理及绘图。

  4.1串行通信的实现

  MATLAB本身是一个跨平台的软件,并不具备直接访问硬件的能力,但是可以通过对serial类的操作,实现MATLAB对串口的支持。

  要想在MATLAB中使用串行口,首先要借助serial类建立串口对象,并在使用前将该串口对象打开。数据传输完毕后,需关闭该串口对象,避免影响其他程序无法对该串口对象的使用。在系统不再使用该串口或者退出系统时,需要将该串口对象清除并从MATLAB工作空间清除,避免占用内存和影响其他系统使用。

  在使用串口进行数据传输时,需要对串口进行读写操作。读写串口的方式分为二进制、文本两种,类似于一般的文件操作。为了提高传输的速度,结合实际情况,本系统采用串口二进制异步读写方式。MATLAB程序通过串行口将命令发送到下位机,并通过串行口接收下位机上传的握手信号及数据。

  串行通信的部分源码如下:

  
  

  使用串口进行读写操作时,还需注意的一点就是对串口数据校验方式属性(Parity)的设置,如果该设置与下位机软件不匹配,将造成读写错误而又难以查找原因。

  4.2 GUI界面中activx控件的使用

  在MATLAB的GUIDE中所提供的基本控件非常少,难以满足本系统的需要。因此本系统调用系统中的Activex控件FlexArray、FlexGrid实现了数据在表格中的显示,调用axes控件实现了数据图形绘制。

  本程序中用到的控件(包括Activex控件),在其创建及属性设置过程中,使用了全程序法、GUIDE属性法和两者相结合的方法。全程序法是只借助MATLAB提供的句柄功能创建及设置控件。而GUIDE属性法类似VB的设计风格,容易上手,但是这种方法使得m文件过于依赖fig文件。两者结合的方法使得设计更加灵活。下面以GUIDE属性法和全程序法相结合的方法创建、调用FlexArray控件为例,讲解本系统中的数据显示部分。基本控件的操作比较简单,在此不进行详述。

  FlexArray控件的全称是,该控件的文件即C:\WINDOWS\System32\VSFLEX3.OCX,如果本机上没有的话,可以到网上下载,或到其他机子上复制,然后使用regsvr32.exe注册即可。做好这些准备工作之后,点击GUI左侧的工具箱中的Activex按钮后,在设计区拖拉,弹出"Select an Activex Control"对话框,对话框中的"Activex Control List"列表框列出了在当前计算机上注册的所有Activex控件,在该列表框中选中 控件,单击"Create"按钮,该控件便在GUI的空白编辑区被创建。

  创建成功后,GUI自动为该控件生成的句柄做为图形窗口句柄handles的成员被存储,对于第N个被创建的Activex控件,其句柄为handles.activexN,以后借用该句柄就可以通过函数来调用对应的Activex控件。控件的属性设置可以通过双击控件或者右键菜单打开属性设置窗口来进行,也可以通过在m文件中通过set命令设定。通过get可以获取Activex控件的属性。

  要读取或设定FlexArray控件表格中某单元格的内容时,首先通过handles.activexl.row=i;handles.activexl.col=j;语句指向目标单元格,然后通过fa=get(handles.activexl,′text′);fa=str2num(fa);语句将目标单元格中的内容转换为数值赋给变量fa.通过set命令设置目标单元格中的内容,也可以设置固定栏标题,只是注意对于行固定栏的行号是0,列固定栏的列号是0。

  4.3滤波处理及图形绘制

  如果使用采集到的传感器输出数据直接计算井眼姿态,将会造成较大的误差。主要原因是:(1)在钻进中,由于钻进环境恶劣,振动和旋转都会对传感器输出造成较大影响;(2)电路本身的电气噪声,对采集数据存在一定的影响。

  在消除旋转对实验数据的影响后,再借助MATLAB语言实现滤波功能,具体实现流程如下:根据实验数据,在MATLAB的FDAtool工具箱中设计滤波器,滤波效果与实际情况吻合后,将该滤波器的传递函数使用MATLAB语言实现,添加到"数据处理"功能按钮对应的程序中,完成数据处理的全部功能。

  将滤波前后的数据借助axeS控件绘图显示,可以看到数据处理前后对真实井眼姿态描述的差异。

5 应用实例

  本系统已经应用于智能旋转导向系统的室内实验,图3是在室内直井钻井平台上进行模拟钻井实验的钻进过程中,利用本软件进行操作的截图。该图较好地展示了该软件的功能:数据、命令的双向传输及显示、数据的后续处理功能。图中曲线显示区域黑线代表的是采集到的y轴重量加速度的数值GY,红线代表的是经过数据处理后的GY,不难发现,后者的波动范围明显缩小,曲线更为光滑。然后利用处理过的三轴加速度数值,对钻井工具的空间姿态角进行计算,能够得到与实际情况较为吻合的空间姿态,为矿井的钻进中空间姿态的准确测量,提供了一个可供借鉴和参考的方法,能够使钻井过程中减少停钻次数,为提高钻井效率和钻井安全增加了保证。

6 结论

  具有数据处理、串口操作控制功能和Activex控件合理调用功能的上位机软件,再加上高性能片上系统C8051F060作为主芯片的井下电路,两者组成了模拟钻井姿态采集处理系统,在115200的串口波特率下,实现了对多路井下信号的采集、处理,从实验结果来看,井斜角、工具面角等空间角度的计算结果与实际情况较为符合,完全适用于钻井工具的空间姿态测量应用。强大的数据处理功能,再加上人机操作界面,这使得MATLAB在工业现场监控方面将获得更广阔的应用。

系统分类: 其他技术
用户分类: 无分类
标签: 无标签
来源: 无分类
发表评论 阅读全文(125) | 回复(0)

2

关于投票
国内变频器的市场状况与营销策略
国内变频器的市场状况与营销策略
 
【摘要】:本文对目前国内变频器行业的市场需求、各品牌市场份额、国产变频器的优劣势做了较详细的介绍,并对国内企业的市场营销策略提出了自己的看法。

1、市场状况

1.1市场需求

    变频调速器,自1964年问世以来,已经历30多年的发展过程,80年代在主要工业国家已广泛使用,90年代进入中国,在空调、电梯、冶金、机械、电子、石化、造纸、纺织等行业有十分广阔的应用空间。尤其是在节能方面,效果显著,我国现运行的风机、水泵、空调类负载,据估计有4200万台(其中风机约1000万台),占全国用电量的1/3,其中的60%适合调速,如果把这部分用电负荷改造为变频调速,按年节电率25%计算,全国每年节电220亿度。

    据北京康斯公司99年的调查结果,近几年来我国变频器销售量逐年递增,年増长率高达15%,预计2005年将达76.8亿元人民币。具体数据如下表

1.2目前各品牌的市场份额

    中国巨大的变频器市场,成为跨国公司抢攻的重点。如果十几年前富士、三菱、三肯几家日本公司的竞争还属楚汉相争的话,那么到进入二十一世纪的今天,各跨国公司对中国变频器市场的争夺,则显然已进入"春秋战国"年代了。

    日本公司进入中国早,对中国市场做过深入仔细的调查和研究,有针对性地推出适合我国国情的产品,目前市场占有率最高,达60%以上;欧美公司进来晚,但产品档次高、容量大,价格也昂贵,占有份额30%左右;还有不到10%的份额被台湾产品(如普传、台达)占领;真正我国大陆的品牌市场占有量很低,几乎可忽略不计,而且产品档次低。

    从产品容量来看,大功率占市场份额的5-10%,中小功率占90-95%。其中220KW以上基本由德国西门子、美国AB、GE、罗宾康、ABB等所垄断;而中小容量的85%为日本产品占领,如富士、安川、三肯、日立、东芝、三菱、松下等。

2、行业状况

    变频器是一种高技术含量、高附加值、高效益回报的高科技产品,符合国家产业发展政策。近几年来国内该行业发展的特点为:

(1)生产厂家增多、发展速度较快,尤其是沿海开放省市如广东、山东、上海、江苏等。厂家共有几十家,较知名的有安圣、深圳普传(台湾)、安邦信、四川的佳灵、森兰、烟台惠丰、南京耐特、贵州东冈等。另外,国外知名厂家纷纷来华合资、投资建厂,以降低成本,更优的价格供应国内市场,并已挤占相当的市场份额,如ABB、日立、台达等。

(2).国内厂家在电力电子产品的科研开发、工艺设计、加工制造能力等方面,与国外大公司比,还有较大差距。变频器整机技术落后,目前国产变频器的档次低,主要是低压(400V)小容量(315KW以内)产品。而对功能先进(含矢量控制、直接转矩控制)、高电压(3000V以上)、大容量(1000KW以上)变频器,国内还处于研制阶段,未见成熟产品,尤其是高压大容量型,目前国内尚属空白。而且,核心部件受制于人,国产机所需半导体功率器件的生产几乎是空白,不得不依靠进口。

(3)变频器的功能在不断完善和增加,应用领域在不断扩大,从工厂设备到家用空调、从重型机械到轻纺行业、从0.4KW的小功率到9000KW大功率电机都已广泛使用,且取得明显的经济效益。

3、国产变频器的优劣势

3.1优势

(1)营销网络优势。营销网络是中国企业和国外企业竞争最有力的武器,国内大型企业有完善的公司、片区、办事处三级网络,在全国建立办事处、用户服务中心,零配件充足,服务及时。这是国外企业无法做到的。

(2)价格优势。国产机一般要比进口机便宜1/5-1/3,如果能大规模生产,成本可进一步降低;零配件也便宜得多。

(3).产品技术含量高,不比洋品牌差多少,如核心元器件采用美国TI公司的DSP、日本三菱的IPM等、生产工艺采用SMT、管理引进MRPII等。而且相对洋品牌而言,汉化效果好,更适合国情设计,如宽电压工作范围、宽温度范围设计、中文提示功能等。具体比较见下面。

3.2通用型变频器国产机和进口机的技术比较

    功率开关器件:大多用IGBT,且是三菱或西门子,与进口机一致。

    单片机:多用Intel公司的87C196MC或TI公司的DSP,与进口机一致。

    功率容量:国产机能做到百千瓦以上,与进口机相差不大。

    频率范围:国产机能做到400HZ,与进口机相差不大。

    频率精度:0.01HZ(100HZ以下),0.1HZ(100HZ以上),与进口机相差不大。

    电压范围:220V,380V,与进口机一致。

    保护功能:过压、欠压、过流、短路、失速、缺相、过热等多种保护,与进口机相差不大。

    控制功能:有频率、电压、电流等屏幕显示、在1-999秒之间任意加减时间、内含PID控制、实现四象限运行,与进口机相差不大。

    软件:可根据用户要求有针对性地开发或修改软件,以满足不同用户的要求,进口机靠功能齐全来满足不同用户的要求。

3.3 劣势

    国内变频技术的理论不比国外差多少,但在变频器的开发和生产上,由于中国的工业基础较薄弱,制造技术不及发达国家,功率开关器件的质量难以与发达国家抗衡,目前完全国产化的变频器还没有。在变频器领域,国内企业还很年轻,要走的路还很长。

(1)与国外大公司相比,国产企业进入电气传动领域时间太短,无拳头产品,无成套电气设备。象ABB的ACS-600/1000系列,独树一帜,采用DTC技术,世界领先;法国Schneider的TE系列是世界领先的电气产品,用户在享受高质量TE系列产品的同时,很可能会顺便接受Schneider变频器; Siemens更是欧洲老牌劲旅,涉足广泛,在电力、电气传动、金融设备、家电行业都是名牌。这三个公司都基本能提供工厂的全套电气设备。

(2)国产变频器刚进入市场,而变频器有3-5年的产品成熟期,质量是否可靠,性能是否稳定,有待于实践检验。少有人购买不成熟产品。而占高份额的洋品牌有良好的市场基础,先入为主。这也是国产机目前面临的最大困难。有些国产品牌质量差,性能不稳定,返修率高,售后服务跟不上,影响国产设备声誉,间接帮助了洋品牌。更何况国内有些人本来就对国产设备不信任。

4、策略

4.1 技术开发

(1)关键元器件尽量自己开发,掌握核心技术,降低成本,因为企业在产品上的竞争实际是核心技术的竞争。象国内空调业,目前真正自己拥有变频空调技术的厂家没几个,绝大多数是与外企合资,所以成本下不来。据统计国内智能芯片正以每年32%的速度增长,2005年将达30亿美元,市场前景广阔。其实在通讯业,华为、中兴自主开发的芯片抢夺市场就是明证。

(2)充分利用技术创新能力,开发有特色的产品,适销对路的产品,实现"市场差异化"竞争。哈佛大学的伯特教授指出:市场竞争主要靠"标新立异",谁能不断地比竞争对手捕捉更好的市场切入点,谁就能不断地占领市场;然后在稳定、完善中小容量变频器的基础上,尽快投入高压大容量产品的研究开发,高档次高附加值的产品利润才高。

4.2 市场开拓

    市场是一巨大的系统工程,由若干子系统构成,这些因素包括产品、功能、外形、品牌、渠道、价格、推广、营销、广告、服务等,有着十分复杂的交叉效应,需综合平衡,不能顾此失彼。

(1)市场定位、定价。据我国具体情况,国产变频器开发较晚,正处于产品成长期,近期产品应生产完善中小功率的中低档变频器为主,功能上满足调速与节能需要为目的。高档产品暂时无法与欧美抗争;价格上以薄利多销为原则,先抢占市场。参照同行标准,低价入市,形成规模效应,因为适中的价格能给用户以信赖的感觉,增加对产品的忠诚度。

(2)加强信息管理。加强市场调研,及时掌握第一手信息资料,如同类产品厂家的信息、市场动态、价格情报、需求厂家状况等,并积极参加各类展会如广交会、订货会、博览会等,扩大影响。

(3)正确选择渠道。直接渠道是面向用户,大型企业一般不愿意选择与中间商合作,以利于节约成本,搞好售后服务及配套产品的开发;间接渠道是建立广泛的经销网络和庞大的营销队伍,充分依靠中间商的现有渠道,迅速进入和占领市场。

(4)充分提高服务质量。市场从根本上理解就是服务。这方面国产品牌有先天优势,与进口机比较服务半径小,大型企业更是有遍及全国的服务网络,售前给用户做参谋,献计献策,帮助其设计改造。售后是关键,一位营销专家曾经讲过:真正的销售工作是始于产品售出以后。完全可做到跟踪服务,定期巡访巡检,做好记录存档,发现问题及时改进。甚至在适当时候适当地区搞一些用户联欢会,以加强与用户的联系。

(5)在某些场合,可考虑让用户试用产品,甚至做实验,给用户一些风险承诺。

系统分类: 变频器
用户分类: 无分类
标签: 无标签
来源: 无分类
发表评论 阅读全文(121) | 回复(0)

2

关于投票
基于霍尔传感器的直流电机转速测量系统设计
基于霍尔传感器的直流电机转速测量系统设计
 
引 言

  随着单片机的不断推陈出新,特别是高性价比的单片机的涌现,转速测量控制普遍采用了以单片机为核心的数字化、智能化的系统。本文介绍了一种由单片机C8051F060作为主控制器,使用霍尔传感器进行测量的直流电机转速测量系统。

1 转速测量及控制的基本原理

  1.1转速测量原理

  转速的测量方法很多,根据脉冲计数来实现转速测量的方法主要有M法(测频法)、T法(测周期法)和MPT法(频率周期法),该系统采用了M法(测频法)。由于转速是以单位时间内转数来衡量,在变换过程中多数是有规律的重复运动。根据霍尔效应原理,将一块永久磁钢固定在电机转轴上的转盘边沿,转盘随测轴旋转,磁钢也将跟着同步旋转,在转盘下方安装一个霍尔器件,转盘随轴旋转时,受磁钢所产生的磁场的影响,霍尔器件输出脉冲信号,其频率和转速成正比。脉冲信号的周期与电机的转速有以下关系:

  

  式中:n为电机转速;P为电机转一圈的脉冲数;T为输出方波信号周期

  根据式(1)即可计算出直流电机的转速。

  霍尔器件是由半导体材料制成的一种薄片,在垂直于平面方向上施加外磁场B,在沿平面方向两端加外电场,则使电子在磁场中运动,结果在器件的2个侧面之间产生霍尔电势。其大小和外磁场及电流大小成比例。霍尔开关传感器由于其体积小、无触点、动态特性好、使用寿命长等特点,故在测量转动物体旋转速度领域得到了广泛应用。在这里选用美国史普拉格公司(SPRAGUE)生产的3000系列霍尔开关传感器3013,它是一种硅单片集成电路,器件的内部含有稳压电路、霍尔电势发生器、放大器、史密特触发器和集电极开路输出电路,具有工作电压范围宽、可靠性高、外电路简单<输出电平可与各种数字电路兼容等特点。

  1.2转速控制原理

  直流电机的转速与施加于电机两端的电压大小有关,可以采用C8051F060片内的D/A转换器DAC0的输出控制直流电机的电压从而控制电机的转速。在这里采用简单的比例调节器算法(简单的加一、减一法)。比例调节器的输出系统式为:

  

  式中:Y为调节器的输出;e(t)为调节器的输人,一般为偏差值;Kp为比例系数。

  从式(2)可以看出,调节器的输出Y与输入偏差值e(t)成正比。因此,只要偏差e(t)一出现就产生与之成比例的调节作用,具有调节及时的特点,这是一种最基本的调节规律。比例调节作用的大小除了与偏差e(t)有关外,主要取决于比例系数Kp,比例调节系数愈大,调节作用越强,动态特性也越大。反之,比例系数越小,调节作用越弱。对于大多数的惯性环节,Kp太大时将会引起自激振荡。比例调节的主要缺点是存在静差,对于扰动的惯性环节,Kp太大时将会引起自激振荡。对于扰动较大,惯性也比较大的系统,若采用单纯的比例调节器就难于兼顾动态和静态特性,需采用调节规律比较复杂的PI(比例积分调节器)或PID(比例、积分、微分调节器)算法。

2 系统的硬件软件设计

  2.1硬件设计

  本系统采用单片机C8051F060作为主控制器,使用霍尔传感器测量电机的转速,通过7079最终在LED上显示测试结果。此外,还可以根据需要调整控制电机的转速,硬件组成由图1所示。

  控制器C8051F060主要完成转速脉冲的采集、16为定时计数器计数定时、运算比较,片内集成的12位DAC0控制转速,并且通过7279显示接口芯片实现数码显示等多项功能。

  系统采用外部晶振,系统时钟SYSCLK等于18432000,T0定时1 ms,初始化时TH0=(-SYSCLK/1 000)》8;TL0=-SYSCLK/1 000。等待1 s到,输出转速脉冲个数N,计算电机转速值。将1 s内的转速值换算成1 min内的电机转速值,并在LED上输出测量结果。

  2.2软件设计

  本系统采用C8051F060中的INT0中断对转速脉冲计数。定时器T1工作于外部事件计数方式对转速脉冲计数;T0工作于定时器方式均工作于方式1。每到1 s读一次计数值,此值即为脉冲信号的频率,根据式(1)可计算出电机的转速。由于直流电机的转速与施加工于电机两端的电压大小有关,故将实际测得的转速值与预设的转速值比较,若大于预设的转速值则减小DAC0的数值,若小于转速预设的转速值则增加DAC0的值调整电机的转速,直到转速值等于预设定的值,这样就实现了对电机转速的控制,主程序和T0中断流程图如图2、3所示。

3 实验测试结果

  首先在软件中给出转速预设值,即给定常量speed的值,观察速度稳定后七段数码管的数值,比较实际测量的转速值和预设转速值,计算测量误差,评价测量的准确性,测试结果如表1所示。根据实验测试和误差分析绘制了测量误差曲线,如图4所示。误差分析表明,转速测量误差在5%以内,并且随着转速预设值的增加测量误差愈小,呈指数形式下降,函数关系如式(3)所示。

  

4 结 论

  本测速系统采用集成霍尔传感器敏感速率信号,具有频率响应快、抗干扰能力强等特点。霍尔传感器的输出信号经信号调理后,通过单片机对连续脉冲记数来实现转速测控,并且充分利用了单片机的内部资源,有很高的性价比。经过测试并对误差进行分析发现,该系统的测量误差在5%以内,并且在测量范围内转速越高测量精度越高。所以该系统在一般的转速检测和控制中均可应用。

系统分类: 仪表传感器
用户分类: 无分类
标签: 无标签
来源: 无分类
发表评论 阅读全文(132) | 回复(0)

2

关于投票
PLC自控系统实现空压站自动化控制
PLC自控系统实现空压站自动化控制
 
    在棉纺织企业广泛使用喷气织机的情况下,空压站建设是一项重要的辅助工程。在天津纺织园区所有空压站配备的主要设备为离心式空气压缩机、冷冻式空气干燥器,通过储气罐、连接管道和阀门等组成压缩空气供气系统,并配套冷却系统、仪表空气系统,计算机检测系统,以实现空压站为生产一线保证不同压力、不同负荷的用气需求。在此前提下确保合格的供气品质,满足稳定的气源压力,自动调节供气流量等是空压站自动控制的基本任务。随着自动化水平的不断提高,关于建设无人值守空压站的讨论,是一个发展过程中的必然的课题。

  空气系统自动控制的必要性

  应用在天纺投资控股有限公司棉纺一工厂的空压站,安装有4台70M3/min 4台,53M3/min 4台,48M3/min 2台,43M3/min 4台离心式空压机和1台42.5M3/min螺杆式空压机,配有相应处理量的冷冻式干燥器。空压机设备自身带有的CMC控制器,能够自动控制和保护主机的运转,自动提示工作信息,具有故障报警和保护停机功能,能自动根据用气量的大小加载或卸载,并配有LCD显示屏供现场观察各工艺参数和设备状态,具有RS422/485通讯接口,可以实现与现场控制室计算机监控系统的完整连接。 


图:分级控制网络实施方案图

  目前,空压站的自控系统通过西门子S7-300可编程控制器,将部分空压机的实时运行数据通过RS422/485通讯接口采集进PLC控制系统,并将数据传送到现场控制室计算机上进行显示,以代替传统仪表。但是没有对空压机进行控制。

  空压机设备自带的CMC控制器已经能很好的控制单台空压机,但是不具备对空压系统的整体调控能力。在空压系统中,相对单台空压机的调整,空压系统的整体自动调控具有更重要的意义:

  ■  单台空压机无法保证空压系统整体供气压力的稳定,而空压系统的整体自控可以有效保持系统内空气压力稳定。
  ■  整体的负载平衡,减少排气放空,可以节约更多的能源,节省人力成本。
  ■  可以实现无人操作,根据实际需要自动开机或加载空压机以保持系统压力。
  ■  可以定时间断地记录空压机运行数据和报警,如跳车、喘振、通讯故障、压力等。

  在已有的PLC系统中,没有实现空压系统的整体调控功能。由于空压机自带的CMC控制器提供了RS422/485通讯接口,所有的数据采集和控制功能都通过通讯接口来实现,对比原有的控制系统,不需要增加硬件设备的投资,只需要改进和增加控制软件即可实现空压系统的整体控制。

  除空压机设备外,还可以将与空压机配套的冷冻式干燥器集成到RS422/485网络中来,实现空压供气设备的全面自控。

  空压站其他系统的自动控制

  除空压供气系统外,空压站的其他系统也需要进行自动控制,如水循环冷却系统等。这些系统的控制方法与空压供气系统不同,主要是采用传统控制模式。使用仪表采集需要的运行参数,进行数据处理和分析运算后,输出控制信号给执行机构就可以实现系统的自动控制。

  自动控制具有以下优点

  ■  操作简单,可以实现无人值守;
  ■  良好的实时调节,防止了人为因素滞后;
  ■  具有高可靠性;
  ■  减轻工作人员负担;
  ■  节省人力成本。

  需要控制的参数和可能的控制方式

  空压站需要的控制需求;⑴高、低压供气压力控制(机组自动开停控制); ⑵系统自动排水控制; ⑶循环水液位控制和自动加药控制; ⑷所需压缩空气温度、循环水温度等参数控制等等。

  空压系统的整体自动调控一般可以使用以下2种方法之一来实现:

  ⑴采用PLC系统进行通讯和控制。

  ⑵可以采用英格索兰公司或自己编制的控制软件。

  第一种方法可靠性高,适用于工业控制系统。当监控计算机出现故障时,PLC还可以按照设定的程序进行自动控制。

  第二种方法是通过控制系统的计算机进行单独的分析运算进行控制,它具有较好的灵活性,但缺点是如果出现如计算机死机等故障时,有可能影响系统的正常运行。好在计算机的一般恢复往往不需要太多的时间。

  除空压供气系统自控外,空压站可与制冷站、热力站系统一起建立设备控制网络,实现集中控制,或与工厂控制中心联网,由控制中心的控制器实时远程监控,实现真正的无人值守。

  系统构成

  对于以上讨论,如果需要实现空压站的整体自控,又许多成熟PLC自控系统可以选用,现以ZH公司的PLC自控系统为例。

  该自控系统选用西门子S7-300系列可编程控制器,带有RS422/485网络接口,支持MODBUS等相关网络通讯协议。该系统可以采用专用工业通讯网络技术实施远程联网。空压站自控设备可根据生产实际情况和各设备的特点,以及可能存在的问题,综合各方面因素后确立分级控制网络的实施方案,如图1所示。

  ■   硬件配置

  现场仪表,受控设备、执行器、带有串行通讯接口的设备(如空压机,冷干机等),PLC和监控计算机。

  ■  软件功能

  选用专用的工业组态软件(如WINCC或iFIX)用来监视和操作整个生产过程,为控制系统提供通讯、显示及报表管理等功能,各设备控制器自成一子系统,其应用程序功能包括:信息采集,设备控制,故障报警,连锁保护,以及数据处理和通信传输。

  在系统实施过程中,还可引入故障检测和故障诊断的处理程序,能够提高系统的智能化程度,有利于进一步改善自控系统的有效性和可靠性,通过优化调度策略,软件连锁保护等自动控制功能模式的应用,有望将自动化水平提升到更高层次,可以为确定空压机设备状态检修点提供依据,并由此获得更大的效益。

  结论

  总之通过自动化控制可以克服由于人为因素造成的调节滞后等不利因素,减少运行参数的波动,达到减少用工和节约能源的目的。对于提升天纺控股有限公司的整体技术水平是相当重要的。 

系统分类: PLC/PAC
用户分类: 无分类
标签: 无标签
来源: 无分类
发表评论 阅读全文(135) | 回复(0)

2

关于投票
基于PCI总线运动控制卡WDM驱动程序设计
基于PCI总线运动控制卡WDM驱动程序设计
 
摘  要: 本文给出了一种使用DriverStudio设计WDM驱动程序的方法,用以实现数控系统应用程序对运动控制卡的访问。文中以基于PCI总线的运动控制卡为对象,在构架其硬件结构的基础上,阐述了设计WDM驱动程序的主要步骤,开发了WDM驱动程序,在Windows环境下进行测试,达到了预期目的。

关键词:WDM; PCI; DriverStudio

0 引言

  目前,开放式数控系统正得到日益广泛的应用,其中,基于Windows和PC机的开放式数控系统将成为数控技术发展的趋势。本文研究的数控系统采用NC嵌入PC的开放式结构,并以Windows 2000操作系统为平台。NC嵌入PC型数控系统是指将运动控制卡插入计算机的扩展槽中,由PC机完成非实时性处理任务,实时控制则由运动控制卡来承担。由于在Windows环境下,用户态的应用程序不能直接访问硬件,而要通过调用执行于核心态的设备驱动程序间接地访问硬件资源,因而,应用程序要对该数控系统中的运动控制卡进行访问,必须为其开发设备驱动程序。

  本文以该数控系统中基于PCI总线的DSP运动控制卡为研究对象,主要讨论该运动控制卡在Windows 2000环境下的WDM驱动程序的设计。

1 WDM驱动程序的结构及开发工具简介

  1.1 WDM驱动程序的结构

  Windows Driver Model (WDM)驱动程序是一种PnP(即插即用)驱动程序,它同时还遵循电源管理协议,并能在Windows 98,Windows 2000和Windows XP间实现源代码级兼容。在WDM驱动程序模型中,每个硬件设备至少有两个驱动程序。其中一个驱动程序称为功能驱动程序,负责初始化I/O操作,处理I/O操作完成时带来的中断事件,并为用户提供一种连接设备的控制方式;另一驱动程序称为总线驱动程序,它负责管理硬件与计算机连接[1]。

  WDM驱动程序采用分层的结构模型,如图1所示[2]。图1中左边是一个设备对象堆栈,设备对象是操作系统为帮助软件管理硬件而创建的数据结构。处于堆栈最底层的设备对象称为物理设备对象,简称为PDO。在设备对象堆栈的中间有一个对象称为功能设备对象,简称为FDO。在FDO的上面和下面还会有一些过滤器设备对象,简称为FiDO。位于FDO上面的过滤器设备对象称为上层过滤器,位于FDO下面的过滤器设备对象称为下层过滤器。在单个硬件的驱动程序堆栈中,总线驱动程序管理计算机与PDO所代表的设备的连接。功能驱动程序管理FDO所代表的设备。过滤器驱动程序用于监视和修改I/O请求包(IRP)流。

点击看大图
图1 WDM设备对象和驱动程序的层次结构

  1.2 开发工具简介

  开发驱动程序的软件很多,如NuMega公司的DriverStudio、Jungo公司的WinDriver和Microsoft公司的DDK等。在使用中,虽然利用DDK开发的驱动程序代码非常简洁,结构清晰,效率也高,但是开发难度较大[3]。利用DriverStudio、WinDriver等第三方开发工具则使用简单,开发速度较快。因此选用NuMega公司提供的DriverStudio作为开发工具。

  NuMega公司的DriverStudio是一套用来简化微软Windows平台下设备驱动程序的开发、调试和测试的工具包。DriverStudio包括DriverWorks、DriverNetworks、SoftICE和VToolsD等工具模块。其中,DriverWorks包含一个非常完善的源代码生成工具(DriverWizard)以及相应的类库和驱动程序样本,它提供了在C++下进行设备驱动程序开发的支持。

2 运动控制卡的硬件结构

  所设计的运动控制卡采用TI公司的TMS320LF2407 DSP芯片为核心处理器。该运动控制卡的硬件系统包括PCI接口子模块、数字信号处理器(DSP)子模块和轴控制接口子模块。

  该运动控制卡的PCI接口采用PLX公司的PCI9052接口芯片,这是PLX技术公司为扩展适配板卡推出的能提供一种混合高性能PCI总线目标模式的接口芯片。它可与多种局部总线相连,并具有异步操作、中断产生器、FIFO等特点。运动控制卡与上位PC机通过PCI总线进行连接,PCI接口子模块通过双端口存储器RAM器件IDT7026与DSP子模块连接。双端口存储器(RAM)是一个双向FIFO数据存储器,起数据缓冲的作用。轴控制接口子模块则通过CPLD(复杂可编程逻辑器件)与DSP子模块连接。运动控制卡硬件结构示意图如图2所示[4]。

点击看大图
图2 运动控制卡硬件结构示意图

3 运动控制卡驱动程序的设计

  使用DriverWorks为该运动控制卡开发WDM驱动程序主要有三个步骤:创建WDM驱动程序框架;实现驱动程序的具体功能;生成WDM驱动程序。下面是借助DriverWorks设计运动控制卡WDM驱动程序的具体方法。

  3.1 使用DriverWizard生成WDM驱动程序框架

  DriverWizard是DriverWorks创建WDM框架程序的工具。在创建一个PCI设备的WDM驱动程序框架时,共有十一步,其中以下几点需特别注意:

  (1)第四步:选择硬件设备所支持的总线类型,这里选PCI,并根据具体硬件填写PCI Vendor ID、PCI Device ID、PCI Subsystem ID和PCI Revision ID。这些参数可以从硬件生产厂家得到,如果所填写的参数和目标PCI设备寄存器中不一致的话系统将安装不上此驱动程序。

  (2)第六步:选择驱动程序支持的功能项,选中Read、Write、Device IO Control和Clean up四个复选框。

  (3)第七步:选择I/O请求IRP处理的方式,选择DriverManaged,由驱动程序管理的StartIO处理排队队列,并选择读写请求分别进行排队队列处理。

  (4) 第九步:选择设备文件中的类名和接口类型,类名通常取默认值,选择GUID接口方式作为应用程序打开设备的方式。在资源栏中分别点击Add IO Port (s)、Add Memory Range. . .和Add IRQ. . .声明所需的资源。

  (5) 第十一步:为了调试方便和更好地了解WDM驱动程序的运行过程,选择让系统生成控制台测试程序和用SoftICE调试的跟踪代码 (Trace Code)。

  至此,驱动程序框架已形成。DriverWizard生成了两个类:一个是驱动程序文件中的类,主要完成WDM的DriverEntry和AddDevice例程;另一个是设备文件中的类,主要完成与硬件交互的例程。

  3.2 驱动程序功能的实现

  DriverWizard创建的WDM驱动程序框架中包含了很多例程。这些例程可分为两种:必需的基本例程和根据需要可选择的扩展例程。根据需要修改相应的例程即可实现该运动控制卡驱动程序的具体功能。

  3.2.1初始化驱动程序——DriverEntry例程

  DriverEntry例程负责驱动程序的初始化,所有的驱动程序都必须包含DriverEntry例程。当装载驱动程序时,PnP管理器为每个驱动程序调用一次DriverEntry例程。DriverEntry用以初始化驱动程序范围的数据结构和资源。

  DriverEntry例程主要有以下三个功能:

  (1) 设置AddDevice、Unload、Dispatch和其他例程的入口指针

  (2) 可以从注册表中获取一些必要的信息以初始化驱动程序

  (3) 初始化其他的在驱动程序范围内的数据结构和资源

  3.2.2 串行读例程——SerialRead例程

  在该驱动程序中,对IRP进行串行处理采用的是由驱动程序管理的IRP队列。当硬件设备处于忙状态时,将IRP排队;当硬件设备处于空闲状态时,将排队的IRP取出处理。SerialRead例程是扩展例程,向SerialRead例程中添加功能代码就可以实现PC机对运动控制卡的串行读操作,应用程序可以通过该WDM驱动程序读取双端口RAM中的数据及参数。

  3.2.4 串行写例程——SerialWrite例程

  在该驱动程序中,要实现PC机对运动控制卡的串行写,需要使用SerialWrite例程。串行写操作主要负责处理运动函数原型的解读,并将解读后的指令写入双端口RAM中。

  3.3 生成WDM驱动程序

  设计完成后的WDM驱动程序将生成一个工作区 (Workspace)和两个工程 (Project),生成的工作区包括了驱动程序工程和应用程序工程。分别选择两个工程,并分别将其设置成为当前活动工程,用Visual C++6.0对其进行编译。对于驱动程序的编译,不用进行任何设置,单击Build图标即可生成后缀名为.sys的驱动程序文件。

4 运动控制卡驱动程序的安装与应用

  生成后缀名为.sys的驱动程序后,安装之前,首先要修改INF文件,然后将其拷贝到“. .\sys\objchk\i386”目录下。修改INF文件只要将文件双引号中的提示改为相应的内容即可生成设备信息文件。对该驱动程序的INF文件作如下修改:

  [Strings]

  ProviderName =“数控研究中心” //公司名称

  MfgName =“华南理工大学机械与工程学院” //硬件制造商名称

  DeviceDesc =“高级运动控制卡V3.2” //设备描述

  DeviceClassName =“高级运动控制” //设备类描述

  SvcDesc="运动控制" //服务描述

  使用控制面板中的添加新硬件来搜索新硬件,根据提示指定INF文件和编译后生成的.sys驱动程序文件,系统就可以自动安装新硬件的驱动程序。

  驱动程序安装好之后,在Windows 2000环境下对运动控制卡及其设备驱动程序进行实际测试[4]。测试结果表明,此设备驱动程序能使运动控制卡在Windows 2000环境稳定工作,并能对多轴的运动位置和速度进行准确控制。同时,将该驱动程序移植到Windows 98/XP系统中,也能驱动运动控制卡正常工作。

5 结束语

  传统的驱动程序都是用DDK开发,开发效率不高。本文以基于PCI总线的运动控制卡为研究对象,以DriverWorks为工具,方便快捷地设计完成了设备驱动程序。在Windows环境下对运动控制卡及其驱动程序进行测试,结果表明,此驱动程序能使该运动控制卡在Windows环境下稳定工作。实质上,驱动程序仍满足DDK对WDM的要求,调用的仍是DDK所提供的基本函数。利用DriverStudio对数控系统中的运动控制卡开发驱动程序,对数控系统实现开放式软件结构及人机界面具有重要意义。

  本文作者创新点:利用DriverStudio来设计运动控制卡的WDM驱动程序,实现了在Windows 2000环境下,上位机和运动控制卡的正常通讯,并能根据上位机的指令通过运动控制卡对多轴运动位置和速度进行准确控制。

系统分类: 运动控制
用户分类: 无分类
标签: 无标签
来源: 无分类
发表评论 阅读全文(157) | 回复(0)

2

关于投票
多通信接口接入互联网的嵌入式网关设计
多通信接口接入互联网的嵌入式网关设计
 
摘  要:本文分析了嵌入式Internet的一个主要问题,介绍了嵌入式网关的两种典型设计方案,设计了一个整合了内、外网通信的新型嵌入式网关,在介绍网关硬件结构的基础上,围绕网关的软件构架,讨论了嵌入式网关的各软件模块实现方法。

关键词:嵌入式网关;多路通信接口;嵌入式Internet;μCLinux

  嵌入式Internet技术的出现,使得嵌入式系统与Internet之间可以实现资源共享、信息通信和状态测控等功能。目前,该技术的主要问题之一就是Internet上面的各种通信协议对于计算机存储器、运算速度等的要求比较高,而测控领域中大量存在的8位和16位MCU系统是无法处理这些的。要解决这个问题,一个可行的方法就是利用在嵌入式领域比较常用的总线,如RS485、RS232、CAN总线等,将这些处理能力较低的嵌入式设备连接起来,接入到网关所提供的通信接口上,由网关来实现协议栈和协议转换,从而就将8位/16位的嵌入式设备接入到互联网。

1. 嵌入式网关的典型设计方案

  网关又被称为网间协议变换器,用于连接采用不同通信协议的网络,实现网络之间的数据传输。当一个报文要求从一个网段发送到另一个网段时,网关需要完成对该报文的接收、翻译与转发工作[1]。就目前已应用到嵌入式系统中的网关来说,主要有以下两种:

  1.1 利用PC机来实现的网关

  利用PC机的丰富资源和较强的处理能力,在其上构建WEB服务器,实现和Internet客户端的通信,而8位/16位MCU设备连接到PC总线的扩展接口或特定的板卡上,通过通信程序实现与PC机通信,进而利用PC机这一网关接入互联网。这种方式实现相对容易,灵活性较好,但成本较高,设备的可靠性和环境适应性都比较差。

  1.2 利用32位嵌入式系统实现的网关

  它以32位嵌入式系统为硬件基础,体积小、成本低,设备的可靠性和环境适应性较好。按实现TCP/IP协议栈方法的不同,可将这种嵌入式网关分为以下两个设计方案。

  (1)基于软件来实现TCP/IP协议栈[2]

  这一方案通常有两种实现方法,第一种是嵌入式操作系统带有TCP/IP协议栈。网关运行在嵌入式操作系统之上,可以利用嵌入式操作系统的强大功能,按用户需求实现很多复杂的功能。第二种方法则单独采用TCP/IP协议栈软件模块,不使用嵌入式操作系统,所构建的系统只占用很小的存储空间,但是如果要实现复杂的功能,则编程的复杂性较大。

  (2)直接利用TCP/IP协议栈芯片[2]

  在这种方案中,将集成有TCP/IP协议栈的芯片直接使用在嵌入式网关中,使得设计简单,但增加了一个芯片,也就增加了制造成本,开发时需要熟悉TCP/IP协议栈芯片的接口。

2. 嵌入式网关的硬件结构

  网关的硬件结构如图1所示,其中处理器使用基于ARM7TDMI的SAMSUNG S3C44B0X,它是16/32位RISC处理器,工作在66MHz,内置有丰富的片内外设,常用于手持设备和网络设备当中。系统内存使用4M×16bit 的HY57V65160b SDRAM,存储器使用1M×16bit的SST39VF160 Flash。网关的以太网控制器采用RTL8019AS,它支持IEEE802.3,支持8/16位数据总线,内置16KB SRAM,支持全双工方式,收发可同时达到10Mbps。网关提供多路本地通信接口,其中RS232接口利用S3C44B0X的UART0口实现,使用MAX3221E实现电平隔离和转换。RS485接口使用S3C44B0X的UART1口实现,外接MAX485完成TTL电平与RS485电平的转换和数据收发。CAN总线接口采用总线连接方式,使用PHILIPS公司的CAN控制器SJA1000T,它兼容基本CAN模式(BasicCAN)和增强CAN模式(PeliCAN),符合CAN2.0B协议,具有完成CAN通信协议所要求的全部特性,其外接TJA1040T作为CAN总线接口的收发器。此外,系统还预留了可用于扩展的其他通信接口。


图1 嵌入式网关硬件结构

点击看大图
图2嵌入式网关的软件构架

3. 嵌入式网关的软件设计

  3.1 软件构架

  本文所设计的嵌入式网关运行在嵌入式操作系统μCLinux之上,对外以WEB服务器与Intertent客户端交互;对内则按总线标准的不同,通过多个通信接口与多个不同类型的集散式子网相连,如图2所示。网关将内网中的各通信子网以及外网的Internet都看成是等同的网络,在转发数据时屏蔽网络之间的差异,将来自不同网络的数据都转换为统一格式的转发数据包,并采用基于优先级的调度机制来完成转发。这样便将内网和外网的通信整合在一起,实现各种子网通信协议与TCP/IP协议的转换,以及各种子网通信协议相互之间的转换。

  当WEB服务器接收到来自Internet客户端的请求时,如果是请求静态网页,则将网页传给客户端(对应于图2中的①,下同);如果是要与本地子网的终端设备通信,服务器便将通信数据发往Internet接口模块(②),由其完成对数据的解析,并封装成转发数据包,发往接收子模块(③);相反,当Internet接口模块收到来自发送子模块的数据包时(④),则解析该数据包后生成动态网页,发往WEB服务器(②),服务器再将其发到客户端(①)。

  当本地子网的某个终端设备要与别的设备通信,或者要将响应数据包发往Internet客户端时,按照一定的调度机制,将数据从终端设备发往内网通信模块(⑤),由该模块将数据转换为网关内部的转发数据包后,发往接收子模块(⑥)。与此相对,如果内网通信模块收到发送子模块发来的数据包(⑦),则根据该数据包的目的地址,选择相应的子网,将数据包转换为符合该子网的通信协议下的数据,再发往目的设备(⑤)。

  接收子模块在接收到来自Internet(③)或本地子网(⑥)的数据包后,将这些格式统一的数据包按照优先级高低插入数据队列中(⑧)。当基于优先级的队列中有数据包的时候,发送子模块便从中取出数据包(⑨),发往目的子网(④⑦)。

  3.2 嵌入式操作系统μCLinux的移植以及Boa服务器的配置

  μClinux是一个完全符合GNU/GPL(通用公共许可证)的项目,其代码完全开放,专门针对没有MMU的MPU,通过对标准Linux内核的改动,针对嵌入式系统进行小型化处理,形成了一个高度优化的、代码紧凑的嵌入式Linux。将μClinux应用到网关中,可以利用其完备的网络功能,减小开发的难度,缩短开发时间。使用μClinux,第一步要做的就是根据网关的硬件平台移植μClinux,首先要在PC上安装Linux操作系统,下载uClinux源代码压缩包并解压,下载并安装交叉编译工具,建立交叉编译环境;其次根据不同的硬件系统修改源代码,编写或修改一些特殊硬件的驱动程序;然后配置内核,生成可在RAM中运行的内核文件;最后烧写到硬件系统的Flash存储器中,加电运行。

  μClinux中常用的WEB服务器有:Boa、thttpd、httpd,网关可选择支持认证、支持CGI、非常适合于嵌入式系统的Boa WEB 服务器[3]。Boa是一个单任务的HTTP服务器,它不为每个访问的连接单独开启一个进程,也不会为多个连接而开启多个自身的拷贝,对所有活动的HTTP连接都在内部进行处理,而只为每个CGI连接启动新的进程,因此Boa在同等硬件条件下速度更快。使用Boa WEB服务器,需要对其运行环境、参数等进行设置,如设置侦听端口为80,设置服务器的文件根目录DocumentRoot,设置CGI文件的存放目录等。

  3.3 Internet接口模块的设计

  Internet接口模块实质上是一个CGI[3] (公共网关接口协议Common Gateway Interface)程序,CGI是对HTTP协议的补充,是一个用于定义WEB服务器与外部程序之间通信方式的标准,定义了建立互操作中双方必须遵守的规则集。CGI技术较为成熟,相关文献也较多,故本文不做详细论述,而是重点介绍一下Internet模块的实现算法,其流程图如图3所示。

点击看大图
图3 Internet接口模块流程图

  Internet客户端可用“GET”或“POST”方式提交数据到WEB服务器上,WEB服务器会将本次所用的提交方式保存到环境变量REQUEST_METHOD中。如果是“GET”方式,则服务器将有效数据保存到环境变量QUERY_STRING中,Internet模块可直接读取这一环境变量来获得有效数据;如果是“POST”方式,则服务器将有效数据的长度保存到环境变量CONTENT_LENGTH中,则Internet模块就可在这一数据长度的控制下从标准输入读入有效数据。在获得了有效数据之后,Internet模块解析它们,生成转发数据包,发往转发模块。到此数据接收完毕,进程挂起自身,等待信号量InternetRec有效。当InternetRec有效时,说明有来自内网的反馈数据包到来,则进程被唤醒,接收反馈数据包,在判断目的地址无误后,根据数据包数据生成动态网页,交予WEB服务器发送到客户端。

  3.4 转发数据包的设计

  转发模块完成网关内部的数据包转发功能,它维护了一个基于优先级的数据队列(见图2),该队列属于临界资源,由接收子模块和发送子模块互斥使用。转发数据包的结构应有一定的通用性,具有兼容各种通信子网或Internet数据的能力,可用下面的数据结构来定义:struct DataProtocol{

  int CommType;

  struct Addr_t DstAddr;

  struct Addr_t SrcAddr;

  int Prio;

  struct DataStruct *DataHead;

  int DataLengh;

  struct DataProtocol *pDProtc; };

  (1)int CommType; 定义通信的类型。用来指明当前所传送的数据包的类型,即DATATYPE(有效数据包)和ERRORTYPE(错误信息包)。DATATYPE是指本数据包的数据域中的是有效的数据;而ERRORTYPE是指数据域中携带的是出错信息。网关在处理数据包的时候,就可以先判断数据包的类型,再采用相应的处理流程,这样便提高了处理的效率。

  (2)struct Addr_t DstAddr; 通信的目的地址。用以指明数据发往的目的地址,其数据类型定义如下:struct Addr_t{

  unsigned char SubNet; //指明是何种网络(本地子网或Internet)

  unsigned char DevAddr; }; //指明子网内的终端设备地址

  说明:由于网关所使用的Boa WEB服务器是单任务的,一次仅处理一个Internet连接,故当SubNet为Internet时,DevAddr应为零。

  (3)struct Addr_t SrcAddr; 通信的源地址,用以指明数据的源地址。

  (4)int Prio; 数据包优先级。对来自不同通信子网以及不同设备的数据包,根据通信的实时性要求不同,定义不同的数据包优先级。在转发模块中,优先级高的数据包被插入到队列的头部,优先被转发到目的网络。在指定具体的数据包优先级时,采用Prio数值越小优先级越高的方式,且规定与Internet相关的数据包较内网间传递的数据包有更高的优先级。

  (5)struct DataStruct *DataHead; 存储有效数据的链表队列的头指针。该链表就是数据包的数据域部分,其数据类型定义如下:

  struct DataStruct{

  char *Name;

  char *Value;

  struct DataStruct *pDStruct; };

  *Name保存数据或操作的类型,可为 “INFO”(说明信息)、“READ”(读数据)、“WRITE”(写数据)、“CONTROL”(发送控制指令);

  *Value的格式为:操作名称或对象 [参数1] [参数2] …… [参数n]

  其中,操作名称或对象和参数内都不能有空格,参数之间用空格分开,参数数量可为零。

  比如要启动某个设备,只需传送如下数据:Name->CONTROL,Value->START;要读取设备温度值,只需传送:Name->READ,Value->TEMPERATURE。数据包仅是保存了有效数据的ASCII码,嵌入式网关只完成将这些ASCII码从发送端传送到接收端,实现路由功能和中间协议转换功能,这些ASCII码所表示的具体含义由发送端和接收端的应用层来规定,这样便实现了一种与具体数据意义无关的通用数据传送通道。

  (6)int DataLengh; 指明有效数据中,“Name”、“Value”对的数目。

  (7)struct DataProtocol *pDProtc; 指向下一个数据包的指针。在基于优先级的数据队列中,各数据包利用该指针,采用链表的形式加以组织,这样有利于数据的插入和删除。

  3.5 内网通信模块及设备通信模块的设计

  内网通信模块由调度子模块和若干子网接口子模块组成,其中前者较为简单,主要是完成转发模块和各子网接口子模块之间的数据包分发及收集功能;而后者就较为复杂了,涉及到各种网络的通信协议和数据格式,它与终端设备的通信模块形成一个基于该子网通信协议的通信系统,限于篇幅,本文不可能尽述,仅以RS232为例作一个简单介绍。

  RS232标准仅定义了ISO/OSI基本参考模型中物理层规格和链路层硬件接口规格,要实现集散式的RS232子网的通信,需要一个网络层来进行终端设备的地址路由。此外,还要在链路层的软件层面上,设计一个数据帧格式,用于封装所传输的数据。在具体的实现上,就体现在转发数据包和RS232数据帧格式间的解析和转换封装上。

  终端设备要接入嵌入式网关,在硬件上必须提供一个通信接口,如RS232接口、RS485接口或CAN接口等。在软件上则必须有一个通信模块,主要完成:从网关接收数据,经解析后提交给上层应用程序;从上层应用接收需发送的数据,对其封装,再发送到网关。应用程序按照应用层的协议规则分析接收到的有效数据,做出相应的操作或响应。

4. 结束语

  本文在分析典型的嵌入式网关设计方案的基础上,提出了一种具有多通信接口的整合内、外网通信的嵌入式网关,适用于将8/16位嵌入式设备接入互联网的应用场合,该方案可以根据应用需求对各接口应用模块进行扩展和裁剪。在具体应用中,还需要增强和改进网关的安全性,进一步研究将更多的本地通信子网加入到网关中,从而增强网关的适用性。

  本文作者创新点:设计了一个整合内外网通信、能为8/16位MCU系统接入互联网提供多个通信接口的嵌入式网关,详细讨论了网关软件模块的实现和转发数据包的格式。

系统分类: 嵌入式系统
用户分类: 无分类
标签: 无标签
来源: 无分类
发表评论 阅读全文(104) | 回复(0)
总共 , 当前 /