喷洒车厂家
免费服务热线

Free service

hotline

010-00000000
喷洒车厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

一种新型嵌入式远程监控系统的设计开发

发布时间:2020-07-21 18:09:09 阅读: 来源:喷洒车厂家

1 引言

本文引用地址:嵌入式监控系统是当前工业自动化监控应用领域研究的热点之一。微电子技术和微处理器制造工艺的提高以及网络技术的飞速发展,使得构建基于Web的嵌入式远程监控系统得以实现。这样的远程监控系统可以直接通过TCP/IP网络协议接入Internet实现远程监控,成为真正不受时间和空间限制的远程监控系统。

由于近年来一些半导体厂家新推出的MCU的存储能力都有了很大的提高,以及用C语言编写的程序具有移植性强、可读性好等优点,因此本文监控软件采用标准C语言编写,并在m6811-elf-gcc中编译通过。本文将从嵌入式Web监控系统的通信基础--以太网接口模块着手,分别讲述各个功能模块的设计与实现。

2 以太网接口程序设计

以太网接口程序是与硬件设计中的网络控制芯片密切相关的,不同的网络控制芯片具有不同的以太网接口程序,但是一个完整的以太网接口程序通常包括三个部分:硬件模块初始化、以太帧的发送和以太帧的接收。

1、硬件模块初始化

本文使用的Freescale公司的MC9S12NE64 MCU集成了EPHY和EMAC两个硬件子模块,它们的初始化必须严格按照技术手册进行,避免忽略一些细节。

2、以太帧的发送

在NE64中发送一个以太帧,必须将该帧内容写入至EMAC模块的发送缓冲区(TX缓冲区),然后再通过发送命令将其发送出去,接下来的工作由下层硬件完成。与以太帧的发送相关的寄存器包括发送缓冲区帧结束指针寄存器(TXEFP)、发送控制和状态寄存器(TXCTS)。

3、以太帧的接收

判断以太帧的接收有两种方法:查询法和中断法。由于中断法有更好的执行效率,本文使用了中断法接收以太帧。由于NE64有两个接收缓冲区A和B,因此到达的帧可能存储在A缓冲区也可能存储在B缓冲区,所以中断矢量也有两个:A缓冲区接收完成中断和B缓冲区接收完成中断,其矢量地址分别是$FFB2和$FFB4。无论是A缓冲区还是B缓冲区接收到数据,处理方法是一样的,都是将接收到的数据帧读出来,再进行相应的处理。

3 uIP协议实现的程序设计

3.1 TCP协议的实现

TCP协议是嵌入式Web的核心,它提供一种基于连接的带确认的可靠的数据流传输方式,可增强网络的服务质量。TCP协议的机制很复杂,它的完整实现对处理器的存储能力和运算能力要求较高。这对于嵌入式系统来说是比较奢侈的,因此必须对其进行简化。本文要实现的是一个基于嵌入式Web服务器的监控系统,经过仔细分析,本文得到如图1所示的简化的TCP状态机。其中连接的断开由服务器主动执行,通过多次实验总结出来该方式在本文系统中,比标准的TCP协议主动断开连接的状态机简单且稳定。

图1 服务端简化的TCP状态图

另外本系统可以根据不同的应用要求调整TCP所支持的连接数量,但是通常在同一时刻仅支持单个TCP连接。同时为了避免因为数据报的丢失而造成状态机的死锁,本文使用简单定时机制,使TCP状态机在超时后复位。

TCP协议连接建立的过程被称为“三次握手”。首先,客户端向服务端提出连接请求。此时客户端在TCP报头中插入自己的ISN,并置SYN标志为1,表示序列号字段合法,需要检查。其次,服务端收到该TCP分段后,以自己的ISN回应,同时确认收到客户端的TCP分段,置ACK标志为1。最后,客户端确认收到服务端的ISN,置ACK标志为1。至此完整的TCP连接建立,开始全双工模式的数据传输过程。

3.2 其他协议的实现

在实现以太网底层驱动的基础上,接下来实现用于以太网通信的上层协议。ARP协议是为了通信双方获取对方MAC地址的通信协议,是网络通信的基础,本文实现了ARP请求报文的发送和接收以及ARP响应报文的接收和处理功能。为方便网络调试,在uIP中实现了Ping命令,当监控设备正常工作后可省略该部分内容。SD12-MCS是实现一个基于嵌入式Web的应用设备,并非嵌入式网关或路由器,因此为了节约嵌入式系统资源,本文裁减了IP协议的路由功能,有关路由问题都由默认网关完成。尽管基于Web方式的SD12-MCS使用了TCP协议,但是目前也有一些应用是基于UDP协议的,为了系统具有更好的扩展性,本文也实现了UDP协议。

4 Web服务器的设计与实现

该监控系统的工作模式为嵌入式Web服务器方式,因此本文在实现uIP协议的基础上,设计并实现了应用层的HTTP协议以及CGI处理程序。

4.1 HTTP协议的设计与实现 linux操作系统文章专题:linux操作系统详解(linux不再难懂)

Android绝对布局AbsoluteLayout

TypeScript 变量声明

09 Vim 寄存器

相关阅读