理论教育 液位系统软件设计与调试

液位系统软件设计与调试

时间:2023-06-15 理论教育 版权反馈
【摘要】:图5-10液位控制系统仿真图MFC是一个非常庞大的类库,提供了Windows API的许多功能,具有强大的程序开发功能,用该软件做界面程序操作简单,节省了程序员许多的任务量,这也是我们选择该软件的原因。基于Microsoft Visual C++开发的MFC界面如图5-14所示,该图显示,我们需要对板卡型号,采集通道,电压范围,扫描时间做出设置,界面分别可以显示采集到的输入值和控制器输出值曲线。图5-14液位控制系统控制界面图5-15液位标定对应图

液位系统软件设计与调试

该实验平台与计算机之间采用Advantech公司的PCL-812PG数据采集卡作为接口,由于采集卡PCL-812PG自带的例程Microsoft Visual C++大多都是基于SDK(Software Development Kit)的程序应用,对于该设备对象我们研究开发出基于Microsoft Visual C++及MFC(Mi-crosoft Foundation Class)类库编写的Win32控制台应用程序。

图5-10 液位控制系统仿真图

MFC是一个非常庞大的类库,提供了Windows API的许多功能,具有强大的程序开发功能,用该软件做界面程序操作简单,节省了程序员许多的任务量,这也是我们选择该软件的原因。C++与C相比有许多优点:

封装性,也就是说把进行数据运算的函数与数据组织在一起,这样不但使程序的结构之间的联系更加紧密,而且大大提高了内部数据的安全性。

继承性,该特性可以大大加强代码重用率和软件的可扩充功能。

多态性,这个特性可以使编程者在进行程序设计时能够更好地提高问题的抽象性,对代码的维护以及重用性有很大的帮助。

在保证采集卡正确安装,且驱动程序正常运行的情况下,其中包含有“Advantech”提供的动态连接库“ADSAPI32.DLL”我们还需要对所开发的VC++程序加入采集卡所带的静态链接库“ADSAPI32.LIB”和程序运行所需的头文件“DRIVER.H”,其中“lib”文件是经过了编译以后的二进制文件。这些需要在创建工程项目时在软件中添加,如图5-11和图5-12所示,这样便可以成功的调用采集卡本身所带的函数库了。

如果设备运转正常,则软件开始运行时,应首先打开板卡调用DRV_DeviceOpen()函数,初始化各个参数,获取设备特性函数DRV_DeviceGetFeatures,该函数中的参数lpDevFeatures为设备特性的结构指针,指向PT_DeviceFeatures结构类型的变量,返回该设备的特性。函数描述为:

DRV_DeviceGetFeatures(LONG DriverHandle, LPT_DeviceGetFeatures lpDevFeatures)。对应于应用程序中为:

图5-11 软件头文件配置图

图5-12 软件配置图(www.daowen.com)

在进行模拟输入和模拟输出操作之前还需配置指定AI通道的电压输入范围和采样通道,这是我们需要调用DRV_AIConfig函数,该函数数据结构中包含DasChan和DasGain两个参数,分别代表上述变量配置。其中,DasGain与硬件有关。程序流程图如图5-13所示。

参数配置成功板卡功能开启,计算机与系统开始通信,在模拟输入部分,需要用到DRV_AIConfig函数,此函数包含两个参数,Driver-Handle为板卡打开函数DRV_DeviceOpen返回设备句柄,并指向目标设备,而lpAIconfig为指向结构体PT_AICongfig的指针,该结构体需要动手设置,主要用于对采样通道(USHORT Das-Chan),GainCode(USHORT DasGain)的保存。该通道配置完成之后,这时采集卡调用函数DRV_AIVoltageIn,该函数表示模拟电压输入,接收0~10V的电压信号。在该函数中包含参数lpAIVoltageIn,该参数指向结构体PT_AIVolt-ageIn的指针,该结构体成员(chan, gain, Trig-Mode, voltage)四个变量,分别代表采样通道,增益代码,触发模式和返回的电压值。程序代码如下,其中m_fVol为采集到的电压值。

图5-13 程序流程图

其中触发方式为0或1,0代表内部触发,1代表外部触发。

采集卡接收系统传送过来的信号,进行运算之后,需要调用函数DRV_AOConfig(LONG DriverHandle, LPT_AOConfig lpAOConfig)对板卡进行输入配置,在设备句柄Driver-Handle指向的设备上,改变所指定AO(Analog Output)通道的输出范围默认配置(未调用本函数前,AO通道的输出范围默认参考的是用户在研华设备管理器Advantech Device Manag-er的设置数据,这个数据保存在注册表Registry中)。本函数改变的配置数据只是执行时的暂存信息,保存在注册表的配置数据并没有被改变。

经过运算将计算结果通过函数DRV_AOVoltageOut将信号输出给系统,使系统最终达到稳定。代码如下所示,该函数包含AO输出通道和浮点型数据输出值,值得注意的是,该值必须在硬件支持的范围内,否则会造成板卡运行故障。

基于Microsoft Visual C++开发的MFC界面如图5-14所示,该图显示,我们需要对板卡型号,采集通道,电压范围,扫描时间做出设置,界面分别可以显示采集到的输入值和控制器输出值曲线。

图5-14 液位控制系统控制界面

图5-15 液位标定对应图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