嵌入式仿真

2024-11-23

嵌入式仿真(精选6篇)

嵌入式仿真 篇1

0 引言

作为航天嵌入式软件第三方测评机构,由于软件测评任务时间紧、型号复杂、开发语言种类多等限制,开发一套独立的仿真测试平台需要花费较多的人力、时间、经费。很多情况下,软件的动态测试借助于设计师平台完成。这样,对于第三方测评机构而言,可能会造成测试的不充分、不完全等问题,特别是一些失效性测试、强度测试等无法在设计师平台完成。因此,开发一套具有较强兼容性、通用性的,针对某一类型软件的仿真测试平台,是迫切需要、且具有重要意义的事情。

1 仿真测试平台技术

由于嵌入式系统自身的特点,如实时性,内存不丰富,I/O通道少,开发工具昂贵,并且与硬件紧密相关,CPU种类繁多,其缺陷不像PC软件的缺陷容易修补等等。对嵌入式软件测试与一般软件的测试策略有很大的不同,可以说对嵌入式软件进行测试比对普通软件测试来说要困难。

目前,针对大型系统的软件测试平台多使用于国防、航空航天、汽车工业等系统中。软件测试平台的发展时间并不长,主要集中在军事应用上。美国、欧盟成员国在航空航天、国防上的应用相对来说已经比较成熟,已形成自己完整的一套系统。中国在这方面的发展还不足,尤其是实时软件的测试手段还不能很好地满足可靠性要求。随着国家对军用软件的质量要求越来越严格,开发实时软件的仿真测试平台,具有非常重要的意义。

仿真测试平台与人们平时理解的仿真系统有一定的区别,从结构水平和行为水平两方面考虑,两者的行为等价特性是一致的。但在结合被测对象确定仿真测试平台设计方案时,仿真测试平台注重对行为功能的仿真,对内部结构的相似要求不高,它提供改变参数和激励的能力,提供强大的错误处理能力。

2 平台环境

目前有四种常见的测试嵌入式软件的平台环境:全实物仿真测试环境、全数字仿真测试环境、半实物开环测试环境、半实物闭环测试环境。

(1)全实物仿真测试环境

在全实物仿真运行环境下对被测的嵌入式软件进行测试被称为全实物仿真测试。在这种测试环境中被测软件处于完全真实的运行环境中,直接将目标机(包括嵌入式软件)和其外围设备建立真实的连接,形成闭环进行测试。

全实物仿真测试环境是最逼近真实环境的一种运行环境,即是对整个嵌入式系统进行考察验证的测试。在该运行环境下,是整个嵌入式应用系统进行运行,包括若干研制完成的产品和设备模拟器。全实物仿真测试环境与真实系统有一致的映射关系,如相同的接口,相同的I/O传输格式等。

该测试环境,软件接口测试、实时性测试较真实,但是可控性最弱,不易操作。

(2)全数字仿真环境

嵌入式软件与支持其运行的硬件有着很强的耦合性,而硬件测试环境与软件测试环境相比灵活性差,在故障的产生和过程的记录方面都很困难,全数字仿真测试技术是综合解决嵌入式软件测试中由于嵌入式环境所带来的测试困难的一种方案。

通常全数字仿真测试是在宿主机上进行,如图1所示,可总称为基于宿主机的嵌入式软件测试。基于宿主机的测试是指完全利用宿主机平台上丰富的资源和工具来对嵌入式软件进行测试,不需要依赖目标系统的支持。基于宿主机的测试极大地提高了被测软件执行的可视性和可控性,因此测试过程中能以较少代价、较高的效率发现和定位软件设计中的错误。另外,基于宿主机的测试在完全脱离目标平台的情况下完成对嵌入式软件的测试工作,可以尽早发现软件设计中的错误,避免了在软件集成时才发现和定位问题,从而减少了软件的测试成本、降低了开发风险。

全数字仿真易于快速构建软件仿真测试环境,且不受硬件和外部设备的限制,因此在嵌入式软件开发的早期是很受欢迎的。全数字仿真测试系统一般由一系列工具组成的集合体,包括CPU模拟器、路径记录覆盖率统计、调试、虚拟硬件环境管理、集成界面、测试用例输入接口函数、仿真模型库、虚拟芯片接口函数、虚拟芯片库等功能。即目标机环境、外围仿真环境为全数字型,是一个完整的调试、测试工具,又是一个开发软件仿真测试环境的平台。它提供了被测软件的模拟运行环境,从而可以在宿主机上对被测软件进行全面而灵活的测试。

它通过提供一系列的扩展开发接口(API),允许用户向环境中添加各种虚拟芯片,完成用户应用程序与全数字仿真环境间的通讯、允许用户对全数字仿真环境的执行过程进行控制。全数字仿真环境和虚拟芯片一起完成对嵌入式计算机软件或其他被测的模拟软件外围环境的模拟。

全数字仿真环境应用在软件测试中的最大优点是它的成本低、开发周期短、有效性高、测试可重复。但是它在接口、实时性、数据真实性等方面较弱,部分测试尤其是性能测试无法有效地实施。

(3)半实物开环测试环境

半实物开环测试环境是一种开环的嵌入式软件测试平台。在半实物开环测试中,采用了真实的目标机和外部设备接口等效器,使软件运行有基本完整的硬件环境,但数据的产生仍靠仿真、模拟等手段完成。

半实物开环测试平台由于程序是在真实的目标机中运行,软件运行的硬件环境是真实的,但是由于通过硬件进行数据注入,对边界及特定情况不易考察,白盒测试较困难。

(4)闭环半实物仿真测试环境

在半实物开环测试台基础上加入了数字仿真计算部分形成了闭环环境,测试真实性进一步提高。整个运行环境和真实环境有一个本质的靠近。动态闭环测试主要验证系统的功能和性能。验证各个子系统功能的正确性,系统各个控制回路在稳定状态和边界状态的控制品质,以及系统在外界干扰作用下的稳定性。

闭环半实物仿真测试平台,可以完整的测试软件执行需求功能的完整过程,同时闭环环境使得软件计算结果更真实。但是,由于仿真运行和目标机上应用软件计算需要很好的匹配,测试工具在环境中较难处理,在控制运行、收集信息、注入数据等方面受到一定的局限。

3 嵌入式软件仿真测试平台设计

