半物理仿真系统在机械工程控制器中的应用
2012-07-03王洪宇刘旭宁
顾 辉,王洪宇,刘旭宁
(海军航空训练基地 航材四站,青岛 266108)
0 引言
半物理仿真(Hardware-in-LooPSimulation,HILS) 是指采用部分物理模型和部分数学模型的仿真,其中物理模型采用控制系统中的实物,系统本身的动态过程则采用数学模型。机械工程控制器半物理仿真系统则采用实时性要求高的的仿真计算机、运动模拟器、目标模拟器、控制台来代替部分系统部件或者实际被控对象,而控制系统则采用实际物体(即硬件,主要是指工程机械专用控制器)连接成为一个半物理仿真系统。半物理仿真的逼真度取决于接入的实物部件的多寡、仿真计算机的速度、精度和功能等[1]。将半物理仿真系统引入工程机械控制器的研制过程,不仅能够缩短产品的开发周期,降低开发成本,而且能使产品研发具有良好的可控性、重复性和安全性。
1 工程机械控制器半物理仿真体系
1.1 系统的组成与功能
工程机械控制器半物理仿真系统是集计算机技术、数学建模技术及数据采集技术于一体的综合系统。通过计算机控制平台,输入参试设备的控制参数,调用数学模型进行仿真,实现对理论设计的验证。工程机械控制器半物理仿真系统由以下三部分组成[2],如图1所示。
1)仿真设备:如仿真pc机、控制台等;
2)各种接口设备:信号转换器,I/O接口设备;
3)参试设备:工程机械专用控制器实物。
图1 工程机械控制器半物理仿真系统的组成图
1.2 仿真系统设计
为了验证系统方案的可行性、正确性以及测试控制器的各项性能,建立一套闭环的半物理仿真系统。如图2所示,在仿真计算机中调用已建立的数学模型的DLL,通过信号转换器、采用CAN布线方式将数据采集与数据输出等硬件设备与工程机械控制器进行连接,组成易于检测、符合工程实际需要的闭环仿真环境。在实验和检测过程中,各种信号如数字信号、模拟信号、脉冲信号是用数据采集卡经信号转换器转换得到的。
图2 工程机械控制器半物理仿真系统
具体来说,就是用半物理仿真系统代替部分工程机械硬件与工程机械实物部件最大限度的模拟工程机械的实际工作情况。在设计方案中,当控制器硬件上电与仿真平台启动后控制信号由工程机械控制器发出,经由信号转换器转换之后,再通过USB传送给仿真计算机,在软件集成环境下运行被控对象数学模型的DLL,输出测试信息,该信号经过经信号转换器转换后,再传送给控制器 (即硬件实物),返回的测试信号在控制器中完成算法后再次发出控制信号,控制信号经由信号转换器转换后经USB再次传送给仿真计算机,输入DLL控制参数在软件集成环境下再次调用被控对象数学模型的DLL,这样重复多次操作就形成了工程实际需要的一个半物理仿真的闭环体系。上述工程机械控制器半物理仿真体系的流程图如图3所示。
图3 工程机械控制器半物理仿真系统信号传递流程图
2 工程机械控制器半物理仿真软件环境的设计
工程机械控制器半物理仿真环境中被控对象的数学模型可以用VB、VC++、VC#等软件平台来开发。将被控对象的数学模型创建成.dll文件可以节省开发时间,提高数学模型的使用率,工程机械控制器半物理仿真环境中被控对象的数学模型采用面向对象程序设计方法。在.NET框架下使用VC#软件创建具有Windows风格的人机交互式图形仿真界面。创建的仿真平台能够用被控对象的数学模型模拟所需实物部件并能实现软硬件交互的功能,即达到了仿真的目的。实现在VC#软件环境下.dll的调用、语音控制、参数设定、操作提示、仿真设置、数据显示等功能。其中参数设定设定为工程机械控制器系统相关控制参数、数学模型DLL入口参数、状态参数的一个模块;仿真菜单项设置有“定时周期”、“定时器选择”两个子项。为使仿真效果达到要求,必须使定时器的精度达到要求;操作提示是针对硬件设备与半物理仿真环境进行通讯的一个模块,它有将接收到的数据发送至工程机械控制器系统的数学模型,将数学模型DLL的运算结果传输给USB,并同时在数据显示区进行显示等功能。
3 被控对象数学模型的调用
3.1 开发语言
设计人员可以根据自己所学的计算机语言来建立数学模型,例如Fortran、C#、C++、C语言等。机械工程控制器系统中的数学模型将采用C#与Fortran语言相配合来建立。
C#在带来对应用程序的快速开发能力的同时,并没有牺牲C与C++程序员所关心的各种特性,它继承了C和C++的优点。同时它具有简洁的语法,精心地面向对象设计方式,完整的安全性与错误处理能力,具有灵活性和兼容性等特点。
使用C#和Fortran混合语言编程,可以用Fortran编写所有的计算工作,利用C#实现友好的用户界面。但在程序编码过程中,必须以C#编译,用C#编的主程序来调用Fortran程序。混合编程的关键就是将Fortran计算程序编译成动态链接库,而后在C#下成功调用此动态链接库。
3.2 动态连接库DLL
动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源,它允许程序共享执行特殊任务所必需的函数和其他资源。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数[3,4]。通过使用 DLL,有助于促进代码的模块化、代码重用、内存的有效使用和减少所占用的磁盘空间[5]。
在进行机械工程控制器半物理仿真时,进程或线程会将它们自身附加到 DLL 或者将它们自身从 DLL 分离,此时将调用入口点函数。所以在创建动态链接库时,应指定DLL入口点函数。下面的代码是一个 DLL 入口点函数:
相关动态连接库建成后,信号转换器对传过来的控制信号转换后,传输到仿真计算机上,然后调用被控对象数学模型的DLL,调用完成后仿真计算机返回状态信号,在通过信号转换器后,最后传送到控制器。图4为被控对象数学模型的DLL调用的过程流程图。
图4 DLL调用的过程流程图
3.3 动态链接库的使用方法
用不同语言编写的DLL调用格式是不同的,通用的有隐式链接和静态加载两种方法。隐式链接会把DLL中所有标志为_declspec(dllexport)的函数都加载,如果有多个DLL加载时,可能会影响到程序执行的效率,这种加载方法简单,但有缺陷,不推荐使用。而用动态加载DLL的方式则可以根据需要去加载用到的函数。前者确定于编译链接阶段后者决定与运行阶段。在一种语言环境中调用DLL,必须遵守函数名一致、参数名一致、参数类型匹配、函数类型匹配以及参数传递等规则[6]。
4 结束语
仿真是一种人为的虚拟的试验手段,可以比较真实地描述系统的运行、演变及其发展过程。
在研发设计阶段,样机的研制往往成本高且落后于控制器的开发,造成两者研发的不同步,使得整个项目研发周期延长。针对这一问题,为了能在工程机械控制器的设计过程中,对工程机械控制器的各项性能进行测试,以缩短工程机械控制器的开发周期,文中主要论证了工程机械控制器半物理仿真体系的建立过程。为以后仿真体系的设计与实现打下了坚实的理论基础。
[l] 齐鳗鹏.隆武强.陈雷.硬件在环仿真在汽车控制系统开发中的应用及关键技术[J].内燃机,2006.10(5):24-27.
[2] 刘时鹏.MATLAB环境下直线单级倒立摆系统实时控制实验的研究与设计[D].重庆大学,2004.5.
[3] 苟建兵,倪维斗.基于DLL的混合语言编程[J].软件世界—开发与应用,1996.9:12-15.
[4] 文欣秀,米西峰,赫枫龄.基于动态链接库实现软件界面组件化方法研究[J].计算机应用与软件,2007.7,24(7):18-20.
[5] 贾振华,何丽娟.用户动态链接库的创建与应用[J].华北航天工业学院学报,2002.10,12(4):14-16.
[6] 步山岳.动态链接库DLL[J].微型电脑应用—学习园地,2002,18(1):60-62.