Abstract: For the needs of high accuracy, high reliability and multifunction of a weighting control system, the software and hardware design methods of a SOPC based on multiple Nios II Embedded softcore CPUs are given. Weighing senor,A/D converter AD7730, the mean filter algorithm which can remove extreme values and the predictive control algorithm are used to implement the high precision measurement and the automatic pack control of the pulverized material. The system has the advantages of low cost, high stability, short development period and good extensibility and so on. The field test result indicates that the weighting error of the system is less than 0.2%.
Key words: SOPC;Nios II softcore processor;FPGA;AD7730;dynamic weighing
在化工、水泥、粮食、饲料等行业的生产过程中,需要对物料进行定量称重控制,完成自动称重包装。物料可以划分为颗粒、粉末、液体等类型。采用人工进行的定量称重包装不但效率低,而且计量精度低。全自动定量称重控制系统不但满足很高的计量精度,而且具有很强的稳定性,且具有精度高、功能强大、操作简便等特点。
随着嵌入式系统和微电子技术的发展,全自动定量称重控制系统的实现技术也在不断地发展。可编程片上系统(SOPC)是一种灵活高效的SOC设计方式,它根据系统设计的需要将CPU、存储器、I/O等各种IP核集成到一个可编程逻辑芯片(FPGA)上,构成一个可编程的片上系统。采用SOPC设计方式可以很容易对已有的设计进行修改,灵活性高[1]。
本文设计的定量称重控制系统采用Altera公司的SOPC解决方案,它基于嵌入式软核Nios II多核结构, Nios II软核是一个32位RISC嵌入式处理器,性能超过200MIP,在性能上Nios II可满足当前的大部分嵌入式产品的设计。Altera公司提供了完整的开发套件:Quartus II 、SOPC Builder、Nios II IDE和仿真工具等软件,并将它们无缝地集成在一起,这为当前嵌入式系统设计提供了新方法,并带来了巨大的便利,可轻松实现从底层的硬件设计到上层的软件开发,缩短开发周期,降低开发的复杂性。
本系统要求称重测量误差小于0.2%,且系统的功能比较复杂,既要实时处理采集过来的数据,还要实现控制、显示、存储以及与上位机通讯等功能,同时还要实现复杂的称重预测控制算法[2],一般在几秒中之内要完成物料的动态称重测量和包装,特别地,系统若要控制多路称重传感器的测量和包装,采用单CPU来控制的话,势必会影响到系统的速度,很难实现高精度的称重测量和控制需求。可以考虑采用多CPU系统来实现。传统的SOC多处理器系统使系统结构复杂,可靠性降低,且增加了系统的开发难度。
采用SOPC的实现方案,很好地解决了系统实现功能复杂性和系统设计复杂性的矛盾,Nios II 5.0及以上版本支持多处理器系统的创建和调试。多个Nios II处理器能够有效地共享系统资源,由于SOPC Builder允许用户轻松添加多个处理器到系统中,建立多处理器系统的难点已不再是硬件的排列和连接,而在于多个处理器的软件的设计,使它们正常操作,相互之间不产生冲突。
为防止多个处理器的相互干扰,在Nios II开发套件中包含一个硬件互斥核(mutex core)。这个硬件互斥核允许不同的处理器在某一时间段声明对共享资源的所有权。一个处理器对资源的临时所有权防止共享资源被其他处理器破坏。在Nios II IDE中,对多处理器系统的调试也比较容易[2]。
采用多处理器系统实现的全自动称重控制系统,CPU功能划分如下:CPU1完成键盘参数输入、数据显示、打印、与上位机通讯等功能,CPU2,CPU3,…,CPUn分别完成每路的物料的动态称重测量和控制,具体包括数据采集、数据滤波,称重预测控制算法软件或硬件实现以及自动包装控制等功能。图1给出了包含2个Nios II CPU 的系统硬件结构图。CPU各自运行独立的软件,之间通过片上存储器实现数据的共享。
图1 称重控制系统结构图
本设计采用Altera 公司的新一代低成本FPGA —Cyclone II实现SOPC设计,系统硬件主要包括FPGA上的Nios II处理器系统和FPGA外的接口和外设两部分。Nios II处理器系统主要由基于Avalon Bus 的Nios II CPU1、串行接口、PIO、存储器控制器;Nios II CPU2、定时器、PIO控制器以及片上RAM、互斥核等IP组成。与FPGA相连的外设包括串行配置器件、Flash、SDRAM、键盘、LCD显示器、打印机、AD7330、料位、料门开关等,称重传感器与AD7330直接相连,通过定时器提供系统的定时时钟和定时中断请求信号;串口通过RS485总线与上位机通讯,实现多Nios II系统的上位机监控。通过PIO可实现对AD7330、料门开关、键盘、LCD显示器、打印机等外设的控制,存储器控制器分别与片外SDRAM和Flash连接,实现对存储器的访问。
本控制系统硬件设计与实现的步骤如下:
首先在SOPC Builder中,使用Altera公司提供的IP Core,对Nios II CPU和各外设模块的特性、参数大小及在系统中地址分配等进行设定;然后启动SOPC Builder中的Generate,使之生成用于综合和仿真的文件;最后,使用Quartus II软件锁定端口引脚,对生成的Nios II系统进行仿真、综合、适配、下载和FPGA 配置。这样即实现了如图1所示的SOPC硬件系统。
数据采集及其处理由称重传感器、模数转换AD7730和CPU2完成,AD7730的数据采集电路如图2所示。图中,由桥式压力传感器输出电压信号进入到输入通道AIN+和AIN-,经过模数转换,再经过AD7730中的数字滤波器进行滤波,滤波后的数据通过SCLK、DIN、DOUT等信号通过中断的方式送给Nios II进行相应的处理,得到期望的精确数据。
图2 AD7730数据采集电路图
AD7730 是美国ADI 公司推出的一款高分辨率的A/D 转换器, 采用双通道全差分模拟输入,可直接和传感器输入信号相连,并可自校准和系统校准[3]。AD7730 特别适合用于宽动态范围内的低频信号A/D 转换, 具有优良的抗噪声性能。在称重控制器中使用AD7730 分别与称重传感器和CPU2直接接口。为了能够得到高精度的采集数据,CPU2要有很高的工作频率。CPU2的工作频率设为50MHz,专门负责数据采集及算法的处理。每隔10ms,CPU2从AD7730中读取A/D转换值, 然后进行数字滤波处理,得到期望的近似数据。
CPU1主要完成显示、存储、打印和通讯等功能。这些功能由CPU1控制外围I/O设备来实现。称重开始前,先通过液晶显示屏和键盘进行人机界面交互,输入控制参数,系统称重开始后,CPU1通过共享存储器获取并显示CPU2检测的称重数据,CPU2把检测值和标定的参数值进行比较,根据比较的结果进行称重预测控制算法[4]的计算,根据计算结果输出控制信号进行称重控制。称重结束后可以由CPU1把本次称重以及累积称重的结果打印出来,同时把结果记录在Flash中。CPU1可同时控制几台甚至十几台称重控制器,且通过RS485与上位机通讯,实现定量称重控制系统的远程监控。
要实现多路控制,只需在图1的基础上增加Nios II和相关IP核来实现,这对于FPGA 来说是很方便的。例如要实现2路控制,只需增加一个Nios II软核CPU3,添加和CPU2相同的定时器和PIO IP核,再增加相应的数据采集和控制电路就可以实现,注意多个处理器可共用片外的Flash和SDRAM,只要其容量足够大,也即不需要重新制作FPGA 控制电路板。CPU3负责该路数据的采集、滤波和称重控制算法的计算和控制量的输出,以此类推,可以用同样的方法设计3路、4路等等。这样我们就可以用一台控制系统去完成多路测量,实现一台控制系统控制多个包装系统,从而在不影响称重精度的基础上大幅度降低成本。
软件是基于Nios II 集成开发环境(IDE)[5] ,采用C语言开发完成的,CPU1主要是完成参数的输入、打印、显示和通信等功能,CPU1软件主要包括键盘管理与参数输入,状态测试,称量系统校正和与上位机通信等模块。为了节约系统功耗,在设定完系统参数后,LCD显示可关闭。在称量参数设置完成后,就可以启动自动称量。在自动称量完成后,可以显示静重值和扣重值。CPU2主要是完成数据采集和预估控制算法的计算及称重控制,数据采集采用中断方式,中断时间设置为10 ms。
称重测量的精度直接影响系统的定量包装控制的准确性,所以采集数据的精度对保证系统的精度至关重要。
工业现场环境恶劣,为了准确地进行称重数据的采集,必须对采集的数据进行滤波处理,滤掉干扰信号。在实际应用中采用了去极值平均滤波算法,既可以消除由系统外部环境偶然因素引起的突变性扰动造成的尖脉冲干扰,又能够使数据平滑。去极值平均滤波算法是一种比较典型的复合滤波算法,它是由中值滤波算法和滑动平均滤波算法复合而来。由于它具有简单实用的特点,所以得到广泛运用。
去极值平均滤波算法的原理是:建立一个固定长度为N的队列,对每一组新的采样值,先用中值滤波算法滤除采样值中的脉冲性干扰,即剔除M 个最大值和M个最小值(M<N/2);然后求出余下的N-2M个采样值的平均值,选取这个平均值为本次采样值。显然,这种方法既能抑制随机干扰,又能滤除明显的脉冲干扰。
通过现场测试,得到对设定值为25kg 的大米进行称重包装的数据如表1所示。结果表明:系统误差小于0.2%。
表1 比较实际误差
第一袋 |
第二袋 |
第三袋 |
第四袋 |
第五袋 |
第六袋 | |
给定值/㎏ |
25.000 |
25.000 |
25.000 |
25.000 |
25.000 |
25.000 |
测量值/㎏ |
25.000 |
24.999 |
25.001 |
25.000 |
24.999 |
25.001 |
误差/㎏ |
0.000 |
-0.001 |
0.001 |
0.000 |
0.000 |
0.001 |
现场测试结果表明,系统测量称重误差小于0.2%。
本文的创新点在于:基于SOPC的定量称重控制系统具有开发周期短、成本低、可靠性高、易于扩充等特点,其SOPC实现技术可广泛适用于各种测量与控制系统。
参考文献:
[1] Qingxu Deng , Hai Xu, Shuisheng Wei, An embedded SOPC system using automation design, Proceedings. 2005 International Conference on Parallel Processing Workshops, 2005, p 232-9
[2] 李兰英. Nios II 嵌入式软核 SOPC 设计原理及应用[M]. 北京:北京航空航天大学出版社, 2006.
[3] 刘书明. 高性能模数与数模转换器件[M]. 西安:西安电子科技大学出版社, 2000.
[4] 陈宝远,房国志,于晓阳.多级给料粉状物料称重系统的预测控制算法[J]. 电机与控制学报,2005,9(3): 287-290.
[5] Altera Corp.QuartusII Version 6.0 Hardbook. Altera, 2006.
[6] 袁景超,宋广为. 连续称重给料系统称重精度的稳定提高[J].微计算机信息[J].2001,17(11),38-39