基于对上述四种仿真测试环境的分析,半实物开环测试环境的通用性较强,因此基于半实物开环测试环境设计嵌入式软件仿真测试系统,简称EASTsys (Embedded Applications Simulation Testing System)。该系统是为测试嵌入式系统而设计的外部激励和测试系统。EASTsys系统通过总线和多种外部I/O向被测系统产生外部激励,驱动目标机运行。EASTsys采用了通用和高可靠性的技术,并结合标准接口进行设计,可以提高嵌入式软件仿真测试系统的通用性、可移植性和保证了平台具有一定的扩展性。EASTsys系统结构如图2所示。

EASTsys系统的接口主要由两类接口,一类为现场总线接口,另一类为系统的载体提供的各类电信号接口。EASTsys系统的设计是采用的现场总线一般为CAN总线或1553B总线,与被测设备接口一致。由于被测设备中嵌入式软件较多,各嵌入式软件载体的电信号接口各不相同,在对外接口设计中需要兼顾各软件。根据各嵌入式软件载体的实际情况,嵌入式软件仿真测试系统的对外接口可进行配置。

3.1 硬件构成

嵌入式软件仿真测试系统的结构由7部分组成,分别为实时调度模块、软件测评控制终端、总线仿真前端、总线监测分析前端、外部信号接口设备、CAN总线电缆、网络支撑设备。

实时调度模块是实时在线测评平台的中心,汇总终端、前端和其它设备的数据信息,进行归档,并向有关设备进行分发。

总线仿真前端和总线监测分析前端均采用基于PXI、PCI总线或其它总线的高可靠性工控机,配置PXI、PCI或其它总线控制器和CAN、1553仿真卡。

外部信号接口设备采用的平台与总线仿真前端相同,采用PXI、PCI或其它总线机箱,并配置PXI、PCI或其它总线系统控制器。根据目前的软件测评对象,外部信号接口设备需要配置的板卡类型有:数字量I/O卡、模拟量I/O卡、定时器、各种串口等。

3.2 软件设计

嵌入式软件仿真测试系统的软件由以下几部分组成,分别为实时调度软件、软件测评控制软件、总线仿真软件和总线监测分析软件、外部信号接口设备控制软件和测试结果分析软件。上述软件采用统一的软件网络接口要求,便于功能的扩展和软件的开发调试。

(1)实时调度软件

通过快速以太网,从前端和外部接口设备接收数据,保存入数据库,同时送软件测评控制终端。实时工作状态下,接收前端和外部接口设备形成的各种数据包,处理后保存入后台数据库,并将上述数据包转发至软件测评控制终端。使用标准的TCP/IP协议与其它计算机通信。

(2)软件测评控制软件

此软件在软件测评控制终端上运行,操作系统为Windows 2000/XP。实时接受实时调度平台传来的各类前端和外部接口设备数据。接收总线监测分析前端发来的总线数据,并分类处理和显示。

(3)总线仿真和总线检测分析软件

此软件运行在总线仿真前端上,操作系统为Windows 2000。按照CAN总线应用层协议的要求,实现对总线上各智能终端的模拟。

(4)外部信号接口设备控制软件

该软件运行在外部信号接口设备上,操作系统为Windows 2000/XP。根据测评对象的不同,对外部信号接口设备进行不同的设置,以完成模拟被测软件外部接口的功能。

(5)测试结果分析软件

该软件在软件测评控制终端上运行,操作系统为Windows 2000/XP。遥控、遥测指令的管理、记录、回放和统计分析。

4 结束语

本文主要介绍了目前通常的嵌入式环境,并进行了比较分析。在此基础上,决定开发EAST系统,该嵌入式软件仿真测试系统的设计充分考虑了现行软件测试工具在软件测试工作中的使用,并结合嵌入式软件测试的一般方式,从实际的测试工作的要求出发;在提高整个系统的通用性和可扩展性同时,保证软件测评平台的实时性和可靠性,可以满足客户对星载软件和其他嵌入式软件测评的需要。

摘要:为实现星务计算机嵌入式软件动态测试,搭建一个半物理的仿真测试平台。分析现有的几种仿真测试平台构建技术,选用其中较合适的一种作为开发基础。对平台中所用到的硬件、软件进行分析,实现平台的可移植性、通用性特性,为该类型的嵌入式软件提供测试环境。

关键词:星务计算机,嵌入式软件,仿真测试平台

参考文献

[1]谈琳,罗永红.实时软件的仿真测试平台的研究[J].计算机仿真,2005,22(1):248.

[2]蔡建平.嵌入式软件测试实用技术[M].清华大学出版社.

嵌入式仿真 篇2

吊舱式电力推进系统设计时可运用仿真系统来快速集成, 以降低测试复杂设备和结构的费用和时间。同时它可以优化设计, 使电力系统的运行效率更高, 维护费用更少。它还可以用来改进设计, 使电力系统设备的重量、体积、布局更合理。运用仿真系统可预知设计好的电力推进系统的静态和动态性能 (从原动机到推进器) , 并可以调节参数来优化系统的性能。在电力推进系统故障的状态下, 通过仿真系统可进行故障诊断并进行容错控制, 以保证电力推进系统的可靠性。

目前, 吊舱式电力推进仿真是采用工控计算机来完成的, 而工控计算机作为仿真计算机的处理效率较低, 应用程序受到多任务非实时操作系统的限制, 因此应用系统实时性较差, 电力推进器操纵效果和逼真度受到限制。如要提高实时性则必须简化仿真数学模型, 这就降低了数学运算的精确度, 造成物理仿真设备控制能力的下降。吊舱式电力推进仿真系统的精确度和实时性无法两全, 很大程度上影响了仿真的深入研究。

本文旨在通过技术提升采用更加高性能的吊舱式电力推进仿真系统 (基于ARM+DSP的双核嵌入式仿真系统) , 达到提高电力推进仿真的精确度和实时性, 以及对物理仿真设备控制能力的目的。

1 建立吊舱式电力推进系统的数学模型

基于MATLAB/Simulink建立吊舱式电力推进系统的数学模型, 整个吊舱式电力推进系统数学模型的建立分为三大块:推进电机时序数学模型、船-机-桨数学模型 (包含两个子模块:系泊状态模块、自由航行模块) 、pod回转数学模型。

