选别机(又称“分检衡器”)是包装生产线的检重设备,其原理是让袋装物品以一定的速度通过称重平台,在这一过程中动态地测出袋装品的重量值,并由执行机构将质量不合格的物品剔除掉。
目前,国内外常用的选别机测控系统主要由硬件电路组成,成本很高,一旦系统定型以后,新技术的引入是很复杂的,需要对整个系统重新设计,开发周期很长。
虚拟仪器技术能够很好地解决上述问题。笔者采用LabWindows/CVI语言开发了选别机动态称重测控软件,运用多线程技术解决了多任务并行处理的难题,人机交互界面友好,系统运行稳定、可靠,同时能够满足动态称重实时性要求。
一、选别机动态称重测控系统硬件设计硬件系统是整个测控系统的物理基础,针对测控系统功能的要求,对硬件系统进行了搭建与优化设计。选别机测控系统硬件结构如图1所示。
系统的硬件主要包括以下几个部分:
(1)计算机:整个测控系统数据采集、数据管理和控制决策的中心。
(2)信号检测部分:主要是指两个准确度较高的压力传感器,它们负责实时转换动态称重的质量信号,并将转换后得到的电信号传送给数据采集板部分。
(3)信号调理电路:对信号进行放大、激励、线性化、隔离和滤波处理。
(4)数据采集卡部分:包括数据采集卡及其配套设备,将采集到的数据进行A/D转换,传送到计算机进行进一步的分析处理;再将计算机输出的控制结果通过D/A转换,输出给控制部分。
(5)控制部分:由计算机根据控制设定参数进行处理,通过一定的控制算法得到控制结果,并将控制结果传送给执行机构。
(6)执行机构:执行机构根据控制结果进行相应的动作,及时剔除质量不达标的包装产品。
二、选别机动态称重测控系统软件设计软件是虚拟仪器的核心部分。选别机测控系统要实现对动态称重信号进行实时采集、实时处理,并根据处理结果实时发出控制信号,驱动剔除机构。
选别机测控系统要同时执行多个任务,应用程序一边从数据采集卡中读取数据,一边分析数据并进行处理。常规的编程技术无法满足多任务并行处理的要求只能在数据采集结束后进行处理,采集和处理的不同步导致得到的处理结果无法反映当前输送带上的物料重量,易发生错误剔除的事故。多线程编程技术为多任务并行处理提供了可能。
1.多线程编程技术进程常被定义为应用程序的运行实例。线程是指进程内部的可独立执行的单元,是操作系统对系统资源的基本调度单位。每个进程至少拥有一个线程,这个线程也被称为主线程。一个进程也可以拥有多个线程,同属于一个进程的所有线程都共享进程的虚拟地址空间线程之间可以共享进程的全部数据和资源。
多线程是指操作系统支持一个进程中执行多个线程的能力。软件编写中,采用多线程的编程技术,整个软件含有完成不同功能的多个线程,如数据采集、数据处理、实时数据显示线程、图形曲线生成线程和用户界面线程。这样,多个线程的同时执行,在一段时间内并行完成更多的任务,既加快了系统的反应速度,又提高了执行效率。
利用LabWindows/CVI提供的线程池技术,按照选别机测控软件所要实现的功能,把应用程序需要处理的任务分为:用户界面控制、数据采集、数据的实时显示以及数据分析等。测试软件中以用户界面为主线程,数据采□万学功张西良图1选别机测控系统结构简图80计集、数据实时显示、数据分析为辅助线程;在所有的并发线程中,负责数据采集的线程的优先权仅次于用户界面线程。
2.主控面板线程在设计主控面板线程的过程中,开发人员常常需要确定程序如何获取并显示数据,对面板、控件和对话框如何操作等问题,因此用户界面成为程序设计的起点,把它作为程序设计的主线程,及时处理各种消息。选别机测控系统主控面板如图2所示。
选别机主控面板显示了选别机测控系统的基本功能,包括数据采集、处理控制、数据管理。点击面板上的命令按钮,会激活相应的回调函数处理鼠标事件,将数据采集和处理控制置于两个不同的面板上,便于软件的组织管理。
3.数据采集线程点击图2中的“数据采集模块”命令按钮,便会弹出数据采集面板,面板布局如图3所示。
系统默认将用户界面作为主线程,如果将采集函数放在主线程中,启动“采集”命令后,也可以完成数据采集及实时显示功能,但当用户用鼠标点击或拖动用户界面时,产生的界面操作事件会中断系统正在执行的数据采集事件,导致数据采集中断。解决的途径是用线程池为数据采集函数创建一个新的线程,避免界面操作事件与自定义功能事件发生冲突,保证二者同步执行。线程创建核心代码如下:
//创建一个新线程;CmtScheduleThreadPoolFunction(E-FAULT_THREAD_POOL_HANDLE,CollectingFunction,threadfunctiondata,&threadID);//等待线程执行,直到结束;CmtWaitForThreadPoolFunctionCompletion(DE-FAULT_THREAD_POOL_HANDLE,threadID,OPT_TP_PROCESS_EVENTS_WHILE_WAITING);//释放线程函数;CmtReleaseThreadPoolFunctionID(E-FAULT_THREAD_POOL_HANDLE,CollectingFunction);//采集功能实现函数;CollectingFunction{};4.数据处理线程选别机测控系统是一款实时监测软件,在数据采集的同时要对采集到的数据进行实时处理。点击图2中的“处理控制模块”按钮,系统会显示处理控制面板,并隐藏数据采集面板,数据处理面板布局如图4所示。
图4中的“处理数据”按钮,可以完成对称重信号的实时处理,该功能与数据采集同步执行,所以要为数据处理函数创建一个新的线程,线程创建步骤与数据采集线程创建相同。数据处理完成后,结果会在“结果显示”