当前位置:首页 > 单片机 > 单片机
[导读]摘 要:传统的远程监控系统一般采用C/S 模型的方式,针对大型设备,成本高。文章采用SOC 芯片C8051F020 和10M 自适应网络芯片RTL8019AS 接口的方案,在单片机中嵌入了精简的TCP/IP 协议栈,构建了基于Web 的单片机远

摘 要:传统的远程监控系统一般采用C/S 模型的方式,针对大型设备,成本高。文章采用SOC 芯片C8051F020 和10M 自适应网络芯片RTL8019AS 接口的方案,在单片机中嵌入了精简的TCP/IP 协议栈,构建了基于Web 的单片机远程监控系统软、硬件平台,在此基础上实现了基于单片机的数据采集和远程监控,所实现的系统具有成本低廉、操作方便、可靠等优点。

1. 引言

单片机系统以其简单、高效的特点,在工业控制和日常生活中应用越来越广泛。目前大多数单片机系统是以51 单片机为核心,与检测、伺服、显示设备配合起来实现监控功能。

然而,这些监控系统的数据传输多采用RS-232、RS-485 以及各种现场总线,这些方式有些通信速度不够快,有些距离不够远,且各种总线之间难于实现互连和互操作。以太网作为目前应用最为广泛的局域网,在工业自动化和过程控制领域得到了越来越多的应用。同时,随着Internet 的普及,现代通信技术的进步,基于TCP/IP 和Client/Server 架构的分布式监控技术也日趋成熟。把嵌入式系统连接到Internet 上,就可以方便、低廉地把信息传送到世界的任何一个地方。

传统的远程监控系统一般采用C/S 模型的方式,主要针对大型的设备进行监控。对于如摄像头图象监控﹑家用仪表﹑门禁控制系统等小型的设备的监控就需要采用低成本的方案。

鉴于此,在低成本的单片机系统上移植精简的TCP/IP 协议簇,实现对于小型设备远程监控是最佳选择。该系统以Web 方式实现,用户可以在任何一台装有浏览器的PC 机上进行远程监视与控制,具有价格低廉、操作方便、界面友好等优点。传统的远程监控系统模型与本系统采用的模型如图1 和图2 所示。

图1 传统远程监控系统模型


图2 单片机监控系统模型

2. 系统硬件设计

本系统以 Cygnal 公司的完全集成的混合信号系统级芯片(SOC)C8051F020 单片机为核心,采用Realtek 公司的10M 自适应以太网控制器RTL8019AS 实现系统的网络接口部分。

SRAM 部分用于存放大量的数据信息。数据采集部分用于采集系统需要监控的设备的运行情况,由于C8051F020 内部带有真正12 位100 ksps 的8 通道ADC 带PGA 和模拟多路开关,还有两个12 位DAC 可编程更新时序,可以方便的进行模拟信号采集和对外设进行控制。

C8051F020 单片机内置64K FLASH 程序存储器、4K 内部SRAM,可以嵌入TCP /IP 协议, 从而实现嵌入式Web Sever 的功能。RTL8019AS 集成了介质访问控制子层(MAC)和物理层的性能,与单片机的接口简单,可以方便地用来设计基于ISA 总线的系统。另外,它还具有与NE2000 兼容、软件移植性好以及价格低廉等优点,所以特别适合用于嵌入式系统。


图3 系统框图

3.系统软件设计

3.1 软件流图设计

软件的实现主要是根据数据在网络中传输的方向和数据的流向来实现的。在本设计中数据的流向为:请求信息从局域网中来,通过RJ 45 送到RTL80l9AS,处理后的数据包送入单片机系统的协议栈,由协议栈对数据包进行解析,得到原始请求信息。请求信息再经过单片机系统的处理,产生回复信息。回复信息到局域网的过程与上面正好相反。整个系统的软件流程如上图4 所示。


图4 软件框图

3.2 RTL8019 接收与发送数据

1.RTL8019 芯片初始化主要是将网卡设置成正常的模式,跟外部网络连接。清除所有中断标志位,让芯片开始工作。

2.对RTL8019 接收数据操作,有查询和中断两种方式。因为单片机的速度和PC 机相差太远,而且还有一些采集任务,本系统不采用中断方式,用查询方式。在查询方式下,通过查询CURR 和BNRY 两个寄存器的值来判断是否收到一帧数据。当BNRY+1 与CURR不相等,说明接收缓冲区接收到了新的数据帧。图5 为RTL8019 报头格式,接收部分子程序如下:

UCHAR xdata * rcve_frame(void) //如收到有效数据包,返回收到的数据,否则返回NULL


图5 RTL8019 报头格式

3.数据的发送包含三个步骤:封装数据包;通过远程DMA 将数据包送入RTL8019AS的数据发送缓冲区;通过RTL8019 的本地DMA 将数据送入FIFO 进行发送。具体过程如下:

(1)包在发送前应该按规定的格式封装好,格式如下图6 所示:


图6 MAC 帧首部

(2)把上面的数据包通过远程DMA 写入RTL8019AS 的数据发送缓冲区;

(3)启动本地DMA,把数据发送出去,数据包长度最小为60 字节,最大1514 字节。

发送子程序为:void send_frame(UCHAR xdata * outbuf,UINT len)//发送一个数据包3.3 TCP/IP 协议栈的实现。

3.3.1 ARP 协议的实现

