基于C8051F020的远程多点温度监测系统

发布者:RadiantJourney最新更新时间:2012-02-01 来源: 电子设计应用关键字:C8051F020  mCOS-II  实时远程监测 手机看文章 扫描二维码
随时随地手机看文章

引言

随着Internet的发展和应用,越来越多的嵌入式系统接入网络。然而,大部分嵌入式系统都是作为B/S模式中的应用服务器,必须随时对客户机的请求做出回应,要求具有较强的实时性。mC/OS-II是近年来发展迅速的一个开放源码实时操作系统,具有移植性好、可裁剪、可固化的优点。将mC/OS-II引入网络嵌入式系统,既可以实现系统的实时性要求,同时可以提高系统的可靠性,易于调试程序。

 

 

 

 

 

 

 

 

 

 

图1 系统硬件结构框图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

图2 系统TCP/IP协议部分程序流程图

 

系统硬件设计

本系统设计中采用美国Cygnal公司生产的集成混合信号SoC芯片C8051F020,其内核与8051兼容。当它工作在最大系统时钟频率 25MHz 时,峰值速度可以达到 25MIPS。C8051F020除了256B的内部 RAM,还另有位于外部数据存储器地址空间的 4KB的 XRAM,以及64KB可在系统编程的 FLASH 存储器。因此,它有足够的RAM空间用于存放1500B的以太帧,以及μC/OS-II中再入函数的模拟栈。C8051F020除了有标准8051的端口( P0、P1、P2和P3)外,还附加4个端口(P4、P5、P6和P7),内部还有很多的功能器件。

系统的硬件结构框图如图1所示。网卡芯片使用台湾 Realtek 公司生产的RTL8019AS。在系统中用到的网卡地址为十六进制的0300H~0310H,因此,C8051F020的P7口采用复用方式与RTL8019AS的数据/地址线相接,网卡的SA8脚则直接与高电平相接。C8051F020的 P5.2与RTL8019AS的复位端相连,用来复位网卡。RTL8019AS则外接一个隔离LPF滤波器,通过RJ45接口接入以太网。多个单总线温度传感器DS18B20共享一条总线,由 P3.0口进行控制。

系统软件实现

TCP/IP协议实现

介质访问层主要由以太网控制器 RTL8019AS来实现,其数据通信协议采用IEEE802.3 标准,只处理接收地址与本机物理地址相符或为广播地址的以太帧,并只对ARP、IP数据报进行处理。

网络层实现IP、ARP和ICMP 协议:IP 数据报的首部保留 20 字节的基本控制信息,每个IP数据报包含一个分片;实现完整的ARP 协议;对于ICMP协议, 只实现 ICMP 中类型号为 0 ,代码为 0 的 Ping 应答协议。

传输层实现TCP协议。在系统中,TCP 协议只用于支持 HTTP 协议,由于在连接时一直处于被动服务的状态,因此在设计中省去了SYN - SENT 状态和CLOSED状态,让它一开始就处于 LISTEN 状态,来监听客户端的连接请求,避免了主动打开的操作,可更高效地服务于客户机。而当服务器发出数据报时,系统并不存储,只是记录下该数据报的状态信息。由于系统中数据传输量少,滑动窗口可设置为一个固定值(1 500 字节 )。

应用层实现HTTP 协议。现场监测设备与用户的交互式数据交换通过 HTTP 协议来实现,HTTP在端口80上使用TCP的服务。系统TCP/IP协议部分程序的流程图如图2所示。

mC/OS-II对TCP/IP协议及温度监测的实时管理

mC/OS-II在C8051F020单片机上的移植

mC/OS-II的移植,要求所用的C编译器支持混合编程,在这里选用 KEIL C51集成开发环境。由于mC/OS-II是可剥夺的实时操作系统,任务随时会被另一任务中断,一段时间后再可以运行。为了防止在任务切换过程中相应数据被破坏,mC/OS-II中使用了大量的可重入函数。在KEIL C51中,Cx51编译器为再入函数生成模拟栈,通过这个模拟栈完成参数传递和存放局部变量。根据再入函数所采用的编译模式(SMALL、COMPACT、LARGE),模拟栈可以位于片内或片外存储空间。对于本系统,模拟栈对RAM空间的要求较大,故选用LARGE模式。可直接利用芯片上集成的XRAM(4K),无须另外扩展外部数据存储器。通过配置STARTUP.A51文件进行设置:

     XBPSTACK        EQU       1     ;         //选用LARGE模式

     XBPSTACKTOP  EQU       1000H     ; //设置再入栈栈顶指针

