历史上的今天
返回首页

历史上的今天

今天是:2025年02月18日(星期二)

正在发生

2018年02月18日 | 柴油发电机组转速控制半物理仿真

2018-02-18 来源:eefocus

  1 引言 

  电子调速器是柴油机的关键部件之一,当实际柴油机及其负载性能发生变化且与调速器设计参数不匹配时,柴油发电机组就无法正常工作,这时需要修改调速器的控制参数。另外,电子调速器在出厂前和维修后都需要进行性能试验,以设定合适的控制参数满足其调节性能。在柴油机上直接进行电子调速器的参数整定、性能测试、维修后性能恢复既不安全、又不经济。进行半物理仿真是调速器进行实际配机试验之前不可缺少的环节,其工程思路是建立柴油机发电机组全工作范围动态仿真模型,通过输入输出接口电路与电子调速器相连构成一闭环控制系统,从而完成电子调速器的性能测试的相关试验。 

  建立柴油发电机组的仿真模型是 Simulink的强项。由于半物理仿真系统需要连接特定的硬件设备,仿真程序需要定制人机界面实现参数设置等功能,这部分功能的实现对于 Simulink来讲则难以完成,而这恰恰是Visual C++(VC)的强项。VC可视化C++编程环境具有强大的硬件控制功能和灵活丰富的人机界面设计功能。但直接采用VC建立柴油发电机组的仿真模型则难度很大。 

  针对这一问题本文提供一种从Simulink仿真模型平滑过渡到Visual C++集成开发环境的方法。具体实现是在Simulink中建立柴油发电机组的仿真模型,然后通过Matlab实时工作间(RTW)将Simulink仿真模型转化成可移植的嵌入式C++代码,最后和Visual C++的项目文件进行整合构成完全独立运行的实时半物理仿真系统。 

  2 柴油发电机组模型的构建及半物理仿真系统结构 

  柴油机的建模一般有2种途径,一种是数学机理建模,一种是试验辨识建模。数学机理建模主要从柴油机各部件的原始特性和结构参数入手,根据动力学和热力学关系方程建立机理模型其建模的工作量大,计算复杂而且为模型的求解带来一定的难度。试验辨识建模是根据柴油机试验台试验数据,采用不同的数学拟合方法建立柴油机的数学模型。对于研究电子调速器参数整定以及配机试验,这里关心柴油机外部性能参数的关系,可以不考虑柴油机内部的热力过程。只要柴油发电机组仿真模型能较真实地模拟柴油机及其负载特性,则测试结果就能较为真实地反映出电子调速器的实际配机性能。 

  因此选用试验辨识建模法,应用BP神经网络建立柴油机发电机组模型。如图1所示。MTU396柴油发电机组转速控制半物理仿真系统的输人输出信号,主要有3种类型: 

  (1)脉宽调制(PWM)信号,即执行机构齿条驱动信号; 

  (2)频率信号,即模拟柴油转速脉冲信号; 

  (3)开关量信号,即对电子调速器的各种控制信号,如启动、停止、增速减速控制等。 

  本系统选用研华的PCI-1780计数器卡,他提供8个16位计数器通道8路数字量输出和8路数字量输入,可以满足上述需要。如图2所示。 

  3 半物理仿真系统的实现 

  3.1 利用RTW生成可移植的C++模型代码 

  RTW是Matlab图形建模和仿真环境Simulink的一个重要的补充功能模块,简而言之,他是一个基于Simulink的代码自动生成环境。他能直接从Simulink的模型中产生优化的,可移植的代码以加速仿真系统开发的过程和降低研发成本。 

  RTW 能把Simulink模型中的某些参数或信号设置为全局变量,模型自动生成的可执行代码在目标系统中运行时,可以方便地与Simulink模型交互,实现在线参数调整和信号通讯。利用RTW这种功能,可把模型中需要调整、监测的参数或者信号设置为全局变量。这些变量构成后面所述VC仿真程序中模块间交互的桥梁。 

  RTW支持多种目标,所以RTW自动生成C++模型代码有多种选择,对于VC而言有3种目标可以选择:通用实时(GRT)目标、通用实时Malloc(GRTM)目标、嵌入式目标。通用实时(GRT)目标采用实时代码格式,其内存的分配在编译时被静态声明。通用实时 Malloc(GRTM)目标采用实时Malloc代码格式,他与实时代码格式非常相似,主要的区别在于实时malloc代码格式对内存进行动态声明。嵌入式目标可按嵌入式代码格式生C++代码,在运行速度、内存使用量和简化等方面都进行了优化。嵌入式代码采用静态内存分配方式。本文选择嵌入式目标来自动生成嵌入式代码。 

  RTW自动生成的代码分为2部分:一部分是模型代码;另一部分是代码运行界面(run-time inteRFace)。这些代码被切分成很多源代码文件,为了管理这个庞大的项目,RTW还为其自动生成一个make文件。用VC打开make文件并编译,然后将此项目中引用的所有源文件从Matlab安装目录中复制出来,并和模型代码共同组成仿真模型代码。 

 


  3.2 模型代码和VC程序的集成 

  模型代码同VC程序整合过程比较简单,把3.1节仿真运算模块所有涉及的源文件添加到VC程序项目中,需要注意2 点:仿真模块的源文件添加到VC程序项目后默认应用预编译头文件选项,必须手工取消此项设置否则编译出错;为了需要在VC程序中调用仿真代码的接口函数需要进行全局声明。 


  3.3 VC中仿真系统进一步开发与整合 

  半物理仿真软件一般由人机界面模块、数据采集模块、仿真运算模块、数据处理模块组成。MTU396柴油发电机组转速控制半物理仿真系统原理如图3所示。下面简单介绍各模块的实现过程。 

  (1)人机界面模块的实现 

  人机界面模块构成了VC程序的主线程,主要完成变量的实时显示、参数在线调整、控制参数设置和程序的运行控制等功能,其他模块都由他来调度。本系统中涉及的实时变量有柴油机转速、齿杆位移、柴油机负载等,笔者分别设计了转速表、棒图、趋势曲线、调整滑杆、功能按钮等图元,充分利用面向对象方法的封装、继承等特点实现整个图元库,从而提高了软件系统的可修改性、可重用性和可扩展性。 

  (2)数据采集模块的实现 

  数据采集模块通过 PCI-1780设备卡同电子调速器进行数据交互,电子调速器的供油量信号以脉宽调制(PWM)的形式由PCI-1780设备卡传给仿真程序,仿真程序通过仿真计算把柴油机的转速以频率信号的形式经PCI-1780设备卡反馈给电子调速器。数据采集模块由厂家提供的设备驱动API函数实现。 

  (3)仿真运算模块的实现 

  仿真运算模块在RTW转化韵仿真模型代码基础上还要加入仿真同步控制,以满足仿真的实时性要求。实时性的关键就是I/O数据定时的准确性。众所周知 Windows不是实时操作系统而是多任务的操作系统,采用VC编制的仿真程序很难实现硬件中断,采用软件定时是比较可行的方法,因为现在的计算机速度都很快,能够保证一般硬件在回路仿真的实时性的需要。 

  VC中实现精确定时基本上有2种方法:①使用多媒体定时器。他使用单独线程调用一个特殊的回调函数优先级很高,最小定时间隔为1ms能够满足一般实时任务的定时要求。②使用高性能计数器。在Windows2000中由硬件实现高精度的计数器 (high-resolution peRFormancecounter),利用他可以获得高精度的定时间隔。由于本应用中电子调速器输出频率为80 Hz,本文选择多媒体计时器实现仿真控制,定时间隔选为2 ms。即多媒体定时器每隔2 ms就在其回调函数中调用模型代码接口函数rt_On-eStep(模型单步运算),保证整个仿真的向前推进,满足系统实时性要求。仿真运算模块完成模型实时计算是整个系统的核心。 

  (4)数据处理模块的实现 

  数据处理模块完成仿真数据的实时记录和定时保存功能。为了满足数据记录的实时性,仿真程序采用了多线程的技术,将数据定时保存功能放在独立的数据保存线程中执行。数据处理线程和主线程的之间的同步由事件信号驱动。在C++标准模板库(STL),deque容器基础上创建了CPointsCollection 类来完成数据的实时记录和定时保存。采用的策略是:CPointsCollection首先在内存中开辟2块缓冲区。第一缓冲区数据放满后,数据开始存放到第二缓冲区,然后主线程同时通知数据保存线程将第一缓冲区中的数据采用VC序列化功能保存到硬盘的文本文件中;等第二缓冲区数据放满后,数据开始存放到第一缓冲区,主线程同时通知数据保存线程将第二缓冲的数据保存到硬盘的文本文件中,这样依次循环保证数据记录的实时性。为了验证利用该方法开发的半物理仿真系统的有效性,运行该系统与R082电子调速器物理连接进行配机试验,仿真结果表明仿真系统相应符合理论分析结果。限于篇幅给出空载起动运行时的运行界面。如图4所示。 

  4 结 语 

  结合科研实例详细介绍一种基于RTW和VisualC++的半物理仿真系统快速开发方法,该方法充分利用Simulink和Visual C++各自的优势。首先利用Simulink可视化的建模方法建立系统的仿真模型,然后通过RTW将Simulink仿真模型转化成可移植的嵌入式C++ 代码,最后利用Visual C++灵活的可定制性和强大的界面功能实现完全独立运行的实时半物理仿真系统。该仿真程序在Visual C++环境下可以对仿真程序方便的进行调试a与传统设计方法相比这种方法具有费用低、效率高的特点。 


