企业简介

作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。

  • 公司类型:其他

联系方式
  • 控制网
  • 地址:北京市海淀区上地十街辉煌国际2号楼1504室
  • 邮编:100085
  • 电话:010-57116291 / 59813326
  • 传真:010-59813329
  • 网址:http://www.kongzhi.net
  • Email:mahongliang@kongzhi.net
  • 联系人:市场部
案例详细
标题基于TINI平台的网络开关设计
技术领域
行业
简介提出一种基于TINI平台的网络ON/OFF开关系统设计方案,介绍以D S 8 0 C 4 0 0 单片机为核心的系统硬件构成和基于T I N I 运行环境的应用程序设计方法。该方案可以实现网络开关的开关控制。
内容
引言
        为了达到利用Internet强大的网络功能,实现远程控制的目的,需要研究合理的网络接入方案。利用基于TINI平台的嵌入式系统,搭建不同设备接入计算机网络的桥梁。利用嵌入式系统强大的软硬件功能,可以支持不同的设备,实现接入方案的通用性。由于嵌入式系统具备较好的数据处理能力,不仅可以作为简单的网络接口,还可以扩展接入设备的网络功能。
        本次设计方案,IP网络继电器所需的TCP/IP栈和本地控制全部可由TINI平台提供。JAVA运行环境极大地降低了这项任务的复杂性,利用它可以实现通过网络远程访问和控制小型传感器和执行器。本次设计的IP ON/OFF开关,采用一个简单的继电器和微控制器DS80C400构建,它还可以延伸到其他远程监视和控制应用中。本电路由一个成为TINIWebServer的应用进行控制,它直接由TINI运行环境执行,applet服务于主工作站,为了命令和状态返回到TINI运行环境而打开双向通信,并且显示一个用于遥控继电器的图形用户界面。
   
一、系统软件概述
        Com.dalsemi.tininet.http.HTTPServer类属于JAVAKIT里的一个扩展类,它允许开关控制应用程序充当简单的web服务器,其唯一的目的是将applet传递给远端主机,在被主机内部浏览器执行后,该applet就建立了一个于TINI应用程序交换命令和状态的双向TCP连接,它也为显示控制和状态提供了一个图形用户界面。图1描述了整个软件系统的原理图。


1 系统软件原理图

二、系统硬件概述

    在图2中,基于DS80C400芯片的ON/OFF控制电路构成了开关接口。DS80C400芯片提供了以太网接口能力,以及通过引脚P5.0(其他引脚也可以等效工作)控制开关。N沟道MOSFET通过开关流过继电器的电流,来控制继电器。用户可以根据继电器和FET的大小要求,供给不同的电压和电流;如果不需要隔离外部电路于TINI验证模块的电源,则可以去掉继电器。在开关状态改变时,二极管抑制继电器线圈的感生电压。为了可能实现某些新的服务,如网络开关控制,在TINI芯片组参考设计中,采用基于标准的因特网技术,集成了所需要的软硬件组件。


2 系统硬件原理图

三、网络开关控制原理
    由四个类构成了该应用的开关控制和web服务器接口部分。Power-Switch类通过采用TINI类中的com.dalsemi.system.BitPort  API类,直接接口至硬件。WebWorker类直接来由Software Developer’s Kit (TINI SDK)中的TINIWebServer,负责为到来的HTTP连接提供服务。SwitchWorker类管理applet和TINI应用之间的所有命令和状态通信。TINIWebServer类通过绑定各个类的操作,来实现本应用。
    PowerSwitch类是一个连接硬件的接口,在其构造器内为引脚P5.0创建一个BitPort目标。在该类中,可以执行两种函数,ON函数设定的引脚端口状态是接通继电器线圈的电压;而OFF函数通过清零端口状态,来断开继电器线圈的电压。在图2中的单刀双掷(SPDT)继电器能够工作于常闭或常开位置,即在这两种位置之间切换外部电压源。ON和OFF函数假设电路工作于常开状态,且必须能够被改变至常闭电路状态。为了指示ON/OFF是否对应于BitPort的位置或clear函数,则在该类中引入了一个外部的布尔变量(invert)。另一个函数(setInvert)要求用来初始化invert变量。硬件图描述的是常开电路。
    WebWorker类提供了网络和应用之间的接口。它简单地建立和驱动一个目标(com.dalsemi.tininet.http.HTTPServer),该目标依次产生线程,为每一个到来的HTTP连接提供服务,该类取自于上述的TINIWebserver,无须作任何修改,可以在网络上的任何地方接入,HTTPServer能够提供输入密码,或者接受任何其他形式的控制,仅允许那些授权的用号接入。
    通过将网络和硬件接口组合在一起(图3所示),TINIWebServer允许远程开关控制。例如,drive()函数通过创建一个WebWorker线程和网页“index.html”,建立此web服务器,网页的主要目的是为了在主机工作站上,下载并执行该applet。如果提示网页仅包含静态信息,该应用就没有必要创建网页。该索引只需要包含applet的jar文件一起,拷贝至web服务器的根目录下即可。