在移植过程中主要完成对以下五个文件的修改:与CPU相关的文件OS_CPU_A.ASM、OS_CPU_C.C、OS_CPU.H和与应用相关的文件OS_CFG.H、INCLUDES.H。

其移植过程在这里不是重点,下面简要介绍与应用相关较紧密的部分设置。

0S-CPU.H:

#define  OS_CRITICAL_ METHOD    1     //中断方式1

#if      OS_CRITICAL_METHOD == 1

#define  OS_ENTER_ CRITICAL()  EA=0      

//关中断

#define  OS_EXIT_CRITICAL()   EA=1  //开中断

     #endif

OS_CFG.H:

OSTimeDlyHMSM()函数使应用程序无需知道延时时间对应的时钟节拍数,直接按小时、分、秒、毫秒来定义时间,方便对任务运行时间进行管理。

#define OS_TIME_DLY_ HMSM_EN   1    

//允许使用函数OSTimeDly HMSM()。

由于每个嵌入式监测系统可以同时与多个PC机连接,向不同用户提供信息,因此可在OS_CFG.H头文件中定义一个包含各种连接信息的结构变量。当TCP报文到时,使用连接状态信息检查是否与已存在的连接相符,如果不存在则建立新的连接。这种处理可以使嵌入式监测系统同时处理来自同一或不同PC机的连接。

     typedef struct

     {

    INT32U  ipaddr;

    INT16U  port;

    INT8U   timer;

    INT8U   inactivity;  

    INT8U   state;

    char     query[20];

     } CONNECTION;

在ARP协议部分,嵌入式系统将收到的IP数据报的物理地址存放在一结构变量中。如果是向同一PC机发送数据报,不需要再次发送ARP请求就可得到目的主机的物理地址,减少了建立连接的时间。

     typedef struct

     {

       INT32U  ipaddr;

       INT8U   hwaddr[6];

      } ARP_CACHE;

在其中设置每个嵌入式系统的MAC地址、IP地址、子网掩码和网关地址。

mC/OS-II中任务创建及优先级设置

C8051F020的XRAM做输入/输出数据的内部缓冲区,RTL8019AS内部的16K SRAM做单片机的外部数据缓冲区,存储输入/输出以太帧队列。这样C8051020就可以采用查询方式读取以太帧,并有充足的时间处理数据。由于输入帧的大小不定,同时在ARP数据报发送或接收时,输出帧必须存在输出缓冲区中,因此,输入/输出数据缓冲区在C8051F020的XRAM中使用动态分配,由KEIL C51 提供的malloc()和free()函数完成。网页存储于单片机的FLASH存储器中。当嵌入式系统向PC机发送网页时,先将网页从FLASH存储器中取出放入XRAM,再根据用户请求进行整理后放入RTL8019AS的SRAM,并发送到以太网上。

作为网络服务器,C8051F020需要注意以下几点:

1) 服务器向一客户机发送ARP查询分组后,如果在0.5秒内未收到ARP响应分组,则重发。

2) 如果TCP连接在0.5秒内未被激活,则调用初始化断开连接程序,防止两个TCP之间的连接处理长时期空闲。

3) 为了控制丢失数据报,TCP在规定时间(0.5秒)内如果没有收到确认包 ,就重组这个包并发送 ,这样不需要占用存储区来存储包。当收到客户机接收到信息包的确认报后 ,就断开连接。

mC/OS-II对系统的管理是通过对任务的管理来实现的。它把整个程序分成许多任务,每个任务相对独立。然后在每个任务中设置超时函数,一旦任务的延时时间到,任务必须交出 CPU 的使用权。根据需要,系统中创建了5个任务,设置如下:

