基于Linux的WEB服务器的设计与实现-基础电子_第1页
基于Linux的WEB服务器的设计与实现-基础电子_第2页
基于Linux的WEB服务器的设计与实现-基础电子_第3页
基于Linux的WEB服务器的设计与实现-基础电子_第4页
基于Linux的WEB服务器的设计与实现-基础电子_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑基于Linux的WEB服务器的设计与实现-基础电子摘要:系统提出了基于DS80C400单片机实现多接口嵌入式Web服务器方案,通过选择基于Internet混合结构的接入方式,使得该嵌入式WEB服务器既可以通过单片机上的网络控制芯片与LX972ALC网络通讯接口电路相连接入Internet,也可以通过Modem接口芯片MAX213EAI使用PPP协议通过公用电话网接入Internet。系统给出了硬件平台的设计,包括MODEM接口电路设计、网络接口芯片LX972ALC电路设计等,选用Java平台,在Linux环境下完成应用软件的设计。

引言

嵌入式WEB服务器的主要设计思想就是将嵌入式系统和WEB技术结合起来,将WEB技术引入到现场测量和控制设备中,从而实现基于嵌入式WEB服务器的控制系统。用户可以通过现有的公共通信网络,使用标准的Web浏览器作为接口直接对现场的控制设备进行访问,监控和维护等操作,实现了异构设备之间的跨平台互访。

1嵌入式Web服务器总体设计

系统硬件设计如图1所示。嵌入式WEB服务器由网络模块、接口模块和存储模块三个部分组成。网络模块是整个嵌入式WEB服务器的,负责完成服务器的初始化,并且在80端口等待用户的连接请求。根据用户请求的类型提供相应的服务。此外还要实现电子邮件功能,用来完成自动报警和数据的保存,此外通过选择以太网或者电话线进入Internet。

接口模块及存储模块。为了使WEB服务器具有更好的通用性,在系统提供了一些通用接口,如RS-232、RS-485、CAN、Modem、Ethernet。可以和不同接口的控制设备进行连接;系统提供了一个建立在外部串行Flash芯片上的小型文件系统,主要用来存放操作系统,嵌入式Web服务器需要发布的网页和运行的程序。而各个接口采集的数据暂时存放在1M的RAM里,每隔一定的时间就将数据通过电子邮件发送到指定的邮箱,然后覆盖原有的数据。

1.1LX972ALC网络通讯接口电路电路设计

DS80C400网络微控制器是目前集成度的8051器件。集成外设包括10/100M以太网控制器,三个串行端口,一个CAN2.0B控制器,1-Wire主机和64个I/O引脚。能够通过以太网MAC提供高达5Mbps的吞吐率。24位寻址方式简化了对于大容量程序或数据存储器的访问,支持高达16MB的连续存储空间。LXT972ALC是Intel公司推出的遵循正IEEE标准的网络通讯接口电路,支持10M/100M的双绞线应用,同时也支持100Mb/s的光纤接口;该电路提供的MII口能很好的符合10/100MACs。其主要完成的是IEEE802.3标准定义的物理编码子层(PCS)、物理媒体附加子层(PMA)和物理媒体独立子层(PMD)的主要功能。单片机与芯片的电路如图2所示:

当合法的数据出现在RXD上的时候,LXT972ALC使RX_DV有效,当合法的数据出现在TXD上的时候,DSS0C400使TX_EN有效;当LXT972ALC检测到帧中有错误时,它使RX_ER有效;当DSSOC400缓冲器没有准备好时,它使TX_ER有效;当发送或者接收没有处于空闲状态时,LX972ALC使CRS有效;当LXT972AL检测到冲突时,它使COL有效,并且在冲突期间一直保持高电平,如果COL失效,那么RX进入跟踪模式。MDIO是PHY管理数据的时钟,MDIO是PHY和MAC之间控制信息的接口。MDIO是通过软件实现控制,因此必须通过并行口来实现。

1.2Modem接口设计