推进电机时序模型:其主要功能是对车钟发出的推进电机转速信号进行加速速率限制, 以线性恒加速度规律进行加速速率限制, 从STOP加速至FULL;以线性恒加速度规律进行减速速率限制, 从FULL减速至STOP。使电力推进仿真系统的加减速、反转等动态过程符合实船情况。

船-机-桨数学模型:根据船舶航行状态进入相应的子模块。以推进电机机械特性和螺旋桨特性为依据, 建立船-机-桨数学模型, 仿真推进电机转矩、螺旋桨负载转矩、推进系统转速、推进电机功率、螺旋桨推力、船舶阻力和船舶航速的动态特性。

POD回转数学模型:POD液压回转机构数学模型的主要功能仿真液压回转机构的动态响应和静态特性。

2 将数学模型转化为C代码并予以移植

利用MATLAB软件中的RTW (Real-Time Workshop, 实时工作间) 工具把基于MATLAB/Simulink建立的吊舱式电力推进系统的数学模型转化成针对GRT (Generic Real-Time Target, 一般实时目标) 目标的C代码, 即C6000代码。

但是, 问题在于这个C代码并不完全适合本文所使用的DSP5000系列的硬件平台, 故不能直接移植。因此还需要将转换后的C代码进行修改和编译, 本文是利用CCStudio编辑器将通过RTW转化而来的C6000代码转换成为可以应用在DSP5000系列的C5000代码, 然后再将该仿真程序移植到该ARM+DSP嵌入式平台的DSP侧。模型目标代码的生成与移植的整个流程如图1所示。

3 吊舱式电力推进系统仿真应用程序在嵌入式仿真平台上的实现

本文采用ARM+DSP的双核嵌入式实时仿真系统, 充分发挥两种处理器的优势, 弥补它们的不足之处, 以获得更加高的性能。其中, ARM作为主处理器, 负责任务管理、输入输出接口, 对外部设备的控制, 运行嵌入式操作系统;而DSP作为从处理器, 仅仅负责快速的数据运算处理。两个处理器核之间通过共用一部分存储器或使用通讯口进行交互。嵌入式仿真平台的软件包括实时嵌入式操作系统和实时仿真应用程序。

操作系统是控制和管理计算机系统的软硬件资源, 合理地组织计算机工作流程及方便用户使用的程序和数据的集合。

实时仿真应用程序主要包括两个部分:ARM侧的任务程序和DSP侧的应用程序。其中, ARM侧的任务程序为整个仿真的控制程序, 主要包括起动仿真、暂停仿真、停止仿真这些状态的控制, 负责给仿真模型传递输入量, 获得仿真模型的输出量以及与上位机进行通信。DSP侧的应用程序主要是实时仿真模型的程序, 即吊舱式电力推进仿真系统的应用程序, 该模型从ARM侧得到输入量, 经过解算, 得出模型的输出量并将其传回ARM侧。仿真应用程序的总体结构见图2。

吊舱式电力推进仿真程序是放在DSP侧运行的。DSP侧的程序主要是由初始化程序及主体程序组成的, 是一个典型的前后台系统。主体程序是无限循环的, 不断查询来自ARM侧的信息, 并做出相应处理。ARM中的输入输出任务将输入量放入API中的约定位置, 输入缓冲队列保存来自ARM侧的输入值, 输出缓冲队列保存DSP实时计算出的模型输出值。在模型的运行态中, 使能定时器周期中断, 每个中断到来后, 触发模型程序从输入缓冲队列中读取输入值, 然后调用实时仿真对象的数学模型函数, 计算出吊舱式电力推进系统仿真模型在此刻的输出值, 并将其放入输出缓冲队列, 再向ARM侧发出中断, 通知ARM读取模型运算结果。

4 结论

本文采用ARM+DSP双核嵌入式仿真平台建立电力推进模型, 最后分别以MATLAB平台、CCS平台以及双核实时仿真平台来进行仿真, 替代了现有的工控计算机作为仿真系统, 能够提高仿真精度、实时性、以及对物理仿真设备控制能力, 比较完美的构成一个半实物在环的仿真系统。在仿真领域和工业控制领域采用这种高效的解决方案可以达到精确的数学或物理仿真, 实时有效的控制算法的实现, 易于操作的工作平台, 是非常有实用价值和实际意义的。

摘要:吊舱式电力推进仿真系统中, 一般采用工控PC机作为仿真计算机, 但是工控PC机在提高实时性和精确度方面受到很大约束。因此, 本文采用了更加高性能的吊舱式电力推进仿真平台 (即AR M+5000系列的DSP嵌入式仿真平台) , 并探讨了吊舱式电力推进器在这种高性能的仿真平台上的应用。

关键词:吊舱式电力推进,嵌入式仿真平台,ARM+DSP

参考文献

[1]魏忠, 蔡勇, 雷红卫.嵌入式系统开发详解.北京:电子工业出版社, 2003.

[2]Friedrich Mcwis.The Efficiency of POD Propulsion.Shipvuilding, 2002.

[3]D Webster.A submarine static power converter the best programmer.TransIME, 1995.

[4]徐绍佐.船舶综合全电力推进系统.柴油机, 2003.

[5]杨勇兵.交流变频电力推进系统仿真建模.柴油机, 2003.

[6]Using MATLAB (Version 6) .The MathWorks Inc, 2002.

[7]高海波, 高孝洪, 陈辉, 林治国.吊舱式电力推进装置的发展及应用.武汉理工大学学报:交通科学与工程版, 2006.

嵌入式仿真 篇3

计算机监控系统是以监测控制计算机为主体, 加上检测装置、执行机构与被监测控制的对象共同构成的整体。在这个系统中, 计算机直接参与被监控对象的检测、监督和控制[1]。检测主要是通过传感器和相应的输入模块来取得被监控对象的状态数据, 监督主要是对状态数据进行分析后给操作员提供手动操作的参考, 控制则是手动或按照一定的策略自动地对被监控对象执行相应的操作。

计算机监控系统广泛应用于众多领域, 对计算机监控技术的学习和实践, 需要相应的硬件设备。一个典型的计算机监控系统的硬件结构如图1所示, 各模块之间通过RS-232接口进行通信, 输入模块一般与传感器相连, 将物理信号或电信号转换为数字量, 主要分为开关量输入模块与模拟量输入模块;输出模块主要根据输入模块采集到的数据, 按照一定的逻辑进行输出控制。

