6.4.1 系统仿真与结果分析
对于上面设计好的控制算法,我们首先采用MATLAB进行结果得验证,如图6-10所示。从图中我们可以看到运用基于算子理论的鲁棒右互质分解技术所建立的液位控制器仿真结果良好,该液位系统运行稳定,无超调,具有很强的鲁棒性,验证了该方法的有效性。图中输入为流量,输出为液位,液位设定值为30mm,其中参数B=0.08,仿真系统在500s之后液位达到稳定,满足了设计要求。对于实时控制提供了良好的理论基础。
图6-10 液位控制系统仿真图
6.4.2 液位系统软件设计及调试
该实验平台与计算机之间采用Advantech公司的PCL—812PG数据采集卡作为接口,由于采集卡PCL—812PG自带的例程Microsoft Visual C++大多都是基于SDK(Software Development Kit)的程序应用,对于该设备对象我们研究开发出基于Microsoft Visual C++及MFC(Mi-crosoft Foundation Class)类库编写的Win32控制台应用程序。
MFC是一个非常庞大的类库,提供了Windows API的许多功能,具有强大的程序开发功能,用该软件做界面程序操作简单,节省了程序员许多的任务量,这也是我们选择该软件的原因。C++语言相比C语言有许多优点:
封装性,也就是说把进行数据运算的函数与数据组织在一起,这样不但使程序的结构之间的联系更加紧密,而且大大提高了内部数据的安全性;
继承性,该特性可以大大加强代码重用率和软件的可扩充功能;
多态性,这个特性可以使编程者在进行程序设计时能够更好地提高问题的抽象性,对代码的维护以及重用性有很大的帮助。
在保证采集卡正确安装,且驱动程序正常运行的情况下,其中包含有“Advantech”提供的动态链接库“ADSAPI32.DLL”我们还需要对所开发的VC++程序加入采集卡所带的静态链接库“ADSAPI32.LIB”和程序运行所需的头文件“DRIVER.H”,其中“lib”文件是经过了编译以后的二进制文件。这些需要在创建工程项目时在软件中添加,如图6-11和图6-12所示,这样便可以成功的调用采集卡本身所带的函数库了。
图6-11 软件头文件配置图
如果设备运转正常,则软件开始运行时,应首先打开板卡调用DRV_DeviceOpen()函数,初始化各个参数,获取设备特性函数DRV_DeviceGetFeatures,该函数中的参数lp-DevFeatures为设备特性的结构指针,指向PT_DeviceFeatures结构类型的变量,返回该设备的特性。函数描述为:
图6-12 软件配置图
DRV_DeviceGetFeatures(LONG DriverHandle,LPT_DeviceGetFeatureslpDevFeatures)。对应于应用程序中如下:
在进行模拟输入和模拟输出操作之前还需配置指定AI通道的电压输入范围和采样通道,这是我们需要调用DRV_AIConfig函数,该函数数据结构中包含DasChan和DasGain两个参数,分别代表上述变量配置。其中,DasGain与硬件有关。程序流程图如图6-13所示。
参数配置成功板卡功能开启,计算机与系统开始通讯,在模拟输入部分,需要用到DRV_AIConfig函数,此函数包含两个参数,DriverHandle为板卡打开函数DRV_DeviceOpen返回设备句柄,并指向目标设备,而lpAIconfig为指向结构体PT_AICongfig的指针,该结构体需要动手设置,主要用于对采样通道(USHORT DasChan),GainCode(USHORT DasGain)的保存。该通道配置完成之后,这时采集卡调用函数DRV_AIVoltageIn,该函数表示模拟电压输入,接收0~10V的电压信号。在该函数中包含参数lpAIVoltageIn,该参数指向结构体PT_AIVoltageIn的指针,该结构体成员(chan,gain,TrigMode,voltage)四个变量,分别代表采样通道,增益代码,触发模式和返回的电压值。程序代码如下,其中m_fVol为采集到的电压值。
图6-13 程序流程图(www.daowen.com)
其中触发方式为0或1,0代表内部触发,1代表外部触发。
采集卡接收系统传送过来的信号,进行运算之后,需要调用函数DRV_AOConfig(LONG DriverHandle,LPT_AOConfiglpAOConfig)对板卡进行输入配置,在设备句柄Driver-Handle指向的设备上,改变所指定AO(Analog Output)通道的输出范围默认配置(未调用本函数前,AO通道的输出范围默认参考的是用户在研华设备管理器Advantech Device Manager的设置数据,这个数据保存在注册表Registry中)。本函数改变的配置数据只是执行时的暂存信息,保存在注册表的配置数据并没有被改变。
经过运算将计算结果通过函数DRV_AOVoltageOut将信号输出给系统,使系统最终达到稳定。代码如下所示,该函数包含AO输出通道和浮点型数据输出值,值得注意的是,该值必须在硬件支持的范围内,否则会造成板卡运行故障。
基于Microsoft Visual C++开发的MFC界面如图6-14所示,该图显示,我们需要对板卡型号、采集通道、电压范围、扫描时间做出设置,界面分别可以显示采集到的输入值和控制器输出值曲线。
图6-14 液位控制系统控制界面
6.4.3 系统实验与结果分析
针对上文设计的控制器,首先运用相关进行理论结果仿真,仿真结果验证了设计的有效性,接着我们需要对该结果进行实时控制,运用基于Microsoft Visual C++的MFC做控制界面。
在该实时控制中,由于超声波液位传感器存在传感盲区,为了更好地验证该实验设计的准确性,我们将超声波液位传感器的标定进行了处理,标定值的0~150mm定义为显示值的0~500mm,对应结果如图6-15所示。
图6-15 液位标定对应图
图6-16 液位控制系统实时控制图
控制结果如图6-16所示。在该结果图形中,设定液位值为300mm,参数B=0.01,与仿真中参数略有微调,由于存在水位的波动,所以采集值具有一定的波动范围,这与超声波液位传感器有关,但是采集结果显示该控制器具有很好的控制作用,该控制器具有很强的鲁棒性。在数学建模过程和仿真过程中,我们运用流量值作为系统输入值,但是在实际控制过程中,执行机构输入和输出为电流值,所以我们需要将流量输入进行数学变换,转换为电流值,然后作用与执行机构调节阀,所以实时控制中输入部分为电流值,作用范围为4~20mA。
对于输入部分,PCL812—PG采集卡发送的为0~10V的电压值,而调节阀接收4~20mA的电流值,通过FWP—20智能电压/电流变送器将0~10V电压信号转换为4~20mA电流信号。由于物理条件本身的限制,在实时显示图形中,液位在400s之后趋于稳定,比仿真结果图6-10中的稳定时间更小。为了更好地进行观察,我们将输入结果扩大了两倍,即图形显示的输入数据范围8~40代表实际输入值4~20mA。液位值的局部放大图如图6-17所示,输入电流信号的局部放大图如图6-18所示。从仿真和实时控制我们都可以看出基于算子理论的鲁棒右互质分解方法对于该液位控制系统而设计的控制器控制效果良好,实时控制中,在大约400s时,液位达到稳定,超调量低于4%,进一步验证了设计的有效性,上面的设计对下面更深层次的研究设计奠定了坚实的理论和实践基础。
从图6-17的实时控制输入部分局部放大图中我们可以看出,在闭环系统开始运行的0~150s左右的时间内,系统存在状态饱和现象,这是因为在该控制过程中,经过控制器运算的数值大于调节阀所能承受的最大值[6~10]。由于物理条件的限制,我们必须对该系统进行输入受限,所以该系统控制过程的表达式为:
图6-17 液位控制系统输出液位值局部放大图
图6-18 液位控制系统输入部分局部放大图
在输入部分超过执行机构最大承受范围时,让其以最大值进行输出,在本次控制中,由于调节阀能承受的最大输入信号为20mA,所以umax=20mA,而能接受的最小信号为4mA,所以umin=4mA[11]。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。