时间:2023-03-15 14:54:13
引言:寻求写作上的突破?我们特意为您精选了12篇数据采集论文范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
1.2传感器选型本系统选用的传感器为ES-T型三分向力平衡式加速度计,传感器可以在±0.25gn到±4gn的范围内选择设定满量程,其动态范围优于155dB,带宽在DC-200Hz之间。
1.3信号调理与AD采集电路传感器输出为差分信号,信号动态范围为±5V,系统选用的AD芯片输入信号范围在±2.5V之间,所以传感器输出信号必须经过信号调理后才能进行采集,图3是其中一个通道的信号调理与AD采集电路,其余通道电路与该图完全一致。信号调理电路由全差动放大器OPA1632构成,该放大器的电压噪声密度为1.3nV/Hz1/2,在100Hz(高铁地震监测常用采样率为200sample/s)带宽范围内噪声有效值不超过15nV,满足地震信号采集要求。图中R2∶R1、R7∶R9均为2∶1,可将输入差分信号衰减2倍,实现将传感器输出的±5V信号衰减到±2.5V范围内,满足ADS1281的输入电压范围,图中二极管D1与D2是钳位二极管,将电压钳位在±3V左右,保护AD芯片。AD转换器是一款32bitΔ-Σ高精度模数转换器ADS1281,内部具有可编程FIR、IIR和SINC滤波器,0.6×10-6线性度,在250sample/s采样率下其SNR可达130dB,全速采样模式下功耗仅12mW,非常适用于电池供电的野外作业。通过配置PINMODE引脚,可将ADS1281设置为引脚控制模式(PINMODE=1)和寄存器控制模式(PINMODE=0),本系统将其配置成寄存器控制模式。系统为实现同步采样,将六通道ADS1281的低功耗控制PWDN,复位RST,同步SYNC,采样时钟CLK,SPI时钟SCLK,SPI数据输入DIN引脚分别连在一起,并由FPGA统一控制,达到时钟同步,统一配置AD的目的,从而实现同步采样;而ADS1281的数据输出引脚DOUT分别接在FPGA的6个不同IO口,用于读取六通道AD的数据。参考源是数据采集系统的关键部分,本系统利用DCDC产生-5V电压,低噪声LDO电源芯片LT1964产生-2.5V电压,作为六通道ADS1281的VREFN输入,LT1964噪声为30μVRMS(10Hz~100kHz);利用专用精准基准芯片LTC6655-2.5产生+2.5V电压,作为六通道ADS1281的VREFP输入,该芯片噪声0.25×10-6p-p(0.1Hz~10Hz),温飘为2×10-6/℃,经过试验,该方案是取得较好结果。
1.4FPGA采集控制与数据传输实现数据采集之前,STM32单片机需要通过FPGA对各通道采集卡(即ADS1281)进行配置;数据采集过程中,FPGA需要对六通道数据读取、打包并传入STM32单片机。控制线A0用于选择上述功能。当A0=0时,将STM32单片机与FPGA之间的SPI接口、FPGA与六通道采集卡之间的SPI接口直接相连,此时由STM32单片机直接完成采集卡配置;当A0=1,FPGA输出采样时钟CLK,六通道采集卡同时启动采样。FPGA数据采集与传输过程如图4所示。当六通道ADC数据准备就绪时,ADC_nDRDY信号将同时由高变低,FPGA收到下降沿信号后,将在ADC_SCLK引脚连续产生32个周期的SPI时钟,ADS1281在时钟上升沿输出数据(ADC_DOUT_1至ADC_DOUT_6),FPGA在时钟下降沿读取数据,六通道数据将被缓存在6个32bit寄存器ADC_DA-TA0至ADC_DATA5内;FPGA读取完六通道32bit数据后,在MCU_DRDY引脚产生一个高脉冲,通知STM32单片机读取数据,单片机在MCU_DRDY下降沿启动中断,并在中断中完成数据读取;数据读取过程中,单片机的SPI时钟MCU_SCLK连续产生时钟信号,FPGA在收到时钟信号时,将数据通过MCU_DIN输出,时钟信号共6×32=192个,正好读完六通道数据。
2预警系统C/S构架软件设计
2.1客服端LabVIEW编程PC机客服端界面与网络编程利用LabView软件实现。LabView是由美国国家仪器(NI)公司研制开发虚拟仪器开发软件,是一种图形化编程语言,使用较为方便[6-7]。LabView主界面包含采样率、量程设置,IP地址,端口,开始采集按钮,停止采集按钮和波形界面几个部分,其中波形界面由WaveChart控件实现,具体实现如下:将下位机上传的六通道数据绑定为簇,簇输出接到WaveChart控件的数据输入端,Wave-Chart控件的图形显示方式设置为分格显示曲线,由于簇输入是6个数组绑定而成,WaveChart自动将窗口分成6个子窗口,每个数据对应一个窗口;Wave-Chart界面更新模式设置为StripChart,此模式下波形从左至右绘制,达到右边边界时,旧数据从左边溢出,新数据从右边进入。LabView具有强大的网络编程功能,本系统客户端利用了其中的TCP/IP协议模块,主要涉及到以下几个函数:TCPOpen(打开),TCPRead(读取),TCPWrite(写入),TCPClose(关闭)。客户端程序工作流程如图5所示。从图中可以看出,从开始到结束采集一共用了两次TCP/IP连接,第1次用于发送采集命令,然后接收、处理、显示数据,当按下“停止采样”命令后,首先关闭第1次TCP/IP连接,此时服务器还在继续采集数据,但不发送,所以还需进行一次TCP/IP连接发送停止采集命令给服务器,服务器收到命令后即可停止采集,并进入低功耗模式。
2.2基于LWIP的服务器程序设计服务器的主控单片机是STM32F407,其内部集成了10/100M以太网MAC,结合PHY芯片DP83848即可完成以太网硬件搭建;以太网软件部分通过移植LWIP协议栈实现,已有较多文献或文档详细叙述了移植方法与过程,服务器接收命令、启动采样和传输数据等功能在tcp回调函数中实现。数据采集和传输是同时进行的,可在单片机中申请两个缓存,采用乒乓操作模式工作实现,即:其中一个用于中断采集数据存储,缓存满后,设置数据满标志,并查询另一个缓存的数据空标志,若为空,证明数据已经传输完成,可新的存储数据;另一个用于传输,传输完成后,设置数据空标志,并查询第1个缓存的数据满标志,若位满,证明数据可以传输;由于以太网的传输速度远大于数据采集的速度,以太网传输完成后会等待另一个缓存存满,所以整个过程中不会出现采样数据丢失的情况。
3采集系统性能测试
3.1噪声测试进行噪声测试时,将6通道输入短接,采样率设置为200sample/s;采集开始后,数据将以文本文档的形式实时存入SD卡。图6是由采集的一个通道数据用excel作图得到(取其中任意2000个点),从该图可以看出:该通道采集的输入短接噪声峰峰值在±1.5μV范围内。为进一步对噪声大小进行量化分析,分别进行了三次噪声测试,并在excel软件中利用STDEVA函数对每一次的六通道采集数据做均方差处理,处理结果如表1所示。从表中可以看出:每隔通道的噪声均方差低于0.5μV,噪声一致性较好;采集卡输入信号范围是±5V,按照ADC的信噪比计算公式可算出采集卡的信噪比优于140dB。
3.2地震信号采集实验实验时,把传感器放置于地面,传感器差分信号输出端接入采集卡第1通道,打开监测站电源,在PC机中启动LabVIEW界面,设定好采样率、量程、IP地址与端口,点击“启动采集”,在距传感器2m左右用硬物连续敲击地面,图7是截取的实时显示结果图,从图7可以看出,第1通道具有典型的地震波形输出,纵坐标单位为mV,第2通道~第6通道输出为随机噪声,纵坐标单位为μV。
2节点软件
2.1节点软件架构软件设计部分主要是基于TI公司的Z-stack协议栈进行应用程序的开发。Z-stack协议栈是一款稳定性强的Zigbee开发协议栈,是对Zigbee标准的具体实现。协议栈APL(应用层)包含了主要的API函数接口,方便进行应用开发,从而实现对CC2530芯片硬件资源的控制功能。具体软件框架设计如图4所示。应用层软件主要包括节点间数据的接收/发送、节点内应用层与底层的交互。应用层的数据经过应用层数据帧格式进行封装传给底层继续封装并发送出去;接收数据则由底层先进行解释,再由应用层进行解释,然后进行数据的计算、更新参数等步骤。应用层还可通过API控制接口对底层进行控制与信号、参数获取。
2.2数据帧格式Zigbee采集节点和主节点模块的数据传输格式采用字符串形式进行数据的发送/接收。由于是采用字符进行数据传输,所以可以利用上位机现有的字符串处理函数,很容易校验数据正确性,并从数据帧中提取有效信息,避免因帧长度判断引起的错误。另外,基于Zigbee传输速率较低、传感器数据量小、刷新速度慢的需求等特点尽量减小和限制了协议中各数据域的占位宽度,保证传输效率。具体数据格式如表1所示。帧头:本协议节点间的应用层交互主要有命令帧和数据帧。帧头是辨别命令帧和数据帧而设立的。帧头包括:Set、Get、Ack、Data4种。Set指的是主节点对采集节点进行参数设定,为命令帧,是主节点需要对子节点进行参数配置的时候发送的,子节点收到此类型帧后,发回Ack帧,说明参数设置成功与否;Get指的是其他节点需要获取本节点信息,为命令帧,本节点收到此类型帧后,发送数据帧;Ack指的是节点间通信应答状态帧,SUCC为成功、FAIL为失败;Data指的是数据帧,携带节点参数、传感器采集数据。如表2所示。目的地址:目的地址指的是Zigbee网络中的设备唯一标识的网络ID。为十六进制0X0000-0XFFFF之间值。其中有几个地址值有特殊的含义,0XFFFF表示广播地址;0XFFFE表示所有接收功能打开的设备;0XFFFC表示所有路由设备;其余地址为单一设备的网络地址。网络地址的获得过程是:主节点设备启动成功后,自设定为Zigbee网络的主网络ID0X0000,子节点设备在申请加入成功后获得一个网络身份标志ID。帧类型:在帧头为Set、Get、Data时,此帧位置都有意义,分别代表设置、获取、携带相应类型的节点信息。这些类型包括,传感器数据(Sensor)、节点网络地址(NAdr)、节点网络类型(NType)、采集周期(Cycle)、产品信息(Info)、发送方式(SWay)、功率模式(PMode)、信道选择(Channel)、AD参考电压(ADMode)、默认发送地址(DSAdr)。信道数据:DataChannel796F800\r\n(第11(0x0B)无线信号通道)载荷:载荷是整个通信帧中最重要的部分,包括了通信的主要内容。载荷的具体内容需要根据帧类型来确定。描述如下:(1)帧类型为传感器数据:此时载荷部分包括传感器类型、传感器ID、传感器值。传感器类型包括危化品物流车辆常见信号:1.温度、2.门开关、3.真空度、4.液位、5.压力、6.电压、7.湿度、8.气体、9.红外10.光敏、11.倾斜。传感器ID从0开始分配,表示同种类传感器的使用编号。(2)帧类型为非传感器数据:此时载荷部分携带网络地址、采集周期、发送地址等值。结尾符:本协议结尾符为字符“\r\n”,加上字符串结束符‘\0’,固定为3个字节。结尾符是一帧数据的界定符,上位机软件可以根据此结尾符很快能判定帧的长度,避免一些数据长度判读错误的发生。
2.3软件处理流程Z-stack协议栈基于轮询机制,事件是最小处理单元,每个事件都有相应的处理函数,当事件管理数据结构相应的位置位时,协议栈通过轮询机制就能发现并跳入相对应处理函数进行处理步骤,处理完再返回轮询大循环。这里主要设置了3个事件,分别是串口事件、无线事件和采集事件。串口事件主要处理与上位机的通信;包括根据上位机命令修改本节点参数、接收发送数据等;无线事件主要处理数据的无线发送和接收;采集事件主要处理传感器的数据读入、封装、发送或者接收、解析、转发等。处理流程图如图5所示。
2.4上位机配置软件Zigbee设备逻辑类型包括3种,分别是主节点、路由节点、终端节点。对于不同设备类型的具体处理流程,本设计编写了统一的参数配置服务函数,可通过上位机软件方便进行配置。比如,终端节点配置成具有传感器数据的采集功能,可选择无线和串口两种发送方式,而对于路由器或者协调器,基于功耗考虑,则配置成不具有传感器数据采集功能。通过设计节点上位机配置软件ZigConfig来实现参数的配置,简单的界面操作就能通过串口以上述数据格式下载到节点,并烧写到CC2530的flash中永久保存起来,节点下一次启动将以新的参数启动。上位机配置软件介绍如下:(1)配置软件由QtCreator开发。QtCreator是Qt被Nokia收购后推出的一款新的轻量级跨平台集成开发环境(IDE)。支持的系统包括Linux(32位及64位)、MacOSX以及Windows。开发人员能利用该应用程序框架更快速及轻易地完成开发任务。(2)该配置软件完成节点的设备类型、接口采集逻辑、入网参数等的配置。可直接通过串口线与待配置节点连接,也可以通过一个中间节点对待配置节点进行无线配置,中间节点通过串口线与上位机连接。操作界面如图6所示。(3)如图7,图8所示,通过上位机配置软件S1(实物图如图6所示)可方便地对待配置节点S2进行参数配置。对于待配置设备,如果是终端设备,配置前需先按下配置按键,指示灯亮后,装置即进入配置模式;而如果是路由设备或协调器设备则无需此步骤。(4)有线配置如图6所示:上位机通过串口线连接待配置设备,然后配置软件上收到待配置节点S2发送过来的设备信息,并显示在界面上,然后点击配置按钮,即发送配置帧到节点S2,点击读取配置按钮,则将节点S2各项参数显示在界面上,如果节点S2是数据透传模块,则可以直接接收数据或填写目标地址发送数据。配置完后再按一下按键,指示灯不亮,表示配置完成。可以配置设备类型为Zigbee终端设备、路由设备、协调器设备和点对点透传设备;可以配置入网参数,比如PANID值、信道、网络模型、网络层次等;可以配置传感器发送周期,使各传感器通道数据可以同一周期发送,也可以不相同周期发送等。(5)无线配置如图8所示,采用一个节点作为数据中转与上位机有线连接,通过这个节点无线发送指令到待配置节点进行配置,配置过程中的操作步骤与有线时类似。
3节点测试
3.1信号强度RSSI(ReceivedSignalStrengthIndication)是接收端的信号强度指示,可用来判定链接质量。实际应用中,普遍采用简化后的Shadowing模型,即如下公式计算RSSI值。其中Pr(d)为接收端接收信号强度,Pr(d0)为参考处接收端接收信号强度,d为接收端与发送端实际距离,d0为接收端与发送端参考距离,n为路径损耗指数,通常取2~4。取d0=1m,实测得Pr(d0)的值代入,并取n=3代入公式(1)得新的计算公式。实际测试中取两个节点,分别设为协调器节点和终端节点。将协调器节点固定,令终端节点远离,终端节点加入协调器节点网络后,每隔1s发送一次数据到协调器节点。协调器接收到数据包后,从TI协议栈Z-Stack的数据结构afIncom-ingMSGPacket_t中提取RSSI值记录下来。100M范围每隔5M记录一次RSSI值,每次记录100个值,然后取100个中的随机值和平均值分别作为本次终值绘制曲线。
3.1.1空旷环境下测得Pr(d0)=-28dbm,按照公式(2)与实际数据,绘制对比曲线。从图9和图10对比曲线可以看出,随着两节点间距离增大,RSSI值会逐渐衰减,符合一般规律。0-20m范围内,RSSI衰减较快,之后较为平缓。40m后信号质量普遍较理论值平缓,可能是受硬件条件影响,误差增大。图9由于每次记录取的随机值,存在较大误差,图10每次记录取100个数据的平均值,曲线较为平缓。误差因素包括硬件设计、周边环境影响等。
3.1.2危化品物流车辆环境下采用深圳市中集集团液化气罐(空罐)危化品物流车辆进行实地测试,测试车辆长度14m,宽度2.5m。将协调器节点放置在车驾驶座,终端节点自由放置于车厢体内部,加入网络并发送数据到协调器节点。测得Pr(d0)=-44dbm,根据公式(2)和实际数据的结果曲线如下:由图11和图12可以看出,在车辆环境下,节点信号普遍较空旷环境下差,这主要是因为接收节点被放进车辆箱体内部,信号一定程度上受到厢体衰减。大于40m距离后信号变得不稳定,通信断续和重连情况发生频繁,此时RSSI值普遍>82dbm,80m后多次测试接收端均接收不到数据。
3.2数据传输将协调器节点放置在车驾驶座,终端节点自由放置于车辆厢体内部,加入网络并发送数据到协调器节点。在协调器端统计接收数据包个数,并计算丢包情况和最大稳定通信距离(即数据通信情况良好,极少发生重连情况),结果如下。由表3可以看出,主节点在车驾驶室情况下,车正前方和侧面信号要好于车后方信号,节点丢包率较低,通信距离>=25M,满足一般危化品物流车辆要求。另外,通信的最大稳定传输RSSI值是极少断网重连情况发生下的统计值,所以普遍低于信号强度曲线中的极限值。随着距离增大,节点间的网络传输也会变得不稳定,常常发生断网重连,甚至无法重连状况。实际数据包传输受节点间不同阻挡物、不同车型、车体电磁干扰、程序执行等因素影响。
3.3功耗通过万用表、示波器和在程序中设计测试模块的结合进行功耗测试,测试结果如下。从表4的测试结果可以看出,节点满足低功耗要求,休眠情况下,节点功耗低至0.33uA。
2硬件电路设计
2.1动力电池电压信号检测电路设计
动力电池组是由众多单体电池串联而成。本设计中,选取12个单体电池串联而成的动力电池组,相应的就有12个电压模拟量信号。图2所示为电压采集电路设计。动力电池组中,各个动力电池串联而成。在地参考点的作用下,各个电池正负极对地参考电压近似比例增大,为实现输出的是电池电压,最有效的实现途径是借助由运算放大器“虚短”与“虚断”原理构成的减法电路。图2中,由双运放运算放大器LM358构建2级网络:第1级即为由R1~R4组建的差分放大电路形成减法电路,第2级构成电压跟随器,起到缓冲及隔离的作用。LM358使用单5V电源供电。
2.2动力电池双向电流检测电路设计
电池组在充放电过程中,由于只有一个充放电通道,理论上而言电流检测通道只有一个。根据电路理论电流在其参考方向下存在正负之分,因此必须单独设计充电电流、放电电流各自的检测信号。图3所示为集成的双向电流检测硬件电路设计。从电路中可以看出,该电路的设计非常类似于电气中的互锁电路。从采样电阻中采集的电阻两端电压在电阻分压网络下,产生不同的电压。结合运放的差分放大功能,分别引入LM358运算放大器的2组不同的运放输入端,由于引入同相输入端和反相输入端的电压不同,使得2组运放各自工作在线性工作区与非线性工作区中。当电池组中有任意方向的电流时,均会产生一组运放工作在线性放大区域产生对应的模拟电压信号同时另外一组运放工作在非线性区域而作为电子开关输出供电电源的参考地电压。在实际的电动汽车中,通常选用100AH的动力电池组为电动汽车提供动力源,这样,采样电阻的选择就有了依据。本设计中,选用0.05R/2W的采样电阻多个并联成0.01R的功率电阻作为充放电电流检测元件。
2.3动力电池组温度检测电路设计
温度检测保证电池组工作在可靠温度范围内而不引起电池故障,是电池管理系统中必不可少的有效组成部分。温度检测传感器选用PT100系列温度传感器。最新制造工艺出产的PT100体积小,精度高,比较适合应用在电池管理系统温度检测单元中。本设计中,选用三线式桥式测温电路,其最大优点在于将地线单独引出,参考电阻网络的地线电阻可以与PT100的地线电阻匹配,减小电阻差异带来的偏差问题,提高温度测量精度。其设计原理同电压采集电路基本相同。
3调试数据与分析
设计完毕后,对该套电池管理系统的硬件电路进行了制版调试。在解决了焊接遗留的硬件问题后,通过MCU的监测获取了大量数据。调试过程中某一时刻点的状态量。从测试数据可以看出,无论是电压、电流、还是温度,其相对误差都控制在1%以内,特别是电压检测数据,精度更是达到了3‰,这样的误差在电池管理系统误差允许范围之内,达到了电池管理系统数据采集前端模块硬件电路设计的目的。
一、概述
数据采集是信号分析与处理的一个重要环节,在许多工业控制与生产状态监控中,都需要对各种物理量进行数据采集与分析。但是,专用数据采集卡的价格一般比较昂贵,而我们PC机的声卡就是一个很好的双通道数据采集卡。实际测量中,在满足测量要求的前提下,可以充分利用计算机自身资源,完成数据采集任务,从而节省成本。
本文利用vc编程实现了声卡的双通道数据采集,并且对信号进行频谱分析同时实时测量出信号的频率。还利用声卡的DA通道,实现了正弦波、方波、三角波输出的信号发生器。波形发生器产生的信号同时还可以作为内部测试用信号,检验数据采集的准确性。
二、声卡数据采集系统硬件组成
LineOut
图1声卡数据采集的硬件组成图
利用声卡进行数据采集的硬件组成如图1所示。通常,利用声卡的LineIn端作为信号输入端口,两路被测的模拟信号经过左右声道,A/D转换进入计算机,通过vc编写的虚拟仪器界面显示出来。声卡一般都具有单、双声道输入,从而可实现单双通道的采集.双通道采集时,声卡采用并行采集,并具有采样保持功能,两个通道的数据不存在时间差,第一通道和第二通道数据存储在同一个数据缓冲区中,且等间隔存储,奇数序列是一个通道数据,偶数序列为另一个通道数据.读取数据时,将缓冲区中的数据全部读入到一个数组中,然后对该数组数据,采用隔一点取一点的方法,将数据分开并分别存到另外的两个数组中,即将两个通道的数据分开,从而实现了双通道的采集.单通道采集时,缓冲区中仅仅是一个通道的数据,直接保存到一个数组即可。同时,信号发生器产生的波形也可经过Lineout端输出。
为了保护声卡,被测信号并不是直接进入声卡,而是先经过一个信号调理电路,对信号进行放大或限幅,滤波等处理,信号调理电路如图2所示。(a)图是直流电平叠加模块:C1代表信号的输入,D1代表叠加直流电平后信号的输出,电位器R8控制输入直流电平的大小;(b)图是信号叠加模块:A1、A2代表叠加信号的输入,B1代表叠加后信号的输出;(c)图是模拟滤波模块:LPIN代表滤波器的输出,LPOUT代表滤波器的输出,调节R6可以控制输出的、幅度大小。当然可以根据需要在调理电路中加入一些其它的模块。
图2信号调理电路
三、声卡采集系统的软件编程
微软公司已经提供了一系列API函数用于对声卡的操作,为了将需要用到的函数封装成了一个类,编程时只需直接调用。使用的API函数有:
waveInGetDevCaps实现声卡的性能测试
waveInOpen打开波形输入设备
waveInPrepareHeader为波形输入准备缓冲区
waveInAddBuffer将数据缓存发送给波形输入设备驱动
waveInStart启动向波形输入缓冲区存储数据
waveInUnprepareHeader释放波形输入缓冲区
waveInStop停止向波形输入缓冲区存储数据
waveInClose关闭波形输入设备
设计的软件界面如图3所示。目前所实现的功能有:
图3软件界面设计
1.两路波形发生器。可产生正弦波、方波和三角波,并且频率和幅值可调。
2.频谱分析仪。可以对采集的信号进行频谱分析。频谱分析采用了快速傅立叶变换(FFT)算法,并且将其封装成独立的函数,方便调用。
3.频率计。同时还可以实时地测量出采集到的信号的频率。在利用程序计算频率时,一般采用两种方法。一种是利用快速傅立叶变换,它的优点是不仅能对标准的周期波形进行测量,而且能够计算出各种复杂波形和信噪比非常低的信号的频率值,缺点是分辨率受到限制。另一种计算频率的方法是采用脉冲计数法。它的优点是测量低频信号时精度高,但它不适合波形复杂和信噪比低的信号频率测量。所以在测量过程中,程序先判断信号上述的性质,根据信号的性质,自动地采用相应的测量方法。
四、小结
采用声卡制作的信号采集系统,具有廉价、方便等优点,它可用于振动、噪声、位移、温度、压力等各种物理量的测试。但是一般的声卡支持的采样频率有11025、22050和44100,对高频信号的采集会出现失真。总之,运用廉价的声卡,辅以适当的软件编程,可以构成一个较高采样精度,中等采样频率且具有很大灵活性的数据采集系统。
参考文献
[1]种兰祥,阎丽,张首军.基于计算机声卡的多通道数据采集系统.西北大学学报,2002.
1.1温度检测温度探头类型为热电阻,热电阻测温原理是给热电阻通小电流,测量电阻上的电压,得出热敏电阻的阻值,对照热敏电阻的参数曲线得出温度。温度探头需要恒流源提供稳定的电流才可以保证读取电压的准确性,选择lakeshore公司生产的121系列恒流源可满足精度要求。该恒流源既提供固定档位电源供电也可以通过编程实现连续可调电流输出。由于超导线圈采用过冷液氮浸泡冷却[2],根据液氮温区(70K~77K)对探头型号进行选择。对于需要在30K~800K之间对温度测量的场合,可选择PT100系列铂电阻温度计[3],其额定电流为1mA。在这个温度范围内,铂电阻温度计具有很好的重复性和较高灵敏度,同时满足在电抗器的磁场环境下使用的要求。70K以上铂电阻温度计具有通用的标准曲线,如图2所示。相比较于其他种类温度探头具有更好的通用性,而且具有互换性。另外,在温度测量中,探头需要贴近超导带材,薄膜型的铂电阻温度计满足设计要求。探头的接线方式有二线制和四线制。采用二线制接线方法,会引入线路电阻,造成测量误差。因此在35kV电抗器的数据采集系统中,均采用四线制接线方法。
1.2磁场检测测量磁场强度的原理是霍尔效应,在半导体薄片两端通以控制电流,并在薄片的垂直方向施加匀强磁场,则在垂直于电流和磁场的方向上,将产生霍尔电压,根据产生的电压就可以知道磁场的大小[4]。在实际测量中需要在两个方向(轴向场与垂直场)对磁场进行测量。在35kV电抗器设计中,根据电磁设计仿真得到磁场的最大值约为2000高斯,并且该磁场探头的工作环境为液氮温区。Lakeshore公司生产的HGCA3020的轴向磁场探头与HGCT3020的径向磁场探头,可满足使用要求,其额定电流为100mA。
1.3数据采集系统数据采集系统还需要对探头电压进行记录以及处理显示等一系列后续工作[5]。实验过程中实验对象需要监测的信号比较多,采用数据采集仪器对各个数据进行采集记录,节约人力成本而且可以减少由于人工录入所导致的错误。在该套数据采集系统中,采集的信号有54路,温度采集精度为1K,电压精度为10mV。吉时利公司生产的3706数字开关万用表作为数据采集仪器满足使用要求。数据采集仪器采集数据以后,把数据传输到主机中通过程序对其进行处理,然后显示在显示器上供人员监测电抗器的工作情况。在电抗器实际运行过程中,主机工作环境可能较为恶劣,对工控机的稳定性和数据的安全性有一定要求,需要对主机进行加固、防潮、防辐射、防尘等特殊设计。研祥工控机IPC-810E满足使用要求。
1.4硬件布局及搭建(1)温度探头布点方案35kV超导可控电抗器超导线圈分为内外两圈,各由32个双饼组成。工作在交流工况下,超导线圈存在交流损耗,根据仿真结果显示端部线圈交流损耗功率最大,需要对线圈端部重点监控。单个超导线圈上布点25个,总计50个铂电阻。铂电阻在安装时需要对其进行加固,防止被快速流动的液氮损坏。(2)磁场探头布点方案电抗器中,带材受垂直磁场影响较大,端部的带材最易受到磁场的干扰,磁场探头安装在电抗器的端部。由于磁场探头受到液氮的冲刷,磁场探头需要通过夹子进行固定。通过对端部磁场两个垂直方向数据的读取,得到磁场强度的实时数据,为监测电抗器运行状态提供数据支持。各个设备的集成布局以及安装需要以机柜的形式实现。机柜的设计原则是整套装置的实用性和外在的美观性。机柜上主要安装的设备和仪器有:吉时利3706数据采集仪、工控机(包括工控机主机、液晶显示屏、键盘和鼠标)、探头供电电源,同时在机柜下部预留一部分空间用于放置实验过程中常用的一些工具和仪表等,如纳伏表、波形记录仪、锁放和功率分析仪等,设计方案如图4所示。
2软件开发
软件开发即控制界面开发,通过界面控制各种数据采集仪器的工作,并将采集到的数据传输到电脑上进行处理、显示和保存等[6]。图5所示的为软件搭建流程示意图,首先调试设备,完成工控机与3706数据采集仪器之间的通信,使数据能够进入主机进行处理,然后对数据进行分类处理,实现多通道数据处理以及数据的分类显示。基于LabVIEW开发的程序主要包含后台程序以及操作界面。后台程序(1)数据采集系统主程序数据采集系统主程序实现对数据采集仪器中的电压数据读取的功能[7]。通过在主程序中对数据进行通道选择可以实现不同的处理功能,包括3706仪器的通讯设置和数据初始化。(2)数据传输程序数据传输是指将数据从数据采集仪器上传输到工控机上。LabVIEW中提供了多种通讯协议,如串口、并口和以太网传输协议,此处选择以太网作为传输方式,数据采集仪器发送数据,工控机接收发送过来的数据,进行处理。(3)数据记录程序LabVIEW中可以将数据保存为多种格式,其中就包括常见的Excel表格,“写入电子表格.vi”可以将数据保存为Excel格式,并且该VI不需要启动Excel,写入速度较快、使用较为简单,所以使用该VI进行数据保存。由于EXCEL是目前比较通用的数据处理软件,所以保存数据的格式选为EXCEL表格,方便处理数据。程序中可以设定将EXCEL文件保存在某个文件夹下,分别将磁体温度、磁场强度保存在两个文件夹下,并且为方便查找数据,每个文件的文件名以日期和时间命名,这样方便日后查找数据。对于不同类型数据也可以直接分开存储,方便以后查询使用。在以上程序的实现中,主要以子VI形式完成。子VI是指将特定的程序封装,完成特定的功能的模块。通过对程序的封装既可以实现原有功能,并且使得主程序更加简洁,便于查找错误,又增加了程序的可移植性,提高了程序的整体质量。操作界面该系统的操作界面首先确保了所有数据的显示以及后台记录,另外对电抗器内部环境参数(杜瓦内部压强)以及外部辅助设备的工作状态(液氮制冷机流量)也进行了监控。针对温度监控,单独设置了更加直观的波形显示,更利于观察超导体的温度变化,如图6所示。在35kV电抗器数据采集及监控系统的设计方案中,界面中没有需要用户设置的参数,在前面板中分列铂电阻显示控件来显示数据。开始运行后,3706开始采集数据,并且将这些数据储存到表格当中。在前面板中,同一个波形图中可以显示多个通道的数据,每个通道的数据有颜色不同,这样就可以比较实验磁体不同部分的温度或不同超导双饼的电压等。
1.数据采集方法分类
按照数据平台的填写方式和时间要求,对平台采集中数据的关联要求进行分析。按照上述的要求,以2012年填报数据为例,将采集的数据分为以下几个大类:无条件;自动生成;一次性+及时更新;按年度;按会计年度;按学年;按学期;一次性;学年+更新;及时更新+条件。
2.平台数据采集关联分析
分别对10类数据采集时的关联度进行分析。“无条件”指的是系统初始化好的,各学校可以直接使用的功能模块,直接填报即可,与其他的数据关联性不强。“自动生成”数据,不需要填报,由其他数据自动产生逻辑数据,与学校整体数据有关,关联性非常强。例如2.1.3在校生人数则是由2.3.2专业列表在校生人数(二级学院)自动汇总而来,如果后者填报有误,那么前者不会准确,关联密切。“一次性+及时更新”数据是由初次导入数据加上及时更新的数据组成。对初次导入数据进行更新时需要考虑数据间的关联性。例如二级单位已经有专业、教职工信息等和二级单位相关联的数据,则此二级单位无法被删除。如需删除,需要对二级单位相关联的数据进行删除。再如新建一个专业后,直接删除,但是并未删除掉,这是因为系统自动为其建立了“专业招生状态”,此专业已被“专业招生状态”使用了,如真的需要删除此专业,则先点击“正在招生”链接,进入专业招生状态页面,将其建立的一条招生状态记录删除掉,再回到专业列表,便可删除刚新建的专业。所以及时更新时,一定要考虑到数据原有的关联系。“按年度”的数据,统计的时间段是年度,需要注意的是,年度要求有区别。以2012年上报数据为例,数据上报时间分别是2009年起、2011年起,数据填报从2009级起、2012~2013学年第一学期起,采集数据时需要关联不同年度的数据。“按会计年度”数据关联性相对较低,只采集上报年的会计年度的数据,考虑学校收入和支出之间的平衡。“按学年”、“按学期”、“学年+更新”数据,在采集数据时要充分考虑到统计时间的要求,还要考虑到数据间的关联。例如3.6国际合作采集的数据要以2.3.1专业基本信息为基础;4.2课程评价采集数据要以4.1课程安排数据为基础,课程状态有时不能更改,是因为一旦完成了课程评价,即将课程状态设置为“结束”,并保存了课程评价,则无法再将课程状态设置为“开课”。“一次性”数据是指一次性采集完成、不能更改、不需更新的数据。例如7.2.3高考情况,记录学生的高考成绩。这类数据采集之初关联系不强,但是作为其他数据的支撑,关联性就比较强。“及时更新+条件”数据,是指随时可以更新的数据,如师资培训情况、实践情况、学生毕业后的创业情况等,在采集这类数据时,也是先区分好统计的时间段,再填写各项内容,数据采集是没有关联数据的,采集后的数据对平台的第8大项报告的生成产生很大影响。
二、管理平台数据的共享性分析
管理平台数据的采集涉及到学校的各个方面、各个部门,如教学部门、财务部门、人事部门、资产部门等。通过管理平台所形成的数据具有共享性,如某实训室实训条件数据的采集,可以利用资产部门所建立的数据平台,抽取其中的关联数据,从而得到实训室的基本硬件资料,使得原不同平台间的数据不再单一不可复用,这就是利用数据平台实现信息共享的优势所在。通过这种方式,学校内的数据可以通过重用其他领域数据而获利,学校数据也可以促成其他领域没有的活动,并产生新的关联数据,使得数据成为一个成长着的有机体。管理平台关联数据采集的意义在于:一是各种基础信息由各基层单位通过审核生成,通过计算机网络平台的填报使各职能部门能及时掌握企业的运行状况,满足各职能部门需要;二是各职能部门能及时做出对比,及时分析研究解决问题的措施,把各种综合信息向学校领导、各职能部门及基层单位及时反馈,分别满足其管理决策、研究问题和解决问题的需要。为确保统计资料的系统性、完整性,应该在各部门的工作职责中明确相应的统计责任,要求其按统一确定的口径、范围及时间提供相应的统计资料及分析报告,最终将统计信息自基层通过计算机网络覆盖整个学校。
1.2电源模块部分电源为各种电子系统与设备提供动力,电源系统出故障,会导致整个电子设备不能正常工作,因此电源性能直接影响系统与设备的工作质量和效率。仪器需要稳定的电压,设计电源模块成为保证设备可靠工作的必要工作。
1.3CPU控制系统由于石油钻井深度能够达到数千米,井下温度超过120℃。油井下环境非常复杂,要求数据采集系统必须能够实时、快速地处理采集的数据,还具有耐高温以及很好的抗干扰能力。采用C8051单片机器件采集井下时间、温度,并通过TBS总线接收压力,流量,持水率等数据参数。选择C8051F040作为主控芯片,了解其与各模块的接口技术,设计微控制器电路,并进行设计仿真,以及各部分电路实验。验证电路结构后,设计原理图、PCB板、焊接调试电路,并编写控制各模块的程序,完成主控芯片和电路设计,及软硬件调试工作。
2硬件整体设计
此设备需要下放到油井下,需要采集的参数为温度和实时时间,接收的参数为压力`,流量,持水率。设备下井后,工作电压为35V,通过改变向油井下供电电压,由继电器来控制井下仪器的开伞与收伞,系统由中国石油测井公司提供专用电池。仪器下井后先开伞,再进入采集状态,开伞后,向井下仪器发命令,下发的命令为0x82(持水率),0x8(0流量),0x84(压力),每间隔40ms下发一个命令,循环发送,下发的命令通过TXD,经TBS端送到下面挂接的仪器。下面仪器收到命令后自动上传,上传的数据(三个参数)由TBS端进入,经WESN-SC-001模块解调通过TXD进入CPU,选择合适的波特率,把数据存储到FLASH存储器中,工作40天后停止采集,收伞。本设备的工作方式为CPU处于持续工作状态,其他电路处于间歇工作状态,每5分钟唤醒一次,每次工作时间可以调整。设计了USB接口,用于硬件和软件调试,调试完成后去中国石油测井公司做实验,对系统进行测试。
引言
现在嵌入式系统的应用越来越广泛。随着网络技术发展和市场需求的变化,工业设备实现网络化管理控制已经成为一种必然趋势。M2M(MachinetoMachine)的网络通信已成为国内外研究热点,而Web技术为工业设备实现网络化管理提供了一种解决方案。本文从硬件和软件设计两个方面讨论了摩托罗拉MCF5249处理器在数据采集方面的应用,并实现了采集数据的远程Web表征。
由于这一系统面向广义的过程,所以只要可获得过程参数,就能实现过程行业的远程在线表征。特别是基于Web完成实时数据库生成,真正实现远程集群系统的数据资源无人工干预自动获取。其应用将会不断地延伸。
本文描述的摩托罗拉MCF5249是以ColdFire32位微处理器为基础的高性能处理器,该处理器内部集成了一个片内12位ADC,可用于工业数据采集。且数据采集系统基于嵌入式操作系统uClinux。由于uClinux是为没有MMU的微处理器设计的。且源泉代码公开,为降低成本和获取软件的自有产权提供了方便。当然,uClinux不是一个强实时系统,为支持一般过程系统,可以通过一些补丁程序来提高其实时性,所以本文讨论的数据采集系统主要应用于一些实时性要求不高的场合。
1数据采集系统的硬件设计
摩托罗拉MCF5249处理器内部集成了一个片内12位∑—ΔADC,它有四路输入(ADIN0~ADIN3),任一时刻只允许一路输入,由多路选择器决定。ADC的数字部分在MCF5249的内部,而模拟电压比较器由电路提供。A/D转换的输出引脚以脉宽调制的格式提供参考电压,因此,该输出需要一个的阻容电路,将其转换成直流电压,以备外部的电压比较器电路使用。数据采集系统的硬件原理图如图1所示。
由于微处理器不可承受负电压,所以必须将输入电压限制在0~+3V之间。Motorola公司不建议使用外部箝位二极管直接在模拟输入端进行过压保护,而在输入端引入1~10kΩ的限流电阻和低通滤波器,在低通滤波器的输入端连接二极管对输入电压进行箝位。
2数据采集系统的软件设计
数据采集系统的软件设计主要分为两大模块,即数据采集模块与数据显示模块。
2.1数据采集模块的设计
数据采集模块是系统的核心模块,为了提高数据采集的实时性,应采用中断方式完成数据采集。其流程图如图2所示。
MCF5249微处理器为其内部ADC提供了一个控制寄存器ADCONFIG,其地址是MBAR2_ADDR+0x402,在初始化程序中需要指定MBAR2_ADDR地址。
通过ADCONFIG寄存器可以设置A/D转换器工作方式、采样频率、是否采用中断方式等。下面给出设置ADCONFIG寄存器实例。
#defineMBAR2_ADDR0x8000000
#defineAD_CONFIG0x402
#defineAD_VALUE0x406
…………
//设置ADC
*(volatileunsignedshortint*)(MBAR2_ADDR+AD_CONFIG)=0x442;
该设置确定ADIN0作为模拟信号输入通道,采样频率设置为1/4系统总线时钟频率。当时钟产生4095次翻转时,系统产生一个软件中断(中断号为63)。一次采样结束,并将采样结果存于ADVALUE寄存器(其地址为MBAR2_ADDR+0x406)。A/D转换值可以用如下公式计算:
Vi=(X/(2n-1))×Vfullscate
其中,Vi为ADC的输入电压;Vfullscate为满量程输入电压;
X为ADC输出的数字量;
n为ADC的位数。
A/D转换的结果在中断处理程序中读取。读取一次转换的程序代码如下:
Volatileunsignedshortintm;
m=*(volatileunsignedshortint*)(MBAR2_ADDR+AD_VALUE);
通常,A/D转换需要连续采样。采样结果应存放在一个多访问循环队列MACQ(MultipleAccessCircularQueue)中。
MACQ是一个定长有序的数据结构。源进程(生产者,ADC采样程序)将数据存入MACQ,一旦初始化,MACQ总是满的。当有新的数据被存入(PUT)MACQ,旧数据即被丢弃(如图3)。应用进程(消费者)可以从MACQ中读取任何数据。读功能是非破坏性的,即读操作不会改变MACQ。
在uClinux中,A/D转换中断程序的编写方法是将A/D转换器作为一个字符设备来处理。中断程序是在linux/drivers/char目录下编写,其结构如下:*file:m5249_adirq.c
#include<linux/interrupt.h>
#include<asm/irq.h>
#defineADC_IRQ(128+63)//定义中断号
#defineMBAR2_ADDR0x8000000
#defineAD_CONFIG0x402
#defineAD_VALUE0x406
/*定义中断处理函数*/
voidadirq_interrupt(intirq,void*d,structpt_regs*regs){
在此读取A/D转换的值并存入队列中。
}
/*设备初始化函数*/
intadirq_init(){
intresult;
unsignedshortadc_irq;
adc_irq=ADC_IRQ;
result=request_irq(adc_irq,&adirq_interrupt,SA_INTERRUPT,5249_adirqNULL);//注册中断
if(result==-1)
{printk(“Can''''tgetassigned%d”adc_irq);
returnresult;}
return0;
}
中断服务程序的添加方法如下:
①编辑uClinux/drivers/char目录下的mem.c,添加“adirq_init();”;
②编辑此目录下的Makefile加入“obj-y+=m5249_adirq.o”;
③编译(make)。
2.2数据显示模块的设计
为了实现采集到的数据以Web方式显示,需要选择一个Web服务器。本文采用的Web服务器是BOA。在CGI程序中编写一个函数读取MACQ队列中的数据并显示。
主要有以下显示模块。
(1)编写一个CGI程序
*编写一个读取MACQ队列中数值的函
readFromMacq()。
*编写一个生成动态HTML页面的函数show()。
Voidshow_t(){
……
printf("Content-type:text/html");
prinft{"
<html>
<head>
<metahttp-equiv=pragmacontent=no-cache><metahttpequiv=expirecontent=now>
<title></title>
</head>
<body>");
在此将MACQ中的数据读出,假设值赋给变量n
prinft("<center")Thevalueis%x!</center>
</body>
</html>",n);
}
*编写一个CGI的主程序main_cgi。
在主程序中需要读取HTML页面中的字符,并判断应执行那一个CGI程序。
(2)用HTML语言编写一个主页
在主面中应包含:
<ahref=/cgi-bin/main_cgi.cgi?flag=10target=main>键接字符</a>.
随着人们的生活日渐信息化,越来越多的人会使用电子邮件这种方式,这令使用电子邮件做数据采集成为可能,目前已经有部分企业、部门、个人使用这种方式做数据统计、研究工作。在信息化的社会里,人们可以使用很多信息化的方式采集数据,目前人们可用三种方法采集电子数据。第一种,通过在网上传播某一个主题,请网友共同来讨论,根据网友的讨论采集数据,这种数据采集的方式影响力不够、精确性不够,且采集的数据难以统计。第二种,通过在网站上问卷的方式进行采集,这种方式可以采集到标准化的答案,然而这种采集方式需受到网站的限制、主题吸引力的限制等,它只适合采集非常热门的主题调查数据。第三种,就是制作一份调查问卷,然后利用群发邮件的工具将该问卷批量的、大范围的发给用户,用户在使用电子邮箱的时候,就有可能看到这份问卷,虽然这种调查问卷有可能被用户视作垃圾邮件而不予回答,然而它的调查范围广、使用成本小、统计答案易,所以它是作网络数据采集的一种极佳的方式,使用这种方式特别适合采集热门主题以外的各类数据。
2利用电子邮件进行数据采集的方法
2.1制作一份直观的引文用户在阅览电子邮件的时候,一般喜欢邮件能够直入主题,用电子邮件的方式发放问卷时,如果客户不了解自己到底需要干什么,他们可能就不会再关注这封邮件。所以在使用电子邮件采集数据时,需先设计一个直观的、友好的引文,让客户了解自己可以做些什么。比如以图1为例,它表明回答问卷的方式很简单,只需要占用客户几分钟的时间,客户只需要点几下鼠标就能完成问卷,客户就会认为自己可以在工作、闲暇之余配合做调查问卷,于是就会尝试阅读接下来的内容。
2.2制作一份友好的问卷
2.2.1界面友好在使用电子邮件采集数据的时候,试卷设计人员需了解到,人们使用电子邮件是因为接受电子邮件方便、快捷的服务方式,他们不希望自己在处理一份电子邮件,特别是一份与自己本身利益无关的电子邮件上耗费太多的时间。如果用户觉得自己要花费很多力气才能做完数据调查问卷,他们就会放弃配合数据采集。为了提高用户的参与性,试卷设计人员要尽量将调卷设计得直观化。比如参看图2,如果试卷设计人员能够用窗体化的方式设计试卷,让用户直接用做选择题的方式回答问卷,用户就会乐于回答。
2.2.2行文友好在设计试卷问题的时候,如果试卷出现问题叙述不清或者答案叙述不清的时候,用户就会不了解自己应当如何回答,他们就有可能放弃回答问题,或者随便选择一个答案当作回答。要确保调查数据采集的有效性与准确性,试卷设计人员在设计问题时,要用准确的、明晰的语句提问,且需准确的给出问题的答案。以图3为例,它的问题为请说明你所在的岗位。它列出的答案有4个,然而用户可能工作的岗位在这四个范围以外,如果试卷要求客户补充答案,客户就会觉得回答这个问题太麻烦,他们可能会因为不愿意打字而不愿意继续完成问卷。为了准确的采集数据,试卷设计人员需给出更多种类的答案,以该问题为例,它可以添补部分常见的工作岗位,而部分冷门的答案不需要特别作统计时,可以用“其它”这一个答案来概述。
2.2.3版面友好在设计问卷的时候,如果试卷出现版面局促、布局不合理的现象;颜色过于杂乱,让用户心情烦乱的现象,用户就可能会因为觉得做调查问卷不愉快,从而不愿意接受数据采集。为了让客户愿意耐心的阅读调查问卷中的文字、愿意积极的配合数据采集,问卷设计人员要做好排版设计、颜色设计这两项工作。以图4为例,它将背景色计为简洁的白色,使用窗体的方式引导用户回答问题,这种问卷设计非常接近用户浏览网页的习惯,用户会因为习惯这种设计而接受数据采集。
2.3制作一份简洁的尾页用户做完问卷以后,会想了解自己应当怎样处理这份问卷。如果没有一份简洁的、具有引导性的尾页,客户会因为回答问题后不知道怎样处理这份问卷而随意的处理答案。为了便于客户了解应当如何处理数据采集的问卷,问卷设计人员要设计一份简洁的尾页。以图5为例,它提供用户重新回答问题的机会、结束并完成数据采集的机会、将该问卷保有在计算机设备中的机会、将该问卷打印保存的机会等。问卷的尾部给予简洁、优质的服务,同时给予用户一个真诚的感谢,会让用户愿意接受下一次的问卷调查。
3利用电子邮件进行数据采集的要点
3.1利用电子邮件的速度电子邮件具有高速、便捷性,要利用电子邮件做好数据采集工作,就要利用电子邮件的高速性。从以上电子邮件的问卷调查设计中看到,它的问卷设计要时时处处为客户考虑到快捷性的体验。这包括问卷设计的内容不能太多、太长,否则用户会失去协助数据采集的耐心;问卷设计要友好直观,让用户能一眼明了自己正在接受怎样的数据采集,自己需要用怎样的方式配合等;问卷设计的回答方式要便捷,为了提高数据采集的速度,问卷设计人员要尽量使用是非题、选择题等采集数据。
3.2利用电子邮件的成本如果使用电子邮件问卷以外的调查方式,数据采集人员需额外的支付各种资金。然而如果使用电子邮件调查的方式,它几乎等于零成本。然而正因为电子邮件数据采集的方式成本几乎等于零,这就意味着数据采集人员需了解自己到底需要采集怎样的数据,然后有针对性的发放问卷。如果数据采集人员没有事先作好客户范围规划,将有可能收到大量的无效邮件,它反而造成数据资料统计的低效性。
3.3利用电子邮件的范围在做电子邮件的数据采储时,数据采集人员需了解使用电子邮件人群范围的思维习惯。经统计,我国绝大部分的网民对陌生人邮寄来的电子邮件兴趣不大,他们担心开启陌生人寄出的电子邮件会感染上病毒,这会造成电子邮件数据采集的低效性。目前会经常使用电子邮件的人群一般一青年学生、企业白领、商务人员、公务人员为主,这会造成数据采集范围的狭窄性。如果数据采集人员能了解电子邮件使用人群的范围、掌握他们的思维习惯优化电子邮件数据采集问卷,将能取得良好的数据采集效果。
3.4利用电子邮件的反馈与其它的数据调查方式相比,电子邮件的数据采集方式具有反馈性,如果数据采集人员因故需要深入的了解答卷人员一些问题,可以利用电子邮件的反馈性进一步沟通,它有可能会取得良好的沟通效果。
1.1通信协议VantagePro中数据传输和命令控制使用串行通信协议,即RS232C串口通讯协议标准。RS232C串口通信协议的包含,8个数据位,1个起始位,1个停止位,无奇偶校验位。通信协议中的波特率设置为4800比特。用RS232C串口通信协议中的DB9(9针D型串口)。VantagePro的串行端口的命令格式可以表示为下面的格式:<参数名称—十进制数字><参数名称—十六进制数字><参数名称—二进制数字>这三种格式。十进制和十六进制数字可以用ASCII替换。二进制数字发送字符值。每个命令之后都要紧跟着一个换行符(\n)。
1.2数据格式VantagePro通过串口获取气象数据,实际传送的气象数据为99个字节的数据包,如表1所示,从1-99对数据包编号,提取的数据用括号给出了注释,括号中逗号之前的内容表示字段含义,逗号之后的内容表示测量值的单位。数据包的具体格式如表1所示。
2实时气象数据拆分与归档
在MUSER的应用中,将各个ISS采集的气象因子数据直接通过RS232C串口通信协议将采集的数据传到操作系统为LINUX的计算机,通过该接收机器上的数据请求与拆分程序将RS232C传送的气象因子数据包实时拆分出需要的气象因子并归档到MySQL数据库和Redis高速缓存中。同时数据合并程序自动合并同价值的数据,将最新的数据存到Redis中。系统整体结构如图1所示。
2.1初始化串口数据的接收和归档以驻留程序方式运行在服务器上,图2显示了实时气象数据拆分与处理的初始化流程。气象因子的记录器对象主要暂时存储拆分处理后的气象数据,气象因子读取器对象负责读取数据包中记录的特定气象因子的测量值。由于VantagePro气象站测量的气象因子的值与要归档值的单位不一致,因此也需要气象因子的修正器对象来对测量的原始值进行修正。
2.2数据的拆分与处理系统的初始化后,采集程序定时从串口接收数据,首先获得采集时间并转换为1970年到现在的秒数,并向VantagePro请求一个数据包,接着就是处理收到的气象数据包。PC上实时气象数据的拆分与处理的流程如图3所示。图3中的时间秒数的定义为从1970年1月1日0时0分0秒到此时的秒数。相邻的两个时间秒数之间相差60秒,即1分钟。数据的采样周期也是1分钟。时间秒数用来唯一表示气象因子的采集时间或采样时间,同时也作为Redis存储中可分类的集合中Score的值。
2.3气象数据的存储将采集的气象数据保存到MySQL数据库中,同时为了提高查询速度,使用Redis作为高速缓存。MySQL数据库中数据表的定义如表2所示。Redis是一个Key-Value存储系统[10]。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。Redis的功能可以理解为一个Key-Value的数据结构操作,数据都保存在内存中定期刷新到磁盘,以及提高的读写效率。Redis数据库通过两种方式可以实现数据持久化:使用快照的方式将内存中的数据不断写入磁盘和将操作记录记录在磁盘文件中。因为需要在Redis执行范围查询,我们使用有序集合SortedSets存储气象数据,集合结构中使用时间秒数作为score,气象数据的实际值为其value值。而Key的值为气象的统计因子,如温度(temperature)、湿度(humidity)等。比如将2015年1月29日16时26分05秒采集的温度的值17℃存储到Redis的命令为:redis127.0.0.1:6379>zaddiss.temperature142252110017。
2.4拆分存储实例在如下的气象数据拆分与归档的例子中,以测量室外温度的传感器iss.temperature为例。其它气象因子数据的拆分与归档和气象因子(室外温度)的处理情况类似。步骤如下:1)开始采样时间为2015年1月29日16时26分05秒,将该时间转换成1970年以来的时间秒数,为1422521100。2)向VantagePro发送命令LOOP1命令,请求一个99字节的数据包。接收端到气象站响应的数据包,数据包的内容如图5所示。3)传感器iss.temperature的读取器从数据包中偏移量为12的位置读取2个字节,其十六进制值为001d。读取器对象将001d转换成十进制的29。4)传感器iss.temperature的修正器将传感器的29F修正为2.900000F,然后再将2.900000F转换成-16.166667℃。(温度传感器记录的测量值是实际测量值的10倍,其它值的倍数详见表1)5)传感器iss.temperature的记录器将-16.166667℃更新到记录器对象中。6)将传感器的值归档到MySQL和Redis中。7)更新下一次采用时间,循环步骤1-7。
3气象数据合并与快速检索
3.1气象数据的合并一般情况下将采集到的气象数据处理成特定格式后直接追加到数据库中,然而随着时间的积累,数据库中的记录数会急剧增加。相应地检索某一个时间段的天气状态所需的时间也会增加,不能满足MUSER的高效数据处理的要求。由于连续时间段的天气状态可能相同。例如在2014-6-610:00:00到2014-6-610:00:59这一分钟采集到的天气状态为晴天,而在接下来的59分钟的时间内采集到的天气状态都为晴天。通常情况下是将这60条记录全部存储到数据库中,然而改进的归档方法是合并这60条记录为一条记录。当检索落在这一合并后的时间段天气状态时,仍然可以检索到要检索时间段的天气状态为晴天,这样做和从60条记录中检索到的天气状态一样都是晴天,保证了合并后的数据仍然是有效的。如果一天要归档的所有采集到的天气状态都一样,那么采用合并方法,数据库中存储一条记录就可以记录这一天的天气状态。但是如果采用传统的数据归档方式,记录一天的天气状态就需要24*60条记录,这样不仅浪费了存储空间,同时影响到检索效率。
3.2快速检索数据合并一定程度上可以加快检索速度,但对于具体值的气象采集因子,如需要在每个UVFITS文件中存储的温度,湿度值,是无法采用数据合并的,数据量仍非常大。为了进一步提高查询速度,使用Redis作为高速缓存。数据查询时首先访问Redis,只有当Redis访问失败时或者在Redis中找不到数据时才访问MySQL,并将从MySQL获得的数据更新到Redis中。MUSER中最常用的气象数据查询模式是根据观察时间查询气象数据,因此使用有序集合SortedSet,SortedSet是Set的一个升级版本,它在Set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列的MySQL表,一列存储具体的值,一列存顺序,也就是气象数据的时间。操作中key理解为zset的名字。查询时根据观察时间和气象因子可以获得该时刻的具体气象数据。比如查询时间2015年1月29日16时26分05秒的温度的值,首先将该时间转换成1970年以来的时间秒数,为1422521100,在Redis上执行如下查询命令:redis127.0.0.1:6379>zrangebyscoretemperature1422521100+infLIMIT01这条命令的意思是在键值为temperature的SortedSets中查找大于时间点1422521100的第一个值。+inf在Redis中表示正无穷大。
随着DSP芯片功能越来越强,速度越来越快,性价比的不断提高以及开发工具的日趋完善,广泛用于通信、雷达、声纳、遥感、生物医学、机器人、控制、精密机械、语音和图像处理等领域。作为计算机接口之一的USB(UniversalSerialBus)口具有势插拔、速度快(包括低、中、高模式)和外设容量大(理论上可挂接127个设备)的特性,使其成为PC机的设备扩展中应用日益广泛的接口标准。本文设计并实现了基于DSP的USB口数据采集分析系统,该系统的DSP负责数据的采集和运算处理,处理结果通过USB口送计算机显示分析,其结构如图1所示。
该结构图中,CPLD和FPGA实现模块接口,包括串并转换、8位和32位数据总线间的转换、SRAM等功能。采样结果经过CPLD送至DSP运算处理(FFT变换、相关分析、功率谱分析等)后,由FPGA和USB接口送至主控计算机存储和显示。计算机应用程序易于实现丰富的图形界面,具有良好的人机接口。
1模数模块
本系统主要用于振动信号和噪声分析,要求采样精度高,采样频率不超过100kHz。根据要求选用CRYSTAL公司的CS5396。该芯片原本用于立体声采样,基于∑-Δ结构,采样精度高,24位分辨率,120dB的动态范围;采样频率32kHz、44.1kHz、48kHz、96kHz可选;内部集成采样保持器、模拟低通滤波器、数字滤波器,同时还具有时采样功能;两路同时采样,串行输出,串行数据由CPLD转换成24位并行数据;由于该芯片量程是4V,差分输入,所以模拟部分只需再加上简单量程放大电路即可。这样模拟电路十分简单,抗干扰能力强、精度高。
2DSP处理器
选择DSP处理器时主要考虑其运算速度、总线宽度和性价比。本系统采样结构24位,最好选用32位DSP;系统要进行实时信号分析、模态分析等,要求有较高运算速度,所以选用TI公司的32位浮点DSP——TMS320VC33。该芯片采用哈佛结构,6级流水线操作,指令执行周期7ns,外设包括一个DMA控制器和一个缓冲串口。
N点复数FFT变换约做2N×Log2N次实数乘法运算和3N×Log2N实时加法运算。TMS320VC33的乘法、加法都是单周期指令,取N=1024,不计内存访问和其它时间,则一次FFT所需时间为:10×5120×17ns约0.9ms。而按96KSPS的采样频率计算,1024点的采样时间约10ms,可见该DSP速度足以满足要求。
该DSP启动模式可选,上电后执行驻留在低地址空间的BOOTLOADER;然后根据4个中断输入信号的状态判断启动模式,可以从RAM、ROM或串行口启动。本系统选择串行口方式。这样,DSP程序可以直接从PC下载送至DSP接口,做到在系统调试,具有极大的灵活性。
3USB接口
USB协议的实现基于网络的思想,是一种共享式的总线,在总线上数据以包(Packet)的形式发送。USB的数据传送有4种模式:块传输(BulkTransfers)、中断传输(InterruptTransfers)、同步传输(IsochronousTransfers)、控制传输(ControlTransfers)。当需要快速传输大批量的准确数据时,一般采用块传输模式;当传输实时性较强的数据时,采用中断传输模式。
当USB设备插入计算机时,计算机和USB设备之间产生一个枚举过程。计算机检测到有设备插入,自动发出查询请求;USB设备回应这个请求,送出设备的VerdorID和ProductID;计算机根据这两个ID装载相应的设备驱动程序,完成枚举过程。
由于USB协议非常复杂,开发者不可能在底层基础上进行开发。目前,市场上对USB协议进行封装的接口芯片,如:NationalSemiconductor公司的USBN9602、Plilips公司的PDIUSBD12等。本系统选用CYPRESS公司的带单片机内核的EZ-USB系列的AN2131QC.该芯片遵从USB1.0规范(12Mbps),将8051单片机内核、智能USB接口引擎、USB收发模块、存储器、串行口等集成一起,从而减少芯片接口时序。其内部结构如图2(虚线内是芯片部分)。
EZ-USB的8051代码(Firmware)可以固化在ROM内;更好的方案是通过USB口从主机下载到内部RAM,这样,易于修改、调试和更新。之所以能下载代码是因为芯片一上电完全在硬件上自动完成枚举过程,不需要Firmware。完成枚举后便可作为一个USB设备(叫做缺省USB设备)与计算机通讯,此时即可进行Firmware下载。下载完后,8051内核脱离RESET状态开始执行代码。可以通过Firmware对USB设备重新配置,这个重新配置过程叫做再枚举。
在EZ-USB中,缺省USB设备的接口中包括14个Endpoints,如表1所示。
表1缺省USB端点(Endpoint)
EndpointTypeAlternateSetting
012
MaxPacketSize(bytes)
0CTL06464
1ININT01664
2INBULK06464
2OUTBULK06464
4INBULK06464
4OUTBULK06464
6INBULK06464
6OUTBULK06464
8INISO016256
8OUTISO01616
9INISO01616
9OUTISO01616
10INISO01616
10OUTISO01616
计算机与USB设备的数据通信主要包括两个方面:一是读取采样数据;二是给USB设备发送控制命令。发送控制命令先发送一个命令包(消息),然后根据情况发送后续数据或从设备读取响应数据。因此,根据EZ-USB芯片的功能,直接使用缺省配置中的6个Endpoint。
EndpoitOUT2BULK:用来发送控制命令包。
EndpointIN2BULK:接收从USB设备发来的DSP消息。
EndpointIN4BULK:用来从USB设备读取数据,如读取采样数据、配置参数等。
EndpointOUT4BULK:用来向USB设备发送数据,如下载8051程序、下载FPGA程序等。
EndpointOUT6BULK:作辅助判断用,当PC传送完大量数据至USB设备时,向该端口写任意数据以起到通知USB设备的作用。
EndpointIN1INT:用来从USB设备读取响应信号,如下载FPGA程序是否成功的标志等。
在缺省配置基础上可以编写适合需要的代码,如果对8051编程经验丰富的话,完全可以在不需要调试工具的情况下编写Firmware。
本系统Firmware结构建立在对消息队列不断服务基础上,即构建一个消息队列,当接收到任何一方(DSP或计算机)的消息时,将其放入消息队列。消息的接收是通过中断服务程序来实现的。当处理完一个消息时,从消息队列取出下一个消息进行处理。这种软件结构非常简单,思路清晰,对调试十分有利。
USB设备驱动程序基于WDM。WDM型驱动程序是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法。通过它,用户不需要直接与硬件打它道(在USB驱动程序中尤为明显),只需通过下层驱动程序提供的接口号访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。
本系统的驱动程序是在CompuwareNumegaDriver-Works的基础上采用面向对象语言C++开发的。Driver-Works可以很快构造出驱动程序的框架。主要构造了两个类:ClassUSBDAC和classUSBDACDevice。ClassUSBDAC继承了classKdriver,负责装载驱动程序和创建功能设备对象时要做的一些操作。ClassUSBDACDevice继承了classKpnpDevice,是驱动程序的主要部分,负责设备启动、停止的操作以及与设备的数据通讯。API函数调用和CreateFile()、ReadFile()、WriteFile()、DeviceIO-Control()、CloseFile()等的实现也在classUSBDACDevice中完成。
ClassUSBDAC的定义如下:
classUSBDAC:publicKdriver
{
SAFE_DESTRUCTORS
public:
/*DriverEntry(),在系统引导或I/O管理器装入驱动程序时,调用这个例程。执行大量的初始化函数,包括建立到其它驱动程序的指针、查找和定位由驱动程序使用的任何硬件资源等,不过,这部分工作大多由基类Kdriver完成。*/
virtualNTSTATUS
DriverEntry(PUNICODE_STRINGRegistryPath);
/*AddDevice(),创建一个Device对象。调用其构造函数对设备初始化,创建设备的名称等。*/
virtualNTSTATUS
AddDevice(PDEVICE_OBJECTPdo);
Intm_Unit;
};
ClassUSBDACDevice的定义如下:
ClassUSBDACDevice:publicKpnpDevice
{
//Constructors
public:
SAFE_DESTRUCTORS
USBDACDevice(PDEVICE_OBJECTPdo,ULONGUnit);
~USBDACDevice();
//MemberFunctions
public:
…
//添加自己的成员函数
NTSTATUSUSBDAC_GetACK(int&);
NTSTATUSUSBDAC_StartADConversion(void);
NTSTATUSUSBDAC_StopADConversion(void);
NTSTATUSUSBDAC_DownloadFPGA(KIrp);
NTSTATUSUSBDAC_Download8051(KIrp);
NTSTATUSUSBDAC_SetChannelParameter(PUCHAR,ULONG,int);
…
};
引言
实现系统运行的最小功耗是现代电子系统的普通取向,也是绿色电子的基本要求。采有最小功耗设计方法既能减少电子设备的使用功耗,又能减少备用状态下的功率消耗。在节省能源的同时还有利于减少电磁污染,有利于电子系统向便携式方向发展,有助于提高系统的可靠性。
现代工业生产和科学研究对数据采集的要求日益提高。在许多场合要求数据采集系统向便携化方向发展,要求系统具有体积小、功耗低、传输速率快、使用方便灵活等特点。在数据采集系统中,如何节省电能以使系统工作时间更长,如何通信才能使系统数据传输速度更快,已经成为系统开发过程中必须加以考虑的主要内容。
微控制器MSP430的超低功耗技术在众多单片机中独树一帜,同时它具有集成高度等特点,因此,选用该控制器作为系统的主控制器,实现数据采集和Flash存储等功能。此外,USB端口与以往的普通端口(串口与并口)相比具有传输速度快、功耗低、支持即插即用、维护方便等优点;因此在通信设计时,结合UART转USB芯片CP2101以实现USB接口通信。上述设计既利用了MSP430的超低功耗特性,又利用了CP2101设计USB接口的简便性,设计得到的数据采集系统可以实现便携化、低功耗、使用方便等目标。
1MSP430数据采集系统的USB接口设计
1.1采信系统简介
本系统实现多路数据的采集、Flash存储及USB通信等功能。单片机系统主要完成信息采集、A/D转换、对信号进行放大滤波处理、数据通信、Flash存储等;实时时钟记录采集数据的时间;CP2101实现USB接口,并把单片机采集到的信号传给微机;微机完成数据接收、存入数据库、数据处理、计算、显示等功能。
1.2超低功耗MSP430微控制器
MSP430是TI公司近几年推出的16位系列单片机。它采用最新的低功耗技术,工作在1.8~3.6V电压下,有正常工作模式(AM)和4种低功耗工作模式(LPM1、LPM2、LPM3、LPM4);在电流电压为3V时,各种模式的工作电流分别为AM:340μA、LPM1:70μA、LPM2:17μA、LPM3:2μA、LPM4:0.1μA,而且可以方便地在各种工作模式之间切换。它的赶低功耗性在实际应用中,尤其是电池供电的便携式设备中表现尤为突出。在系统初始化后进入待机模式,当有允许的中断请求时,CPU将在6μ的时间内被唤醒,进入活动模式,执行中断服务程序。执行完毕,在RETI指令之后,系统返回到中断前的状态,继续低功耗模式。
本设计采用MSP430F13X微控制器。它具有非常高的集成度,单片集成了多通道12位A/D转换、PWM功能定时器、斜边A/D转换、片内USART、看门狗定时器、片内数控振荡器(DCO)、大量的I/O端口、大容量的片内RAM和ROM以及Flash存储器。其中Flash存储器可以实现掉电保护和软件升级。
1.3USB接口芯片选型
通用串行总线USB是由Intel等厂商制定的连接计算机与具有USB接口的多种外设之间通信的串行总线。传统上,USB接口的开发较为复杂。在同其它USB接口芯片相比较之后,本设计选择了无需外部元件的UART转USB芯片CP2101。选择这种接口芯片,可使USB通信接口设计变得十分容易。与同类产品相比,CP2101具有以下优点:
①具有较小的封装。CP2101为28脚5mm×5mmMLP封装。这在PCB上的尺寸就比竞争对手小30%左右。
②高度成度。片内集成512字节EEOROM(用于存储厂家ID等数据),片内集成收发器、无需外部电阻;片内集成时钟,无需外部晶体。
③低成本,可实现USB转串口的解决方案。CP2101的USB功能无需外部元件,而大多数竞争者的USB器件则需要额外的终端晶体管、上拉电阻、晶振和EEPROM。具有竞争力的器件价格,简化的电路,无成本驱动支持使得CP2101在成本上的优势远超过竞争者的解决方案。
④具有低功耗、高速度的特性,符合USB2.0规范,适合于所有的UART接口(波特率为300bps~921.6kbps)。工业级温度范围为-40℃~85℃)。
2USB通信的硬件接口电路
硬件电路如图1所示。CP2101的SUSPEND与SUSPEND引脚接到MSP430F13X的普通串口上。这两个引脚传送USB挂起和恢复信号,此功能便于CP2101器件以及外部电路的电源管理。当在总线上检测到挂起信号时,CP2101将进入挂起模式,可以节省电能。在进入挂起模式时,CP2101会发出SUSPEND与SUSPEND信号。为了避免SUSPEND与SUSPEND在复位期间处于高电平,使用10kΩ的下拉电阻确保SUSPEND在复位期间处于低电平。
CP2101的USB功能控制器管理USB和UART间所有的数据传输,以及由USB主控制器发出的命令请求以及用于控制UART功能的命令等。CP2101的UART接口处理所有的RS232信号,包括控制和握手信号。CP2101的VBUS与VREGIN引脚必须始终连到USB的VBUS信号上。在VREGIN的输入端加去耦电容(1μF与0.1μF并联)。CP2101与单片机接口是标准UART电平,与计算的USB端口连接是USB标准电路,因此,无论与3V还是5V供电的单片机连接都不需要电平转换。
3USB通信接口的软件程序设计
USB接口程序设计包括三部分:单片机程序开发、USB设备驱动程序开发、主机应用程序开发。三者互相配置才能完成可靠、快速的数据传输。其中USB设备驱动程序Cygnal公司已经提供。这里所要编写的是剩下的两部分。一部分为单片机MSP430F13X的串行通信程序,即对波特率、数据位、校验位、有无奇偶校验等通信协议的设计及单片机串行通信功能控制器的设置;另一部分为主机对CP2101的通信程序,这部分要在VC++环境中调用API函数实现。
3.1单片机程序设计
在IAREmbeddedWorkbench嵌入式集成开发环境中,编写单片机通信程序,可实现在线编辑修改。MSP430的内核CPU结构是按照精简指令集和高透明指令的宗旨来设计的,使用的指令有硬件执行的内核指令和基于现有硬件结构的高效率的仿真指令。以下为系统发送数据的部分应用程序(包括初始化及触发UART端口程序):
#include"msp430x13x.h"
/*************************串口*************************/
voidsend_byte(charsdata){
TXBUF0=sdata;/*发送数据缓存(UTXBUF0)*/
while(IFG1&TUXIFG0)==0);/*目的操作数位测试,发送中断标志*/
}
/*************************main*************************/
voidmain(void){
chara;
uinta=0x0055;
WDTCTL=WDTPW+WDTHOLD;/*停看门狗,WDTCTL看门狗寄存器*/
UCTL0=CHAR;/*8位接收控制寄存器URCTL线路空闲\u24322异步\u26080无反馈8位1位停止位\u26080无校验位*/
UTCTL0=SSEL0;/*发送控制寄存器UTCTL0,UCLK=ACLK时钟*/
UBR00=0x0D;/*32Kb/2400b=13.65,波特率选择寄存器*/
UBR10=0x00;/*高字节*/
UMCTL0=0x6B;/*调节*/
ME1|=UTXE0+URXE0;
/*开USART0TXD/RXD接收/发送允许*/
IE1|=URXIF0;/*打开USART0RX接收中断允许位*/
P3SEL|=0x30;/*P3.4,5=USART0TXD/RXD,选择模块功能*/
P3DIR|=0x10;/*目标操作数置位,P3.4=1,输出模式*/
_EINT();/*开中断*/
//主循环
for(;;)
{send_byet(a++);}
}
3.2USB设备驱动程序的安装
当把开发板接到主机的USB端口时系统会提示发现新硬件,并要求安装驱动程序:
先安装CP2101的驱动程序CP2101_Drivers.exe到C:FilestoRS-232BridgeController.
完成上面两步的安装后,在系统的设备管理器中会看见CP2101虚拟的那个COM口。在以后的设计中就是对这个口进行操作。此时可能应用串口调试助手调试下位机程序,接收发送数据。
3.3主机应用程序设计
主机应用程序的编写使用VC++编译环境中的API(应用程序设计接口)函数实现。应用程序的设计方法与串口编程类似。首先必须查找设备并打开设备的句柄,然后进行读写和控制操作,最后是关闭设备句柄。为了提高效率,可使用多线程技术实现读写。具体步骤如下:
①把CP2101的动态链接库CP2101.DLL文件拷贝到,或者路径下。当程序运行时就能调用CP2101.DLL。
②在visualstudio6.0中打开CP2101SetIDs.dsw,选择Release或者Debug建立CP2101.EXE工程文件。
③在VC++6.0中链接CP2101.LIB,这时就可以应用CP2101的动态链接库了。
④在VC++里进行编程,用API功能函数对USB堆栈、CP2101的EEPROM及数据传输的通信协议等进行编程。