任务1:OSTaskCreate(eth_ arive,0,&mystack1[0],4);// 查询RTL8019AS,是否有以太帧到达。

OSTimeDlyHMSM(0,0,0,500);//   延时0.5秒

任务2:OSTaskCreate(arp_ retran,0,&mystack2[0],5);//重发ARP分组

OSTimeDlyHMSM(0,0,1,0);  //   延时1秒

任务3:OSTaskCreate(tcp_ inact,0,&mystack3[0],6);// 初始化断开连接

OSTimeDlyHMSM(0,0,1,500);//   延时1.5秒

任务4:OSTaskCreate(read _temp,0,&mystack3[0],7);// 读温度值

OSTimeDlyHMSM(0,0,2,0);  //   延时7秒

任务5:OSTaskCreate(tcp_ retran,0,&mystack3[0],8);//TCP数据报重发

OSTimeDlyHMSM(0,0,2,500);//   延时2.5秒

结语

将网络功能嵌入到温度监测系统中,可在网络中接入多个节点,每个节点连接多个单总线传感器,以此实现真正的多点温度监测,以满足用户的需要。由于DS18B20是单总线温度传感器,本身的温度测量有些延时,因此在传输温度数据时需要几秒钟的等待时间,但对整个系统的影响不大。采用嵌入式实时操作系统mC/OS-II,提高了系统的实时性和可靠性,有利于用户的管理和对温度的实时监测。

用户可以利用广泛存在的以太网资源,通过浏览器直接访问节点,提高系统的开放性和互操作性,降低监控运行维护成本、提高监控运行维护效率。因此,基于嵌入式实时操作系统的嵌入式网络有着广阔的发展前景。

关键字:C8051F020  mCOS-II  实时远程监测 引用地址:基于C8051F020的远程多点温度监测系统

上一篇:CPLD扩展51单片机寻址范围
下一篇:实时时钟ISL1208原理与应用

推荐阅读最新更新时间:2024-03-16 12:51

