基于TCP和μC/OS-Ⅱ的数据采集系统研究①

2017-11-01 07:17
化工自动化及仪表 2017年6期
关键词:多任务数码管字节

王 捷 艾 红

(1.北方工业大学电气与控制工程学院;2.北京信息科技大学自动化学院)

基于TCP和μC/OS-Ⅱ的数据采集系统研究①

王 捷1艾 红2

(1.北方工业大学电气与控制工程学院;2.北京信息科技大学自动化学院)

基于ARM7处理器LPC2210的锁相环功能与处理器的时钟频率,描述了A/D转换时钟频率的计算公式。设计了基于ARM7的数据采集系统。阐述了基于I2C总线协议实现数据存储的功能,说明了向存储器写入数据,从存储器中读取数据的函数调用。基于ARM7和μC/OS-Ⅱ操作系统的多任务应用,给出了创建多任务的流程图。通过网页可以显示实时数据采集值、报警上下限值、实时时钟和历史数据。基于TCP 协议实现了数据采集与网络传输系统的功能。

数据采集 TCP协议 μC/OS-Ⅱ操作系统 网页显示

在工业测量控制领域,需要获取大量的实时工业现场参数,使用ARM处理器不仅具有一般采集系统的优点,还加入了一些新的功能和特性,如网络功能。μC/OS-Ⅱ操作系统中重要的概念之一是任务。一个任务也称作一个线程,是一个简单的程序。每个任务都是整个应用的一部分,每个任务被赋予一定的优先级。μC/OS-Ⅱ是抢占式实时多任务内核,采用基于优先级的任务调度策略[1,2]。笔者实现了基于TCP协议的网络传输数据采集系统。在数据采集过程中,采用串行E2PROM芯片CAT24WC02对历史数据进行存储。为了使网页增加交互性,系统应用了JavaScript技术设计界面。利用开放的TCP通信协议,任何计算机都可以使用通用的网络浏览软件访问设备,现场设备的信息可以通过网页的形式显示出来。基于ARM处理器嵌入μC/OS-Ⅱ操作系统设计数据采集系统,进一步扩展了Web服务器的应用范围。

1 数据采集系统的构成

系统采用ARM7处理器LPC2210。基于ARM7的数据采集系统如图1所示,包括时钟电路、电源电路、复位电路、键盘与显示模块、数据存储器及信号放大电路等。

图1 基于ARM7的数据采集系统框图

2 数据采集与存储

2.1 锁相环与时钟频率

LPC2210具有锁相环PLL电路,PLL接收的输入时钟频率范围为10~25MHz。FOSC是晶振频率,M是PLLCFG寄存器中MSEL位的倍频值,锁相环PLL输出的处理器时钟频率cclk=M×FOSC。VPB分频器决定了处理器时钟cclk与外设器件所使用的时钟pclk之间的关系。通过VPB总线为外设提供所需的pclk时钟。A/D转换器的基本时钟由VPB时钟提供。编程分频器可以将时钟调至逐次逼近转换所需的4.5MHz。VPB分频器连接如图2所示。

图2 VPB分频器连接

2.2 数据采集功能实现

LPC2210具有8路10位逐次逼近式A/D转换器,测量范围为0~3V,每秒可执行四十万次10位采样。10位精度要求的转换需要11个A/D转换时钟。将VPB时钟pclk进行分频得到A/D转换时钟。该时钟必须不大于4.5MHz。ADC转换时钟分频值的计算公式如下:

其中CLKDIV是A/D控制寄存器ADCR的15~8位;pclk是VPB提供的时钟;adclk是ADC时钟,其值不能大于4.5MHz。A/D模块功能如图3所示。

图3 A/D模块功能

使用引脚AIN0和AIN1两个通道进行10位A/D转换,A/D转换时钟设置为1MHz。进行A/D模块设置,程序中的语句x<

ADCR = (1 << 0) | // SEL = 1 ,选择通道0

((Fpclk / 1000000 - 1) << 8) | // CLKDIV = Fpclk /1000000-1,即A/D转换时钟为1MHz

(0 << 16) |//转换由软件控制,需要11个时钟方能完成

(0 << 17) | // CLKS = 0,11个时钟/10位

(1 << 21) | // PDN = 1,正常工作模式(非掉电转换模式)

(0 << 22) | // TEST[1:0] = 00,正常模式(非器件测试模式)

(1 << 24) | // START = 1,立即启动ADC转换

(0 << 27); // EDGE=0,该位在START字段为010~111时有效

DelayNS(10);

ADC_Data = ADDR; //读取ADC转换结果,并清除A/D转换完成标志位

while(1)

