郭金中,梁 全,张国健,王祥瑞
(沈阳工业大学 机械工程学院,辽宁 沈阳 110020)
随着计算机技术的发展,半实物仿真逐渐作为技术验证的主要手段,以其相较于实物仿真更高的性价比和相较于计算机虚拟仿真更高的置信度而被广泛采用[1]。国外半实物仿真技术发展较早,其中几种成熟平台都是基于PC机Windows下的分布式仿真平台,例如侧重于工程设计与测试的RT-LAB和xPC以及侧重于控制系统开发及测试方面的dSPACE和NI PXI ;国内起步较晚,但是随着技术进步和发展需要,国防科技大学开发的银河系列仿真平台也在不断更新迭代,其中银河高性能仿真平台YHSIM 已经应用于全国许多单位[2]。但是目前大部分的半实物仿真系统的价格比较高,在实时性、通用性方面还是存在很多的限制,尤其是在理工科为主的高校,实验设备的使用能够大幅度提高仿真实验学习的效率,所以通过有限的设备,在尽可能控制预算成本的前提下,让更多的学生使用设备灵活高效地完成实验,将理论知识和实际操作相互结合,自行安排设计实验进度和实验环节,成为未来一段时间教育发展的一大趋势[3]。基于此,本文以AMESim仿真软件和Windows系统为基础对构建高性价比高置信度的硬件在环仿真方法进行了研究,使得仿真过程尽可能接近实际工况,为平台后续拓展完善提供基础。
电液伺服系统是负反馈自动控制系统,又被称作跟踪系统[4],其工作原理是基于信号的偏差,即将输入和反馈信号的偏差值作为控制量反馈至系统的输入端,使得系统的偏差逐渐减小直至满足期望值[5]。在本文中,模型是以典型的电液伺服系统进行设计,以位置反馈为主要的分析点。图1为典型液压系统位置控制结构框图。
图1 典型液压系统位置控制结构框图
设Z(s)为控制输出,U(s)为控制输入,则该系统的前向通道传递函数可以写为[6]:
(1)
其中:Ka为伺服阀放大器增益;KBV为伺服阀流量增益;ωh为液压固有频率;δh为液压阻尼比;A为活塞面积。
(2)
将式(2)还原成微分方程式的形式,即:
(3)
当微分方程中不含有输入函数导数项时,可以利用相变量法去求系统的状态空间表达式[7]。根据以上的微分方程理论,选择状态变量如下:
结合微分方程可得:
则有:
(4)
(5)
将式(4)和式(5)写成向量矩阵即状态方程前向通道标准形式,则有:
(6)
半实物仿真的核心原理就是通过推导物理实体的微分方程组,在实时环境下用数值算法(龙格库塔法等)进行微分方程的求解,继而得到物理实体的实时运行数据。本文研究基于该核心理论,借助AMESim仿真软件避开了自己开发液压元件和系统微分方程组及其求解的数值算法工作,通过AMESim的二次开发功能完成下列的工作。
硬件在环半实物仿真的主要设计部件分为上位机系统和实物控制器系统,以及上位机系统和实物控制器系统之间的信息传输端口的实现,其原理是通过实时控制器的信息数据处理来实现被控对象模拟实际工况[8]。启动仿真时上位机构建的模型通过计算输出实时参数,实时参数经过信息传输端的采集转换发送给控制器进行计算处理,最终返回实时控制信号完成控制仿真。
半实物仿真平台结构框图如图2所示,上位机系统通过AMESim建立伺服系统,通过 TCP/IP通信功能和数据采集DAQ模块进行数据的交换及数模转换,将运行参数发送到控制器,通过控制器的数据解算,输出反馈信号对模型进行控制。
图2 半实物仿真平台结构框图
通过AMESim软件和Visual Studio联合仿真功能实现系统的TCP/IP通信,同时针对Windows操作系统非实时的性能特点,利用高精度定时器和多线程设计的方法对其进行改进。利用系统的API函数进行软件编程,设置循环产生等待延时,使得软件和硬件的时钟同步[9],同时利用多线程编程的方式提高仿真效率,使上位机有限的计算能力得到充分发挥,保证系统的实时性。
AMESim的libcosim库中定义了与第三方软件通过C代码进行数值交换的函数,通过在AMESim子模型中添加相关模块设置以及对Visual Studio控制台程序的编写,实现仿真解算数据通过TCP/IP网络的交换执行。
在位置控制子模型中,位置控制反馈值来自于位移传感器和给定常量的差值,通过DYNCOSIMNETWORK01动态集团提供的协同仿真服务,将反馈值通过TCP/IP通信传递给实物控制器进行解算控制,然后反馈给子模型实现通信功能,TCP模块的外部变量示意图如图3所示。
图3 通信模块外部变量示意图
在图3中,左侧的port2端口为outputs,右侧port1端口为inputs,系统输出值通过左侧端口输出给控制器,经过控制器解算控制后的数据由右侧端口反馈给系统,构成闭合仿真回路。其交换功能的C语言实现依赖于套接字连接的函数,即:
amesock_init();表示将套接字连接初始化为服务器端或客户端
amesock_exchange();表示在客户端和服务器端进行数据值交换
amesock_close();表示关闭套接字连接
对于定时器,分为软件和硬件两种实现路径,相较于硬件实现手段需要额外添加计时器以及电路和板卡等硬件,软件定时更能充分利用仿真机系统资源[10]。在Windows系统下最常见的定时函数应当属于进程阻塞类型的Sleep函数,其实现的原理是将进程阻塞来等待硬件的定时器同步,内核再将进程加入到队列继而唤醒进程[11]。但是Sleep函数的精度比较低,计时单位为毫秒,不适合对精度要求比较高的场合。
Windows95及以后版本,对于精度要求更高的定时器操作可以采用QueryPerformanceFrequency()函数以及和该函数联合使用的QueryPerformanceCounter()函数,实现微秒级别的定时器。对于函数的使用应当先利用QueryPerformanceFrequency()函数获取PC机的内部时钟频率,同时在进程的始末通过调用QueryPerformanceCounter()函数获得计时差值以及时钟频率来达到精确计时的目的。表1显示的是在仿真过程中,同一测试环境下利用Sleep函数对比QueryPerformanceFrequency()函数以及QueryPerformanceCounter()函数的部分测试结果。
表1 函数延时对比
在设计半实物仿真平台时,被解算的数据需要通过信息传输端口进行DA转换和采集,还需要经过控制系统的AD转换和处理。为提高系统的CPU资源利用率及提高仿真实验的定时器精度,同时防止基于PC测试软件与实物控制数据采集卡通信时发生阻塞现象,采用多线程设计以提高系统性能。
线程的状态一般分为挂起状态、执行状态、阻塞状态和等待状态。图4为线程的执行流程,线程从被创建开始若没有被调用或者直接被挂起,将处在非执行状态,只有在线程处在处理器片中拥有CPU资源时才能被执行。阻塞状态是指进程被锁住或者是发生错误时执行状态被停止,等待状态指线程在启动时间内或处理器片抢占失败的过程。
因为在上述两个子线程之间存在数据传输和反馈关系,所以在线程设计中需要考虑线程间通信问题。在一个进程中各个线程共享全局变量,同时防止两个线程之间相互影响,对线程进行合理的调度寻找合适的线程处理顺序来避免死锁,比如在图像变换处理的事件中进行边缘提取、图像腐蚀等耗时工作就可以采用DoTranslate()函数实现变换,添加声明实现多线程来提高工作效率。在本文设计中,采用事件CEvent类实现线程间通信,线程调用WaitForSingleObject()函数,通过判断监视Event事件的有信号和无信号两种状态来实现对事件的实时操作。
图4 线程执行流程图
针对上述电液伺服系统半实物仿真平台的设计,利用对电液伺服系统的阀控缸位置控制对其进行了验证,通过对在AMESim软件中建模仿真和利用半实物仿真平台仿真结果进行相互验证,证明该设计的有效性及可靠性。
在AMESim虚拟仿真实验中,通过给定常量K输入给系统一个信号值,通过JUN3M减法结求得该定值和位移传感器的差值,再反馈给系统输入值实现系统位置控制部分的验证;在半实物仿真实验中,给定常量、传感器的位移量信号和通过解算转换的电压信号需要由实物控制器写入和输出,所以在设计中就会涉及到对位移传感器的标定问题,实物控制器的电压范围值为0~10 V,若给定常量值为2 m,那么最终的位移数据通过DA采集时应将数值扩大5倍;当进行AD采集时按照数模采集相反的方法将电压信号值转化为位置值进行反馈,完成闭环控制。图5为在AMESim仿真软件中搭建的模型,图6为AMESim半实物仿真模型。图7为虚拟仿真和半实物仿真结果对比。
图5 AMESim虚拟仿真模型
图6 AMESim半实物仿真模型
图7 虚拟仿真和半实物仿真结果对比
由图7可以看出,在起始仿真阶段虚拟仿真实验和半实物仿真实验仿真结果相同,并且在0.02 s处出现超调,超调幅值误差在0.01 m左右,最终的位移值在0.3 s后都趋向于稳定,保持在给定值附近,其整体结果符合电压的转换控制关系,验证了半实物仿真方法的正确性。
本文基于AMESim软件和液压系统仿真技术提出并设计了电液伺服系统位置控制半实物仿真方法。 首先,在该设计中通过TCP/IP通信技术实现了上位机和实际控制器的数据通信,构建了信息接口;其次通过多语言混合编程的方式对数据采集卡进行二次开发,搭建了实物控制系统;再次基于Windows非实时操作系统,利用高精度定时器的设计提高了半实物仿真平台的实时性能,通过获取PC机时钟频率来达到延时低于1 ms的效果;最后利用WinAPI函数创建了多个线程,将仿真过程共享内存数据进行事件同步,提高了系统的仿真效率,并且通过仿真结果对比验证了本文提出的半实物仿真设计方法的正确性和可行性。