文献[1]已经实现了数字I/O模块的仿真, 制订了仿真模块的通信协议。而所谓的嵌入式模块 (受控机) , 一般使用C语言进行程序设计, 用来采集输入模块的数据, 向输出模块发送控制数据, 以及跟主控机进行通信。如何在计算机房搭建具有I/O模块及嵌入式模块的实验平台, 而尽量不或少增加实验设备的投入。本文设计了基于C语言的bioscom函数的串行通信系列函数, 可以零成本地在计算机房搭建完整的实战型仿真开发平台。

2 bioscom I/O通信函数及相关定义

函数用法:int bioscom (int cmd, char byte, int port) ;

bioscom在由port指定的I/O端口上执行各种RS-232通信, port值为0表示COM1、1表示COM2等。当cmd为0时, byte用来设置通信参数, 如波特率、数据位、停止位等;当cmd为1时, byte表示从port端口发送的一个字节;当cmd为2时, 如果不发生错误, 返回值的低位为接收的字节, 如果发生了错误, 则至少有一高位 (8位以上) 被置位;当cmd为3时, 返回通信端口的当前状态, 此状态数据为16位, 其中, 第8位表示“数据就绪”[2]。

为了顺利地进行RS-232数据的传输, 需要设计初始化串口函数InstallCom, 从串口发送数据函数ToCom, 判断串口是否收到数据函数IsCom以及从串口接收数据函数ReadCom等, 这些函数的定义都建立在bioscom之上, 而相关的头文件定义如下:

3 通信函数的设计

3.1 串口初始化函数InstallCom

串口初始化函数通过输入的串口参数, 求得bComByte的值, 即参数设置字节, 进行串口的初始化, 其源代码如下:

如, InstallCom (COM1, 9600, 8, 0, 1) 就是将COM1初始化为波特率9600, 数据位8, 无校验, 停止位1, 如果成功, 返回SUCCESS, 如果失败, 返回ERROR, 通过3.2节的CheckResult得到返回值。

3.2 串口错误检查函数CheckResult

CheckResult函数用来检查是否发生串口错误, 如果发生错误, 则返回ERROR, 无错误则返回SUCCESS, 其源代码如下:

3.3 串口数据发送函数ToCom

ToCom函数从特定的串口发送一个字节, 如ToCom (COM1, 0x3d) 表示从COM1发送字节0x3d, 如果正确则返回SUCCESS, 发生错误则返回ERROR, 其源代码如下:

3.4 判断串口是否收到数据函数IsCom

IsCom函数判断给定串口有无数据, 如IsCom (COM1) , 如果有数据就返回QueueIsNotEmpty, 如果无数据就返回QueueIsEmpty, 其源代码如下:

3.5 从串口读取数据函数ReadCom

ReadCom函数从给定串口读取一个字节的数据, 如ReadCom (COM1) , 其源代码如下:

该函数与IsCom函数配套使用, 即IsCom返回QueueIsNotEmpty时, 就使用ReadCom读取该字节。

3.6 通用数据发送函数SendData

以上函数可以方便地初始化串行接口, 进行单字节的发送和接收。但是, 在实际的计算机监控系统中, 数据是以若干字节组成的协议为单位进行收发的, 因而, 设计通用和可靠的串口通信协议的发送与接收函数, 可以大大节省系统开发时间, 这也是计算机监控系统中的关键技术。本文设计了一个通用串口数据发送函数SendData, 可以从指定的串口nPort发送字节数组ComData, 其中, 下标为0的字节表示该字节数组的长度, 其他为待发送的字节, 其源代码如下:

SendData函数首先取得字节数组的长度, 然后, 在for循环中调用ToCom函数, 逐个发送字节。

3.7 通用数据接收函数ReadDataDelay

在串行通信中, 数据的传输是不连续的, 因而, 在处理数据接收时, 应该将不连续的数据进行叠加, 形成一个完整的数据包。本文设计的ReadDataDelay函数实现这一功能, 用来从指定的串口nPort接收数据, 保存在字节数组bData中, 其中, 下标为0的字节表示该字节数组的长度, 其它为有效字节。nDelayMs是需要等待的节拍数, 即在nDelayMs个节拍之内收到的数据, 认为是一批数据, 依次进行叠加 (否则, 认为是下一批数据) , 该参数可以根据机器时钟周期的大小进行调整。该函数的源代码如下:

4 通信函数的应用

通用的数据发送函数SendData与数据接收函数ReadDataDelay实现了简捷的数据传输任务, 屏蔽了数据传输的繁琐的细节问题。在嵌入式模块中实现串行通信, 首先通过InstallCom函数初始化串行接口, 然后, 通过SendData函数发送一批数据, 等待数据到达。IsCom用于测试是否有数据, 典型的关键实例代码如下:

以上代码从COM1发送字符串“OK!”, 然后, 等待接收数据, 将结果存入输入缓冲区BufferRec中。文献[1]中的400万元的高山无人站计算机监控系统中的嵌入式受控机, 就是利用以上技术实现的。

5 结论

计算机监控系统广泛应用于众多领域。本文通过对文献[3]中嵌入式模块7188的分析, 设计了基本的串行通信函数, 并在此基础之上, 实现了通用的数据发送与接收函数, 加快了计算机监控系统受控机程序的开发过程。

一般来说, 学习计算机监控技术需要相应的硬件设备。本文的研究成果可以用于受控机软件的开发, 用PC机来替代嵌入式模块的受控机功能, 与文献[1]中的仿真数字I/O模块相配合, 可以在没有硬件设备的情况下, 在计算机房零成本搭建计算机监控的完整的实战型仿真开发平台。

参考文献

[1]马玉春.计算机监控技术与系统开发[M].北京:清华大学出版社, 2007.

[2]Borland公司著, 叶新恩编译.Turbo C (2.0版) 使用和参考手册[M].上海科学普及出版社, 1991.

嵌入式仿真 篇4

目前数控加工仿真技术大多停留在基于PC式平台的商业化软件,例如:VERICUT、MasterCAM等。少数国外高端数车床加工系统已具备仿真功能。在中低端数控领域,加工系统计算能力有限[1],这样导致加工系统不具备仿真功能,或是只能进行简单的二维仿真,因此研究开发集成到实际加工系统中的3D仿真模块对节约成本和提高生产效率具有重大意义。面向中低端数控车床,许翀等提出了基于Open GL-ES和Cortex-A8的嵌入式数控仿真系统方案,但建模算法较为复杂,影响加工仿真速度[2,3]。