本系统利用主控制器的UART2进行模拟Modem通信的基本过程:DS80C400先把准备写入串行设备的数据发送到UART的寄存器中,再通过FIFO传送到串行设备。Modem接口电路我们采用芯片MAX213EAI。MAXZ13EAI是5V工作电源的RS-232电平转换芯片。它集成了4个输入和5个输出的RS-232电平转换口,可以很好的满足Modem接口标准传输的需要。接口电路如图3所示。

2嵌入式WEB服务器软件设计

从设计角度,则可将嵌入式软件分为4个模块:网络通讯模块、接口管理模块、人机交互模块和远程加载模块。

2.1网络通讯模块设计

2.1.1以太网接入Internet的实现

嵌入式WEB服务器是沟通客户和控制现场的重要桥梁,客户通过认Web浏览器来实现远程监控的功能。本WEB服务是以TCP/IP协议来传输数据,以HTTP协议来进行客户端与服务器之间的请求和响应,其体系结构如图4所示。

当客户在界面上进行操作时,如点击复选框或在文本框中输入数据。Applet根据用户的操作进行响应,从而构造出新的命令字,向嵌入式WEB服务器发出请求,服务器根据新的命令字驱动控制系统中相应的执行机构,并将新的状态信息和数据信息返回到客户端,客户端解析返回的数据,并进行实时显示。

2.1.2公用电话网接入Internet的实现

为保证能在无以太网环境的情况下进行通信,系统还采用了串口外接调制解调器通过电话网来实现与远程客户机的通信。网络建立的实现就要用到PPP协议(PointtoPointProtocol点对点协议)。在程序运行的时候先要读取PPP通信的控制信息,判断是否使用PPP进行通信,否则默认使用Ethernet来进行数据的传输。而不是同时开启这两种模式。

由于PPP通信并不区分客户端和服务器,把负责和IP分配的端认为是服务器,而不需要和使用服务器提供IP的端认为是客户端。设计了LinkManger类、PPDaemon类、PPPModemLink类、ModemCommand类、PPPException类,用来实现PPP通信。其中LinkManger类:用于管理PPP连接,启动经由网络接到远端服务器的出站连接,生成一个PPPDaemon实例用来设置IP,验证用户名和密码。并实现接收PPP事务。

PPPModemLink类首先打开一个串口并进行初始化,初始化完成后,把一个串口的对象传递给PPP,然后创建ModemCommand对象来控制与调制解调器的串行通信,并通过SerialPortEvenlistener接口监视CD以检测调制解调器是否挂起。其定义了Modem的初始化和复位方法:initializeLink()和resetModem()。ModemCommand类负责和modem具体的串行通信,其分别定义了sendcommand()、waitFoResponse()和receiveCommand()方法。分别用来发送、等待和接收命令。当操作超时,则抛出DataLinkException;waitforMatc()主要用来供sendCommand()和receiveCommand()进行调用,用来判断接收到的字符串是否和匹配字符串一致。当相应操作超时,则抛出

DataLinkException。

2.2电子邮件功能的实现

在系统设计时,考虑到系统的存储容量,不可能将采集的数据全部存储在本地的系统中,为了保存系统的日志,可以采取定时向指定邮箱发送数据。本系统用Java语言开发了后台自动发送邮件的功能。邮件采用BASE64编码,并且支持SMTP。

在本系统中,只需要完成SMTP的发送方式,而不要求其完成SMTP的接收方式,这样就简化了编程的难度。SMTP开服务器和SMTP客户之间的对话过程:首先建立TCP连接,然后客户端发送HELO命令以标识发件人的身份,客户端发送MAIL命令,服务器端以OK作为响应,表明准备接收。接下来客户端发送RCPT命令,以标识该电子邮件的计划接收人,服务器端如表示愿意为收件人接收邮件。则在协商结束后发送邮件,用命令DATA发送,将输入内容一起发送出去。结束此次发送,用QUIT命令退出。所有的命令都是以换行符作为结束。

2.3嵌入式Web服务器接口模块的实现

在本系统中为了满足不同工业控制系统的需要,设计有串口、CAN总线接口、Modem接口和RS-485接口。系统在启动时,从系统的FLASH中读取120个字节的初始化信息,

