您的位置:控制工程论坛网论坛 » 现场总线 » 现场总线上位机软件的设计

常青树

常青树   |   当前状态:在线

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

注册时间: 2008-09-28

最后登录时间: 2012-05-30

空间 发短消息加为好友

现场总线上位机软件的设计

常青树  发表于 2008/11/25 7:27:55      1199 查看 0 回复  [上一主题]  [下一主题]

手机阅读

摘  要:本文利用面向对象的程序设计方法OOP在Windows2000系统环境下对基于单片机的集散控制系统的软件组态问题进行了研究,设计了一个基于现场总线的上位机软件。它由串口(RS232)通信、USB接口、PCI总线、并口、及数据处理模块等五部分组成,主要实现了测试接口以及数据处理的通用化、测试模块的集成化,能够顺利连接到各个接口及设备,完成PC机的系统测试。


关键词:现场总线  VC  USB  API  PCI

0引言
    现场总线控制系统是应用在生产现场、微机化测量控制系统设备之间实现双向串行多节点数字通信的系统。该系统将工业环境控制功能下放到作为网络节点的智能仪表和设备中,智能设备的上位机则采用担负集中监控任务的PC机,该机能够与各控制器进行双向通信,从而使分散于各处的控制器能在PC机上集中监控。利用PC机又可以获得友好的控制界面,提高现场控制与监测的效率和安全[1]。 近几年来,随着现场总线技术的发展,用于PC机上各种工控软件、组态软件、标准的最优算法控制软件应运而生。但许多中小企业为了节省开支可以在购买集散控制系统部件的基础上,自己研发组建适于本企业的现场总线控制系统。一套现场总线控制系统组建的核心在于其接口卡的研发,目前随着PC机的发展, PC机上已配备了不同总线标准的接口卡,本文的主要目的是希望能在基于现场总线的PC机软件的开发对不同总线标准的接口的通用性和数据处理方面做出有益的探索。

1  软件总体方案设计
    现场总线上位机软件系统的主要功能是发送控制及数据信息,接收现场设备传送来的采样数据以及检测流程信息,对现场设备的检测过程进行仿真测试,并对检测数据进行分析、打印、存储等处理。
它的体系结构如图1所示,分为操作系统平台和监测应用软件两个层次。其中,操作系统平台为监测应用软件提供其所需的运行环境及其与外设硬件进行信息交换的通道,监测应用软件的人机交互界面的设计,是以所需实现的功能为设计依据,主要包括监测系统主界面、串口参数设置界面、USB口界面、PCI总线界面、并口界面、数据处理界面等界面的设计。限于篇幅,下面重点介绍USB口模块、PCI总线模块、及数据处理模块的设计。

图1    PC机软件体系结构

2  USB口模块的通信程序设计与实现
    通用串行总线(简称USB)接口是目前最为流行的接口,该接口可以从主板上获得500mA的电流,支持热插拔,真正做到了即插即用。一个USB 接口由一条4芯电缆连接,可以提供3种速度模式:低速的1.5Mbps、全速的12 Mbps以及高速的480Mbps,其中12 Mbps 的速度基本上能够满足工业和嵌入式领域内的很多场合,采用USB口的现场总线接口卡将是一个发展方向。本文所设计的USB口模块主要功能是对USB设备PDIUSBD12(简称D12) SMART评估板进行测试,D12是基于微处理器的能节省成本的高性能的USB接口器件,能够提供DMA 数据传输方式。应用程序中使用打印和扫描模式允许利用评估板仿真打印机或扫描仪环境,而循环读写模式指示从主系统发送和接收一个大的数据包时数据的完整性,还包括中断输入和通用输出测试。


    程序设计如图2所示。进入程序后,首先选择工作模式,选定工作模式的同时开始其工作线程,工作线程的准备工作包括打开设备驱动程序和打开设备两步,打开了设备后就可以请求读写操作,得到允许后进行读操作或写操作。
    当一个工作线程结束后,需要关闭设备和关闭设备驱动程序。本模块利用了多线程技术,可以同时进行扫描仪方式和打印机方式。
    图3为读写USB设备流程图。USB设备首先从串行总线处获得由主设备传送过来的设备信息集,判断是否为接口信息,如是,只有在获得设备路径名的基础上才能打开本设备,从而对本设备进行读写操作。该程序是通过对USB 从设备编写固件程序来实现。


         


 