数控加工仿真需要解决的主要技术问题是:毛坯材料模型的建立、NC代码的解释译码和3D动态加工仿真等。国内外学者根据数控车床加工仿真的需求,提出了相应的仿真方法。Yuksek K等人提出基于格栅voxel实体法对毛坯进行建模[4,5]。该方法虽数据结构简单,内存占用率低,但要进行复杂的布尔差运算,降低了系统运算速度。张天其等人为满足动态仿真的需求,采用三角网格离散法对毛坯进行建模[6]。该方法建立了以毛坯薄片编号以及毛坯薄片外圆直径为参数的数据结构,能够精确表示复杂毛坯表面,但是大量复杂三角函数的计算,降低系统运行速度。NC代码解释译码是连接毛坯建模和动态仿真的重要桥梁,许爱芬等提出了一种基于μC/OS-Ⅱ实时操作系统数控程序译码方案[7,8]。该方案对译码和轨迹插补、以及译码和出错报警之间的任务调度机制做了详细的分析。洪海涛等人提出模块化的数控代码解释器结构模型[9],利用EBNF来描述数控代码规则,采用自顶向下的方法进行词法分析。该方法大大提升了数控系统的效率和功能。三维动态加工仿真主要集中在插补算法的处理上,针对现有插补算法计算复杂的问题,刘宜等人结合TDM法和DDA法,提出一种空间直线插补方法[10]。该方法消除了零头距离,实现进给速度平滑,加工质量得到大大改善。刘进钱等人基于圆参数方程,以步进角为参数提出一种数据采样圆弧插补算法[11]。该算法简单,精度高。范希营等人构造偏差函数,建立差值比较法的二次数学模型以进行圆弧插补计算[12]。此算法明显减小插补次数,提高进给速度和插补精度。

为满足数控加工仿真对精度和速度的要求,通过详细分析现有数控加工仿真的方案,凭借Cortex-A8和Android嵌入式数控平台强大的计算能力,本文设计了一种基于嵌入式数控系统3D加工仿真模块。本模块基于三角网格离散法,采用顶点平移算法计算顶点坐标进行建模,并且在相邻两次采样之间再做一次插补运算以对扩展DDA圆弧插补算法进行改进及优化。该方案既加快建模速度,又提高仿真精度。

1 仿真模块总体结构

数控加工仿真目的在于利用计算机图形的工作原理,动态模拟整个加工过程,从而检验NC代码的正确性。数控加工仿真一般采用3D仿真技术,NC代码经过词语法检查、解释译码得到刀具驱动信息。并在刀具驱动信息的作用下,刀具扫描体对被加工零件表面进行材料切除。直到所有NC代码执行完,仿真结束。

根据上述描述,本文数控加工仿真系统总体结构如图1所示,包括以下几个主要功能模块:

(1)毛坯建模

采用三角网格离散法,在满足离散精度的条件下,计算整个毛坯表面离散点的坐标信息,利用这些信息绘制出毛坯棒料三角网格模型。

(2)NC数控代码解释译码

读取NC代码文本文件,进行词法和语法分析,提取驱动刀具运动的信息以及相关辅助功能信息进行存储。

(3)车削加工过程仿真

读取存储的驱动信息,对其中的数据点进行直线插补和圆弧插补计算,使得数据点密集化,再用3D动画技术来实现动态加工中零件材料切除的过程。

2 数控车床加工仿真的设计与实现

2.1 毛坯建模

由于三角网格离散法在表示复杂三维模型很强的适应性,常被用于毛坯建模。本文在文献[3,6]的基础上,根据轴类毛坯回转体对称的特点,利用顶点平移算法计算网格顶点坐标,即计算出一组顶点数据,并以这组数据为基准运用顶点平移算法就可得到下组顶点数据。

采用三角网格离散法将毛坯棒料沿着轴向和径向进行离散化,按照精度范围0.01~0.1 mm进行离散即可满足加工仿真要求。详细步骤如下:

步骤1将毛坯棒料三角网格化

将长度为L、半径为R的毛坯棒料轴向离散成m个小圆柱薄片,沿径向n等份,按照一定规则连接成三件网格模型,如图2所示。

步骤2用平移算法计算三角片顶点坐标

1)计算第i个小圆柱体顶点坐标值

对于顶点Vertex[i,j]来说(i≤m,j≤n),坐标值为:

其中d=L/m,scale为毛坯实际尺寸到Open GL-ES2.0虚拟空间尺寸的一个换算比例关系。

2)将顶点沿着轴向平移d得到第i+1个小圆柱体顶点坐标值

在绘制毛坯模型时,以坐标轴为对称轴,故平移后得到顶点Vertex[i+1,j],有坐标:

对于整个毛坯模型来说,只需计算出某个小圆柱体网格顶点坐标值,就可以通过平移算法得出整个毛坯模型所有顶点坐标值,避免每个顶点都要经过复杂三角函数计算,大大提高算法的效率。

步骤3绘制毛坯模型

由上述步骤得到网格顶点数据,并且加入纹理等信息,通过调用Open GL-ES2.0接口函数GLES20.gl Draw Arrays()在终端上绘制出毛坯模型。

2.2 NC数控代码解释译码

在实际车削加工中NC数控代码不能直接用来进行数控车床加工,必须经过解释译码转换成数控加工系统能够识别的指令才能对实际零件加工。在车床仿真系统中同样需要对NC代码解释译码,才能动态模拟零件加工过程。NC代码解释译码的主要任务是将NC程序所包含的刀具运动轨迹信息、进给速度大小,和辅助功能等信息提取出来,解释翻译成仿真加工模块所能识别的数据处理格式。NC代码通常要经过词语法分析,以及解释译码等过程。最终从中提取出刀具的运动驱动信息。详细步骤如下:

步骤1词法和语法分析

通过File Input Stream文件输入流打开以*.txt格式存储的NC数控程序代码,基于正则表达式语法规则遍历整个代码进行词法分析和语法,检测是否有错误,如有错误提示出错误位置以方便修改。

步骤2处理分支模块

用read Line读取一行程序段,用substring截取出模态功能字。根据不同功能字进入相应功能字分支处理模块。

步骤3提取刀具驱动信息进行解释译码

