1测量控制单元完成转速的计算、显示、报警阈值的设定、报警输出、自检等功能,具体要求如下:1)报警阈值设定:通过两组各五位BCD拨码开关设置停堆阈值和甩负荷阈值,输入范围:100. 0~2000. 0 r/ mim;2)转速显示:5位数码管显示当前转速,显示精度xxxx. x r/ mim;3)报警输出:当测量得到的转速持续超出阈值范围1s后,相应报警指示灯,报警继电器动作,显示0000. 0,停止测量,报警8s后,恢复测量;4)自检:当波段开关拨到自检位置时,该单元将测量信号自动转换为标准脉冲信号40Hz,显示1200. 0r/ mim.
该单元在高精度测量和实现上述功能的同时要求极高的可靠性,鉴于FPGA运算速度快、精度高、对时钟脉冲敏感性好、无死机状态等特点,因此采用FPGA作为监测的主要手段,同时考虑到系统长时间处于高温高热的运行环境,系统使用微处理器W77E58作为FP2 GA出现故障时的热备装置。一旦发现FPGA出现故障,微处理器(MCU)W77E58将实现所有测试功能,同时产生FPGA故障信号,总体结构如图1所示。
转速监测系统的FPGA实现对脉冲信号的测量方法有两种,分别是周期测量法和频率测量法,频率测量法一般只能实现整数测量,而本系统要求测量精度为0. 1 r/ mim,因此采用了以测量周期的方法为主,而辅助以频率测量,用以防止抖动。根据系统精度要求,经计算可知采样频率不低于2M Hz.
由于数值转换对乘除法模块要求较多;系统对时钟序列要求严格,需要使用锁相环对时钟信号进行同步、调理以及分频等操作;系统需要处理大量的状态转换。经使用仿真软件Quar2 tusII进行估算,需要3900个以上的逻辑单元以及60个左右的I/ O接口。经过多次优化验证,采用AL TERA公司Cyclone系列工业级别EP1C6Q240I7,它内嵌92106位存储区间,可提供5980个逻辑单元(约为60000门)、两个锁相环和双倍数据传输速率(DDR)的接口电路。
2. 1系统关键模块的设计:2. 1. 1主时钟模块在本设计中由于采用了周期测量法,因此基准时钟的选取直接关系到测量结果转速的精度,转速1999. 9、2000. 0 r/ mim,分别对应周期为29998. 5和30000μs,设基准时钟周期为t,则可知t至少需要小于1. 5μs,为保证精度采用了2M Hz基准脉冲(0. 5μs),该时钟通过使用FPGA内部锁相环对晶振输出进行同步、调理以及分频而产生,锁相环的使用保证了基准时钟的稳定及精度。
2. 1. 2通讯模块为提高系统的可靠性,采用了FPGA + MCU的双机热备模式。FPGA与MCU的通讯连接由三根信号线组成。分别是clkmcu、SDA、SCL、clkmcu是由FPGA内部产生的代表FPGA工作状态的脉冲输出,MCU不断检测这个脉冲信号,一旦发现clkmcu频率错误,则认为FPGA出现故障,MCU取代FPGA开始全部测量工作,同时给出报警信号。为达到抗交流干扰目的,clkmcu频率设为22. 856 Hz,由FPGA内部的主时钟分频模块产生。SDA、SCL为FPGA的I2C总线接口,用于MCU和FPGA通讯。
2. 1. 3测量/报警模块该模块主要实现对主泵转速的测量、计算、报警阈值的读取、各类报警信号的产生。
由于测量精度要求较高,因此对于待测脉冲的采样是本模块设计的关键。传统的方法是在基准时钟沿触发的同时异步监测待测脉冲的沿,同步性较差,且无法消除相对误差的积累。
本设计中引入了信号量Pe用以标示转速脉冲沿的到来。Pe采用了一个两位的移位寄存器,在基准时钟的同步下采集输入脉冲并进行移位,对该寄存器的高低两位进行异或产生一个正脉冲,长度为1个基准时钟周期的触发信号作为转速脉冲到来的标志。
可以看出pe在clk的一个上升沿拉高,紧接着的上升沿置低,横跨一个clk的下降沿,系统中采用clk下降沿进行触发计数,可以保证clk的下降沿能够采到pe的变化,即监视到转速脉冲的到来,采用这种方法对输入脉冲采样的大误差约为1个clk周期(丢掉一个clk周期),可消除80 以上的相对误差,有效避免了相对误差的不断积累。
2. 2测量/报警模块的Verilog实现测量/报警模块利用Verilog HDL硬件描述语言进行行为建模,采用有限状态机实现。
其中:pe:标志转速信号datain的上升沿;clk:2M计数主时钟cout、cpe、c1s、c8s:转速周期、转速频率、1s时间、8s时间计数器Tup、Tdown:由输入阈值计算得到的转速时间的上下限Fup、Fdown:由输入阈值计算得到的转速频率的上下限各状态说明如下:1)空闲状态:空闲态时不断检测转速脉冲沿标志pe,当有pe到来则转入周期计数状态。
2)周期计数状态:启动由clk下降沿触发的周期计数器,同时不断监测是否有pe的变化,如果在周期计数已经超出计数大值仍然没有检测到pe,则认为主泵可能停机,转入频率计数状态;如果监测到一个新的pe,则表明主泵转过一周,比较计数结果和输入阈值转化的周期数值,如果没有超出,输出计数结果,并清空周期计数器,重新转回周期计数状态,进行新的一轮的监测;如果计数结果超出阈值范围,则转入频率计数模块。
考虑到使用测量周期的方法来得到转速,周期属于时间量,而转速属于频率量,如果采用只检测到有1次超出周期量程的情况就转入转速测量状态不能宏观地反映系统的当前状态,导致抖动增加。所以在周期计数模块中加入了余量计数器,采用了当连续n次超出周期量程后进入频率测量状态的办法(具体次数由现场调试决定,一般为10次左右)。同时在频率测量中,也会把这已经超出的n次加入频率计数结果中一起在1s计数结束后和阈值的频率量程进行比较来决定是否转入8s报警状态。
3)频率计数状态:启动由pe控制的频率计数器和由clk下降沿控制的1s时间计数器,计算1s内pe的个数,然后在1s计数结束时判断pe计数器的数值是否超出阈值转化的频率的范围,如果超出则进入8s报警状态,否则,转入空闲状态等待新的pe的到来。
4)报警状态:启动由clk下降沿触发的8s计数器,并将停堆报警信号或者甩负荷报警信号拉高,8s计数结束后,拉低相应的报警信号,转入空闲状态等待新的pe的到来,进行新一轮的监测。
3结束语该系统经过15d以上的高温老化试验,工作稳定,显示精度达到0. 1r/ min,实际测量精度达到0. 06r/ min,满足设计要求。FPGA + MCU的双机热备方式,大大提高了系统在实际中的稳定性和可靠性。整个系统具有测量准确,安全性高的特点。