基于C8051F020的车辆散热系统参数测试电路研究
1 引言 车辆的系统散热性是衡量其先进性的一个重要标志,因为车辆的各个部件和系统都存在一个最佳的工作温度区间,在此温度范围内零部件的各项性能指标才能得以保证。目前,我国车辆系统的研制已进入自行研制、自主创新的发展阶段,由于缺乏实车试验测试条件,加上车辆工作环境的复杂性,导致有效的实车试验数据严重缺乏,试验周期长,数据可复现性差,无法向工程设计部门提供准确有效的实车试验数据,严重影响车辆总体技术的进一步发展。因此,本文着重于在不改变车辆现有结构和性能的前提下,采用单片机控制系统、传感器技术、数据存储技术、实时时钟技术,研制一套能实时检测和记录车辆散热系统动态参数的电子电路。 2 系统总体构架设计 该散热系统参数测试
[汽车电子]
基于<font color='red'>C8051F020</font>的车辆散热系统参数测试电路研究
基于C8051F020海水淡化预处理系统设计
在对海水淡化装置实际使用过程中发现,装置实际工作参数一般不同于设计工作参数,使得装置无法发挥原设计系统流程特点,性能不佳;这种情况是由于实际进入装置的海水温度很难与设计温度一致造成的。此类现象对于海岛用海水淡化装置影响尤其明显:由于其特殊使用环境和条件,在不同季节和海域,海水入口温度变化很大,造成装置运行不稳定,产水量不足、水质下降严重,甚至不能工作。 为克服此类问题,本项目开展了海水进口调节模块设计技术研究,使控制器具有海水进口温度、流量的调节作用,始终保证进入装置的海水进口温度在设定值,使得装置的流程参数在不断变化的外界环境条件下保持在设定工况参数不变,从而保证淡水产量和水质,也使得装置易于控制和维护。 1 系统设计 根据对
[单片机]
基于<font color='red'>C8051F020</font>海水淡化预处理系统设计
C8051F020的端口配置
C8051F020引入了交叉开关的概念,即单片机的管脚必须在交叉开关使能的情况下才能被配置。因此初始化时,首先要使能交叉开关,官方有个配置工具Config2,很方便,推荐大家使用。管脚内部自带弱上拉(管脚与VDD之间阻性连接,约100K ),因此在弱上拉未被禁用的情况下,管脚可以输出0和1。在弱上拉被禁用后,管脚输出可以被配置为推挽和漏极开路,推挽和弱上拉一样,都可输出0和1,但驱动能力大,推挽方式为低阻,这样,才能保证口线上不分走电压或分走极小的电压(可忽略),保证输出与电源相同的高电平,推挽适用于输出而不适用于输入,因为若对推挽(低阻)加高电平后,I=U/R,I会很大,将造成口的烧毁。对与C8051F的很多型号片子,将I/O口设
[单片机]
基于C8051F系列单片机的标签打印机接口设计
0 引言 随着信息化技术的高速发展,各行业对于数据打印的需求日益增加。为了能够更加直观的浏览数据,微型标签打印机在智能仪器仪表、电子收款机、计价器等系统中几乎成为标准配置。本课题来源于常州市扬子电子有限公司,主要是针对一款程控耐压绝缘测试仪开发的打印机驱动设备,实现了对检测数据的实时打印功能。 系统采用斑马公司生产的888-TT桌面式微型标签打印机,基于美国Silicon Labs公司生产的SoC单片机C8051f020作为主控制芯片,通过RS 232串行接口与标签打印机进行串行通信,采取单片机向标签打印机发送打印指令和数据的方法实现单片机对打印机的控制。 1 单片机与打印机的串行接口设计 大多数单片机应用系统不是高速大
[单片机]
基于C8051F系列单片机的标签打印机接口设计
C8051F020中的ADC应用要素
F020具有8路12位A/D转换(简称ADC)接口和8路8位在线可编程(ISP)的ADC电路,片上的特殊功能寄存器(简称SFR)有15个与ADC的控制相关,它们是: AMUX0SL——AMUX0通道选择寄存器,复位值为00000000; MAX0CF——AMUX0配置寄存器,复位值为00000000; ADC0CF——ADC0配置寄存器,复位值为11111000; ADC0CN——ADC0控制寄存器,复位值为00000000; ADC0H——ADC0数据字MSB寄存器,复位值为00000000; ADC0L——ADC0数据字LSB寄存器,复位值为00000000; ADC0GTH——ADC0下限数据高字
[单片机]
C8051F020单片机为控制核心的一键多义按键管理程序的原理
设计采用高性能单片机C8051F020为控制芯片,监控示波器面板上40个按键、3个编码开关及4个电位器的状态。分别介绍了键盘、编码开关和电位器的工作原理,以及其与单片机连接的硬件电路及软件编程的实现。按键部分采用的键盘程序设计方法,给出了键码匹配子程序流程图。 监控程序负责系统中全部硬件和软件资源的分配、调度工作,它提供用户接口,使用户获得友好的工作环境,是系统设计中一个重要组成部分。 1C8051F020单片机概述 伴随着电子技术快速的发展,越来越多的人加入电子开发的大军。在学习电子技术和研发项目的过程中,避免不了要使用一些仪器,例如万用表、示波器等等,然而对于一些非专业的爱好者,拥有一台数字示波器是比较“奢侈”的。本设
[单片机]
以<font color='red'>C8051F020</font>单片机为控制核心的一键多义按键管理程序的原理
基于C8051F020的示波器监控程序设计
  一、设计概况   本制作采用USB口作为供电端口,用DS18B20温度 传感器 进行温度信息采集,用AT89C2051单片机进行控制,采用四位共阳数码管显示,从而实现对温度的测量显示(系统框图如图1所示)。本设计可培养学生对单片机学习的兴趣,提高其制作与编程能力。 图1 系统框图   二、电路原理   采用PROteUS 仿真 软件进行原理图设计与程序仿真。电路如图2所示。 图2 电路图   1、电源   采用USB口供电,可将USB适配器接人电路板的USB口或直接接 计算机 USB口。这样,既节省了资源,又能够获得较为理想的工作电压。USB口的外形及电源口定义如图3所示。 图
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved