基于Linux的WEB服务器的设计与实现

发布者:nu23最新更新时间:2009-12-18 来源: 微计算机信息关键字:嵌入式Web服务器  多接口  DS80C400  Java 手机看文章 扫描二维码
随时随地手机看文章

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

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

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

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

    DS80C400网络微控制器是目前集成度最高的 8 0 5 1器件。集成外设包括 1 0/1 0 0M以太网控制器,三个串行端口,一个 CAN 2.0B控制器, 1-Wire主机和 64个 I/O引脚。能够通过以太网 M AC提供高达 5Mbps的吞吐率。24位寻址方式简化了对于大容量程序或数据存储器的访问,支持高达 1 6 M B的连续存储空间。 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.2 Modem接口设计

    本系统利用主控制器的 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协议(Point to Point Protocol点对点协议)。在程序运行的时候先要读取 PPP通信的控制信息,判断是否使用 PPP进行通信,否则默认使用 Ethernet来进行数据的传输。而不是同时开启这两种模式。

    由于 PPP通信并不区分客户端和服务器,把负责认证和 IP分配的端认为是服务器,而不需要认证和使用服务器提供 IP的端认为是客户端。设计了 LinkManger类、PPPDaemon类、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.1 RS-232串口驱动函数设计

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

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

2.3.2 CAN总线模块

    CAN接口在工业控制系统的运用越来越广泛,操作系统提供了对 CAN进行操作的dalsem.com.CanBus类,如要对 CAN进行操作,首先要建立一个 CAN的对象。

    CanBus canTest = new CanBus(CanBus.CANBUS0);

    由于 DS80C400只提供一个 CAN控制器,所以只能选用 CANBUS0。一旦对象被初始化,就需要设置 CAN的速率。 CAN速率的设置通过设置 Prescaler,TSEGI,TSEGZ和同步段来完成。CAN的计算速率为:CAN波特率=晶振频率/Prescaler+(TSEG1+TSEG2)。

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

2.4人机接口模块

    本系统将浏览器/服务器(B/S)结构和客户端/服务器(C/S)结构相结合,客户端仍只需使用易于操作的 Web浏览器,使用该模式不仅统一了用户界面,为用户对系统的查询和操作提供了极大的方便,系统还通过 Java Applet平衡了服务器端与浏览器端的负载状况。

    为了对控制对象进行远程操作, Web页面需要给用户提供三个功能:一是现场设备查询,主要是对现场设备的运行状态和采集数据进行查询;二是设备远程控制,提供对运行现场某些参数的修改能力;三是报警 (如高限报警、下限报警等 ),如果现场设备超过设定的报警值,一方面会在网页上发出声音警报。此外还会在后台向指定的邮箱发送报警邮件。

2.4.1 网页的交互方式

    Web系统主要采用 HTTP协议。HTTP采用请求/响应的握手方式,每个 HTTP交互都由从客户端发往服务器的请求和从服务器发往客户端的响应组成。HTTP采用 TCP连接,而且该连接状态仅在此次连接中保持,无论服务器或是浏览器都不会记忆上次的连接状态。在设计中首先采用 com.dalsemi.tininet包中的 http类,实现在 80端口等待客户端的请求。其主要实现如下:

    HTTPServer httpd = new HTTPServer(80); 然后给出将对应的 HTML页面返回到浏览器。 httpd.setIndexPage(“index.html”);初始化结束后,Web服务器进入正常的工作状态以轮询的方式来进行处理。

2.5 系统的远程加载和调试

    为了使系统满足不同任务的需要,有时需要对嵌入式系统中运行的软件进行动态更新。本系统可以直接将新版本的监控软件通过计算机网络传送到现场的嵌入式系统,对原有的软件进行更换,从而实现软件的远程动态更新。利用操作系统自带的 FTP和 Telnet功能,就可以实现系统的远程更新和调试。在系统初始化结束后开始运行,一个线程创建了服务器套接字(Server Socket)来侦听客户端的 FTP和 Telnet连接请求。我们利用 Telnet和 FTP技术,可以实现在 Internet上对嵌入式节点的远程操作,包括程序的运行和停止、程序下载、在线更新、调试、配置等。

3 总结

    本文的创新点是采用 Java技术进行软件开发,在实现传统的数据采集和发布的基础上,还增加了电子邮件功能,使得系统保存日志更为方便,增加了远程文件的上传和下载,使得系统可以远程更新;其次,对原有的操作系统进行重新编译,实现了对 Rash的加载。从而省去了传统的通过电池保护电路来完成掉电后的数据保存;最后,系统设计了多个接口可以和不同接口的控制设备相连,增强了系统的通用性。在网络接入模式上以太网和 PPP相结合使得系统的灵活性大为增强。

关键字:嵌入式Web服务器  多接口  DS80C400  Java 引用地址:基于Linux的WEB服务器的设计与实现

上一篇:基于ARM-Linux的MiniGUI的仿真与移植
下一篇:Windows Embedded合作伙伴成立十年

推荐阅读最新更新时间:2024-05-02 20:57

一种嵌入式WEB服务器的设计与实现
  在企业自动化的工业现场,下层车间的监测设备之间都是采用现场总线相互连接,而企业的管理层和生产监控层都是连于以太网的PC,甚至是位于异地的连于互连网上的PC。为了使工业现场的现场总线上的设备和管理监控层之间的PC能够通信,同时改善故障检测和设备维护的远程访问能力,笔者在CAN总线网与以太网的互连系统中设计了一个嵌入式WEB服务器。 1 嵌入式WEB服务器硬件设计 通常嵌入式系统硬件包括微控制器、存储器及外设器件和I/O端口等,其核心是嵌入式微控制器。为适应上网需求,嵌入式微控制器不仅要具有传统的控制功能,还要具有与因特网连接的功能。而Ubicom公司的SX52芯片能比较容易实现TCP/IP协议,选择它作为微控制器。关于传输媒
[应用]
基于嵌入式Web服务器的远程故障诊断系统
摘要:介绍了一种基于嵌入式Web服务器的远程故障诊断系统的硬件及软件实现。该系统主要包括远程数据采集、分析、诊断、仿真等功能。 关键词:嵌入式Web服务器 数据采集 故障诊断 仿真 远程诊断技术是通过设备诊断技术与计算机网络技术相结合,在设备上建立状态监测点,采集设备状态数据,在诊断中心对设备运行进行分析诊断的一项新技术。用于诊断的系统大致可以分为三类: %26;#183;大型的在线状态监测与诊断系统; %26;#183;以便携式数据采集器与巡检装置的计算机辅助诊断系统; %26;#183;利用Internet实现的远程诊断系统。 在线式系统适用于连续的状态监测与诊断,系统构成复杂、费用昂贵、专用性强。而便
[嵌入式]
谷歌在Android上用了Java,却惹了大麻烦
法庭文件显示, 甲骨文 希望就 谷歌 在 Android 中使用Java一案向其索赔93亿美元。   这起诉讼是6年前发起的,甲骨文声称谷歌需要获得授权才能在Android中使用Java平台。本案2012年正式开庭,但在谷歌使用Java的行为是否受到“合理使用”条款保护这一问题上,陪审团存在分歧。倘若符合“合理使用”原则,便可在有限的情况下使用专利技术。   本案将于5月9日重新开庭。上次庭审期间,甲骨文CEO拉里·埃里森(Larry Ellison)和时任谷歌CEO的埃里克·施密特(Eric Schmidt)都曾出庭作证。   这一索赔数据出现在甲骨文聘请的专家提交的一份报告中,该报告计算了谷歌应当因为其侵权行
[嵌入式]
嵌入式Web服务器的分析与研究
    摘要: 首先介绍嵌入式Web服务器的发展背景。然后,详细讨论嵌入式Web服务器的支撑技术,并提出瘦Web服务器模型。最后,分析嵌入式Web服务器的实现技术并给出2个具体实现形式。     关键词: 嵌入式Web服务器 嵌入式Internet 瘦Web服务器 超文本传输协议 引言 后PC机时代的到来引发了信息产品的产生,而Internet与信息产品的结合是当今发展的一个趋势,嵌入式Internet技术的产生正好迎合了这个趋势。据分析,嵌入式Internet系统在Internet电话、游戏装置和手持式通信装置的推动下将会有突飞猛进的发展。由于Internet技术的渗透,嵌入式系统正变得越来越智能化并具有
[网络通信]
STM32 ESP8266和Java服务器透传模式下的双向通信
标注:注意大家一般的得到的STM32程序中的延迟函数delay_ms()中的入口参数值是有限制的,他最大值只能是1864,我之前不知道,程序中一直错误地使用它,所以导致延时不准确。 //延时nms //注意nms的范围 //SysTick- LOAD为24位寄存器,所以,最大延时为: //nms =0xffffff*8*1000/SYSCLK //SYSCLK单位为Hz,nms单位为ms //对72M条件下,nms =1864 void delay_ms(u16 nms) { u32 temp; SysTick- LOAD=(u32)nms*fac_ms; //时间加载(SysTick- LOAD为24bi
[单片机]
STM32 ESP8266和<font color='red'>Java</font>服务器透传模式下的双向通信
基于SX52的嵌入式Web服务器的快速实现
随着互联网的日益普及,信息共享的程度不断提高,网络仪表及网络控制设备的流行逐渐成为趋势。如何通过互联网共享以单片机应用系统为中心的小型嵌入式设备的信息,成为当今电子界的热门话题。传统的互联网应用以PC为中心。如今,互联网应用正在转到以嵌入式设备为中心。用单片机实现嵌入式互联网方案的技术难点是:如何利用单片机本身有限的资源对信息进行TCP/IP协议处理,使之变成可以在互联网上传输的IP数据包。目前解决这个问题有两种方案:一种是PC网关+专用网,缺点是要增加布线和第三方协议转换软件;另一种是32位MCU+RTOS,弊端是开发难,成本极高。而用软件方法实现网络协议比采用集成网络协议的芯片,具有节省空间、降低成本的优点,更重要的是可以随
[工业控制]
基于SX52的<font color='red'>嵌入式</font><font color='red'>Web服务器</font>的快速实现
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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