ARP 地址解析协议的本质是完成网络地址到物理地址的映射。物理地址有以太网和令牌环网两种基本类型,网络地址特指IP 地址。具体到以太网,使用的是动态绑定转换的方法,但是会遇到许多细节问题,例如减少广播,ARP 包丢失,物理地址变更(更换网卡)、移动(移动设备到另一子网)、消失(关机)等。一般是设置ARP 高速缓存,通过学习、老化、更新、溢出算法处理ARP 映射表来解决这些问题。整个ARP 处理过程,主要用5 个函数实现。

在实现网卡驱动程序后,所有ARP 处理操作就是填写ARP 包。主要程序代码编制如下:

(1)void init_arp(void)//完成ARP 表初始化,概括说就是ARP 表state 字段清0

(2)void arp_send(UCHAR * hwaddr,ULONG ipaddr,UCHAR msg_type)//完成ARP 请求

(3)void arp_rcve(UCHAR xdata * inbuf)// 完成响应操作

(4)UCHAR xdata * arp_resolve(ULONG dest_ipaddr) //完成从cache 里面查找对应//IP 地址的物理地址,如果没有,就发送ARP 请求

3.3.2 IP 协议的实现

网际协议 IP 是TCP/IP 协议族中最为核心的协议,它的主要功能是负责把数据交付给主机,当目标主机与原主机处于不同的物理网络中时,IP 负责把数据包路由到相应的目标网络上。Internet 上所有的数据都以IP 数据包格式传输。IP 协议最大的特点是提供不可靠的和无连接的数据包传送服务。IP 协议主要实现以下两个子程序:

(1) void ip_send(UCHAR xdata*outbuf,ULONG ipaddr, UCHAR proto_ id,DINT len)//发送IP 数据;该子程序用来创建一个发送数据报。

(2) void ip_rcve(UCHAR xdata *inbuf) //接收IP 数据;该子程序检测一个外来数据包,并对数据包作相应的处理。

3.3.3 TCP 协议的实现

1.使用TCP 状态机:TCP 协议是整个TCP/IP 协议的核心,也是传输层中最复杂的协议。TCP 协议在两个端点之间建立了等效于物理连接的逻辑连接。数据沿着这个连接双向传输。连接的双方必须对发送和接收的数据保持跟踪,以便能够检测出数据流中的遗漏和重复。

2.使用简单的确认机制:序列号和确认号这两个字段用于协同完成TCP 协议中的确认工作。对于每个接收到的数据包进行确认号的计算,需要从接收到的数据包中提取TCP 报文的数据部分长度,并进行计算,这增加了处理器的运算量。但如果每次只对单个TCP 报文进行确认的话,并没有太大的难度。TCP 协议主要包含的程序如下:

(1) init_tcp(void) //初始化TCP 协议

(1) Tcp_send(UINT flags, DINT hdr_len, UCHAR nr) //发送TCP

(2) Tcp_retransmit(void) //重发TCP 数据

(3) Tcp_inactivity(void) //停止TCP

(4) Tcp_rcve(UCHAR xdata * inbuf, UINT len) //接收TCP 数据

3.3.4 HTTP 协议简介

HTTP 协议是TCP 协议的高层协议,HTTP 的请求和应答都是一行或多行文本,它的结束标志是一个换行符[5]。如果请求成功,数据就沿着该连接发送,直到发送完为止。HTTP的端口号为80.HTTP 中的命令称呼为方法(method),其中GET 语句用来获取文档,POST语句用来粘贴文档。通过判断GET 和POST 语句后面的文件名来判断所需要传递的文件的位置。

请求:

GET / HTTP/1.1

响应:

HTTP/1.1 200 OK

Content-type: text/html

……

《html》

《body》

……

《/body》

《/html》

4.应用部分

本 WEB 服务器系统几乎可以应用于所有对实时性要求不是很高的场合,只要对本系统的相关部分做些修改或改进,例如:客户端的访问权限、IP 地址的过滤等,就可应用于诸如远程抄表、信息家电的远程控制等场合。下面图7 为ping 命令测试网络不通到通的连接状态,图8 实现了局域网内任意主机通过ip 地址形式访问单片机内部存诸的网页,从而实现对单片机系统的远程监控。


图7 网络连接测试


图8 远程监控温度

5.结束语

实现了基于单片机的 TCP/IP 协议栈,使单片机控制的系统具有了WebServer 的功能,这样可以使用PC 机通过因特网远程访问单片机系统,也可以使用单片机系统将有用的信息通过因特网发送到远端的PC 或其它终端上。为嵌入式设备实现远程数据采集、远程监控、远程诊断、远程帮助、远程升级、远程重构等功能提供了可能,这是嵌入式系统发展的趋势。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

本设计的控制系统主要包括:倾斜模块、超声波模块、语音模块、光敏电阻模块及电源等。

关键字: 单片机 STC51

本文针对电动两轮车自燃防控装置的开发与分析进行了研究。通过电动两轮车自燃原因分析,提出了电动两轮车的自燃防控智能装置设计思路,介绍了电动两轮车的自燃防控智能

关键字: STC89C52RC 单片机 微控制器

现在市面上还不存在一种方便实验人员选取芯片,以及方便管理人员对芯片进行智能化管理的芯片柜,为此希望通过研发这款智能芯片柜,来解决以上问题。​

关键字: 单片机 芯片

这款全新的中端MCU系列为设计人员提供了更高水平的安全性和灵活性

关键字: 嵌入式 单片机

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

在现代电子技术的快速发展中,单片机以其高度的集成性、稳定性和可靠性,在工业自动化、智能家居、医疗设备、航空航天等诸多领域得到了广泛应用。S32单片机,作为其中的佼佼者,其引脚功能丰富多样,是实现与外部设备通信、控制、数据...

关键字: s32单片机引脚 单片机

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器
关闭
关闭