3 网络与硬件接口连接流程

    CODEBASE是一个在每个TINI芯片组设计中可以改变的网页参数。Applet使用该信息,以返回连接至某个独立的服务器插件中的TINI应用程序,可以创建并上传一个定制的网页至任何一个安装在现场的TINI芯片组参考设计。一个简单的方法是由应用程序在每次运行时,创建该网页。通过三次写操作,createIndexPage函数可以创建文件index.html,并将IP地址插入CODEBASE部分:
1)  index.write(indexTop.getBytes(),0,indexTop.length());
2)  index.write(InetAddress.getLocalHost().getHostAddress().getBytes());
3)  index.write(indexBottom.getBytes (), 0, indexBottom.length ());
    第一次和第三此写操作是将网页的静态部分拷贝至文件中,而第二次写操作是将IP地址拷贝至文件的CODEBASE部分,在应用程序建立web服务器和创建网页后,就启动了web服务器。它创建一个服务器插件,用来处理来自下载applet的键入连接,并且在applet每次连接TINI应用时,调用serviceConnection函数。
    serviceConnection函数创建了一个新例程SwitchWorker,并将这个插件传给该类,SwitchWorker构造器创建一个新的线程,以处理主机applet 和TINI应用之间的连接,SwitchWorker 函数也处理下一个进入连接,接着将控制传给drive函数。
    SwitchWorker类管理applet和Web服务器之间的所有通信(图4),在连接被断开之前,它不断地循环,执行下列步骤:
1)  停留在read(),等待一个来自applet的命令字节;
2)  如果命令字节为0,则断开开关;如果为1,则闭合开关;
3)  读入当前开关状态,回传至applet。


4 applet与web服务器通信状态图

    通过分配每个命令字节的低7位来表示不同开关的状态(图 5),该运算法则可以适用于更多的开关。保留最高位,用来指示只读操作。该运行法则也可以被扩展,以允许在同一时刻多个applet连接至单个TINI web服务器应用。SwitchWorker只是简单地保持一个“监听向量”(” vector of  listerners”)。每次applet发出一个修改开关状态的命令,web服务器就将其状态回传至当前之连接的所有applet。


图5 网络开关控制流程图

    将applet应用在主机上,是因为它提供了一套丰富的、用于显示控制和状态的图形对象以及允许双向通信。TINI类中的com.dalsemi.tininet.http.HTTPServer类是一种小巧而快速的类,但仅支持HTTP GET操作。由此产生是数据只能从TINI应用到主机单向传递。然而,该应用要求双向数据传输。命令由主机发送至TINI web服务器,而状态由web服务器发送至所有相连的主机。主机和TINI应用之间的通信无协议开销,单字节命令和单字节状态允许极快的控制和状态响应。
    主机applet包括两个类:主类(SwitchControl)处理主机端的网络通信和创建网页上所有的显示图形单元(图6);另一个类(ImageButton)创建一个图形拨动按钮,显示对应于按钮状态的两种位图之一。拨动按钮用于开关的控制和状态指示应该是足够的,但applet的表现会因浏览器的不同而异。因此,加入简单的ON/OFF按钮将完成相同的控制功能,位图和状态窗完成相同的状态指示功能而已。


6 SwitchControl控制流程图

    在创建图形单元后,SwitchControl类将创建一个状态监测线程。该线程接着进入休眠模式,停留于读命令状态,等待来自于TINI应用的状态信息。当线程向下运行时,ImageButton的位图和状态窗被刷新,接着又循环到程序的顶部,等待下一次的状态字节。Applet事件线程驱动actionPerformed函数,该函数在每次按下图形按钮后被调用,如果调用由ImageButton或ON/OFF按钮触发,则它翻转当前状态,并向TINI发出一个开或关的命令,ImageButton类只是一个简单的采用AWT(Abstract Window Toolkit)组件编程的范例。
 
四、结论
    由上述可知,采用TINI运行环境,JAVA程序和简单的继电器电路,实行远程控制ON/OFF开关时非常容易的。挑选合适的现有电路元件使得许多应用成为可能,可以控制任何事物(从任何位置的网络接入),从照明灯到任何工业设备。
 
 
 
 
 
参考文献
1 DS80C400 Network Microcontroller 1999
2 High-Speed Microcontroller User Guide: DS80C400Supplement 1999
3 Exploring Tiny InterNet Interface 1999
4 The TINI Specification and Developer Guide 1999