进入分支处理模块后,对于G功能字模块进一步判断为何种G功能字(如G00,G01等),接着提取出坐标信息并解释译码;对于F、M等辅助功能字则直接提取功能字中的数据信息解释译码。

步骤4判断程序是否处理结束

判断数控程序是否读取处理完,处理结束则将上述存储数据信息转化成预先定义的格式发送到仿真模块作为刀具驱动信息,否则返回步骤2中继续读取下一行进行处理。

2.3 车削加工过程仿真

数控车削加工中,NC代码提供的数据信息不能完全满足车床加工仿真的要求。为了动态模拟出零件的加工过程,必须对NC代码所提供的坐标数据进行插补。利用已知的坐标信息,计算出满足加工仿真要求的若干插补点。

本文在文献[13]的基础上,通过在两次采样插补点之间再做一次插补运算,同时优化该插补算法以提高加工效率和仿真精度。改进算法原理图如图3所示。

详细算法步骤如下:

步骤1在交点E处再做一次插补,计算其坐标值。

直线OB交圆弧于E,令插补点Ai坐标为(xi,yi),根据三角形ΔOPAi和ΔOEF边和角度关系,则有E点坐标:

将其展开得到E点坐标为:

步骤2由E点计算插补点A'i+1坐标增量Δx和Δy。

在图3中,由两次采样插补点关系可以得出A'i+1(xi+1,yi+1)坐标增量Δx和Δy为:

其中l为点Ai到点A'i+1之间的距离。再结合E点坐标,可以得到Δx和Δy用E表示为:

步骤3计算下一采样插补点A'i+1坐标值。

首先对坐标增量值Δx和Δy进行展开。当θ很小时,在步骤1中可令sinθ≈θ,,并且代入式(4),当l<<R时,可令l=Vλt,,结合式(4)和式(6)得到:

其次求得Δx和Δy的值后,就可以算出本次采样周期刀具应该到达的坐标位置xi+1和yi+1的值,即:

同时由于λd是固定值,可以预先计算好,避免每次插补都要重新计算,到达优化算法效果。整体动态加工仿真流程图4所示。

3 系统实验测试与分析

3.1 仿真误差分析

(1)采样插补点径向误差原理分析

在图3中,设P0(x0,y0)为圆弧的起点,则有R2=x02+y02。计算出插补点A'i+1到圆弧中心的距离R'i+1,结合坐标增量Δx和Δy则有:

将式(7)代入式(9)并化简得到:

令δ'i+1为插补点A'i+1的径向误差,则有:

(2)实验数据测试

在上述径向误差算法中,参数取值如表1所示,经Matlab仿真,文献[13]算法和本文算法误差对比图如图5所示。

图5中-*-表示文献[13]算法产生的插补点径向误差δi+1,-+-表示本文算法产生的误差δ'i+1,从图5中可以明显看出:δ'i+1<δi+1,本文算法产生的误差可以减小30%左右。

3.2 车削加工仿真效果图

在嵌入式数控车床加工系统终端上进行车削仿真测试,工艺条件:Φ=30 mm,L=100 mm的棒料;离散精度取值:m=100,n=30。当在终端上输入毛坯参数时,点击仿真即可流畅无误地动态显示毛坯的整个加工过程,整个过程耗时2min49s,加工效率高,3D加工效果逼真,图6为最终图形仿真结果图。

4 结语

嵌入式仿真 篇5

嵌入式系统是一个软硬件结合非常紧密的系统,嵌入式系统开发和基于PC的开发不一样,它需要专门的开发板。但开发板一般价格比较昂贵,而且开发也相对繁琐,开发人员需要处理较多的硬件细节。这样,对嵌入式系统开发的推广和大规模开发造成了一定的制约。相对来说,嵌入式系统的运行速度比PC机慢很多,所以提出了在PC机上用软件实现仿真嵌入式系统的运行环境,用软件来模拟嵌入式系统的各种硬件,直接在这个仿真环境中运行嵌入式系统。这样,开发者无需利用开发板,就可以实现嵌入式软件的开发、调试以及运行,可大大降低开发成本并提高开发速度。

2. Sky Eye仿真环境结构

在Sky Eye上运行的操作系统和系统软件意识不到它们在一个虚拟的计算机系统上运行,Sky Eye软件的核心在目标模拟模块。Sky Eye最新版本已经完全和原有的GDB/ARMulator分离,并进行了改变和扩充。总体上主要分为四个模块仓库:

(1)体系结构模块仓库(architecture module repository):主要是包含与体系结构相关的代码。能对ARM体系结构、Blackfin体系结构、Coldfire体系结构、MIPS体系结构和PowerPC体系结构进行模拟。

(2)外设模块仓库(device module repository):包含了与体系结构无关的外设模拟,如LCD模拟模块、网卡模拟模块、触摸屏模拟模块等。

(3)接口模块仓库(interface module repository):支持多种架构的调试,目前支持gdb的远程调试协议,随着Sky Eye版本不断升级,可能会支持更多的调试工具和调试协议。

(4)功能模块仓库(function module repository):包含了指令跟踪模块、计划添加代码覆盖分析模块,对在Sky Eye上执行的程序代码进行代码覆盖率的分析。

Sky Eye仿真环境结构如图1所示。

3. Sky Eye的配置文件

Sky Eye模拟的硬件配置和执行行为由配置文件skyeye.conf(skyeye-0.2以后版本的配置文件)中的选项确定。根据选项的功能,skyeye.conf的选项分为硬件配置和模拟执行。根据参数的个数,skyeye.conf的选项主要由两种组成:单个参数选项行和多个参数行。

3.1配置文件格式

(1)单个参数选项行的格式

其中Symbol可以是硬件定义,如cpu、mach等,也可以是执行控制定义,如log等。value是Symbol对应的值,可能是数字也可能是字符串。

(2)多参数选项行格式

其中opt1是参数名,value1是opt1对应的值,可能是数字也可能是字符串。

3.2配置文件分析

(1)基本CPU核配置选项

目前存在的选项有:arm710、arm7tdmi、arm720t、arm920t、sa1100、sa1110、xscale。

格式为cpu:cpuname,cpuname表示一个代表cpu名字的字符串。例如:cpu:sa1100。

(2)具体的开发板(包括CPU扩展)配置选项