{ ADCR = (ADCR&0xFFFFFF00)|0x01|(1 << 24); //选择第一通道进行第1次转换

while( (ADDR&0x80000000)==0 ); //等待转换结束

ADCR = ADCR | (1 << 24); //再次启动转换

while( (ADDR&0x80000000)==0 );

ADC_Data = ADDR; //读取ADC转换结果

ADC_Data = (ADC_Data>>6) & 0x3FF;

ADC_Data = ADC_Data * 3300;

ADC_Data = ADC_Data / 1024; //数据处理

sprintf(str, "%4dmV at VIN1", ADC_Data); //显示第1个通道A/D采集结果

ISendStr(60, 23, 0x30, str);

ADCR = (ADCR&0xFFFFFF00)|0x02|(1 << 24);//选择第二通道并进行第1次转换

while( (ADDR&0x80000000)==0 ); //等待转换结束

ADCR = ADCR | (1 << 24);//再次启动转换

while( (ADDR&0x80000000)==0 );

ADC_Data = ADDR;//读取ADC转换结果

ADC_Data = (ADC_Data>>6) & 0x3FF;

ADC_Data = ADC_Data * 3300;

ADC_Data = ADC_Data / 1024; //数据处理

sprintf(str, "%4dmV at VIN2", ADC_Data); //显示第2个通道A/D采集结果

ISendStr(60, 21, 0x30, str);

DelayNS(10); }

return(0);}

数据采集系统采集数据的过程以函数形式进行。首先设置ADCR控制寄存器的值,选择通道,写入A/D转换时钟频率,软件控制转换操作,选择正常工作模式。当设置完A/D控制寄存器ADCR并延时一段时间后,从A/D数据寄存器ADDR中读取选中通道的A/D转换结果。

2.3 数据存储功能

存储器CAT24WC02支持I2C总线数据传送协议。采用字节写方式时,主设备ARM处理器LPC2210的I2C接口首先向从设备CAT24WC02发送起始条件和从设备地址信息,在收到CAT24WC02的应答信号后,ARM处理器发送要写入的第1个字节地址[3,4]。系统设计采用选择性读模式,ARM处理器可以对CAT24WC02存储器中的任意字节数据进行读操作。首先主设备ARM处理器LPC2210的I2C接口向从设备CAT24WC02发送起始命令、CAT24WC02的设备地址和要读取的字节数据地址,CAT24WC02发送应答信号后,ARM处理器接收一个字节的数据。

向存储器写入数据。在确定了I2C总线控制器件地址与子地址之后,进行数据存储。将data_buf [0]中的1字节数据写入到存储器中,基本程序设计如下:

#define CAT24WC02 0xA0 //定义器件地址

Uint8 data_buf[4];

IRcvStr(CAT24WC02,0x00, data_buf, 1)

//data_buf [0]中的1个字节数据写入到存储器中

从存储器中读取一个字节数据。在确定了I2C总线控制器件地址与子地址之后,进行数据读取。从CAT24WC02存储器中的0x00中获取一个字节数据,基本程序设计如下:

#define CAT24WC02 0xA0 //定义器件地址

Uint8 data_buf[4];

ISendStr(CAT24WC02,0x00, data_buf, 1)

//从CAT24WC02器件的0x00中获取一个字节的数据

3 μC/OS-Ⅱ操作系统与多任务

3.1 多任务

μC/OS-Ⅱ操作系统可以管理多达64个任务,保留了8个任务供系统使用,因此用户可以有多达56个应用任务。一个任务通常是一个无限的循环,看起来像其他C函数一样,有函数返回类型,有形式参数变量。形式参数变量是由用户代码在第1次执行时带入的。该变量的类型是一个指向void的指针。这是为了允许用户在应用程序中传递任何类型的数据任务。当任务完成以后,任务可以自我删除,使这个任务的代码不再运行。多任务体现在μC/OS-Ⅱ操作系统程序、TCP通信任务程序、键盘服务任务程序、实时时钟任务程序和按键控制网页小灯任务程序设计。创建多任务task0流程如图4所示。

图4 创建多任务task0流程

3.2 实时时钟任务程序设计

实时时钟RTC提供一套计数器在系统工作时对时钟进行测量。从RTC实时时钟系统中获取当前的时、分、秒和当前日期,对时间的数值数据处理是将RTC实时时钟系统中获得的时间值进行ASCII码转换,再将时间结构体中的秒、分、时、日、月、年进行BCD码转换,为数码管的每一位的正常显示做准备。数码管显示是在ARM7处理器的硬件平台上,数码管低6位实时显示时、分、秒,前两位数码管分时显示年、月、日,循环显示。设计时以i作为状态变量,每过一秒钟i进行自加,当变量i为0~2时,数码管前两位显示年,当变量i为3~7时,数码管前两位显示月,当变量i为8~14时,数码管前两位显示日。随着秒钟的不断跳变,数码管可以显示年、月、日、时、分、秒。