并据此来判断是否开启接口,并对所开启的接口进行初始化。由于各个模块的初始化函数己经存在,因此系统初始化时,只要调用相应的函数就够了。PPP已经在网络模块部分介绍,而RS-485的使用和普通串口的初始化相似,本部分主要介绍RS-232和CAN。

2.3.1RS-232串口驱动函数设计

系统的开发语言是Java,但Java本身不提供对串口操作的类,要实现对串口的读写操作,需要用第三方API函数完成,实际的开发过程中,使用串口通讯协议开发包comm.jar,它是J2SE的标准扩展,支持RS-231串口,并提供了一种与平台无关的串口通信机制。

串口驱动主要实现对串口的读写操作,给应用程序提供发询接收数据的接口。串口正常工作之前,需要进行初始化设置,因此驱动中还有初始化函数。串口的驱动函数串口的驱动函数主要包括:serialInit()用来初始化UART、serialRead()用来接收字节组、serialWrite()用来发送字节组。

2.3.2CAN总线模块

CAN接口在工业控制系统的运用越来越广泛,操作系统提供了对CAN进行操作的.CanBus类,如要对CAN进行操作,首先要建立一个CAN的对象.CanBuscanTest=newCanBus(CanBus.CANBUS0);由于DS80C400只提供一个CAN控制器,所以只能选用CANBUS0。一旦对象被初始化,就需要设置CAN的速率。CAN速率的设置通过设置Prescaler,TSEGI,TSEGZ和同步段来完成。CAN的计算速率为:CAN波特率=晶振频率/Prescaler+(TSEG1+TSEG2)。

将上述设置完成后,就可以使CAN控制器使能了:canTest.enableController();要想完成帧的发送和接收,除了在信息中心设置接收和发送模式外,还必须先定义一个CanFrame的对象即CanFrame.frame.=newCanFrame();要接收一个CAN的帧时,信息是以CanFrame对象的形式进行接收,并且调用canTest.receive(frame);如要发送数据,也必须将数据封装层CanFrame.对象的形式进行发送,并且调用canTest.sendFrame(frame)。

2.4人机接口模块

本系统将浏览器/服务器(B/S)结构和客户端/服务器(C/S)结构相结合,客户端仍只需使用易于操作的Web浏览器,使用该模式不仅统一了用户界面,为用户对系统的查询和操作提供了极大的方便,系统还通过JavaApplet平衡了服务器端与浏览器端的负载状况。为了对控制对象进行远程操作,Web页面需要给用户提供三个功能:一是现场设备查询,主要是对现场设备的运行状态和采集数据进行查询;二是设备远程控制,提供对运行现场某些参数的修改能力;三是报警(如高限报警、下限报警等),如果现场设备超过设定的报警值,一方面会在网页上发出声音警报。此外还会在后台向指定的邮箱发送报警邮件。

2.4.1网页的交互方式

Web系统主要采用HTTP协议。HTTP采用请求/响应的握手方式,每个HTTP交互都由从客户端发往服务器的请求和从服务器发往客户端的响应组成。HTTP采用TCP连接,而且该连接状态仅在此次连接中保持,无论服务器或是浏览器都不会记忆上次的连接状态。

在设计中首先采用com.dalsemi.tininet包中的http类,实现在80端口等待客户端的请求。其主要实现如下:

HTTPServerhttpd=newHTTPServer(80);

然后给出将对应的HTML页面返回到浏览器。

httpd.setIndexPage(“index.html”);

初始化结束后,Web服务器进入正常的工作状态以轮询的方式来进行处理。

2.5系统的远程加载和调试

为了使系统满足不同任务的需要,有时需要对嵌入式系统中运行的软件进行动态更新。本系统可以直接将新版本的监控软件通过计算机网络传送到现场的嵌入式系统,对原有的软件进行更换,从而实现软件的远程动态更新。利用操作系统自带的FTP和Telnet功能,就可以实现系统的远程更新和调试。在系统初始化结束后开始运行,一个线程创建了服务器套

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论