推荐阅读

史海拾趣

Chiefdom Electronic Co Ltd公司的发展小趣事

随着全球化的深入发展,Chiefdom Electronic Co Ltd意识到国际化布局对于提升竞争力的重要性。公司开始积极拓展海外市场,设立海外研发中心和销售网络,以便更好地了解当地市场需求和文化特点。通过本地化运营和定制化服务,公司成功打入多个国际市场,并获得了良好的业绩回报。这些国际化布局不仅提升了公司的整体竞争力,还为其在全球电子行业中占据了更加重要的地位。

Eutech公司的发展小趣事

在全球化的浪潮下,EUtech公司积极寻求国际合作。他们与德国的氢探新能源公司建立了长期稳定的合作关系,共同研发燃料电池系统控制技术。通过共享资源、互补优势,双方不仅提高了产品的竞争力,还推动了整个行业的技术进步。

Avel Lindberg公司的发展小趣事

EUtech Scientific Engineering公司起初以测量技术为核心,专注于为能源和电力系统提供高精度测量设备。随着技术的不断发展和市场需求的变化,公司意识到控制技术在电力系统中的重要性。于是,公司投入大量研发资源,成功将测量与控制技术相结合,开发出具有自主知识产权的控制系统,实现了从测量到控制的跨越。

Delkin Devices公司的发展小趣事

