1 系统硬件组成
基于TINI数据转换系统的硬件系统如图1所示。系统与外界的接口主要是RS232的串口和RJ45的以太网接口,其功能就是将串口设备接人到局域网络甚至于Interne。
2 网络数据转换系统的Java程序
2.1 软件开发工具包——TlNI SDK
为了在编程中实现对硬件的访问,Dallas公司开发的TINI SDK将DS80C400中的硬件部分虚拟为Java的类。通过调用相关的方法来实现对硬件的操作。SDK中包含Dallas公司开发的嵌入式操作系统。它是多任务、多线程、具有跨平台的能力、拥有高度优化的Java运行环境的操作系统。
在TINI SDK的支持下开发应用程序,主要采用Java进行,通常不直接面对汇编语言,但是TINI运行环境提供了使用本地方法的机制。为了优化严格要求速度的通道或访问底层硬件,可以使用本地语言(主要是汇编语言)来编写子程序,这样增加了系统的灵活性。
利用SDK中提供的API可以简化编程。利用SDK中提供的JavaKit和TINIConvertor等工具,在PC上进行程序的开发调试工作,生成适用于TINI运行环境的目标应用程序。通过JayaKit向TINI硬件存储器中装载TINI的运行环境(包括TINI的操作系统),配置好网络参数,即可通过FTP、TELNET等下载用户程序到TINI硬件上并控制运行。TINI的Java虚拟机将Java字节码转换成为机器硬件系统能够执行的代码。
2.2系统程序的设计方法
为了实现串口数据和以太网络数据之间的交换,设计了基于TINI系统的网络数据转换程序。该程序的主要功能是,从串口设备读取数据,将所得到的数据进行TcP/IP协议封装,通过RJ45的接口发送到上位机,与上位机的服务器程序进行交互;同时,将上位机发送给TINI的数据转发到RS232的串口,进而可通过网络远程监控现场的串口设备。本设计中,TINI印刷电路板上有两个串口,分别定义为串口O和串口4。单片机内部集成UART,串口0用来串口启动TINl,下载TINI运行环境,以及作为TINI的输出终端。本程序中,利用串口4和上位机服务器程序交互。
数据转换由两个进程来实现,它们分别是SerialWriter和SerialReader。SerialWritel的功能是从上位机服务器读取数据流,再把数据写到串口输出数据流;SeriaReader的功能是把串口缓冲区中的可用数据读到输入缓冲区,通过向网络输出流写数据把串口数据发送到网络服务器,并且更新串口数据量;同时监视这两个进程有无异常。如果捕捉到异常,便关闭数据流并中断维持线程,结束程序。
SerialToEthernet本身继承了一个线程类。它是一个维持线程,功能是判断系统通信状态。如果正常,则每隔6 s打印输出数据流量;如果连接的服务器被关闭,则关闭串口socket及相关的流。它的线程程序中,是一个有系统运行状态标志控制的循环,维持程序运行,每一次循环中首先使该进程睡眠6 000 ms,然后打印输出此时的数据流量。程序的流程如图2、图3、图4所示。
3 系统调试方案
系统调试的主要目的是模拟现场设备与以太网之间的数据转换,将PC机通过串口与以太网接口与系统相连,接线方式如图5所示;用PC机模拟现场的设备,同时,利用PC机作为上位机监控系统运行。
实验中除了运行SerialToEthernet外,还准备了两个简单的用户程序,用于系统调试,分别是HelloWorld和Blinky。
第一步,下载运行HelloWorld。其功能是在以JavaKit作为TINI的系统输出终端(类似于PC机的显示器),打印输出“Hello World”的字符串,用于检验串口O。
第二步,下载运行Blinky。它的功能是与P3.5相连的LED不停闪烁,用于检验I/0口的功能。
第三步,下载运行SerialToEthernet,同时运行上位机上服务器程序TINlServer。TINI系统上运行Serial-ToEthernet,用于实现数据转发功能。为了验证上位机与TINI问的串口通信,上位机上运行串口调试程序,从而用上位机模拟实际的现场串口设备。运行串口调试程序时,在其中把串口设为与TINI的串口参数相同,发送模式设为连续发送。在这样的模拟情况下,从串口调试程序窗口输入的数据,通过串口发送给TINI系统,经过TINI的转发,通过RJ45接口发往上位机。上位机运行服务器程序TINIServer,它将TINI发来的数据不经处理直接通过输出流发送给TINI。经过TINI的转发,数据再次由串口返回上位机,显示在串口调试程序的“接收区”中。数据流向如图6所示。
4 结论
与传统的工业控制数据转换系统相比,TINI更加廉价,更加紧凑,消耗功率更低,并且易于维护。此外,TINI还支持许多底层的通信接口,具有足够的灵活性,可以适应不同联网的要求。基于TINI的网络数据转换系统方案是低成本而且可靠的。利用Java编程可以提高嵌入式系统软件开发的效率。在本系统的开发过程中。利用Java软件很方便地实现对底层硬件的访问;利用Java自身的特性,可以实现强大的网络功能。
对于设备来说,通过本系统可以利用现有的网络扩展其功能;同时也可以利用以太网络实现对设备的远程诊断控制,实现更加广泛意义上的网络化。