资源加载(通用8篇)
资源加载 篇1
0引言
农机仿真平台[1,2]主要是为研究农机的工况而搭建的, 在搭建农场虚拟环境时, 由于农场面积广大, 在场景的中的模型众多, 使用Unity3D默认的加载函数会十分缓慢, 进入系统前需要漫长的等待, 所以解决大场景加载缓慢的问题十分必要。本设计采用动态加载算法解决大场景加载问题。
1 算法原理
动态加载的核心思想是异步加载[3], 当用户想加载一个大场景的资源, 不应该从开始让用户长时间等待全部资源的加载完毕。应该优先加载用户附近的场景资源, 需要什么就先加载什么, 在进入平台主界面后, 不影响操作的情况下, 后台加载剩余的资源, 直到所有加载完毕。
异步加载顾名思义就是不影响当前场景的前提下加载新场景。在默认的情况下, Unity3D加载三维场景的时候通常会使用方法Application.Load Level (“Scene Name”) ;此方法主要加载的是在场景中预先存在的所有对象, 即运行程序前该场景中就已经存 在的所有 对象。然 后这些对 象就会在 执行完Application.Load Level (“Scene Name”) 方法后加载至内存当中。
2 算法运行流程
开发人员将三维模型导入Unity3D中, 编辑场景, 完成布局后把每个具体对象 (gameobject) 导出成.unity3d格式的资源文件[4], 并且把整个场景的信息生成一个配置文件, 一般为XML格式。
当平台运行时时, 读取场景配置文件, 根据用户的位置加载附近资源, 先将存储在本地或者网络上的资源文件通过Asset Bundle方法送入 内存 , 若资源文 件较小 , 直接用Asset Bundle.Load () 方法从Asset Bundle的内存镜像里读取并创建一个Asset对象, 创建Asset对象同时也会分配相应内存用于存放, 若文件较大, 则使用Asset Bundle.Load Async () 方法异步加载起源。用户附近的资源加载完毕后开启主界面。在平台运行的过程中, 后台继续加载资源直到所有加载完毕。等到没有任何场景物体在用这些Assets以后, 这些Assets就成为没有引用的数据块, 通过Resources.Unload Unused Assets () 方法来释放资源。
3 算法具体实现
3.1 资源打包
异步加载基于多线程实现, 当场景较大, 同步加载资源耗时较长的情况下, 可以新建一个过渡场景, 将大环境放入过渡场景中, 加载过渡场景, 先将系统界面启动, 与此同时另开线程, 后台加载较为精细的模型对象, 异步加载使用的是API中带的Asset Bundle方法。
异步加载 调用的核 心函数为Application.Load Async (“Scene Name”) 。此方法只能加载Unity3D资源包文件, 打包资源的核心代码如下:
3.2 调用异步方法
按照上述算法将场景资源打包后, 开启新线程, 调用Application.Load Async () 方法异步加载场景资源, 核心代码如下:
4 结语
本文针对搭建农机仿真平台的过程中, 出现资源较多加载缓慢的问题, 给出了使用动态加载算法解决问题的方案, 介绍了算法的原理, 流程和算法的核心代码。使用动态加载算法加载场景中的资源文件, 合理有效, 可以缩短进入系统的等候时间, 提高平台的用户体验满意度。
摘要:在搭建农机仿真平台时, 若虚拟农场里的资源过多, 使用Unity3D软件默认的一次性加载机制会使载入过程十分缓慢, 用户需要漫长的等待时间。针对这个问题, 使用资源动态加载算法优化资源的加载过程, 使平台更加流畅运行。本文主要阐述了动态加载算法的原理和实现过程。
关键词:动态加载,Unity3D,仿真平台
参考文献
[1]谢秋菊, 刘桂阳, 马铁民等.基于Eon的发动机机构运动虚拟仿真研究[J].黑龙江八一农垦大学学报, 2009, 21 (3) :84-86.
[2]李佳, 闫清东, 王一拙.基于ADAMS和Vega的地面机动武器仿真系统的研究[J].计算机仿真, 2006, 23 (2) :236.
[3]Zhu Qunxiong, Jiang Zhiying, Xu Yuan.A Simulation Platform with Real-Time Intervention for Chemical Security Based on Mechanism Model and Virtual Reality Technology[J].Advanced Science Letters, 2012, 11 (1) :498-502.
[4]陈洪, 马钦, 朱德海.基于Unity3D的交互式虚拟农业仿真平台研究[J].农机化研究, 2012, 34 (3) :184-186.
资源加载 篇2
允许代码动态加载不仅可以在线丰富系统功能, 而且由于动态加载的代码在不需要时可从系统中卸载, 因而不会使系统变得过于庞大。可见, 引入代码动态加载可提高系统灵活性、在线可配置以及在线可升级性[1]。
目前针对通用系统的代码动态加载技术已经比较成熟[2], 而针对嵌入式系统的动态加载技术还存在着灵活性低、不易使用等缺点[3], 这使得系统的升级受到一定程度的限制。对此, 本文提出了一种只需借助主机端资源而无需增加目标端资源的思路来实现目标端代码动态加载的技术——远程控制加载RCDL (Remote Control Dynamically Loading) , 并在RTEMS上进行了设计与实现, 使得目标系统运行起来之后, 能通过主机端与目标系统之间的连接将代码动态加载到目标系统上并能够正确运行, 从而提高了RTEMS系统的灵活性、在线可配置性和在线可升级性。
1 远程控制加载RCDL
1.1 嵌入式系统的动态加载问题分析
嵌入式系统的特点是资源有限。在内存管理方面, 内存容量很小, 内存管理机制较为简单, 不采用分页机制;在输入输出设备方面, 一般没有键盘和显示器等常规设备;此外, 软件 (包括操作系统在内) 通常固化在存储器芯片中, 大多没有磁盘等外存;等等。在这样系统中实现代码动态加载存在如下问题:1) 由于目标端没有开发环境, 代码只能在主机端开发。这就必须依赖于某种 (些) 介质来实现代码的存储和在线传输;2) 代码在加载运行前, 需要进行与目标系统中已装载运行的代码进行正确的链接。这依赖于链接器和目标端的符号表的支持;3) 以何种方式运行被加载的程序。从运行级别上看有两种:一是在用户态加载;一是在内核态加载。从运行模式上看, 也有两种:一是任务式加载, 即创建一个新的任务来运行动态加载的代码;一是函数式加载, 即在现有的任务中执行动态加载的代码。
在另一方面, 嵌入式系统通常都具有串口等基本I/O设备, 通过这些设备, 嵌入式系统可以与远程的主机 (或主机端) 进行通信。相对于嵌入式系统来说, 远程主机通常都具有丰富的软硬件资源, 例如主机端有交叉开发环境, 包括编译器、链接器以及与目标端进行通信的通信程序等。
若能在一定程度上合理地使用主机端资源来配合目标端实现代码动态加载, 将极大地减轻代码动态加载对目标端的资源需求, 这就需要对传统的代码动态加载技术进行合理的技术划分, 尽可能将消耗系统资源较多的操作放在主机端完成。基于这一思路, 本文提出了适用于资源受限的嵌入式环境下的代码动态加载方案——远程控制加载RCDL。
1.2 代码动态加载技术的划分
代码动态加载技术的基本步骤包括编译、链接、加载。假设Cold为目标端原有的代码集合, Cnew为编译后得到的待加载目标代码, 则为了使Cnew能正确地在目标端运行, 必须为Cnew在目标端分配大小合适的地址空间, 根据重定位信息修改地址, 解决外部符号引用问题, 即将Cnew正确地和Cold链接。
根据Cnew和Cold之间的代码调用和变量引用依赖关系, 可以将Cnew划分为两类:1) 与Cold无关, 即Cnew没有直接使用到目标端已有的代码和变量, 此时无需解决外部符号引用, 只要重定位;2) 与Cold相关, 即Cnew直接使用到目标端已有的代码和变量, 此时链接要完成的任务包括重定位和解决外部符号引用。为便于讨论, 本文仅考虑第二种情况。从完整性上看, 第一种情况可以看成第二种情况的特例。
假设Crel为Cnew链接后得到的代码, 则对于目标端而言, 只需要为Crel分配一段够用的地址空间, 将Crel拷贝到这段地址空间中, 并且能够正确找到代码入口点运行就足够了, 其余所有的操作都可以考虑放在主机端实现, 从而降低目标端的资源需求。这就意味着代码的链接要在主机端进行。由于这两个操作的实现与Cold的符号表和目标端分配的地址空间有关, 因此实现此技术的关键就在于:1) 必须将目标端的符号表和代码分开, 在主机端保留目标端的符号表, 同时还要保证符号表与目标端代码保持一致;2) 必须将代码的链接和代码加载分开, 在主机端完成链接, 在目标端分配代码加载空间, 然后将代码从主机端拷贝到目标端分配好的代码空间中。
1.3 待加载代码的部分链接问题
由于Cold是根据目标端最原始的功能需求来为目标端量身定制的, 因此Cold通常是嵌入式系统完整的代码包 (包括操作系统、系统库等) 的一个子集。不妨设完整的嵌入式系统开发代码包为Call, 则Cold⊆Call。令Cleft=Call-Cold。
在为目标端开发新的功能时, 新功能所依赖的底层功能可能无法完全由Cold提供, 也就是说, Cnew不仅依赖于Cold, 还可能依赖于Cleft。因此, 在对Cnew进行链接时, 不仅仅要考虑Cold还要考虑Cleft。由于Cold已经加载到目标端, 而Cleft尚未加载到目标端。因此在考虑将Cnew与Cold链接之前, 首先要在主机端将Cnew与Cleft链接起来。
事实上, 在主机端并没有与Cleft相对应的代码包, 它隐含在Call中。这里的问题是如果与Call链接, Cold部分会出现符号的重复定义, 如果不与Call链接, Cleft部分会出现未定义的符号问题。解决的办法是通过代码的部分链接技术来实现。使用GNU的链接工具, 部分链接可以表示为如下的形式:
ld –r –R Cold Cnew Call -o Cpart-link
Cnew与Cleft之间的链接, 即将Cnew与Call链接, 但对出现在Cold的符号表中的代码和变量不再重复定义, 对Cold中的符号却能以绝对地址引用。
在下面的讨论中, 用Cpart-link表示部分链接后代码。
1.4 远程控制加载RCDL
考虑到目标端的资源消耗, RCDL在目标端采用函数式加载。RCDL的基本设计方案如下:
(1) 在目标端启动运行Cold, 并且将与Cold相关的系统符号表SymTabold装载到主机端的远程控制程序中;
(2) 在主机端通过交叉编译得到待加载代码Cnew;
(3) 根据SymTabold中的信息, 将Cnew与主机端的Call进行部分链接, 得到Cpart-link (Cnew1) ;
(4) 由主机端的远程控制程序根据SymTabold中的信息对Cnew1进行链接, 并计算出在目标端申请代码空间的大小, 用于装载即将生成的Cnew2;
(5) 在目标端为Cnew2分配好代码空间, 在主机端根据分配到的空间地址进行重定位生成Cnew2;
(6) 通过串口通信将Cnew2发送到目标端;
(7) 目标端的远程控制支持程序从串口通信模块接收到Cnew2并将Cnew2直接加载到 (4) 中分配的代码空间中;
(8) 在目标端的远程控制支持程序中, 增加新代码相关的命令Command1。
此后, 主机端就可以随时发起运行Command1的请求, 该请求到达目标端后, 由目标端的远程控制支持程序执行Command1并将运行结果通过串口返回主机端。
2 在RTEMS中实现RCDL
下面介绍RCDL针对RTEMS操作系统的具体实现。其中, 主机端为运行的Linux操作系统的PC, 编译器为i386-rtems-gcc3.4.4, 链接器i386-rtems-ld2.16.1, 主机端生成的待加载代码文件为可重定位的ELF格式文件;目标端为运行RTEMS操作系统的PCM6892工控机;主机端与目标端通过串口通信。
2.1 RTEMS简介
RTEMS, 即实时多处理器系统 (Real Time Executive Multiprocessor Systems) , 是一个开源的无版税实时嵌入式操作系统。它最早用于美国国防系统, 早期的名称为实时导弹系统 (Real Time Executive for Missile Systems) , 现由OAR公司负责版本的升级与维护。从体系结构上来看, RTEMS是微内核抢占式的实时系统, 具有优秀的实时性能, 运行速度快而且稳定, 支持多种CPU, 具有很好的可移植性和高度可剪裁性。目前无论在航空航天、军工, 还是民用领域, RTEMS都有着极为广泛的应用[4,5]。
在RTEMS中实现RCDL受到如下约束:1) 单地址空间, 它采用线性编址方式, 物理地址和逻辑地址一一对应;2) 单一运行级别;在RTEMS中所有的代码都运行在内核态, 因此动态加载的代码也只能运行在内核态;3) 多线程, 在RTEMS中只有线程的概念, 而没有进程的概念, 因此动态加载的代码在运行时的标准I/O设备受到原有RTEMS系统的限制;4) 函数式加载, 由于RTEMS中的任务创建需要在定制时预留资源, 无法动态实现, 因此在RTEMS中只能在已有任务中通过执行新命令的方式运行动态加载的代码。
2.2 ELF可重定位文件的部分链接
在主机端, 新的应用通过编译器的-c选项生成ELF可重定位的目标文件。如果原来的操作系统内核为kernel.exe, 新应用依赖其他的库文件全部打包放进完整的开发包librtemsall.a, 假如现在要把几个新应用 (app1.o, app2.o) 合并并添加到操作系统内核, 则使用以下命令进行部分链接:
i386-rtems-ld-r-R kernel.exe app1.o app2.o librtemsall.o-o app.o (ld当前版本2.16.1)
2.3 ELF可重定位文件的预处理
ELF可重定位文件由ELF头、段头表、.text段、.data段、.bss段、.rodata段以及符号表段和重定位段等组成。
在重定位目标代码之前, 首先要为在主机端和目标端分配代码空间:在主机端分配的代码空间作为Cnew2生成时的缓存区, 而目标端分配的代码空间则是Cnew2真正要加载和运行的目标内存空间。这就需要根据ELF可重定位文件中的段头表中的信息分别获得代码段、数据段、只读数据段、bss段、公共数据块段等所需的内存空间大小, 进而计算出要预分配的空间的大小。
一旦分配好主机端的代码空间, 就可以将ELF可重定位文件中的代码段、数据段、只读数据段等载入到这块代码空间中, 并将BSS段和公共数据块段对应的内存清零。
2.4 代码的链接和重定位
代码的链接重点要处理好重定位问题。在大多数情况下, 待加载代码的运行都会依赖于目标端系统中已有的代码和数据, 即外部符号, 这就需要正确定位这些外部符号在目标端的地址;此外待加载代码内部定义的函数 (包括数据) 之间也存在相互依赖关系, 即内部符号, 这也需要正确定位这些内部符号在加载到目标端后的地址。重定位操作就是用待加载代码中要用到的符号在目标端的地址来修改代码。对于第一种情况, 只需要使用已有符号表中现有的信息就可以进行重定位;对于第二种情况, 则首先要正确地计算新符号加载后在目标端的地址, 然后进行重定位。
考虑上述第二种情况。假设要计算一个新的符号symbol_a的值并将它添加到现有符号表中。如图1所示, 设待加载代码在目标端的起始地址为base_t, 主机端的起始地址为base, symbol_a所在段在主机端的起始地址为sect_addr, 段内偏移为offset, 则符号最终地址应为:base_t+ (sect_addr-base) +offset。
所有的全局符号加入系统符号表后, 即可进行重定位。这取决于重定位项, 重定位项的信息来源于.rel.text、.rel.data和rel.rodata这三个段中。在重定位前首先需要对这三个段进行扫描, 以收集所有的重定位项。由于没有用到共享程序库和位置无关代码, 上述重定位项只有两种类型:R_386_32和R_386_PC32, 分别适用于变量的引用和函数的调用。
重定位需要计算两个值:重定位应用地址值apply和该地址上应该填充的值value (即被引用符号的地址) 。假设apply所在的段在主机端的起始地址为sect_addr, 段内偏移值为offset, 则apply = sect_addr + offset。
value的计算和重定位类型有关:若是R_386_32类型的重定位, 则value的值可以通过查符号表直接得到;若是R_386_PC32类型的重定位, 除了通过查符号表得到的被引用符号的定义地址S之外, 在重定位项中还有一加数A, 该值用于修正value的值, value = S+A- (apply-base+base_t) 。
2.5 代码传输
RTEMS的串口驱动提供了一套简单的文件接口, 包括文件的打开open、关闭close、读read、写write和控制ioctl。根据主机端和目标端通信的特点, 本系统实现了一些实用操作:
1) send_control, recv_control:发送或接收一个控制命令, 控制命令主要用来对主机端和目标端进行同步, 典型的同步操作有建立/断开连接前的同步、加载/卸载模块前的同步。
2) send_data, recv_data:发送或接收数据, 代码即通过这两个接口从主机端传到目标端。
除了上述四个操作之外, 封装ioctl还可以得到一些对串口设置波特率、流控制协议等的接口。在目标端, 上述操作通过封装RTEMS接口来实现;在主机端, 上述操作封装Linux上的标准C接口实现。
2.6 代码的目标端存储和管理
如前文所述, 动态加载代码在链接之前已经在目标端分配好待加载空间。当代码从主机端发送到目标端时, 目标端的远程控制支持程序就会将其拷贝到预先分配好的空间中。
为实现动态加载代码的卸载操作, 在目标端实现了一个模块链表来维护动态加载信息。此外, 为实现函数式加载, 在目标端维护了一个命令链表, 每当动态加载代码时, 就会新增加相应的命令到命令链表中。相应地, 当有模块卸载时, 也会相应地更新命令链表。在目标端还运行了一个命令守护任务CommandDaemon, 该任务在主机端发出命令执行请求时, 负责在命令链表上找到指定的命令并将其加载运行。
2.7 远程动态加载的运行
为了验证上述动态加载机制的有效性, 我们设计了如下的实验。实验内容如下:
(1) 为目标端定制原始系统Cold。该系统仅运行了一个CommandDaemon任务。一开始, 目标端不具有回显功能;
(2) 在主机端加载目标端系统Cold的符号表;
(3) 编写带回显功能的代码, 并且将其与目标端进行链接, 生成Cnew2;
(4) 通过loadmod命令将Cnew2加载到目标端;
(5) 在主机端使用addcommand命令为目标端添加新命令echo, 并将echo与Cnew2的入口函数相关联。
上述5个步骤运行结束后, 就可以使用目标端的echo功能。在主机端远程执行echo命令, echo命令后面的内容会在主机端和目标端两处的显示设备回显 (如果目标端有显示设备的话) 。
上述实验表明, 在目标端资源有限的情况下, 通过主机端和目标端之间合理的技术划分, 可以充分利用主机端的资源来实现目标端的代码动态加载。
3 结 论
针对嵌入式系统开发, 本文介绍了资源受限环境下的一种代码动态加载方法及其在RTEMS系统上的具体实现。该方法把符号表放在主机端, 并在主机端进行链接, 有效地节省了目标端的资源使用, 能很好地适应嵌入式系统的硬件环境。动态加载能让操作系统在有限的条件下做更多的事情, 并且为系统的在线升级提供了支持。实验表明本文所提出的代码动态加载技术是正确有效的。目前的实现中, 还没有深入研究加载代码之间具有依赖关系的复杂卸载操作, 这将是下一步的工作。
参考文献
[1] Sherrill J, Mayes J.SAFER: A Scaleable Architecture for Embedded Reliable Real-Time Systems. Technical Report, OAR-TR-99-183-03, 1999.
[2] Hicks M, Nettles D.Dynamic Software Updating. ACM Transactions on Programming Languages and Systems, 2005.
[3] Dunkels A, Finne N, Eriksson J, et al. Run-Time Dynamic Linking for Reprogramming Wireless Sensor. Proceedings of the 4th international conference on Embedded networked sensor systems, 2006.
[4] http://www.rtems.com/.
减少启动时加载项目网络技巧 篇3
减少启动时加载项目网络技巧
,
资源加载 篇4
在某验证结构静力试验中要求,提出一种基于Flex Test 200加载控制系统中的位控-力控模式转换控制加载技术,通过使用“位控-力控”模式转换技术,可以在任意状态下改变控制模式,从而满足试验件控制加载的要求。
1 方案描述
在试验过程中,首先1#作动筒为位控模式,由图1所示的中立平衡位置收缩到极限位置,2#作动筒为力控模式,跟随运动,同时1#载荷传感器监视力反馈,2#位移传感器监视位移反馈;当收缩到极限位置后(此时2#作动筒相应的伸出到极限),1#作动筒随后在逐步伸出至平衡位置,随后执行模式转换,由2#作动筒进行拉动。
在位控作动筒执行收放命令时,相应的力控作动筒始终有一个预紧力命令(拉向),保证其与杠杆之间的连接正常即可。
为了减小由于作动筒自身因素对试验的影响,本次试验选取了2个相同类型的位控作动筒,本次验证试验具体的加载点设置见表1。
2 基本原理
控制模式是指当前控制回路由哪些输入输出信号参与控制,控制模式转换就是切换参与控制的输入信号来改变当前的控制状态,即在控制通道有多路输入的前提下,通过切换当前反馈信号,由不同的反馈信号来参与控制作动器,其他输入作为监视的控制技术。模式转换技术通过切换当前反馈信号的技术替代了改变控制通道物理参数的方法来实现不同控制模式之间的转换。一种简单的控制通道模式转换原理如图2所示。
由图2可以看出,在同一控制通道中分别接入了载荷传感器和位移传感器,该通道始终有位移反馈和力反馈两路输入信号,但是任一时刻该回路只有一个反馈信号作为当前反馈参与控制,另一路反馈信号作为监视信号。而由哪一路反馈信号参与控制是根据当前的控制模式决定的,控制模式的选择就是当期反馈信号的选择,其通过输入信号选择器来实现。
在该系统软件中,控制模式是由用户分配的输入通道的类型决定的,一旦用户为某一通道分配了输入信号的类型,其当前控制模式(Active Control Mode)和默认控制模式(Default Control Mode)就确定了。当前控制模式是指该控制通道在当前状态下的控制模式,如果用户将某一通道定义为位控通道,其当前控制模式和默认控制模式就是位控模式,反之,如果将其定义为力控通道,其当期控制模式和默认控制模式就是力控模式。当某一控制通道同时有多个输入信号时,其当前控制模式和默认控制模式根据用户首先选择的输入信号决定。例如:一个控制通道同时有位移反馈输入和力反馈输入时,如果用户首先为该控制通道分配的是力反馈输入,其当前控制模式和默认控制模式就是力控模式,反之就是位控模式。当前控制模式和默认控制模式可以在输入通道的属性中进行更改。模式转换改变的就是控制通道的当前控制模式。
3 软件配置
3.1 通道配置
本次验证试验设置两个控制通道,每个控制通道都有两路输入信号,其中一路为位移反馈输入,另一路为力反馈输入。具体配置如图3(a)所示。
其中1#点CH117作为位移反馈输入(作为当前反馈),CH118作为力反馈输入;2#点CH119作为位移反馈输入,CH120为力反馈输入(作为当前反馈)。其对应的当前控制模式和默认控制模式如图3(b)所示。
模式转换可以在试验文件加载状态下的任意时刻执行,无论加压与否,模式转换可以由下列情况触发:
(1)由一个定义为一种模式转换动作的试验事件触发(例如由保护限触发或者在执行完某一谱块后触发);
(2)在试验中有包含模式转换命令的命令脚本触发(例如由控制面板中的功能键来触发);
在设置控制模式转换方式时,首先要将配置的控制模式(F1、P1、默认控制模式)添加到试验动作组(Action Groups)中,如图4(a)所示。
在动作组中依次将动作F1,P1,P-P设置为执行控制模式F1,P1和默认控制模式。这样就可以在飞行谱中任意行的起始位置或者结束位置添加所需要执行的模式转换动作,在运行该谱块时,所设置的试验动作会被自动执行。
也可以在试验事件(Events)设置中将功能键(Function key)2、3、4依次设置为执行默认控制模式、P1和F1。如图4(b)所示。
在设置完控制模式和模式转换方式之后,就可以进行载荷谱和飞行谱设置。
3.2 载荷谱设置
为了模拟方向盘操纵试验的加载方式,本次试验设置了逐级加载和自动加载(一级)两种加载方式,具体加载方法如下:
在载荷谱中,加载顺序是初始状态时为P1控制模式,即1#点为位控模式,2#点为力控模式,1#点主动加载,2#点跟随,逐级加载到极限位置,再回到中立位置,随后转换为F1控制模式,1#点为力控模式,2#点为位控模式,开始反向加载。在载荷谱中,当某一个加载点为力控模式时,其位移指令是无效的,反之如果其为位控模式,载荷命令是无效的。载荷谱的设置见表2。
3.3 飞行谱设置
飞行谱的初始位置为中立位置,初始状态为P1控制模式,当其再次回到中立位置时,进行模式转换,转换为F1控制模式,最后回到中立位置,如图5所示。
本次验证试验主要考察各加载点在运行过程中的跟随性以及在模式转换时的响应,试验加载过程中的加载曲线如图6所示。
由图6可以看出在加载过程中,各加载点跟随良好,误差满足要求。
4 结语
通过本次地面验证试验,验证了位控-力控模式转换的实现方式,通过现场观察以及试验数据分析,可以看出模式转换过程迅速,状态平稳,冲击小。符合试验的要求,所得到的试验数据满足结构静力试验中的要求,并在结构静力试验中成功运用,为以后类似的试验提供参考及借鉴。
摘要:根据某验证结构静力试验,为满足试验件加载的要求,提出一种基于FlexTest 200加载控制系统中的位控力控模式转换控制加载技术。通过模拟试验的验证,所得到的试验数据满足结构静力试验中的要求,并在结构静力试验中成功运用,为以后类似的试验提供参考及借鉴。
关键词:控制模式,位控力控,加载控制,通道,载荷谱,飞行谱
参考文献
[1] 王全红,滕申科.飞机结构可动翼面试验加载方法[J].结构强度研究,2007(1):45-51.
[2] 胡寿松.自动控制原理[M].5版.北京:科学出版社,2007.
[3] MTS Systems Corporation. MTS Model 793.10 MultiPurpose TestWare and Series 793 application software [M/OL]. [2011-06-10]. http://www.docin.com/p-218604858.html.
[4] 孙传友,孙晓斌.测控系统原理与设计[M].北京:北京航空航天大学出版社,2002.
[5] 张国雄,金篆芷.测控电路[M].北京:机械工业出版社,2001.
[6] 刘豹,唐万生.现代控制理论[M].北京:机械工业出版社,2011.
[7] 黄德先.过程控制系统[M].北京:清华大学出版社,2011.
[8] 董景新.控制过程基础[M].3版.北京:清华大学出版社,2009.
[9] 孙卫华,胡贵彦.新型机械作动系统研究[M].北京:中国财富出版社,2009.
[10] 姜继海.液压传动[M].4版.哈尔滨:哈尔滨工业大学出版社,2007.
[11] 楼锡银.液压传动及控制技术[M].杭州:浙江大学出版社,2012.
资源加载 篇5
关键词:位移传感器,控制回路,作动筒,加载控制,控制通道
0 引言
在飞机结构静力试验中为满足对试验件加载的要求,尤其是对某些特殊考核部位和对运动过程中试件的加载,单纯的用力控或者位控作动筒达不到加载要求,提出基于FlexTest加载控制系统的外接式位移传感器实时控制加载技术,即将外接位移传感器的输出信号接入到控制系统,参与试验控制加载,达到对考核部位的控制加载要求。以下分两个不同的具体的试验情况来阐述该控制加载技术。
1 外接式位移传感器差动实时控制加载技术
大型飞机结构静力试验中,飞机机翼需要同时施加垂向载荷、航向载荷。这两个载荷在各自的加载方向上必然产生变形,由于大型飞机的机翼是细长的梁式结构,垂向载荷产生的变形远远大于航向载荷产生的变形,因此在加载时会影响航向载荷施加的准确性。为了保证试验实施加载的准确性,提出机翼航向点载荷随动加载方法,即外接式位移传感器差动实时控制技术。运用1个力控作动筒和1个位控作动筒,以及两个不同的控制回路对航向加载点进行随动加载,满足该加载点的加载载荷及加载方向的加载要求。首先进行了模拟验证试验,力控作动筒1及其配置的载荷传感器构成的控制回路确保机翼航向载荷大小的施加;位控作动筒2通过安装在机翼航向加载点固定的位移传感器1和安装在两个力控作动筒连接处的位移传感器2构成的控制回路确保航向载荷的加载方向。试验过程中由于其他垂向加载点的加载而使机翼垂向产生变形,此时位移传感器1和位移传感器2就会产生不同的位移输出,将两个位移传感器的输出信号接入到加法器运算,运算后输出电压信号给控制通道,根据命令和反馈的误差控制位控作动筒2动作。这样就实现了机翼航向载荷基于机翼垂向变形的随动加载,保证了机翼航向载荷的方向的随动。图1为模拟验证试验安装,图2为该控制回路原理图。
该种外接式位移传感器差动实时控制加载技术成功解决了飞机结构静力试验中载荷施加方向随动的问题,确保了机翼产生垂向变形情况下机翼航向载荷的准确施加,并应用于某型号结构静力中机翼航向点的加载。
2 外接式位移传感器随动实时控制技术
某型号飞机挂飞投放系统可靠性试验中,挂飞投放系统在一定的飞行高度和速度下,挂飞投放机构按一定次序收放,即挂飞投放样机按一定的轨迹运动。投放机构的收放动作由设计方通过其控制操作面板控制,对投放样机载荷的施加由试验方控制,要求试验加载控制与投放系统运动保持同步。图3为该投放样机的加载示意图,加载点在不同位置的载荷根据试验任务书计算得出。样机在运动过程中不同时刻和位置的受载情况见表1。
运用以往的固定式加载方法就不能准确地反映样机在投放过程中的受载情况,所以提出外接式位移传感器随动实时控制技术,用以准确反映样机在投放过程中不同时刻和位置所受不同载荷的随动加载技术。在投放样机的底部一侧接入位移传感器,利用位移传感器来实现两个相对独立控制系统的连接,用位移传感器的输出反映投放样机的运动位置;同时把位移传感器的输出信号引入控制系统作为位移反馈信号,通过控制系统根据位移传感器的实时反馈自动查表的形式对投放样机进行随动加载。图4为位移传感器与投放样机的连接及其运动轨迹的示意图,图5为投放样机2#加载点的SBC(Single Based Command)加载曲线,图6为投放样机3#加载点的SBC加载曲线。
该种外接式位移传感器实时控制加载技术,将两套独立的控制系统连接起来,解决了对运动中试验件随动加载的问题。
3 结语
外接式位移传感器实时控制加载技术可以解决对机翼等变形部位的航向加载点的加载,对运动过程中机构的加载等问题。另外,对于FlexTest控制系统需要完成以下几个方面的工作:
(1)位移传感器与控制系统之间的信号转换路径必须重新设计、改造;输入信号需要通过运算放大器运算后接入;同时还需要在控制系统的激励输出端接上合适的负载,有效保正控制通道的桥压不失效,确保控制系统处于正常运行状态;
(2)转换电路中负载的大小对整个控制回路的影响可以通过调整控制系统的增益放大系数来解决;
(3)所用位移传感器都需要进行标定,控制系统中其他控制参数需要以实标的方式确定,以满足加载要求和加载控制精度。
(4)试验中控制通道配置,事件动作设置,以及载荷谱设置同正常的结构静力试验的配置。
通过本次地面验证试验,验证了位控—力控模式转换的实现方式,通过现场观察以及试验数据分析,可以看出模式转换过程迅速,状态平稳,冲击小。符合试验的要求,所得到的试验数据满足结构静力试验中的要求,并在结构静力试验中成功运用,为以后类似的试验提供参考及借鉴。
参考文献
[1]董景新.控制过程基础[M].3版.北京:清华大学出版社,2009.
[2]胡寿松.自动控制原理[M].5版.北京:科学出版社,2007.
[3]孙传友,孙晓斌.测控系统原理与设计[M].北京:北京航空航天大学出版社,2002.
[4]张国雄,金篆芷.测控电路[M].北京:机械工业出版社,2001.
[5]刘豹,唐万生.现代控制理论[M].北京:机械工业出版社,2011.
数据与服务混合加载系统 篇6
申请公布日:2016.10.26
申请人:中国地质调查局发展研究中心
地址:100037北京市西城区阜外大街45号
发明人:周顺平;李晨阳;万波;胡茂胜;左泽均;叶亚琴;杨林;商云涛
Int.Cl.:G06F17/30 (2006.01) I
弹簧加载的工件夹持支架 篇7
工件夹具公司目前可提供3种弹簧加载的工件夹持支架 (见图1) , 用于在机加工、组装及外形检测中工件的精确定位和导向。Imao型固定支架结构有:4种块形、5种圆柱形和3种紧凑式微型结构。3种类型的弹簧加载工件支架均由合金钢制作而成并进行了发黑处理。
根据待加工工件的外形、台肩、不同的直径和高度, 用户可以选用适宜的支架, 并将其固定在基座的任何位置。该类支架有利于稳固工件, 并确保夹紧装置安全, 防止工件在加载或机加工力的作用下产生振动或偏转。支架柱塞的弹簧加载特点是:在工件承受载荷时能起缓冲作用并使卸载操作更简便。
块形支架能够提供8 985N的支撑力, 具有结构简单、使用灵活的特点。支架高度通过转动内六角螺栓调节, 支架本身有螺纹孔, 用以更换某个可替代的接触元件, 减少支撑结构及表面的磨损。支架上有预先加工好的孔和沉孔, 以便从顶部安装内六角螺栓。
柱形工件支架具有3 981~8 985N的承载力, 在支架柱塞顶部带有丝孔, 用以安装接触元件。柱形系列支架的特点是:易于用六角扳手紧固底部的螺栓, 安装简便。在其侧面还有一个用来锁定支架柱塞高度的螺钉, 以提供稳固的支撑和工件的精确定位。
紧凑式微型支架适用于有限的空间操作位置, 适用于轻载工况, 可以提供196N、298N和396N 3种承载力。
简支梁加载结果分析 篇8
体外预应力加固技术在桥梁加固方面已得到大量的应用。对于体外预应力加固新建简支梁的承载能力有较多的分析,但对于体外预应力加固带缝简支梁的非线性方面研究较少。本文针对简支梁,利用ANSYS有限元软件,建立了非线性有限元模型,对简支梁在施加预应力阶段、开裂状态及极限状态的挠度及应力结果进行了对比分析,最后得出重要结论。
1 有限元分析
1.1 有限元模型的建立
利用ANSYS有限元程序对简支梁进行非线性分析。几何模型的建立采用分离式模型,钢筋的处理采用体分割法。普通钢筋与混凝土划分单元一致。预应力筋单独设置,划分单元,然后与混凝土相应结点进行相应耦合,锚固端节点与体外筋节点三个自由度耦合。
混凝土采用solid65单元[1],非线性分析中采用多线性等向强化模型“MISO”;普通钢筋与体外预应力筋采用双线性随动强化模型“BKIN”;体外预应力筋选择link10单元;锚固端和转向块和加载点为防止应力集中采用solid45单元。
1.2 模型建立时应注意问题
与无缝简支梁相比,体外预应力加固的带缝梁裂缝左右两侧应单独划分网格,在裂缝处混凝土与普通钢筋无粘结,其他地方完全粘结;裂缝处考虑混凝土的相互咬合作用,设置粘结面单元,采用Targe170单元和conta173单元来模拟。对于体外预应力无缝梁与带缝梁的跨中下缘混凝土开裂荷载是不同的,在模型建立过程中要对混凝土的参数进行具体的设置。
2 仿真分析
2.1 简支梁分析
试验梁采用文献[2]中的简支梁,梁的尺寸及钢筋与混凝土的参数按文献中选取。荷载采用按跨中集中一点分级加载方式施加。荷载步设置如下:TIME=1,为预应力施加阶段;TIME=2-n,每次施加外荷载为20KN,但在接近开裂及极限状态时每次所施加荷载数量减小。
此试验梁在梁下缘混凝土达到极限拉应力时出现开裂,极限荷载达到270KN。此梁试验结果与有限元结果吻合较好。
2.2 体外预应力简支梁分析
将试验梁施加体外预应力,有效预应力为312MPa,体外预应力的施加采用降温法,一次施加完毕,预应力筋的主要技术参数如表2所示,有限元计算结果如表3所示。
将梁施加了体外预应力后,此梁下缘产生了一定的预压应力,相对于简支梁,极限荷载提高了33.33%,提高了梁的承载能力;开裂状态的荷载也提高了59.54%,大大提高了梁体的抗裂能力;极限挠度增加了6.32%。此试验梁的理论计算结果与有限元计算结果吻合较好。
2.3 体外预应力加固带缝梁的分析
此试验梁是文献中带裂缝的梁,对它施加体外预应力,缝高为352.5mm,有效预应力仍为312MPa,模型如图1及时程曲线如图2、图3、图4所示。
带缝梁在施加预应力后,下缘混凝土产生了预压应力,裂缝闭合,产生反拱,此反拱较体外预应力梁大;由于裂缝处混凝土混凝土不能承受拉应力,开裂荷载较小,而简支梁与体外预应力梁,在梁下缘混凝土达到抗拉极限强度时出现裂缝,开裂荷载较大;达到极限状态时,体外预应力带缝梁极限荷载虽比体外预应力梁小,但却比简支梁提高了18.52%,提高了梁的承载能力。
3 结论
3.1 此分析模型充分考虑了非线性的影响,有限元分析结果与理论或试验结果吻合较好,为此类结构的分析提供了有效的方法。
3.2 采用体外预应力技术可使梁的承载力得到提高,对于新建梁体还可提高抗裂性能,此加固技术是切实可行的。
3.3 模型没有考虑在施加体外预应力后,随裂缝高度的变化梁的承载能力提高情况,对于裂缝处混凝土的咬合作用考虑不是特别精确,因此对于模型的准确性有待于进一步提高。
参考文献
[1]吕西林,金国芳,吴晓涵.钢筋混凝土结构非线性有限元理论及应用[M].上海:同济大学出版社,2002.
[2]张耀庭,邱继生.ANSYS在预应力钢筋混凝土结构非线性分析中的应用[J].华中科技大学学报,2003,20(4):20-23.