基于虚拟仪器的浊度测试系统的设计
摘要: 浊度是工业水处理(除盐水)检验水质要求的一个重要参数,对除盐水的水质要求较高。目前,浊度的测定大部分都是停留在传统仪器的模式下,没有摆脱独立使用,手动操作的模式。随着科技的迅猛发展,计算机强大的处理能力,虚拟仪器在测定系统中正被广泛采用,它可以利用虚拟仪器的多面板能满足多功能的测量要求,同时提高检测的精度和可靠性;利用虚拟仪器良好的人机交互性和在线帮助功能使测量具有很大的灵活性,操作简便。
0 引 言
浊度是工业水处理(除盐水)检验水质要求的一个重要参数,对除盐水的水质要求较高。目前,浊度的测定大部分都是停留在传统仪器的模式下,没有摆脱独立使用,手动操作的模式。随着科技的迅猛发展,计算机强大的处理能力,虚拟仪器在测定系统中正被广泛采用,它可以利用虚拟仪器的多面板能满足多功能的测量要求,同时提高检测的精度和可靠性;利用虚拟仪器良好的人机交互性和在线帮助功能使测量具有很大的灵活性,操作简便。将测试结果图形化形式显示出来,使测试的结果更加直观明了;随着计算机网络的发展,虚拟仪器还能满足今后更多功能的扩展和网络互联的要求。基于此设计了基于虚拟仪器的浊度测试系统,利用 LabVIEW图形化的编程语言和编程环境,实现了对浊度数据的显示、标定和报警等功能。
1 系统的硬件设计
1.1 测量电路的设计
中央处理器采用C8051F020。C8051F单片机是完全集成的混合信号系统级芯片(SoC),具有与8051兼容的高速CIP-51内核,与 MCS-51指令集完全兼容。片内集成了数据采集和控制系统中常用的模拟、数字外设及其他功能部件,内置FLASH程序存储器、内部RAM。C8051F 单片机还具有片内调试电路,通过4脚的JTAG接口可以进行非侵入式、全速的在线系统调试。放大后的信号由C8051F020内的交叉开关选通,调节增益后送ADC0进行A/D转换并存储。
1.1.1 主控制板电路
主控制板电路实现数据的采集、存储、处理和输出功能。它由C8051F020单片机处理电路、传感和模拟信号处理电路、AT45DB081数据存储电路、 DS18B20温度监控电路、RS 232通信电路、液晶显示和键盘电路、报警电路、标准4~20 mA工业信号输出电路几部分构成。浊度仪的核心控制器件是Cygnal公司新出产的混合信号系统级单片机C8051F020。在一个标准的8051中,除 MUL和DIV以外所有指令都需要12或24个系统时钟周期,并且通常最大系统时钟频率为12 MHz。而对于CIP-51内核,70%的指令执行时间为1或2个系统时钟周期,没有执行时间超过8个系统时钟周期的指令。可见C8051F020单片机的指令执行速度是标准8051单片机的10倍,因此测量时间非常短,可以满足在线实时测量的要求。该单片机片内集成了Cygnal公司独创的CIP-51 的CPU内核,指令系统与MCS-51完全兼容。它具有如下特点:集成度高、抗干扰能力强、速度高、可靠性高、扩展功能强等。本仪器中选用 C8051F020单片机,可以使电路在设计上结构紧凑,并能够提高仪器的抗干扰能力。C8051F020的原理图如图1所示。
1.1.2 传感和模拟信号处理电路
光电转换元件采用的是TCZ 6×6型硅光电池,此种型号硅光电池的光电特性,其短路电流与入射光强有良好的线性关系。但是其转换信号仅为10-7A数量级,必须进行放大处理,因此,在电路设计中采用了输入阻抗高的运算放大器LF353来获取电流信号,并进行滤波放大处理。如图2所示。
1.2 C8051F020与虚拟仪器的实现
串口通信虽然传输速度较慢,但是由于简单易行,并且现有的微机都具备串行通信口,因而得到了广泛的应用。本文在浊度测试系统中利用串口实现了对单片机的通信控制。
[#page#]
1.2.1 系统硬件配置
本文通信系统采用C51F020作为下位机,PC机作为上位机,二者通过RS 232串口接收或发送数据和指令。传输介质为二芯屏蔽电缆。RS 232信号和单片机串口信号的电平转换采用MAX232,它是具有双驱动器、双接收器的通信器接口电路,不需外接电容而进行倍压及电压极性转换,只需+5 V供电,电源电流为5 mA,传输率为200 Kb/s。串行接口电路原理见图3。
系统中PC机承担主控任务,负责该测控系统的通信参数设定、数据的采集处理及对单片机运行的控制,程序采用LabVIEW编写。其通信协议为:采用RS 232异步通信方式,51单片机串行口共有4种工作方式,这里采用单片机串口通信的方式1,该方式为8位异步串行通信方式,其波特率是可变的,1位起始位,8位数据位,1位停止位,无奇偶校验,若晶振频率为11.059 2 MHz,取波特率为4 800 Kb/s。下位机按接收到的指令工作,若主控机发出无效或错误指令,将不作任何控制。
1.2.2 程序设计
主机通信程序:在主机通信程序设计中,采用图形化语言LabVIEW作为编程语言。它把高级语言中的函数封装为图形功能模块,图标间的连线表示各个功能模块之间的数据传递。编程方式简单、直观、便于使用。串口通信功能模块包括串口初始化模块、串口读模块以及串口写模块,通过这些模块就可以实现对单片机的控制。
LabVIEW串口子VI是通过RS 232实现数据通信的。LabVIEW串口子VI共有5个串行通信节点,分别实现串口初始化、串口写、串口读、检测串口缓存、中断等功能。
C8051F020单片机的程序采用汇编语言写成。利用汇编语言直接对相关硬件进行操作,具有开销小、效率高的特点。在编写单片机程序时应当注意的是必须保证PC机与单片机串口通信时的波特率一致。如果两者不同的话,就无法进行数据的传输而导致通信失败。所以,在单片机程序中初始化时应当根据单片机晶振和串口通信方式对寄存器进行设置。
2 软件开发
该系统由C8051F单片机、ADC0809 A/D转换器组成的小系统作为前端数据采集系统,并通过RS 232串行总线将采集到的数据传送到PC机,用Lab-VIEW进行数据的接受与处理。其结构组成如图4所示。
2.1 菜单设计
在整个程序设计中,首先完成了各子功能(子VI)的程序,将其做成单个模块,每个单个模块是由更小的模块组成,每一级的模块均刻以图标形式放置在程序流程图中,这样增加了程序的可维护性和可读性,使流程图更加清晰明了,同时避免了大量重复编程工作。系统的主界面设计中,利用LabVIEW中提供的 EDITMENU菜单,先将要实现的功能作为菜单选项的内容,以便在运行时调用,然后在框图中对各项菜单的调用通过CASE循环进行选择,使各项菜单对应于各项子VI,在各子VI中vi set up的execution options中选定show front panel when called选项,这样在运行中,当选择了菜单中的某些内容时,该子VI就被选中调用。图5为菜单后面板程序设计流程图。菜单中包括文件操作(读取、存储、打印)通道显示和信号分析以及帮助,程序分别调用相应功能的子VI程序,完成相应操作。下面简要介绍本采集程序中采用的几个典型模块。
[#page#]
2.2 数据采集模块设计
本设计采用VISA编写仪器控制程序,程序在运行时VISA就会根据实际接口类型自动调用相应的接口驱动程序例程,完成通信操作。串口通信模块包括串口初始化模块、串口写模块、串口读模块,通过这些模块就可以实现对单片机的控制。图5为串口设置后面板程序框图。如图5所示,主程序运行后,设置串口波特率为 9 600,通道选着串口1,采用默认通信协议(1位起始位、8位数据位、1位停止位),串口缓存大小设置为16 368 B。
2.3 保存模块设计
本设计采用Access数据库对采集的数据进行分析及对历史数据查询回放,其特点表现在:关系数据库的SQL语言是非过程性语言,对数据的查询或操作简单;利用数据库管理数据,数据的独立性好;Access数据库使用方便,操作简单,能够满足数据库管理的需要。利用LV的ActiveX功能,调用 Microsoft ADO控件,既可以利用SQL语言又可以利用ADO提供的各种方法和属性,方便灵活地实现对Access数据库访问。在LV功能模块中含有ActiveX 子模板,子模板中包含用作与ActiveX服务器相连接的自动化节点函数,实现对数据库的操纵。ADO主要有三个主体对象,分别为 Connection,Command和RecordSet对象。访问数据库步骤为:连接到数据源一指定访问数据源的命令一执行命令。本设计建立两个数据源分别用来存放历史数据、报警数据及相对应的时间。
3 软件实现功能
利用LabVIEW这种图形化的编程语言和编程环境,实现了对浊度数据的显示、标定和报警等功能。浊度实时数据趋势图、历史数据趋势图、历史数据查询和报警历史记录分别如图6所示。
实时曲线是通过调用LV软件中Chart子模板来实现的。它将数据在坐标系中实时、逐点(或一次多个点)地显示出来,可以反映被测物理量的变化趋势,与传统的模拟示波器、波形记录仪的显示方式相仿。在实时曲线界面中,有单片机采集数据及向LV发送数据的控制按钮,可以方便地实现对下位机数据的采集控制。另外,该模版具有上限、下限报警监视、报警限设定功能,当数据发生报警后,实时值字体显示颜色立即发生改变,可以方便用户对数据进行监视。
历史曲线是通过调用LV软件中Graph子模板来实现的。用户可以调整X Scale及Y Scale显示方式,如显示时间刻度、数据显示格式、显示刻度是否自动缩放、曲线颜色等。通过游标(如图6(b),Cursor),可以读取波形上某一点的确切坐标值。历史曲线界面还具有历史曲线查询及历史趋势刷新功能。点击“历史曲线查询按钮”,可以弹出“历史趋势查询”子VI模板,用户根据需要设定查询时间,便可得到需要的数据以便分析。点击“历史趋势刷新”按钮可以直接显示当前历史趋势。
历史报警表调用LV中Table控件进行显示。表中有报警序号、报警名称、报警值、报警进入时间以及状态显示项目。该表记录了高限、低限时报警值及恢复正常值的时间及报警值,通过滚动条用户可以方便查询报警历史数据。
4 结 语
本文使用了C8051F单片机进行前端的数据采集,通过RS 232串口实现与LabVIEW的强大的信号分析处理功能实现了浊度的历史数据、实时数据的查询和分析,同时设计了实时报警,当浊度超过某个值时迅速报警。实践证明,采用虚拟仪器不论是在技术上或是在经济上都能够取得良好的效果。
暂无评论