基于FPGA的静力加载谱生成与控制算法研究
2021-06-30王家乐
王 萌,张 静,王家乐
(北京强度环境研究所,北京 100076)
0 引言
结构静力试验技术,是用试验的方法观察和研究构件或结构在静载荷作用下的刚度、强度和稳定性,分析其应力分布和变形情况。静力加载试验,是用试验技术和设备模拟复现载荷、边界条件和疲劳极限,它不仅是验证结构形式的合理性和结构静力分析正确性的重要手段,而且为建立新的分析模型和工程理论提供结构特性参数,在产品鉴定、安全评估提供试验资料和实测数据,为研制新型导弹与运载火箭积累设计资料,对改进结构设计减小结构质量与提高产品可靠性等方面均起着重大作用。
在进行结构静力试验中,按试验载荷类型分类,可分为分布载荷试验,单一载荷试验和组合载荷试验[1]。在加载控制中需要对试验条件下的载荷进行生成和控制,成熟的多通道静力加载控制系统基本由国外垄断,国外相关产品,如MOOG和MTS产品功能完备,可靠性高,但与航天静力试验规范、操作流程等并不完全匹配。本文通过分析国内试验流程,参照经典谱参数设置方式实现谱的生成与控制,开发基于FPGA的可执行的加载谱生成、命令控制算法与程序,满足现有控制中对加载谱和命令的操作,实现单载荷步和多载荷步的生成与控制[2-3]。
1 加载谱生成算法
在静力加载试验中,加载情况多为分级加载、单调缓慢加载和循环加载。每一级加载用一个载荷步表示,多个载荷步组合成为试验加载谱。在经典谱参数设置中,上位机操作者可以根据试验需求定义多个不同的目标值,每个目标值为一个数组,用于表示多通道的目标值,然后根据目标值、曲线类型、时间和循环次数等参数定义不同的载荷步。选取不同的载荷步形成一个载荷步组,不同的载荷步组及其重复次数组成一个大载荷步,不同的大载荷步及其重复次数组成一个试验谱,即加载谱[4-7]。
在谱生成算法中,首先基于以上参数将加载谱组装成一个个载荷步;第二步获取一个周期的基本点,1 024或2 048个点;第三步以半周期点为基础,通过查表、插值算法形成当前控制频率下的一个载荷步的信号;第四步将各个载荷步的信号进行连接,形成加载谱信号,并根据不同试验要求实现加载谱生成过程中的各种控制[8-9]。
一个载荷步信号是从起始值到目标值的离散点的集合,形成该信号需要的参数包括曲线类型、所用时间、次数、起始值和目标值。其中曲线类型指从起始值到目标值的曲线形式,如折线和正弦等,图1为一个周期内的三角波和正弦波曲线样式;起始值到目标值的过程为半周期波形(0~1);所用时间指信号生成过程中由起始值到达目标值所用的时间;次数是指达到目标值后返回原值再次到达目标值的次数(1~0~1),即循环次数[10-11]。
图1 曲线基本点
载荷步信号是由基本曲线点通过插值生成的。基本点为一个周期内的1 024个等间隔点(1~1 024)的取值,如图1所示。为提高精度,也可以在某一种信号中选取2 048个值作为基本点。基本点为0~1~0的过程(不包含首个0点)。在固定采样频率下,根据所用时间参数可以计算出载荷步信号离散点的数量N,通过对前半周期基本点进行查表、插值,可以得到0~1的N个离散点,将离散点通过运算可得到由起始值到目标值的离散点。同样的,通过对后半周期基本点进行查表、插值可得到目标值到起始值的N个离散点,对离散点进行组合即可得到多次到达目标值的离散点,即载荷步信号,如图2所示[12-14]。
图2 载荷步算法
在加载谱中,载荷步与载荷步之间是连续的,一个载荷步的起始值为上一个载荷步的目标值或生成中断后的终值,根据载荷步信号生成算法可以对加载谱中所有相邻两个载荷步的离散信号进行连接,最后得到整个加载谱的离散信号。
2 加载谱的FPGA实现
2.1 单载荷步信号生成
曲线基本点可通过LabVIEW RT中的提供的函数计算出一个周期内的三角波和正弦波基本点数据,通过DMA FIFO存储到FPGA基本点寄存器的不同地址中,RT同样通过DMA FIFO将载荷步参数发送到FPGA并存储在参数寄存器中。FPGA根据载荷步参数,选择一个波形基本点后对其进行相位累加、查表、线性插值和半周期计数,得到归一化的载荷步信号,如图3所示。
图3 载荷步生成算法FPGA实现
对曲线基本点进行查表、插值是将当前点相位的一部分字节长度作为地址进行查表,一部分字节长度做线性插值运算。每经过一次基本点数据的查表与计算,相位便进行一次累加,累加量与曲线的频率(由载荷步的时间参数计算获得)和当前采样频率有关。对于正弦信号,其相位角φ、角速度ω和频率f的关系如下:
(1)
在采样频率固定的情况下,对于离散系统而言(采样周期Δt为固定值),有:
φ(n)=φ0+2πnfΔt
(2)
采样频率R=1/Δt,则:
(3)
上述公式表述了归一化的累加相位pn与曲线频率f和采样频率R之间的关系,相位pn的周期为1,该公式对于三角波同样适用。
在FPGA程序中,设置pn的数据格式为无符号的32位定点类型,而基本点在寄存器中的存储类型为无符号16位定点类型。基本点数量为1 024时,每两个基本点之间需进行27次插值。相位pn的高10位(210=1 024)对应着基本点在寄存器中的存储地址,可用于查表索引,高10位之后的7位(27),其大小与插值次数对应,每完成两个基本点之间的所有插值后,便向高10位进1,基本点的存储地址便加1,插值次数归零。插值次数n可用于线性插值计算插入点yn:
yn=(ypn10+1-ypn10)×xpn7+ypn10
(4)
其中:ypn10是由相位pn的高10位作为查表的地址从基本点寄存器中索引到的基本点,ypn10+1是紧邻ypn10的下一个基本点,xp7是由相位pn的后高7位的大小决定的一个[0,1)之间的数值。若基本点数量为2 048,每两个基本点之间则进行26次插值,相位pn的高11位对应着2 048个基本点的存储地址,高11位之后的6位,大小与插值次数对应。
查表插值计算在FPGA上是实时进行的,每满半周期便计数1次,若载荷步参数中循环次数为m,则共计数2m-1后停止计算,并将数值1代替计算出的插值,保持数值1实时输出。输出的新数值点同样为归一化数据,与目标值和起始值的差值进行比例运算得到从起始值到目标值的具体增量,再与起始值进行累加得到当前载荷步的输出信号。
2.2 多载荷步信号生成
多载荷步信号生成采用载荷步信号拼接的方式实现。由于试验谱参数设置比较复杂,在程序实现上,首先在RT上对其参数进行处理,如图4所示,将目标值添加进入载荷步参数中,载荷步组、大载荷步和载荷谱参数按执行顺序组成由载荷步编号形成的数组,通过数组序号可索引到载荷步编号,再根据编号索引到对应的具体载荷步,综上所述,加载谱是一个个载荷步按顺序组成的集合体。
图4 RT中对试验谱参数的处理
由于在不同的载荷步组中载荷步可任意组合和重复,在大载荷步中载荷步组也具有重复次数等,所以形成的载荷步编号数组的数量有可能会很大。考虑FPGA的资源问题和载荷步信号之间的连续性,使用两个参数寄存器或一个参数寄存器的两个地址分别存储连续的两个载荷步参数,在FPGA中通过交替索引和顺序更新实现载荷步的连接。如图5所示,在RT中存储所有载荷步的参数和载荷步编号数组,试验加载谱按照载荷步编号数组的索引序号顺序生成相应的载荷步信号。开始运行后,按照数组序号的奇偶性分别将第1、2个载荷步的参数和序号(序号分别为0和1)存储在对应的寄存器或同一寄存器的两个地址中。按存储到不同寄存器为例,FPGA首先选择“参数寄存器0”进行载荷步信号的生成,生成完成后立即切换到“参数寄存器1”生成第2个载荷步,FPGA通过移位寄存器实时存储生成信号的当前值。第1个载荷步生成完成后的最终值会作为第2个载荷步的起始值,这样能够将两个载荷步顺利连接起来。同时FPGA将当前载荷步运行完毕的信息上传到RT,RT根据该信息将序号为2的载荷步参数和序号下发到FPGA并存储在“参数寄存器0”中。FPGA通过交替索引和更新寄存器实现所有载荷步之间的顺利连接。
图5 试验谱运行流程
在参数寄存器中存储的载荷步序号信息用于确定当前运行的载荷步在载荷谱中的位置,载荷步数组大小值在开始运行前通过“读写节点”发送到FPGA,当载荷步序号等于载荷步数组的大小值-1时,谱段将不再更新,运行完该载荷步后停止运行。
基于以上算法和程序,在FPGA上生成了一个试验加载谱信号,该谱由三个载荷步组成,如表1和如图6所示,信号的采样频率为2 kHz。载荷步与载荷步之间实现了平滑连接。
表1 加载谱信号参数
图6 加载谱信号
2.3 载荷步信号控制
在试验谱信号生成过程中,试验人员可对其进行控制,包括停止到零、谱的单步调节、单点控制、选择谱段控制、运行下一载荷步、控制方式切换等。
停止到零是一个特殊的载荷步,其作用是在试验谱生成过程中停止谱的生成,并将信号恢复到零的过程或谱运行完成后自动恢复到零的过程。停止到零载荷步的目标值为0,次数为1,将其参数存储到“参数寄存器2”中。当监测到最后一个载荷步(序号等于载荷步数组大小值-1)且运行完毕后,FPGA索引该参数寄存器;或在载荷步生成过程中,通过主动控制直接切换索引,以便能够在加载完成后或过载状态下卸载。
在静力加载试验中,除实时运行试验谱外,还能够进行载荷步的逐级加载,即一次加载只运行一个载荷步然后保持加载值,此时就需要对谱进行“单步调节”。“单步调节”的FPGA实现中,仅需通过DMA FIFO发送该载荷步参数信息且序号参数设置为1,总的载荷步数量设置为1即可,运行完该载荷步后不会触发停止到零载荷步,实现保持最终加载值的输出。
谱的“单点控制”与“单步调节”类似,不同之处在于该控制方法可以重新设置目标值、时间、曲线等参数。在RT中需要将其参数重新组装成载荷步参数,之后按照“单步调节”的方式下发信息,实现上位机操作者的任意加载设置。
“选择谱段控制”指在设置好的试验谱中,不需要从第一个载荷步开始生成信号,而是可以任意选择一个载荷步作为起始载荷步进行加载。根据选择的谱段信息,在RT中索引到该载荷步和其下一载荷步,将参数和序号下发到FPGA进行信号生成即可,后续试验谱段的执行与原试验谱运行方式完全相同。
“运行下一载荷步”指在当前载荷步停止后,根据试验谱载荷步的顺序生成下一个载荷步的信号,生成完成后停止。其在FPGA的实现中与谱的“单步调节”类似,不同之处在于不需要在RT中选择某个载荷步,而是直接在设置好的试验谱中选择下一个序号的载荷步,然后下发参数信息和序号即可。
在静力加载试验中,控制方式分为位移控制和力控制两种,“控制方式切换”是指位移信号和力信号转换反馈的过程。力控切换到位控时,为保持输出信号没有较大的变化(当前位置和受力不变),加载谱需保持当前输出,等到控制参数切换后输出信号需立即切换为位移反馈量,同时试验谱由加载谱更换为位移谱。位移谱一般为相对量,在参数下发到FPGA中后需根据当前反馈转换为绝对量。
3 加载谱信号分析
由于插值点与实际点有误差,对于16位插值来说,分辨率为3.05176E-5,如果不是其整数倍,均会导致误差的存在,16位基本点的取值如表2所示。
表2 16位曲线基本点的取值
正弦基本点中最大间隔为:
sin(n2)-sin(n1)=0.00308228
三角曲线基本点为等间隔,y(n2)-y(n1)=0.001 953 12,得出最大插入点数量为101,为计算方便,在FPGA的实现上进行128(27)次插值,以充分利用16位的分辨率。
控制频率设置为2 kHz,通过对载荷步时间参数的设置,在FPGA上分别实现0.1 Hz、1 Hz、20 Hz和300 Hz频率的载荷步生成,选取频率所产生的信号数据均不为1 024的整数倍或整数分之一,同时最后的输出值要保证数值1的输出,查表插值后会产生一个较大的误差。通过对信号数据和上位机参考数据进行比较,得到的误差如表3所示,其归一化误差均在0.01%以内。在FPGA实现上,为保证控制的一致性,将力控的压力值和位移控制的长度值均通过灵敏度和数据格式转换,形成有符号的16位定点数,取值范围为±16,可与±10 V量程的传感器匹配。此时起始值与目标值差值的最大比例系数为32,其误差仍能够控制在0.01%以内。
表3 误差表
在载荷步连接过程中,控制程序是通过切换参数寄存器的方式实现的,由于参数寄存器中信息的更新需要RT与FPGA相互配合,二者在数据传输中存在时间差,该时间差对载荷步的总持续时间有影响。RT与FPGA的交互信息是通过“读写节点”进行的,该通讯是实时的,然而RT在对其进行监测时的最大时间间隔为10 ms。为保证RT将新载荷步信息下发并存储到空闲的参数寄存器中,以实现载荷步的顺利连接,每个载荷步的总持续时间不能少于10 ms。通过使用cRIO-9035进行加载谱生成试验,结合硬件资源实现了八通道加载谱不同目标值的生成与控制过程,各通道采用串行运算方式,单通道循环一次用时约50 ns,综合其他控制算法FPGA可实现50 kHz控制频率的信号生成。
4 结束语
本文研究的静力加载谱生成和控制算法,在FPGA上实现了加载谱的信号生成和控制手段,满足了当前静力试验的加载操作需求。该算法通过利用RT与FPGA的信息交互,合理分配了计算资源。综合FPGA的资源配置,能够对控制通道进行扩展。通过对生成的加载谱信号进行分析,其误差在静力加载的允许误差范围内,满足静力加载试验的单通道或多通道同步控制需求。对于多通道独立控制,在FPGA上需独立完成加载谱的寄存和实时解析功能,同时不同通道载荷步的切换与更新互不干扰,生成的加载谱与位控和力控的PID控制算法相配合,以实现静力加载控制器的试验验证。