1系统原理结构与数据采集卡
1.1系统原理与结构

系统原理结构图如图1所示。由激光器发出的光束经空间滤波器扩束成平行单色光。当该平行光照射在测量区中的颗粒群时便产生光的衍射现象。衍射散射光的强度分布与测量区中被照射的颗粒直径、颗粒数有关。衍射光被接收透镜聚焦在半圆多元光电探测器上。此探测器将含有颗粒直径和颗粒数信息的衍射光信号转换成相应的电信号,经信号前置处理电路及USB数据采集卡转换成数字信号送入PC机计算处理,得到颗粒的粒度分布和浓度情况。

1.2数据采集卡简介
本系统采用某公司的USB2002型数据采集卡。主要性能指标如下:(a)模拟电压输入范围:±5V,±10V;(b)A/D转换分辨率:14Bit,32K字FIFO存储器;(c)32路单端模拟信号输入;16路双端模拟信号输入;(d)转换速率:400kHz;(c)程控增益(×1、2、4、8)。
2系统的软件实现
2.1线程
线程指的是程序代码的执行途径外加一组操作系统分配的资源(堆栈、寄存器状态等等)。线程一般分为用户界面线程和工作者线程两类,用户界面线程可以创建窗口并处理发送给这些窗口的消息;工作者线程执行后台任务,因其不接受用户的直接输入,所以不需要窗口和消息循环。线程的应用可以提高CPU的利用率,提高程序的响应能力,降低系统对数据采集速度的影响。
2.2系统软件实现
2.2.1软件组成
程序主要由两部分组成,一是数据采集部分,另一部分为数据处理部分(见图2)。数据采集部分对USB数据采集卡进行系统初始化、数据读取并存入数据缓冲区及释放系统资源停止数据采集等工作。数据处理部分进行原始数据的存储、数据计算、各个通道数据的数值和直方图实时显示以及获取各通道中的最大值为采集卡程控增益的设置提供依据。由于后者进行的数据计算和图形操作,需消耗CPU很多时间,在单线程的情况下将会阻塞主线程运行,出现采集数据溢出丢失的现象。
为此采用基于线程的多任务编程方法。
2.2.2数据采集线程
将数据采集部分定义为工作者线程(数据采集线程)。USB设备与AD转换进度同步完全由硬件和驱动程序自动完成。用户若要用程序方式实现连续数据采集,对其软件实现就显得极为容易。数据采集线程每次用ReadDeviceAD函数(USB采集卡接口函数)读取AD数据时,设备驱动程序会按照AD转换进度将AD数据一一放进用户数据缓冲区;当完成该次所指定的采样点数时,便会返回;当再次用这个函数读取数据时,会接着上一次的位置传递数据到用户数据缓冲区。高速数据采集要求每两次调用ReadDeviceAD之间的时间间隔越短越好。由图3数据采集线程流程图可知,为保证每两次ReadDeviceAD之间较小的时间间隔,应尽量减少USB设备AD初始化的次数。为此,采用了一次性设置增益的方法。即根据所采信号大小和对应的原增益计算出原始信号大小,然后根据信号应放大的数值换算出合适的增益进行一次设置。另外,设置了一个布尔控制变量(ParaChange)来记录增益是否被刚刚改变,如果刚刚改变就跳过增益是否应该改变(ADPARA)的判断直接读取采集数据从而减少读取采集数据时间间隔,以利于高速采集。图3中Runstatus为数据采集线程运行控制布尔变量。