3  PCI口模块的设计与实现
    PCI的含义为外设部件互连(Peripheral Component Interconnect),是一种具有多路地址线和数据线的高性能的32/64位总线,它在高度集成的外围控制器件、外围插件板和处理器/存储器之间作为互连机构应用。PCI局部总线支持64位数据传送、多总线主控和线性突发方式(Burst),其数据传输率位132MB/s,这给其发展提供了有利条件[2]。本文所设计基于PCI总线的现场总线接口卡采用的PCI总线设备为CH365,该设备的固件驱动程序已由厂商直接提供。访问PCI总线设备CH365需要先给设备安装WDM驱动程序,WDM(Windows Driver Model)是微软提出的一种全新的分层化设备驱动程序模型,驱动程序对象和设备对象以堆栈的结构处理I/O请求。当用户态发一个I/O请求,I/O管理器将形成一个I/O请求包IRP。在内核态,IRP首先被送到最上层的驱动程序,然后逐渐过滤到下面,各层驱动程序对IRP的处理取决于设备以及IRP所携带的内容[3]。安装了驱动程序后,在应用程序中需加载CH365DLL.DLL以及将CH365DLL.LIB加入项目中,从而调用其函数访问CH365。与CH365进行数据交换需要用到寄存器,写数据是将数据写到CH365地址D0-D7,然后将数据存储到寄存器中,读数据时将寄存器中的值发送到D0-D7,然后从中读取。
    本文所设计的PCI口模块分为PCI测试子模块和I/O端口读写子模块。模块功能是测试PC机与PCI接口芯片CH365的通讯,可以通过一个“亮”或“灭”按钮控制L1发光二极管的亮或灭,也可以从I/O端口读数据或者向I/O端口写数据。
    程序流程如图4。程序首先加载CH365DLL.DLL,成功加载后打开PCI设备,然后就可以获得CH365的I/O基地址,再选择测试或者I/O读写操作,最后获得结果。L1发光二极管用于显示CH365的A15地址线的状态,当A15设定为0时则L1点亮,设定为1时则L1熄灭。程序先调用CH365GetIoBaseAddr(&mIoBase)来获得CH365的I/O基地址,然后调用CH365SetA15_A8()函数来实现的。


图4    PCI口模块程序流程图

4  数据处理模块的设计与实现
    数据处理模块的功能是对从数据库中读取的数据或手动输入的数据进行数学处理或者图像处理,分为数学处理子模块和图像处理子模块两部分。数学处理模块完成的功能为2阶到6阶的矩阵分析,包括特征值、特征向量、特征值多项式系数、秩、迹(对角元之和)、条件数、奇异值分解、行列式值和二范数等,用户先选择矩阵格式,再选择矩阵分析的方式,在界面中直接得到结果。图像处理模块完成的功能为调用MATLAB引擎画出正弦曲线、余弦曲线、正切曲线、余切曲线、时间位移曲线和加噪正弦曲线等,用户需要先开启MATLAB引擎,再选择对应的图像处理方式,最后还需关闭引擎。
    程序流程如图5。进入程序后,可以选择矩阵分析和图像处理两种操作。如果选择“矩阵分析”,接下来需要选择矩阵格式和分析方式,接着就显示分析结果。如果选择“图像处理”,就需要先打开MATLAB引擎,然后选择图像处理方式,显示完结果后关闭引擎。

图5  数据处理模块程序流程图

5结束语
    本文的研究涉及到多方面技术的综合,包括Win32 API函数和ODBC技术在VC中的应用、VC与MATLAB的混合编程、WDM驱动程序等。在程序中,可以直接使用Win32 API函数访问串口,也可以通过开发WDM驱动程序来实现API函数访问USB口、PCI口和并口的功能;ODBC技术的应用可以将数据实时地存储到数据库中并可以在界面上通过控件显示历史数据;通过VC与MATLAB的混合编程,将MATLAB强大的数据处理功能结合进来,实现了调用MATLAB引擎和MATLAB C++Math Library两种混合编程方法,为开发提供了更强大的技术支持。
    本文是在实验室的特定背景下,探索通过PC机上主板的不同接口连接到单片机并与之通信的方法,研制了这个具有通用性、实用性、集成化和多功能等特点的PC机软件系统,程序语言选用VC+Access的模式,不仅提供给用户友好的人机界面,并最终实现了其测试功能。通过测试表明,该软件较好地实现了测试接口以及数据处理的通用化、测试模块的集成化,能够顺利连接到各个接口及设备,完成PC机的系统测试。

1楼 0 0 回复