摘 要: 介绍海水有机磷农药现场实时数据采集系统的设计。具体讨论了由PIC单片机构成的子系统和基于网络单片机Sx52BD实现的数据传输模块,并对LabWindows/CVI编写的数据处理软件进行了说明。
关键词: FIFO 实时数据采集 TCP/IP协议
海洋生态环境越来越受到人们的重视。如何快速有效、实时、定量地对海水中有机磷农药的浓度进行现场监测,是海洋生态环境现场快速监测系统要解决的问题之一。为此,研制了用于海水有机磷农药现场监测的生物传感器。该传感器通过含有农药的海水和不含农药海水对生物酶的抑制作用的不同,用标准加入法[1][2]检测海水中有机磷农药的浓度。为实现对整个测试装置的自动控制和实时、快速地读取测量数据,设计、开发了基于PIC单片机和嵌入式TCP/IP技术的快速、实时数据采集系统。
1 有机磷浓度的测量原理[2]
对有机磷浓度的测量采用生物传感器。利用含不同浓度农药的海水对生物酶抑制作用不同,通过电极把抑制转换成电信号,不同的浓度得到不同的峰值,通过峰值得到抑制率。抑制率的计算公式为:
其中,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高速缓冲存储器;采集模块从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协议,主要有以下几种:
(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编写的数据处理程序具有易于操作的界面,直观的图形显示形式,能自动计算基线和峰值以及最终的浓度。同时,本系统还可以用在其他要求多通道快速实时数据采集的场合,只要根据不同的要求相应改变系统软件即可。
参考文献
1 孟范平,唐学玺,李永祺.有机磷农药海洋生物传感器监测技术.海洋高新技术产业化高级论坛论文集,中国工程院,2000
2 何东海.利用乙酰胆碱酯酶生物传感器监测海水有机磷农药.中国海洋大学硕士学位论文,2004,6
3 窦振中.PIC系列单片机原理和程序设计.北京:北京航空航天大学出版社,1998
4 陈学全,关宇东.嵌入式TCP/IP协议单片机技术在网络通信中的应用.电子技术应用,2002;(8)
5 潘志东,刘增华.串行A/D转换器TLC2543原理及应用.电测与仪表,2001;(3)
6 科默.TCP/IP网络互连技术.北京:清华大学出版社,1995
7 王承,何志伟,许东芹.虚拟仪器-现代仪器发展的新阶段. 测控技术,2001;20(10)