目前存在的选项有:at91、ep7312、adsbitsy,pxa_Lubbock、lpc、s3c4510b、s3c44b0、cs89712、sa1100、at91rm92、sharp_lh7a400。

格式为:mach:machinename,cpuname表示一个代表基于特定CPU的开发板名字的字符串。例如:mach:at91。

(3)内存组配置选项

一个内存组内的地址是连续的,类型分为RAM SPACE,ROM SPACE,mapped IO SPACE。

格式为:

其中,map=M表示RAM/ROM SPACE,map=I表示mapped IO SPACE;

type=RW且如果map=M则表示RAM SPACE,type=R,且如果map=M则表示ROM SPACE;

addr=0xXXXXXX表示内存组的起始物理地址(32bit,16进制);

size=0x XXXXXX表示内存组的大小(32bit,16进制);

file=imagefilename,file的值imagefilename是一个字符串,实际上表示了一个文件,一般是一个可以执行的binary image格式的可执行程序或OS内核文件或是一个binary image格式的根文件系统。如果存在这个文件,Sky Eye会把文件的内容直接写到对应的模拟内存组地址空间中;

boot=yes/no,如果boot=yes,则Sky Eye会把模拟硬件启动后的第一条指令的地址定位到对应的内存组的起始地址。

此外,还有LCD、网络芯片8019AS、UART、log控制选项等配置。以下为基于平PXA25X处理器的skyeye的配置文件skyeye.conf。

4. SkyEye的扩展

Sky Eye采用了一种可扩展的架构,允许开发者在Sky Eye现有的代码框架下模拟自己的处理器、外设和体系结构。对Sky Eye的扩展主要在三个方面展开:一是加入新的体系结构,如Blackfin、Coldfire、PowerPC等;二是在已有的体系结构下添加新的研发板,在ARM体系结构中添加Lubbock研发板;第三种就是在Sky Eye已模拟的研发板上添加新的硬件。以ARM平台为例来描述如何基于已有的Sky Eye框架来模拟一个新的处理器。

模拟新的处理器之前,首先要了解Sky Eye是否支持这款处理器的ARM核,假设模拟的处理器是LPC2210,内核为ARM7TDMI,Sky Eye已经支持ARM7TDMI,只需考虑lpc2210中的外设和中断的模拟。对于ARM平台,处理器模拟的相关代码位于arch/arm/mach目录下。为实现对LPC2210的模拟,需要在该目录下添加两个文件:

(1)lpc2210.h

它是处理器寄存器定义文件,主要定义了LPC2210处理器中的寄存器地址和相关的宏。

(2)skyeye_mach_lpc2210.c

为模拟体系结构的源文件,包含了对lpc2210处理器的模拟器的实现代码。

4.1增加处理器的成员

在skyeye_mach_lpc.c中需要实现的接口数据结构为machine_config_t的结构体,位于utils/config目录的skyeye_config.h文件中。事实上,mach_config_t中的成员变量分为两部分:一部分是与SOC模拟有关的,也可以认为这部分是与片内外设有关。另外一部分是和处理器外部扩展外设有关的,这种外设是独立于处理器的,例如8019网卡,它是一种片外的外设,可以在不同的应用处理器中应用。

扩展的第一步要将处理器添加到Sky Eye的结构中,使之成为被Sky Eye支持的处理器。主要修改体系结构目录arch/arm/common/中的arm_arch_interface.c文件。在arm_machines数组中添加一个成员如下:

4.2实现处理器的初始化函数

在skyeye_mach_lpc2210.c定义lpc2210_mach_init()函数和实现mach_config_t中的必要的函数指针和成员变量。

lpc2210_mach_init()函数的最初,根据LPC2210的体系结构调用相关函数将处理器设置为ARMv4。下一步初始化过程中,将为this_mach变量挂载主要的函数指针。

4.3修改Makefile

对于增加一个新的处理器的支持,需要修改Makefile来添加新增加的skyeye_mach_lpc2210.c和lpc2210.h文件,实现编译过程中的支持。

至此,模拟LPC2210处理器的工作已经完成。

5. 结束语

Sky Eye为嵌入式系统学习者培养开发能力及嵌入式系统的工程师提高开发效率提供了一个平台。应用Sky Eye设计和仿真嵌入式系统,这对于提高产品的开发效率、降低开发成本等有着非常重要的作用,也为嵌入式系统实践教学和建立虚拟实验室提供了新方法。

参考文献

[1]韩超,康烁,李明.嵌入式系统实践教程[M].北京:机械工业出版社,2008.

[2]SkyEye官网[EB/OL].http://www.skyeye.org/.

[3]陈渝,李明,杨晔等.源码开放的嵌入式系统软件分析与实践—基于SkyEye和ARM开发平台[M].北京:北京航空航天大学出版社,2004.

嵌入式仿真 篇6

1 主要研究内容

1) 电容补偿功能模拟技术。利用抽油机井的电功率图曲线, 进行电容补偿功能模拟技术, 量化的指导抽油机井的电容补偿等技术研发。

2) 抽油机井无线示功图和软件部分的扩容技术。利用油井生产参数, 研发抽油机井无线示功图和软件部份的扩容。

3) 嵌入式动液面测试技术。开发一套将采油现场测试的动液面数据镶嵌到现有的仪器中, 进行数据的整合嵌入式软件系统。

4) 多功能整合软件。利用现有软件开发一套将采油现场测试的功图、动液面以及电参数等数据转换到现有的软件中, 进行数据分析与研究的多功能整合软件。运用系统开发的功能, 提高抽油机井整体工作运行效率。

2 系统性能

2.1 功能

1) 具有抽油机井多种生产参数综合分析功能。软件通过对现场采集到抽油机的示功图、各项电参数和液面等进行系统综合分析功能。

2) 具有电动机功率分析功能。通过对现场采集到抽油机各项电参数以及采用从下死点算起的连续三次测量的电流曲线图, 可以记录每一个周期的功率形成功率曲线图, 来计算最大功率、最小功率、平均功率和均方根功率, 用最大功率和均方根功率来分析电动机的配备是否合适。

3) 指导油井调平衡功能。软件根据油井实际测量的电参数数值, 录入部分基础数据, 以抽油机最节能和安全为标准, 采用功率法进行平衡分析, 对功率曲线进行傅立叶分析, 计算出油井平衡状况, 求出不平衡功率——功率曲线中的一阶分量[2,3]。计算出最佳平衡调整量, 使之正好抵消不平衡功率, 使均方根功率最小, 也就是均方根功率扭矩最小, 抽油机最安全, 电动机发热量最小, 给出平衡调整建议功能。

