关键词:VisualBasic6.0;工控机;坦克炮控系统; 数据采集; PCL-818H
前言:随着武器装备的不断升级换代,性能的不断提高,对维修后试验技术的要求也不断提高。新近几年装备部队的主战坦克火控系统对维修后的试验要求相当严格,现行的试验手段多为手工操作,自动化程度低,精确度很差,新型坦克炮控系统试验平台的开发正是基于这一背景提出的,本文介绍了该平台的数据采集系统的开发技术。
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]。考虑到军用的特殊性,我们选择了车载使用方便的工业便携机,型号为华北工控的REPC-815,该机具有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设计器实现试验报告的输出。
3、结论
经过反复调试,我们开发的基于VB的工控机数据采集系统实现了预期的各项功能,达到了各项技术指标要求。该系统在我军某坦克中修单位使用了近半年,界面友好,功能丰富,运行可靠,有着较高的推广应用价值,并且对其它行业多参数数据采集系统有参考价值。
参考文献
[1]ZTZ96坦克修理指南[M].北京:中国人民解放军总装通保部,2000.
[2]张劲松,张涛. 计算机工业控制[M].北京:中国电力出版社,2003.
[3]凌澄,PC工业控制系统精粹[M].北京:清华大学出版社,1998.
[4]孙延才,王杰.工业控制计算机组成原理[M].北京:清华大学出版社,2003.
[5](美)Steven Holzner,详实翻译组翻译.Visual Basic 6技术内幕[M].北京:机械工业出版社,1999.
[6]effrey P.McManus . VisualBasic数据库访问技术[M].北京:机械工业出版社,1999.