青岛工控机
Search
导航菜单
Search
文章检索
    RPC610工控机中基于VB6.0的数据采集系统的开发
    作者:    发布于:2017/6/11    浏览次数:729

    工控机在工业领域的广泛应用,免不了一些基本的基础层次的开发应用,而Visual Basic 6.0作为一款简便快捷的编程语言,在工业领域也应用非常广泛,本文将以一个简单的应用案例来分析RPC610工控机与Visual Basic的完美结合,希望对大家有用。

    1、 硬件系统设计

      1-1、被测参数分析

      按照有关规定,对维修后的坦克炮控系统需要进行静态参数和动态参数的检测[1]。需检测的静态参数共有94路±15V范围的电压信号,动态参数有位移、拉力、压力、转速、漂移等12路信号,位移、拉力信号为标准传感器输出信号,范围为±5V和0-5V,转速和漂移信号为陀螺仪组输出的检查信号,为±15V的电压信号。另外,为了丈量位移和拉力,需要使用液压元件以及电磁铁作为执行元件进行相应的操纵,故需进行相应的控制。

      1-2、数据采集卡

      数据采集卡的选择是硬件系统建设的关键,基于性能的稳定性和性价比的原因,选用了研华的ISA总线产品。根据需要,使用了3块PCL813B和1块PCL818H。这两款板卡都可支持双极性±5V的输进范围,我们另制作了一块外围端子板将±15V的电压转换为±5V[2-3]。

      PCL813B具有32路单端隔离模拟量输进,本应用中使用它采集94路静态电压信号。它采用了12位分辨率A/D转换器AD574,转换时间为25μs,数据传送速率达25Kbps,输进范围为双极性±5V、±2.5V、±1.25V和±0.625V,单极性为0~10V、0~5V、0~2.5V和0~1.25V,A/D转换触发方式为软件触发。

      PCL-818H是一款多功能采集卡,本应用中使用它采集动态信号及控制液压阀和电磁铁。它提供了5个最为常用的丈量和控制功能:12位的A/D转换,D/A转换,数字输进,数字输出和计时器/计数器。它的特点是:

      (1) 16路(单)或8路(双)差分模拟量输进

      (2) 12位模数转换,100KHZ的采样频率

      (3) 16路数字输进和输出

      (4) 可通过软件改变增益的值

      (5) 软件可选择逻辑输进范围(双极性)。

      两块板卡使用方法基本相同,由于篇幅限制,下面仅以818H对模拟量的输进采集为例先容采集卡的使用。

      编写PCL-818H的程序的关键是使用板卡上的16个寄存器。它需要16个连续的PC机I/O空间地址,每个口地址与采集板内的寄存器相对应。每个寄存器的地址是通过指定到板卡基地址的偏移量。例如,BASE+0是这个板卡的基地址,并且BASE+7表示基地址+7个字节。假如板卡的基地址是300h,则BASE+7寄存器的地址就是307h,结果见表1。

      表1、 寄存器的作用及相应的I/O端口地址

      PCL-818H模拟输进的16个端口,可以构成16个单端输进或者8对差分输进,输进通道的工作方式利用跳线设置,软件控制对一个或多个通道的操纵。输进信号经放大电路后,由一个逐次逼近式A/D转换为12位数字信号。

      PCL-818H提供了软件、时钟步进和外部信号3种触发方式。软件触发的触发器是由软件控制的,当在软件寄存器中写进数值后,启动A/D转换,这种方式适用于低速A/D转换。时钟步进触发适用于转换速度要求很高的系统,PCL-818H提供的8254定时/计数器用来为A/D提供一个固定触起源,计数器1和计数器2级联在一起提供了一个周期精确的触发脉冲,非常适合于需要固定且精确的采样频率的系统。把外部触发信号接在CN3的35脚,可以实现外部触发,适用于不需要周期采样的系统,外部信号的上升沿启动A/D转换。根据该系统的需要,我们选择了软件触发方式。

      1-3、工控机的选择

      工控机(IPC)是一种具备特殊性能的计算机,能在恶劣的产业生产环境下,保证系统的连续稳定运行,并能承受环境中的高(低)温、冲击、振动、电磁干扰、湿润、粉尘等不利因素[4]。考虑到军用的特殊性,我们选择了车载使用方便的产业便携机,型号为华北工控的RPC610工控机,该机具有8槽PCI/ISA扩展能力,液晶屏可360℃旋转,具有防暴功能。

    系统结构图

    2、软件系统的设计

      系统的软件设计采用了VB6.0,VB6.0以其易学、高效、功能强大以及所开发的系统界面友好等特点受到了众多用户的欢迎,在数据采集和产业控制领域得到了广泛应用。本系统的软件部分主要有数据采集处理和数据治理两部分组成,实现的功能有数据采集的控制、数据处理、数据的治理以及试验报告的输出。下面给出了数据采集和存储两个关键环节的代码。

      2-1、模拟电压的读取

      VB固然易学且功能强大,但也有其自身的弱点,比如对硬件的直接访问仅靠VB自身是无法解决的。但是它可以通过调用板卡提供的驱动函数,实现对I/O的访问和控制,而且支持事件驱动,这样就使VB可以很方便地编制数据采集软件[5]。

      在Windows环境下调用驱动程序,需要在工程中添加一个模块Driver.bas,模块中定义了PCL-818H的所有常量,全局变量,函数,数据结构,状态代码和消息。可以直接在程序中调用文件中定义的这些量实现数据的读取。在Driver.bas文件的最后定义了很多API函数,但都不是私有的,工程里的所有窗体都可以调用这些函数。模拟值的读取分为如下5步:

      (1)、打开设备

      ErrCde=DRV_DeviceOpen(0,DeviceHandle)

      假如ErrCde为0表示成功,否则返回错误信息。

      (2)、配置输进通道范围

      lpAIConfig.DasChan=int Channel ‘设置通道

      lpAIConfig.DasGain=0 ‘设置增益为0

      ErrCde=DRV_AIConfig(DeviceHandle,lpAIConfig)

      (3)、读取电压值IConfig)

      AiVolIn.chan=lpAIConfig.DasChan ‘电压输进通道

      AiVolIn.Gain=lpAIConfig.DasGain ‘电压输进增益

      AiVolIn.TrigMode=AiCtrMode ‘触发模式

      AiVolIn.voltage=DRV_GetAddress(voltage) ‘读进电压值

      ErrCde=DRV_AIVotageIn(DeviceHandle,AivolIn)

      (4)、返回值

      fnGetValue=voltage

      (5)、封闭设备

      ErrCde=DRV_DeviceClose(DeviceHandle)

      2-2、数据库的访问

      VB6.0提供了相当强的数据库存储能力,可以直接支持Microsorft Access数据库[6].VB在单机环境访问数据库的技术有DAO和ADO,既可用控件也可用代码编程实现。本应用中利用控件并分歧适,故采用了比较灵活的ADO代码编程方法。假定在C:\mydatabase\mydata.mdb数据库中存在”pkxt”表格,name、testdata、giveddata、conclusion是其字段名,界面中几个Text文本框中显示了试验数据,将数据写进数据库的代码如下:

      Private Sub Form_Load() ‘ 窗体装载事件

      Dim strSQL As String

      Set cn = New ADODB.Connection ‘建立新的连接

      cn.Provider = microsoft.jet.oledb.3.51 ‘ 数据库引擎

      cn.ConnectionString = C:\mydatabase\mydata.mdb ‘数据库路径

      cn.Open ‘打开连接

      Set adors = New ADODB.Recordset ‘打开“pkxt”表的一个记录集

      adors.LockType = adLockOptimistic

      strSQL = select * & from pkxt

      adors.Source = strSQL

      Set adors.ActiveConnection = cn

      adors.Open

      adors.AddNew

      End Sub

      Private Sub Form_Unload(Cancel As Integer) ‘卸载窗体事件

      cn.Close ‘封闭连接

      End Sub

      ‘在“保存“按钮的单击事件中将界面中的数据写进记录集

      Private Sub Command1_Click()

      adors.Fields(name) = Text1.Text ‘检测项目名称

      adors.Fields(testdata) = Val(Text2.Text) ‘检测值

      adors.Fields(giveddata) = Val(Text3.Text) ‘给定的指标值

      adors.Fields(conclusion) = Text4.Text ‘检测结论

      adors.Update

      adors.Close

      End Sub

      2-3、报表输出

      对报表的输出,VB6.0提供了很多方法,其中DataReport设计器和Printer对象方法特点鲜明。利用Printer对象方法需要编写较多的代码,但极具灵活性DataReport设计器是VB6.0新增的功能,它只提供了最基本的功能,但具有非常易用的特点。由于本系统数据比较简单,所以使用了DataReport设计器实现试验报告的输出。

脚注信息
Copyright(C)2009-2024 青岛亨利达电脑有限公司
脚注栏目