4 基于TCP协议的数据采集

在基于ARM7处理器的数据采集系统中,能够通过键盘设定实现采集通道数据的报警上下限,并利用报警系统对采样数据实现上下限报警。可以获得上位计算机下传的实时时间,即年、月、日、时、分、秒,并在数据采集系统上显示。在上位机上,通过浏览器可以看到从数据采集系统传输来的两个通道采样数据和数据的报警上下限值。可以通过按键控制小灯,或者当报警超限时点亮报警灯。打开Internet Explorer浏览器,在地址栏输入http://192.168.0.174 并按回车键,网页上出现从基于ARM7的数据采集系统硬件平台发送的VIN1通道和VIN2通道的报警上下限值及当前VIN1通道和VIN2通道的数据采集值。ADC数据监测结果界面如图5所示。当前VIN1通道和VIN2通道的数据采集值超出报警上下限时,蜂鸣器报警且网页当前数据采集值变红。网页上可以显示当前VIN1通道和VIN2通道的变化率是否正常。如果采集的数据变化率过快,网页可以显示报警。点击网页上 “显示历史数据”按钮,将VIN1通道和VIN2通道采集的历史数据值显示在网页中。点击网页上 “关闭历史数据”按钮,将历史数据栏收起。点击网页上 “清除历史数据”按钮,则清除网页上的历史数据。

图5 ADC数据监测结果界面

5 结束语

CPU在没有操作系统时,运行主程序要通过外部中断,执行相对应的中断子程序,这需要很多步骤去完成。尤其是在网络传输等多任务环境下,没有操作系统显得力不从心。在移植操作系统后,使得多任务并行执行变得简单,尤其是在添加或删减各个任务时,变得尤为方便。数据采集系统以单任务的形式调试成功后,将所有单任务组织成一个多任务的系统,最重要的是设置好每个任务的优先级,使它们能够稳定地执行。实践证明多任务系统可以很好地实现网络传输的数据采集功能。基于ARM7和μC/OS-Ⅱ操作系统设计数据采集系统由多任务完成,采用TCP/IP协议实现数据显示功能。通过网页浏览实时数据采集值、报警上下限值和数据采集系统的工作状态,实现了利用TCP网络进行传输与显示多路数据的功能。

[1] 赵玉凤,杨厚俊,范延滨. μC/OS-Ⅱ在ARM Cortex A9处理器上的移植与实现[J]. 工业控制计算机,2016,29(6):10~11.

[2] 毛卫平. 基于ARM的海洋温度数据监测系统设计[J]. 舰船科学技术,2016,38(5A):127~129.

[3] 赵华玮. 一种基于Linux嵌入式的智能瓦斯监测设计[J]. 自动化与仪器仪表,2016,(8):106~107.

[4] 王平,杨涛,侯守全,等. LabVIEW中DAQ数据采集系统设计[J]. 自动化仪表,2015,36(7):31~33.

ResearchonDataAcquisitionSystemBasedonTCPandμC/OS-Ⅱ

WANG Jie1, AI Hong2

(1.CollegeofElectricalandControlEngineering,NorthChinaUniversityofTechnology; 2.CollegeofAutomation,BeijingInformationScience&TechnologyUniversity)

Based on PLL function and clock frequency of the ARM7 processor LPC2210, the calculation formula of A/D conversion clock frequency was described and the ARM7-based data acquisition system was designed; and the function of data storage based on I2C bus protocol was expounded and writing the data to the

memory and reading the function call of data from the memory were explained. Basing on ARM7 and μC/OS- Ⅱ operating system-based multi-task application to present the flow chart of creating multi tasks was implemented, including the display of real-time data acquisition values, the upper and lower limits of the alarm, real-time clock and data collection of historical data and other functions through the web page and the realization of the function of data acquisition and network transmission system based on TCP protocol.

data acquisition,TCP protocol, μC/OS-Ⅱ operating system,web page display

北京市自然科学基金项目(4162025)。

王捷(1962-),讲师, 从事智能仪表与自动化装置的研究。

联系人艾红(1962-),教授,从事智能仪表与自动化装置的研究,hong_ai@126.com。

TH865

A

1000-3932(2017)06-0591-05

2016-12-13,

2017-01-18)

猜你喜欢
多任务数码管字节
结合自监督学习的多任务文本语义匹配方法
No.8 字节跳动将推出独立出口电商APP
微课教学设计之“数码管动态显示”
Arduino编程
基于中心化自动加权多任务学习的早期轻度认知障碍诊断
No.10 “字节跳动手机”要来了?
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于MSP430的四旋翼飞行器的S-BUS通信协议的设计与实现
基于判别性局部联合稀疏模型的多任务跟踪