利用TINI平台设计网络On/Off开关(图)

出处:liangby 发布于:2007-04-16 20:03:34

TINI平台可提供设计IP网络继电器所需的TCP/IP栈和本地控制,Java运行环境可以大大降低设计工作的复杂度,利用Java程序,可以通过网络远程访问控制小型传感器和执行器。本文介绍了一个IP On/Off开关,采用一个简单的继电器电路和TINIm390/400验证模块构建,还可以延伸到其他远程监视和控制应用中。


系统软件概述
  com.dalsemi.tininet.http.HTTPServer类允许开关控制应用程序充当简单的web服务器,将Java程序传递给远端主机。在被主机内部浏览器执行后,该Java程序就建立了一个与TINI应用程序交换命令和状态的双向TCP连接,也为显示控制和状态提供了一个图形用户界面。整个软件系统如所示。


系统硬件概述
  在中,基于TINIm390/4002模板的开/关控制电路构成了该接口。TINIm390/400模板提供了Ethernet网络接口能力,以及通过引脚P5.0(其他引脚也可以等效工作)控制开关。N沟道MOSFET开关切换流过继电器的电流,控制继电器。用户可以根据继电器和FET的大小要求,供给不同的电压和电流;如果不需要隔离外部电路与TINI模板的电源,则可以去掉继电器。在开关状态改变时,二极管抑制继电器线圈的感生电压。为了实现某些新的服务,如网络开关控制。


TINI开关控制应用
  由四个类构成了该应用的开关控制和web服务器接口。PowerSwitch类通过采用TINI类中的com.dalsemi.system.BitPort应用程序接口类,直接与硬件接口。WebWorker类直接来自Maxim的Software Developer's Kit(TINI SDK)中的TINIWebServer实例,负责为到来的HTTP连接提供服务。SwitchWorker类管理Java程序和TINI应用之间的所有命令和状态通信。TINIWebServer类通过绑定各个类的操作,来实现本应用。
  PowerSwitch类是一个连接硬件的接口,在其构造器内为引脚P5.0创建一个BitPort目标。在该类中,可以执行两种函数,开函数设定的引脚端口状态是接通继电器线圈的电压;而关函数通过清零端口状态,来断开继电器线圈的电压。中的单刀双掷(SPDT)继电器能够工作于常闭或常开位置,即在这两种位置之间切换外部电压源。开、关函数假设电路工作于常开状态,且必须能够被改变至常闭电路状态。为了指示开/关是否对应于BitPort的置位或清零函数,则在该类中引入了一个外部的Boolean变量(invert),另一个函数(setInvert)要求用来初始化invert变量。所示的硬件图描述的是常开电路。
  WebWorker类提供了网络和应用之间的接口。它简单地建立和驱动一个目标(com.dalsemi.tininet.http.HTTPServer),该目标依次产生线程,为每个到来的HTTP连接提供服务。该类取自上述TINIWebserver实例,无须作任何修改,可以在网络上的任何地方接入。HTTPServer能够提示输入密码,或者接受任何其他形式的控制,仅允许那些授权的用户接入。
  通过将网络和硬件接口组合在一起(所示),TINIServer允许远程开关控制。例如,drive()函数通过创建一个WebWorker线程和网页“index.htm1”,建立此web服务器。网页的主要目的是为了在主机工作站上并执行该Java程序。如果提示网页仅包含静态信息,该应用就没有必要创建网页。提示网页只需要与包含Java程序的文件目录一起,拷贝至web服务器的根目录下即可。
  CODEBASE是一个在每个TINI芯片组设计中可以改变的网页参数。Java程序使用该信息,以返回连接至某个独立的服务器插件中的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.lenghth());
  次和第三次写操作是将网页的静态部分拷贝至文件中,而第二次写操作是将IP地址拷贝至文件的CODEBASE部分。在应用程序建立web服务器和创建网页后,就启动了web服务器。它创建一个服务器插件,用来处理来自Java程序的进入连接,并且在Java程序每次连接TINI应用时,调用ServiceConnection函数。
  ServiceConnection函数创建了一个新例程SwitchWorker,并将这个插件传给该类。SwitchWorder构造器创建一个新的线程,以处理主机Java程序和TINI应用之间的连接。ServiceConnection函数也处理下一个进入连接,接着将控制传给drive函数。
  SwitchWorker类管理Java程序和webserver之间的所有通信,如所示,在连接被断开之前,它不断地循环,执行下列步骤:
  停留在read(),等待一个来自Java程序的命令字节;
  如果命令字节为0,则断开开关;如果为1,则闭合开关;
  读入当前开关状态,回传至Java程序。
  通过分配每个命令字节的低7位来表示不同开关的状态,如所示,该运算法则可以适用于更多的开关。保留位,用来指示只读操作。该运算法则也可以被扩展,以允许在同一时刻多个Java程序连接至单个TINI webserver应用。SwitchWorker只是简单地保持一个“监听向量”。每次Java程序发出一个修改开关状态的命令,webserver就将其状态回传至当前与之连接的所有Java程序。


主机Java程序
  TINI类中的com.dalsemi.tininet.http.HTTPServer类是一种小巧而快速的类,但仅支持HTTP GET操作。由此产生的数据只能从TINI应用到主机单向传递。然而,该应用要求双向数据传输。命令由主机发送至TINI webserver,而状态由webserver发送至所有相连的主机。主机和TINI应用之间的通信无协议开销,单字节命令和单字节状态允许极快的控制和状态响应。
  主机Java程序包括两个类,主类(SwitchControl)处理主机端的网络通信和创建网页上所有的显示图形单元,见;另一个类(Image Button)创建一个图形拨动按钮,显示对应于按钮状态的两种位图之一,见。拨动按钮用于开关的控制和状态指示应该是足够的,但Java程序的表现会因浏览器的不同而异,因此,加入简单的开/关按钮和一个状态文本窗,以适应于更多的浏览器。ImageButton和开/关按钮将完成相同的控制功能,位图和状态窗完成相同的状态指示功能而已。在创建图形单元后,SwitchControl类将创建一个状态监测线程。该线程接着进入休眠模式,停留于read(),等待来自于TINI应用的状态信息。当线程向下运行时,ImageButton的位图和状态窗被刷新,接着又循环到程序的顶部,等待下的状态字节。Java程序事件线程驱动actionPerformed函数,该函数在每次按下图形按钮后被调用。如果调用是由ImageButton触发的,则它翻转当前状态,并向TINI发出一个开或关的命令。如果由开/关按钮触发,则它发出一个开/关命令。ImageButton类只是一个简单的采用AWT(Abstract Window Toolkit)组件编程的范例。


结论
  采用TINI实时环境、Java程序和简单的继电路电路,就可以实现远程控制闭合/关断开关。通过网络,可以在任何地点控制从照明灯到机床的各种设备。

 


  
关键词:利用TINI平台设计网络On/Off开关(图)MAXIMMOSFETPOWERSWITCH

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

NCE30P12S -30V -12A N-Channel MOSFET
广告
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站客服电话

0571-85317606

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!