4) 具有抽油机井无功补偿仿真处理功能。能够实现抽油机井的无功补偿仿真处理, 直接计算出每口井需要的最佳无功补偿量。

5) 具有嵌入式动液面测试和计算功能。该系统采用高频和低频的增益调节技术, 能够针对不同油井的生产情况, 克服井上和井下的各种干扰因素, 有针对性地进行动液面测试, 能够获得清晰油井动液面测试图。

6) 具有单井系统效率计算功能。软件在单井系统效率分析界面中只需输入日产液、含水率、油压、套压、动液面这些数据, 系统会自动计算出产液密度和日产油量。再结合测试得到的输入功率、光杆功率, 点击“计算”就可直接得到有效功率、地面效率、井下效率和系统效率。

7) 具有油井抽油机井生产整体系统优化功能。软件根据计算出的有效功率、地面效率、井下效率和系统效率等数据, 对油井生产状况作出诊断, 给出最优化运行生产参数调整建议。

8) 完善的报表自动生成、保存和打印功能。实现平衡分析或单井系统效率计算过的抽油机井数据自动生成、保存和打印报表。可根据需求, 生成以任意项目为主的、拥有任意项目数据的标准Excel表格, 便于各种应用领域。

2.2 特点

1) 系统软件界面友好, 操作简单, 系统实用性强。

2) 系统功能齐全。该系统软件运用了机采井系统效率测试技术以及测试数据分析软件技术、高速电能测试和电能曲线信息识别技术、油井诊断和动液面监测技术、抽油机平衡分析技术、电动机仿真分析技术、供采协调及生产参数优化技术、井下管柱优化设计技术, 为机采井系统效率测试、分析、评价及优化设计提供了技术保证。

3) 系统软件安全可靠。系统具有良好的安全保护功能, 经现场应用, 未发生系统运行故障, 安全可靠。

4) 推广应用价值高。提高机采井系统效率是油井增产节能、延长设备使用寿命、降低生产成本的有效手段, 已成为油田机采管理的重要内容, 该系统软件具有良好的推广应用价值。

3 现场应用

该软件可以根据需要显示1个冲程或1 min之内多个冲程的电参数, 也可以仿照日置3166型电参数测试分析仪方式进行处理, 见图1。

某油田8-26-14井自然录取的电参数以及采用从下死点算起的连续3次测量的电流曲线图对比, 见图2。

根据油井A实际测量的电参数数值, 录入部分基础数据, 计算出油井平衡状况, 给出平衡调整建议, 见图3。

某油田23-2013井模拟平衡调整后预测参数结果见图4。实现油井数据录入的简洁明了、平衡块分级计算等多项功能。提出的调平衡建议更加真实有效, 并通过模拟数据给出不同平衡调整方案油井的预测参数, 具有更直观的指导作用。

某油田8-23-131井实测的电能参数和曲线见图5, 无功补偿后的电能参数和曲线见图6。

通过补偿前后的数据对比可以看出:补偿36 kvar后, 功率因数上升;平均电流下降;无功功率下降;有功功率不变, 功率平衡度不变。采取功补偿不仅可以降低电网有功损耗, 节省电费, 还可以减少因发热而引起的设备损耗, 节省设备投资。单井可减少无功功率36 kvar, 电网负载能力相当于增容36 k VA, 如果补偿井较多增容量大, 将来需要增加新井, 不需要对电网扩容 (增加变压器及线路) 。按照1 kvar无功功率折算0.1 k W有功功率的折算标准, 这口井年可节省电费相当可观。单井无功补偿量不大的情况下, 建议在变压器端进行无功补偿, 提高电网的有功功率。

在单井系统效率分析界面中只需输入日产液, 含水率、油压、套压、动液面这些数据, 系统会自动计算出产液密度和日产油量。再结合测试得到的输入功率、光杆功率, 点击“计算”就可直接得到有效功率、地面效率、井下效率和系统效率, 见图7。

4 实施效果

该系统于2014年在某采油厂得到成功应用。通过运用抽油机生产系统效率测试分析, 全面评价油田抽油机井系统效率现状, 分析了提高抽油机井系统效率存在的潜力, 对相关配套技术措施进行改进和完善, 优化了油井生产参数, 提高了油井系统效率, 表1。

1) 节能效果显著。应用该系统软件后, 百米吨液耗电量下降了3.82 k Wh, 综合节电率达到32.6%, 平均单井日节电量达69 k Wh。50口油井日节电量达3450 k Wh, 累积年节电量达到125.925×104k Wh, 按照电价0.631元/k Wh计算, 则年节电价值达79.46万元。

2) 提升了油井系统运行效率。油井系统效率由系统应用前18.28%提升到系统应用后的36.19%, 油井平均系统效率提升17.91%。

3) 节能减排效益。按照节约1千瓦时电能减排0.997 kg CO2, 则该技术系统实施后每年可减少碳排放342 516 kg。

4) 提升吨油效益。该系统软件的成功应用, 优化了油井的生产运行参数, 实现节能降耗, 提高吨油效益。

5) 提升了机采井系统效率测试分析、评价及优化设计综合能力, 为油井节能综合评价提供了有力的技术支持。

摘要:提高机采井系统效率是油井增产节能、延长设备使用寿命、延长油井免修期、降低生产成本的有效手段。介绍了抽油机井生产过程中嵌入式仿真系统的主要研究内容、系统功能及特点、现场应用情况, 并对应用效果作了效果分析。实践证明, 系统功能齐全, 性能优越, 操作简单, 安全可靠。通过运用该系统软件, 可以有效优化油井生产参数, 提高抽油机井系统效率, 实现油井节能降耗, 具有良好的推广应用价值。

关键词:抽油机井,仿真系统,系统效率,节能降耗

参考文献

[1]朱益飞.石晓明, 马冬梅.提高孤东油田机采系统效率的探讨[J].电力需求侧管理, 2009, 11 (4) :44-48.

[2]朱益飞.游梁式抽油机调平衡度的几种方法[J].计量技术, 2010, 55 (2) :31-33.

上一篇:优质有机肥下一篇:文化与广告翻译