2.2.3数据处理线程
将数据处理部分定义为数据处理线程,以便处理图形操作及数据处理等较耗时的工作。最初,数据处理线程不做任何工作,而是在Win32API函数WaitForSingleObject的作用下进入睡眠状态(见图2),此时它不消耗CPU任何时间,可保证数据采集线程代码有充分的运行机会。当数据采集线程取得指定长度的数据到用户空间时,再用Win32API函数SetEvent将指定事件消息发送给数据处理线程,则数据处理线程即刻恢复运行状态,迅速对这批数据进行处理。
2.2.4数据缓冲队列
数据处理线程可能处理花费CPU过多时间的工作,从而导致数据处理线程阻塞;而数据采集线程则在不停地采集数据,这样数据处理线程很有可能因此而丢失数据采集线程发来的某一段数据。为避免这个问题,建立了数据缓冲队列。即假设数据采集线程每一次从设备上取出8K数据,那么就创建一个缓冲队列,在用户程序中开辟一个两维数组,如Buffe(Count??1,DataLen??1),将DataLen视为数据采集线程每次采集的数据长度(DataLen必须等于采集通道数的整数倍),从而保证采集数据与各通道的一一对应关系。另外,也要注意在USB采集卡每次增益改变时要保证数据采集线程和数据处理线程从第一个缓冲队列的第一数据存储和读取。这可以保证采集数据与各通道的一一对应关系,以防止数据错位。Count则为缓冲队列的成员个数。应根据计算机物理内存大小和总体使用情况来设定。假如设成32,则这个缓冲队列实际上就是数组Buffer(31,8191)的形式,共32个缓冲队列(数组各维的基为0)。它跟一个普通的缓冲区,如一维数组差不多,唯一不同是,两个线程首先要通过改变Count字段的值,即Count的索引值(ReadIndex或ProcIndex)来填充和引用某一段DataLen长度的数据缓冲区。需要注意的是,两个线程不共用一个Count的索引值。具体情况(见图4)是当数据采集线程在AD部件被初始化之后,首次采集数据时,则将自己的ReadIndex下标置为0,即用第一个缓冲区采集AD数据。当采集完后,则向数据处理线程发送消息,且两个线程的公共变量Segments加1(Segments变量记录当前时刻缓冲队列中有多少个已被数据采集线程使用了,但是却没被数据处理线程处理掉的缓冲区数量。)然后再接着将ReadIndex偏移至1,再用第二个缓冲区采集数据。再将Segments加1,至到Readlndex等于32为止,然后再回到0位置,重新开始。而数据处理线程则在每次接受到消息时判断有多少由于自己被堵塞而没有被处理的缓冲区个数,然后逐一进行处理,最后再从Segments变量中减去在所接受到的当前事件下所处理的缓冲区个数。因此,即便是数据处理线程由于系统的偶尔繁忙而被堵塞,也很难使数据丢失。而且,通过这种方案,用户还可以在数据采集线程中对Segments加以判断,观察其值是否大于32,如果大于,则缓冲区队列肯定因数据处理线程的堵塞而被溢出;如果溢出则报警。因此,具有强大的容错处理能力。
2025年9月10日,适逢BCEIA创办40周年,第二十一届北京分析测试学术报告会暨展览会(BCEIA2025)在北京·中国国际展览中心顺义馆盛大开幕。在本次盛会上,分析测试百科网在“巅峰对话”节目上......
粒度仪作为科研、教育及医疗等领域发展的重要支撑,其市场表现不仅反映了相关领域的活跃度,更是技术创新和产业升级的重要体现。近日,分析测试百科网对采购网站信息上的粒度仪采购数据进行了统计。根据我们不完全统......
7月25日,中国政府采购网发布了中国食品药品检定研究院2022年度专项仪器设备购置项目第五批(第一次)公开招标公告,项目预算3652万元,采购二维液相色谱(维生素ADE分析系统)、液相色谱-四极杆飞行......
分析测试百科网讯2021年05月10日,在2021CISILE展会上,济南微纳颗粒仪器股份有限公司为展会观众带来了多款产品。请随百科网的小编一起看看济南微纳颗粒带来了哪些惊喜吧!济南微纳颗粒仪器股份有......
动态光散法(DLS),有时称为准弹性光散射法(QELS),是一种成熟的非侵入技术,可测量亚微细颗粒范围内的分子与颗粒的粒度及粒度分布,使用最新技术,粒度可小于1nm。动态光散射法的典型应用包括已分散或......
遮光率可定义为颗粒在光束中的遮光横截面与光束总面积之比,使用中常由被颗粒散射和吸收掉的光占输出光总量(扣除背景散射)的百分比表示。因此,遮光率又称光学浓度。具体计算方法是用激光透过纯净介质后探测器中心......
粒度仪分为三类:纳米粒度仪,激光粒度仪和单颗粒光阻法粒度仪粒度仪是用物理的方法测试固体颗粒的大小和分布的一种仪器。根据测试原理的不同分为沉降式粒度仪、沉降天平、激光粒度仪、光学颗粒计数器、电阻式颗粒计......
分析测试百科网讯在零部件全球化采购和相关技术壁垒已经消失的今天,颗粒分析仪器的同质化竞争愈发明显。因此,众多厂家也根据自身情况进行改进。纵观2018年,众多仪器出现在颗粒分析市场上。有的厂家对产品进行......
不少用户发现耐克特激光粒度仪分析软件中有SOP功能,那么小编在这里简单介绍下SOP这一功能,SOP是英文StandardOperationProgram的缩写,汉译是“标准化操......
激光粒度仪的理论中经常提到米氏理论和夫琅禾费衍射理论,那么这两者的区别都有哪些? 米氏散射理论经麦克斯韦电磁理论严格推导,是描述表面光滑的均匀......