为了更好地服务全球客户,Delkin Devices积极拓展海外市场。公司在欧洲设立了办事处,以便更直接地接触欧洲市场并了解当地客户需求。此外,Delkin Devices还通过参加国际展会、建立合作伙伴关系等方式,不断拓展其在全球范围内的影响力。通过这些努力,Delkin Devices成功将产品销往全球多个国家和地区,实现了国际化布局和市场拓展。

C-MEDIA公司的发展小趣事

在音频处理和网络游戏领域取得成功后,C-MEDIA公司并未止步。它持续投入研发资源,不断推动技术创新和产品升级。公司的研发团队致力于开发更高效、更稳定的音频处理芯片,以满足市场对于高品质音频体验的需求。同时,在网络游戏领域,C-MEDIA也不断推出新的游戏内容和服务,以吸引和留住用户。

American Power Devices Inc公司的发展小趣事

在电子行业的初期,APD公司凭借其卓越的技术研发团队,成功开发出了一款高效能的电源管理芯片。这款芯片以其低能耗、高稳定性等特点迅速获得了市场的认可。随着技术的不断迭代和更新,APD持续投入研发,推出了一系列具有竞争力的产品,逐渐在电源管理领域树立了领先地位。

问答坊 | AI 解惑

十年(一)

林花谢了春红,太匆匆。 不知不觉中,我与BSS结缘已经十年。   最近经常反问自己,这10年究竟做了些什么?每次想这个问题的时候,要么一片空白,要么心乱如麻,因为我也没有想清楚自己到底做了些什么,似乎做了很多,又似乎什么也没有做 ...…

查看全部问答>

被同一个坑绊倒了两次-俺的100mWZIGBEE节点调试心得

拿到一个新的PAIC,台湾某厂的UP2202,2.4G频段专用,号称增益25db,输出功率能轻而易举的达到20dbm,恰好有个zigbee项目需要增加功率,于是毫不犹豫的上了它,嘿嘿!     按照原理图,俺画了块板子,看起来貌似该ic使用起来很“弱智” ...…

查看全部问答>

招聘网络师傅一名

要求:会DSP原理,能 经常上网!…

查看全部问答>

妨碍你成功的性格特点

知足 只要有吃有穿,腹饱体暖,就感到满足。这种人对生活没有一点欲求,怎么会创造富有与成功呢? 自满 自己的总是最好的,甚至认为自己应该成为别人效仿的标准。这种人不屑于与外界来往,他们根本不知道社会进步到什么程度,怎么可能有更 ...…

查看全部问答>

adoce3.1 对数据库的操作

m_pConn->put_Provider(L\"\\\\DiskOnChip\\\\pda\\\\myce.sdf\");         m_pConn->Open(L\"Provider=microsoft.sqlserver.oledb.ce.2.0;Data Source=\\\\DiskOnChip\\\\pda\\\\myce.sdf\",TEXT(\"\"),TEXT(\"\"),adOpenUns ...…

查看全部问答>

VxWorks下实现了RPC Server,我在WINDOWS的PC上怎么访问?

我的设备上跑的是VxWorks,上面实现了一个RPC服务器,文档里面说是遵循SUN 的RPC规范(RFC1057),现在我在Windows平台下需要访问这个RPC服务器,这个要怎么做?…

查看全部问答>

求助:ce下如何使用看门狗

三星2440的芯片,想使用看门狗, 我现在写了一个驱动,看门狗做如下初始化: //Prescaler value=254, the clock division factor=128,Enable bit of the interrupt. int nCounts = 30000; v_pWatchRegs->rWTCON &= ~0xffff; v_pWatchRegs->rWT ...…

查看全部问答>

从根本上解决PLC高速计数器的计数误差

在应用高速计数器时往往会碰到,计数器与输入计数脉冲信号的脉冲电平不匹配、旋转编码器、光栅尺数据输出是TTL电平,而PLC高速计数器却要求接受的是0 - 24v传输脉冲信号、有的编码器为了提高编码器的可靠性,提供A+、A-,B+、B-,Z+、Z- 对称反相计 ...…

查看全部问答>

香水,给我个STM8s-discovery的软件包。

在ST扯淡的网站上找了两个小时没找到。 愤怒!!! 我需要ST-link STVP STVD 再次提出强烈抗议!!!…

查看全部问答>

新人报道,多多关照

很高兴加入论坛,希望与大家共同分享,交流,进步…

查看全部问答>