摘 要:本文介绍了海水有机磷农药现场实时数据采集系统的设计。在设计中,PIC单片机构成的子系统实现数据的实时采集,网络单片机SX52BD实现TCP/IP协议的解码和打包,用LabWindows/CVI编写的数据处理软件用于对从网络上传的数据进行处理。
关键词:FIFO;实时数据采集;TCP/IP协议
引言
海洋生态环境越来越受到人们的重视,如何快速有效、实时、定量的现场监测海水中有机磷农药的浓度,是海洋生态环境现场快速监测系统要解决的问题之一。为此,人们研制了用于海水有机磷农药现场监测的生物传感器,该传感器利用含有农药和不含农药的海水对生物酶抑制作用的不同,用标准加入法检测海水中有机磷农药的浓度。为实现对整个测试装置的自动控制,实时、快速地读取测量数据,本文设计开发了基于PIC单片机和嵌入式TCP/IP技术的实时数据采集系统。
图1 系统原理框图
图2采样模块的原理框图
图3 网络传输模块的原理框图
图4 数据采集模块程序流程图
图5 网络传输模块的软件收发数据流程图
有机磷浓度的测量原理
利用含不同浓度农药的海水对生物酶的抑制作用不同,用电极把抑制转换成电信号,不同的浓度可得到不同的峰值,通过峰值便可得到抑制率。抑制率=(f1-f2)/f1,其中f1为在标准海水中测得的峰值,f2为加入农药之后测得的峰值。
系统中设置4个测试通道,第1通道是纯净的海水,第2通道是要测试的海水,第3通道为加入已知浓度农药的海水,第4通道为加入另一已知浓度(和第3通道不同)的海水。根据有机磷农药浓度的对数与相应的酶活抑制率(即峰值下降百分率)在一定范围内呈线性的关系,可以采用标准加入法原理推算得到海水样品有机磷农药的浓度。
其中C1、C2为3、4通道加入标准农药的浓度,Cx为要测试海水的浓度,0、1、2为2、3、4通道的抑制率。
系统硬件原理
由测试原理可知,系统需要同时采集4个通道的信号,每通道求取两次基线和峰值,整个的测试过程需要50分钟。为确保精度,每隔1ms采集一次通道数据,要求系统能快速地进行采集和数据传输。为实现快速采集,本文设计了由精简指令集单片机PIC1673和快速A/D转换器组成的单片机数据采集控制模块;为实现大容量、快速的数据传输,设计了基于嵌入式TCP/IP技术的网络传输模块。PC机在数据处理上有优势,由上位机数据处理模块对数据进行处理。单片机数据采集控制模块和网络传输模块之间通过FIFO高速缓冲存储器进行通信。系统框图如图1所示。
单片机数据采集模块
采集模块的原理框图如图3所示。
A/D转换采用多通道串行12位的A/D转换器TCL2543来完成。TCL2543的转换速度为10s一次,满足系统对采样频率的要求,同时由于是串行的A/D,占用系统的I/O线较少。TCL2543的基准电压接入2.5V,因此要求输入模拟信号的电压范围为0~2.5V。系统生物传感器的阻抗大约为1012,范围是-0.2~+0.2V的电信号,所以信号在进入A/D转换器之前,要经过预处理电路进行阻抗和电压变换。
CPU选择Microchip公司的PIC1673B单片机,系统连接时,RA0~RA3与TLC2543进行通信,RB0~RB7接FIFO的数据端口,RC4~RC7作为双向FIFO的控制线。
上位机来的命令由网络传输模块存入命令FIFO,为使PIC1673B单片机能随时判断FIFO命令缓冲存储器中是否有命令,把FIFO命令缓冲存储器的不空状态线接单片机PIC1673的外部中断引脚,如果有中断来,就马上去读命令进行处理。采集来的数据写入FIFO数据缓冲存储器,等待网络传输模块的读取。
网络传输模块
网络传输模块的原理框图如3所示。CPU采用网络单片机SX52BD芯片。SX52BD是UBICOM公司的8位MCU,速度可达100 MHz,工作在50 MHz时执行指令速度可达到50MIPS。它主要完成数据协议在网络层和传输层的解包/打包。当有数据从RJ45过来时,单片机分析数据报,得到的数据存入FIFO高速命令缓冲存储器;当数据缓冲器不为空时,单片机对数据以TCP/IP协议打包,通过网络传输到上位机。
以太网接口芯片CS8900主要完成数据链路层的协议。CS8900A是Cirrus Logic公司生产的低功耗、性能优越的16位可编程以太网控制器。本系统选择其比较简单易用的I/O模式,通过8位数据总线对其进行配置和数据的读写。
在发送过程中,如果在一定时间内接不到上位机接收数据的确认,则需要重发。重发的数据从FIFO数据缓冲存储器中再次读出时需要再次打包。为节约时间,在系统中扩展2KB SRAM,把当前发送的数据报备份,如果需要重发,可直接从SRAM中取出。
网络传输模块和数据
采集模块之间的数据传输
PIC1673B单片机和SX52BD单片机的I/O线都为三态线,理论上可以直接相连,通过I/O线传送数据。但正因为是三态线,每次传输数据时首先应对端口初始化,设置数据的传输方向,一方在发送时,要保证另一方处于接收状态,即双方要同步;而且一次只能传输一个数据,速度慢。因此,网络传输模块和数据采集模块之间的数据传输采用了共享存储器的方式,用两个FIFO高速缓冲存储器作为共享存储器实现数据采集模块和传输模块之间的数据传送。
系统软件设计
采集模块程序
采集模块主要在FIFO命令存储器不为空时,读取启动命令,控制反应装置自动工作,同时采集数据。程序流程如图4所示。
03h命令是发送测试反应装置各电磁阀动作时间参数的命令,单片机从FIFO命令存储器读到此命令后,把紧跟其后的13个数据作为装置中13个电磁阀何时动作的参数赋值给相应的内部寄存器,做为电磁阀开关的定时时间。02h命令用于启动采集系统工作,单片机读到此命令后,控制装置开始工作,同时启动A/D转换,开始数据采集。
网络传输模块通信程序
网络传输模块的收发数据流程图如图5所示。
网络传输模块采用简化了的TCP/IP协议,主要有 ARP地址解析协议、ICMP协议、UDP传输层协议、IP协议。系统实现的协议间的承载关系为:IP/UDP、IP/ICMP,ARP直接在链路层之上。
程序在初始化网卡时把CS8900的RXCFG寄存器设置为0103H,当接收到一个正确的数据报后,CS8900产生一个接收中断。初始化后,主机先要与本模块建立握手连接。如果CS8900有中断产生,则接收上位机的数据报,把数据报读入内部的RAM, 并根据数据报不同的类型做相应的处理。若CS8900无中断,说明无接受数据,则检测数据缓存FIFO是否为空,不为空则读出数据,按照UDP协议进行打包后,送入CS8900发送;同时把打包后的数据暂存到外部SRAM中,启动定时器,若在一定的时间内没有从主机方收到确认,则重发该帧。
对接收到数据帧,如果收到ARP请求则立刻发送ARP响应,以便主机得到本系统的MAC地址;收到ICMP则使其TTL值为128,再将原数据发出。系统收到UDP数据帧时,要判断是上位机发来的命令还是接收数据确认的回应,如果是命令,解码后存入FIFO命令缓冲存储器;如果是接收数据的确认回应,则清除SRAM中对应的数据报。
上位机数据处理程序
上位机数据处理软件采用LabWindows/CVI编写。在本系统中,用LabWindows/CVI编写了简单易用的虚拟仪器面板,可以通过此面板对采集的参数进行设置,将工作时间参数和系统启动信号打包发送给网络传输模块,以实现对数据采集全过程的控制,对上传数据进行解码,再对解码后的采集数据进行处理,以形成四通道的时间-电压曲线,并求出最终的浓度。
结语
本采集系统用在海水有机磷农药的现场实时监测上,对马拉硫磷的检测限为0.5g/L,测定值与理论值之间的误差在10%以内。用LabWindows编写的数据处理程序具有易于操作的界面,直观的图形显示形式,能自动计算基线和峰值以及最终的浓度。同时,本系统还可以用在其它要求多通道快速实时数据采集的场合,只要根据不同的要求相应改变系统软件即可。