FPGA的双时间法在变粘度油流量装置上的应用
2011-08-02梁华锋梁国伟马文涛
梁华锋,梁国伟,马文涛,孙 斌
(中国计量学院 计量测试工程学院,浙江 杭州 310018)
油品流量测量结果表明,油品粘度变化对油流量仪表的仪表特性有着显著的影响,但是该影响程度到底如何尚未能得到很好的研究.为了深入研究粘度对油流量仪表特性的影响,可变粘度油流量标准装置的研制就成为了必然.该装置采用带光栅尺的活塞式体积管作为标准器,具有DN15、DN25、DN50三个口径的试验管道,能够实现油品粘度在1.5~40cSt范围内的调节,流量上限可以达到25m3/h,主要用于粘度对脉冲型油流量仪表流量特性影响的试验研究[1,2].
对于精度等级为0.1级的流量仪表,为了保证仪表系数的检定精度,计数器的计量准确度至少要达到±0.01%,也就是说计数器的计数误差为±1个脉冲的情况下,要达到这样的计数精度,检定过程中计数器采集的脉冲数至少需要10000个[3,4].但由于场地大小等种种原因的限制,变粘度油流量标准装置不能加工得过大,其标准体积管的容积只有31.4L,也就是说在25m3/h的流量下,有效检定时间不足4.5s,采用传统的计数方式无法满足计数精度要求.
针对这一问题,本文选择NI公司的FPGA作为控制器,采用可以在较短的检定时间内,用较小体积的检定容器,实现计数总脉冲数小于10000仍能保证±0.01%计数精度的双时间脉冲插值法作为计数法,设计了一套基于FPGA硬件的计时计数器,实现对标准体积管光栅尺和被检表的两路信号的脉冲计数,实验结果表明效果良好.
1 双时间法的测量原理
双时间法的测量原理[5]如图1,图中K1、K2为起始信号开关.
图1 双时间法计数原理Figure 1 Principle of two-time counting method
当流量稳定后,体积管活塞在介质的推动下运行,活塞触到K1时,K1发出信号使得计数器开始计时、计数,活塞触到K2时,计数器停止计时、计数.启停时间内的实际脉冲数可以通过式(1)计算得到.
式(1)中:N为经双时间法插值后的脉冲信号数;N1为计数器记录下的脉冲信号数;T为检测启停信号间的时间间隔;T1为从K1发出信号后第一个脉冲上升沿到K2发出信号后第一个脉冲上升沿之间整脉冲周期对应的时间间隔.
图1中,若控制开始信号在1位置,控制结束信号在1′位置,则是在差不多相同的控制时间T内,记录脉冲数最少的情况.控制开始信号到来时,被检信号的第一个脉冲上升沿刚好没有被记到,停止信号到来后的第一个脉冲上升沿又尚未到达,恰好又没被记到,这样在差不多相同控制时间内几乎少计了一个脉冲.若控制开始信号在2位置,控制结束信号在2′位置,则是在差不多相同的控制时间T内,记录脉冲数最多的情况.此时,紧接着开始信号,被检信号的第一个脉冲上升沿到来,被记录;最后一个脉冲上升沿刚被记录,停止信号就到了,这样在差不多的控制时间内又几乎多计了一个脉冲.
所以,在相同的计数脉冲情况下,采用传统的计时方式最大会带来一个脉冲周期的误差,若信号的脉冲频率较低,脉冲周期变长,带来的误差也更加明显.
2 硬件设计
根据以上双时间法原理,设计的计数系统的基本结构如图2.它主要由工控机、下位机、数字输入模块、及标准的脉冲信号发生器M1和M2组成.
图2 计数系统结构Figure 2 Sructure of counting system
下位机选择了NI公司以FPGA作为控制核心的cRIO-9073系统,该系统由带FPGA控制器及C系列模块两部分组成.FPGA是一种可编程门阵列,通过编译软件程序,可以形成特定功能的硬件电路[6].由于变粘度油流量标准装置的标准体积管容积很小,为保证检定过程的计数精度,需要分别对体积管光栅尺和被检表脉冲信号进行双计时,也就是要求同时实现3路计时,2路计数,一般的控制器很难完成这样的任务.cRIO-9073具有32位的计数长度,硬件时钟频率高达40MHz,且可以通过软件编程的方式定义足够多的计时、计数器,结合数字输入模块就能够实现所需计时、计数功能[7].该控制器既可以通过C系列模块轻松实现各种数字、模拟量的输入输出,还可以通过网线实现与上位机通讯,用于显示采集的数据.
由于变粘度油流量标准装置的机械结构尚未完成加工,光栅尺与被检表的脉冲信号分别通过两台标准脉冲信号发生器M1、M2来模拟,设定M1的信号频率为10kHz,M2的信号频率为40Hz.两路脉冲信号通过数字输入模块NI9423实现与控制器的连接,控制器再通过Ethernet实现与工控机通讯.
3 软件设计
计数系统的软件功能通过虚拟仪器开发平台LabVIEW来实现,其功能结构如图3所示.
图3 程序功能结构Figure 3 Functional structure of the program
计时器T、T标、T被是根据控制信截取FPGA板上时钟的一个时间段.当开始信号脉冲(第一个控制脉冲)到达时,触发器D1的Q端输出高电平,计时器T的选择结构对应逻辑真,立即开始计时[8].此时,触发器D2、D3虽未立即开始工作,但它们的D端均已变为高电平,一旦光栅尺和被检表各自在开始信号延后的第一个信号上升沿到来就触发这两个DQ触发器的Q端输出高电平,计时器T标、T被就立即开始计时.当停止信号脉冲(第二个控制脉冲)到来时,触发器D1再次被触发而使Q端变低电平,计时器T的选择结构立即停止计时.但D2、D3触发器的Q端却仍保持高电平,直到分别被光栅尺和被检表在停止信号延后的第一个信号上升沿再次触发,才使得Q端输出低电平,继而使得计时器T标、T被停止工作[9,10],计时器T、T标、T被记录了控制信号间的时间间隔.
FPGA的计数器与传统的硬件计数器有所区别,它们采用的是软件计数的方式.该计数器由一个三与门、一个大于号、一对移位寄存器和两个选择功能块组成,用于实现对被测信号的上升沿进行判断、记录.这里要解决的主要问题是应严格保证计数器只记录开始信号与结束信号之间的脉冲上升沿个数或下降沿个数(一般使用上升沿),而不受方波信号高低电平的影响.控制信号的时序逻辑如图4.
图4 信号时序逻辑Figure 4 Temporal logic of the signal
当开始信号到来,在1位置,D1的Q端跳变成高电平,D2、D3的Q端还是低电平,不论被测信号此时是否为高电平,三与门的输出端始终为低电平,大于号的右端为逻辑假,选择结构对应逻辑假的操作使计数器N标保持原来的值,初值为0.等到控制开始信号到来后,被测信号的第一个上升沿触发D2、D3的Q端输出高电平,此时由于三与门的输入端均为高电平,如位置2,它的输出也为高电平.与移位寄存器中保存的低电平相比较,大于号输出逻辑真,选择结构对应逻辑真的操作使计数器N标、N被加1,此后对输入信号的每一个上升沿作加1操作.等到结束控制信号到来后,D1的Q端变为低电平,位置3这个信号脉冲被记录,而位置4的脉冲由于D1的Q端已经处于低电平而未被记录.计数器N标、N被记录的数据就是对应控制信号的脉冲数.
将记录的数据T、T标、N标代入公式(1)即可得出光栅尺的插值脉冲数.同理,根据T、T被、N被可以计算得到被检表的插值脉冲数.
4 实验结果及分析
假定标准体积管的有效检定容积为30L,最大流量为27m3/h,最大流量下检定时间为4s,光栅尺发出的最大脉冲频率为50kHz,则标准体积管的流量系数K标为6666.667L;被检表最大流量为27m3/h,最大流量对应的脉冲频率为200Hz,则被检表的仪表系数K被为26.667L.
假设标准体积管与被检表信号完全线性,即在全流量范围内仪表系数为常数.实验采用高稳定度的信号发生器Tektronix AFG3101和Agilent 33250A分别模拟标准体积管的光栅尺脉冲信号和被检表脉冲信号.设定Tektronix AFG3101的频率为10kHz,相当于通过标准器的流量为5.4m3/h.在该流量下被校表的输出频率应为40Hz,由Agilent 33250A模拟输出.测量结果如表1.T表示控制信号之间的时间;N标、T标分别表示光栅尺脉冲数和对应脉冲数的完整周期时间;N被、T被表示被检表的脉冲数和对应脉冲数的完整周期时间;F标(N标/T标)、F被(N被/T被)分别表示检测得到的标准信号和被检表信号频率,Q被为被检表的流量.
从表1中可见,经计时计数器测量得到的两台信号发生器的频率非常稳定.对于相同脉冲数的完整周期测量时间,计时误差最多相差1μs,且启停控制时间T的值与T标、T被的值相比有比T标、T被大的,也有比T标、T被小的,呈随机性分布,符合启停控制信号是随机发出的规律.鉴于上述两点可以说明硬件控制逻辑的正确性与实验数据的可靠性.
观察实验数据可得,第11组数据,被检表在相同控制时间的情况下采用传统计数方式比采用脉冲插值计数方式多计了0.49个脉冲;第14组数据,被检表在相同控制时间的情况下采用传统计数方式比采用脉冲插值计数方式少计了0.57个脉冲.理论上,差不多相同控制时间内最大计数误差可以接近一个脉冲,但实验碰到这种情况的概率较小,表中被检表计数误差最大的是第14组数据,相差0.57个脉冲.如前面的假定,标准体积管的有效检定容积为30L,最大流量为27m3/h,光栅尺输出的最大脉冲频率为50kHz,标准体积管的流量系数K标为6666.667L.对应第14组数据,算得排出的标准体积为18.959L,标准流量为5.400m3/h.在27m3/h的流量下,被检表的脉冲频率为200Hz,则被检表的仪表系数K被为26.667L,对应第14组数据计算得到未经插值和插值后的流量分别为5.394m3/h和5.400m3/h.与标准流量相比,未经插值的被检表流量误差为-0.116%,经过插值之后被检表流量则几乎完全消除了误差,说明双时间插值收到了明显的效果.
这是在被检表脉冲数为500左右的检测结果,理论上可能产生最大计数误差为±0.2%(1/500).假如被检表信号频率更低或检测时间更短,记录的脉冲数就会更少,双时间插值的效果也将更加明显.
表1 标准信号测试结果Table 1 Test result of standard signal
5 结 语
采用FPGA控制器设计的双路双时间脉冲计数系统具有较高的计数精度,成功解决了由于计数脉冲数不够造成检定误差增加的问题.该系统在变粘度油流量标准装置上的应用,可以实现以较小的体积管容积来获得对被检表较高精度的检定,用于准确分析得到粘度对脉冲型容积式流量仪表特性的影响.这对研究容积式流量仪表的适用环境,提高其计量精度具有重要的意义.
[1]冷 林,张吉祥.温度对油品计量交接的影响[J].中国科技信息,2008,18:48-56.
[2]梁华锋,梁国伟,朱 跃,等.油品混合粘度合成方法的试验研究[J].中国计量学院学报,2010,21(3):218-221.
[3]梁国伟.脉冲型流量传感器仪表系数准确性研究[J],计量技术,1998,11:26-28.
[4]国家技术监督局.JJG 667-1997液体容积式流量计检定规程[S].北京:中国计量出版社,1998.
[5]苏彦勋,梁国伟,盛 健.流量计量与测试[M].北京:中国计量出版社,2007:275-277.
[6]朱 昊,刘化君,宋宇飞.FPGA在复杂开关逻辑系统中的应用研究[J].机电产品开发与创新,2011,24(1):152-154.
[7]陈树学,刘 萱.LabVIEW宝典[M].北京:电子工业出版社,2011:568-572.
[8]阎 石.数字电子技术基础[M].北京:高等教育出版社,2006:232-236.
[9]梁国伟.脉冲型流量传感器检定仪的设计和应用[J].自动化仪表,2003,24(8):14-16.
[10]梁国伟,赵蓓茁.双时间法在脉冲型流量传感器检定中的应用[J].中国计量学院学报,2002,13(1):51-55.