由于有机磷农药的广泛使用,已经对海洋造成了很大的污染,快速、连续、现场实时检测海水中有机磷农药变得非常迫切。目前,对海水中有机磷的检测大都是在采集来海水后在实验室中进行人工采样和分析。开发1 种能现场实时、快速监测海水中的有机磷的仪器成为研究人员日益关心的1 个问题。国内外学者对有机磷的自动监测方法虽然做了许多研究,但还没有1 种成熟的现场快速采集、监测的仪器。为实现对整个测试装置的自动控制和实时、快速地读取测量数据,设计、开发了基于PIC单片机和嵌入式TCP/IP技术的快速、实时数据采集系统。
1 有机磷浓度的测量原理
对有机磷浓度的测量采用生物传感器。利用含不同浓度农药的海水对生物酶抑制作用不同,通过电极把抑制转换成电信号,不同的浓度得到不同的峰值,通过峰值得到抑制率。抑制率的计算公式为:
其中,f1为在标准海水中测得的峰值,f2为加入农药之后测得的峰值。
系统中设置四个测试通道,通道是纯净的海水,是参照通道;第二通道是要测试的海水;第三通道为加入已知浓度农药的海水;第四通道为加入另外一个已知浓度的海水(和第三通道不同)。根据有机磷农药浓度的对数与相应的酶活抑制率(即峰值下降百分率)在一定范围内呈线性的关系,可以采用加标法原理推算得到海水样品有机磷农药的浓度。原理如图1所示。由图1得到计算有机磷浓度的公式:
其中,c1、c2为三、四通道加入标准农药的浓度,cx为要测试海水中农药的浓度,η0、η1、η2为二、三、四通道的抑制率。通过公式(2)可以求出在第二通道待测海水中农药的浓度。
2 系统硬件原理
由测试原理可知,需要同时采集四通道的信号,每通道求取二次基线和峰值,整个测试过程需要50分钟。为确保,每隔1ms采集四个通道的数据,要求系统能快速采集并完成数据传输。为实现快速采集,设计了由精简指令集单片机PIC1673[3]和快速A/D转换器组成的单片机数据采集控制模块为实现大容量、快速的数据传输,系统设计了基于嵌入式TCP/IP技术的网络传输模块。鉴于PC机在数据处理上的优势,由上位机数据处理模块对数据进行处理。单片机数据采集控制模块和网络传输模块之间通过FIFO高速缓冲存储器进行通信。系统框图如图2所示。
2.1 系统工作流程
FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。 FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端时AD数据采集,另一端时计算机的PCI总线,假设其AD采集的速率为16位 100K SPS,那么每秒的数据量为100K×16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其传输速率为1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。
由上位机发出启动命令和用于控制反应装置工作的各电磁阀动作的时间参数给网络传输模块;网络传输模块把命令存入FIFO高速缓冲存储器;采集模块从FIFO高速缓冲存储器中读到命令,按照上位机传来的时间参数,控制整个反应装置自动工作,同时把采集到的数据放入FIFO高速缓冲存储器。网络接口模块采用TCP/IP协议对FIFO中的数据打包,传给上位机。上位机对接到的数据进行处理,得到的浓度。
2.2 单片机数据采集模块
采集模块的原理框图如图3所示。
选择多通道串行十二位A/D转换器TCL2543进行A/D转换。TCL2543的转换速度为10?滋s,以满足系统对采样频率的要求。同时由于是串行的A/D,所以占用系统的I/O线较少。TCL2543的基准电压接入2.5V,因此要求输入模拟信号的电压范围为0~2.5V.系统生物传感器来的阻抗大约为1012Ω,范围是-0.2V~+0.2V的电信号,所以信号在进入A/D转换器之前,通过预处理电路进行了阻抗和电压变换。
CPU选择PIC16C73B单片机,它是Microchip公司生产的一款基于EPROM 的8 位高性能微控制器。芯片上集成了一个8位算术逻辑单元和工作寄存器,4KB程序存储器,192个数据寄存器,三个端口共22根I/O线,三个定时/计数器及二个串行口等。它具有精简指令集(RISC)和哈佛结构,同时可运用二级流水线指令进行取数和执行,指令大部分可在单周期执行。该机可靠性好,速度比同类单片机快几倍[3].系统连接时,RA0~RA3与TLC2543进行通信;RB0~RB7接FIFO的数据端口;RC4~RC7作为双向FIFO的控制线。
上位机发来的命令由网络传输模块存入命令FIFO.为使PIC1673B单片机能随时判断FIFO命令缓冲存储器中是否有命令,把FIFO命令缓冲存储器的不空状态线接到单片机PIC1673的外部中断引脚,一旦有中断来,则马上读命令进行处理。采集来的数据写入数据FIFO缓冲存储器中,等待网络传输模块的读取。
2.3 网络传输模块
网络传输模块原理框图如图4所示。CPU采用网络单片机Sx52BD芯片。Sx52BD是UBICOM公司的8位MCU,速度可达100 MHz,工作在50 MHz时执行指令速度可达到50MIPS.它主要完成数据协议在网络层和传输层的解包打包。当有数据从RJ45传输过来时,单片机对数据报进行分析,并将得到的数据存入FIFO高速命令缓冲存储器;反之,当数据缓冲器不为空时,单片机对数据以TCP/IP协议打包,通过网络传输到上位机。
以太网接口芯片CS8900主要完成数据链路层的协议。CS8900A是Cirrus Logic公司生产的低功耗、高性能的16位可编程以太网控制器[4].它内部集成了在片RAM、10BASE-T收发滤波器,提供8位和16位二种接口,支持I/O、Memory、DMA三种传输模式。本系统选择比较简单易用的I/O模式,通过8位数据总线对其进行配置和数据的读写。
在发送过程中,如果在一定的时间内接不到上位机接收数据的确认,则需要重发。如果要将数据从FIFO高速数据缓冲存储器中再次读出,则需要再次打包。为节约时间,在系统中扩展2KBSRAM,把当前发送的数据报备份,如果需要重发,直接从SRAM中取出。
2.4 网络传输模块和数据采集模块之间的数据传输
PIC1673B单片机和SX52BD单片机I/O线都为三态线,理论上可以直接相连,通过I/O线传送数据。但正因为是三态线,每次传输数据时首先要对端口初始化设置数据的传输方向,同时一方在发送时,要保证另一方处于接收状态,即双方要同步。而且只能传输一个数据,速度慢。因此,网络传输模块和数据采集模块之间的数据传输采用共享存储器的方式。用二个FIFO高速缓冲存储器作为共享存储器实现数据采集模块和传输模块之间的数据传送。不需要Sx52BD单片机即可直接和PIC1673单片机通信,从而节省了单片机的开销,提高了速度。
3 系统软件设计
系统软件主要包括:采集模块的数据采集程序,网络传输模块的通信程序,上位机的数据处理程序。
3.1 采集模块程序
采集模块主要在命令FIFO存储器不为空时,读取启动命令,控制反应装置自动工作,同时采集数据。程序流程如图5所示。
03h命令是发送测试反应装置各电磁阀动作时间参数的命令。单片机从命令FIFO存储器读到此命令后,把紧跟其后的13个数据作为装置中13个电磁阀何时动作的参数赋值给相应的内部寄存器,以此做为电磁阀开关的定时时间。02h命令是启动采集系统工作的命令。单片机读到此命令后,控制装置开始工作,同时启动A/D转换,开始数据采集。
A/D转换器TCL2543转换的通道号和读出数据的长度以及导前位由I/O周期的前8位设置[5],选择输出的数据长度为12位。注意在每次I/O周期读取的数据都是上次转换的结果,当前的转换结果在下一个I/O周期中被串行移出。次读数时由于内部的调整,读取的结果可能不正确,应丢弃。为使读取的数据更准确,消除干扰的影响,程序中对读取的数据进行了均值滤波。读入的A/D转换的数据是单极性的,但输入电压范围是-0.2V~+0.2V, 因此,在程序中需做数据的处理和定标,把单极性的电压值变成双极性的电压值。
3.2 网络传输模块采用的TCP/IP协议
TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。TCP/IP是一个四层的分层体系结构。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。
网络传输模块采用简化了的TCP/IP协议,主要有以下几种:
(1)ARP:地址解析协议,ARP为IP地址到对应的硬件地址之间提供动态映射。归根结底,网内设备是靠其端口地址,即MAC地址来区分的,这个过程是自动完成的。因此系统要随时响应主机发出的ARP请求,才能实现主机对它的访问[6].
(2)ICMP:Internet控制报文协议,ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP实现了主机对本系统的连接故障检测。
(3)UDP:传输层协议。其作用是为不同的应用进程提供端口号。对于服务器而言,不同的端口对应不同的服务。它主要用于实时数据流的传输。
(4)IP协议:负责整个通信子网数据包的传输。它只提供对数据包的尽力传输服务,如有连接、可靠传输等其他服务,则要在更高层去实现。
系统实现的协议间的承载关系为:IP/UDP,IP/ICMP,ARP直接在链路层之上。
3.3 网络传输模块通信程序
网络传输模块收发数据流程如图6所示。
程序在初始化网卡时把CS8900的RXCFG寄存器设置为0103H.当接收到一个正确的数据报后,CS8900产生一个接收中断。初始化后,主机方先要与本模块建立握手连接。然后,如果CS8900有中断产生,则接收上位机的数据报,把数据报读入内部的RAM,根据数据报不同的类型做相应的处理。CS8900无中断,说明无接收数据,则检测数据缓存FIFO是否为空。若不为空则读出数据,按照UDP协议进行打包后,送入CS8900发送。同时把打包后的数据暂存到外部SRAM中,启动定时器。若在一定的时间内没有从主机方收到确认,则重发该帧。
对接收到的数据帧,如果收到ARP请求,则立刻发送ARP响应,以便主机得到本系统的MAC地址;若收到ICMP,则置其TTL值为128,再将原数据发出。系统收到UDP数据帧时,要判断是上位机发来的命令还是接收数据确认的回应。如果是命令,则解码后存入FIFO命令缓冲存储器;如果是接收数据的确认回应,则清除SRAM中对应的数据报。
3.4 上位机数据处理程序
上位机数据处理软件采用LabWindows/CVI编写。LabWindows/CVI是美国NI公司开发的32位面向计算机测控领域的软件开发平台。它将C语言平台与数据采集、分析和表达等测控工具有机地结合起来,提供强大的函数库以便于对采集的数据进行分析处理[7].在本系统中,用LabWindows/CVI编写了简单易用的虚拟仪器面板,可以通过此面板对采集的参数进行设置,将工作时间参数和系统启动信号打包发送给网络传输模块,以实现对数据采集全过程的控制;对上传数据进行解码;对解码后的采集数据进行处理,形成四通道的时间-电压曲线,求出终的浓度。
4 结束语
本采集系统用在海水有机磷农药的现场实时监测上,对马拉硫磷的检测限为0.5μg/L,测定值与理论值之间的误差在10%以内。用Labwindows编写的数据处理程序具有易于操作的界面,直观的图形显示形式,能自动计算基线和峰值以及终的浓度。同时,本系统还可以用在其他要求多通道快速实时数据采集的场合,只要根据不同的要求相应改变系统软件即可。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。