ARM在以太网通讯中作为服务器端构成网络上的一个节点,具有独立的IP地址,上位机作为客户端通过对不同IP地址的访问实现与网络上不同节点的ARM服务器通讯,连接或监控某个节点上的电子负载。上位机通过以太网发送给负载的控制命令由ARM网络控制器接收,再通过ARM网络控制器由RS232总线发送给电子负载。电子负载根据接收到的控制命令将被测电源的各种数据和负载工作的各个参数通过RS232总线上传给ARM。ARM将来自负载的数据采用TCP/IP协议通过以太网上传给上位机,ARM可以通过扩张串口连接多个负载,同时通过路由器扩展网络,实现多个ARM系统并行工作,提高整个监控系统的负载能力。
2 ARM网络控制器硬件设计
ARM系统硬件部分采用三星公司的ARM芯片S3C2440,S3C2440基于32 bit ARM920T内核,标称工作频率为400 MHz,配置一片64 MBytes Nand Flash和两片32 MBtyes SDRAM,网络芯片采用DM9000A,配置了MAX3232扩展串口与电子负载进行连接。结构图,如图2所示。
3 ARM网络控制器软件设计
ARM嵌入式网络控制器的操作系统采用WindowsCE 5.0,Windows CE 5.0是一个32位、多线程、多任务的操作系统,同时也是模块型的操作系统,可选择、组合和配置windows CE 5.0的模块和组件来创建用户版的操作系统。windows CE 5.0通过中断嵌套与优先级处理机制满足了测控系统的实时性要求,同时具有类似于桌面系统的人机界面和应用程序开发工具。
在windows CE 5.0的开发中。有两个重要的方面,一是内核定制,二是应用程序的开发。
3.1 Windows CE内核定制
由于应用环境的多样性,需要对Windows CE系统做不同的内核定制。采用微软公司的PlatformBuilder集成开发环境,针对电子负载网络监控的特点,添加、删除和修改某些系统模块,包括添加串口通信支持,以太网通讯支持,ActiveSync支持(软件调试时的通信支持)等。此外,注册表模式修改为HIVE模式,使掉电后数据的存放到Flash中保存实现程序的自启动,参数掉电保存等功能。
3.2 ARM端通讯软件开发
ARM网络控制器作为负载和上位机连接的桥梁,实现RS232总线和以太网的互联完成电子负载的远程网络监控功能。因此,ARM端通讯软件功能包括:与多个电子负载的串行通信;与上位机基于TCP/IP协议的通信,提供可视化界面显示当前网络连接参数和状态,用户可以通过触摸屏设置网络连接参数如波特率和IP地址等,系统提供连接日志供用户查阅。其中的核心功能是实现RS232总线和以太网的通讯互联,互联模块采用多线程的调用方式,保证了系统通讯的实时性。
通讯帧格式定义为长度26位,格式为:同步头,负载地址,命令字,4~25 bit为相关信息内容,校验码。
(1)同步头为AAH,占l bit;
(2)负载地址范围为0~FE,占1 bit,确定该帧发送的目标负载或接收源负载;
(3)命令字占1 bit,标示了该帧的功能;
(4)4~25 bit为命令参数和反馈参数。
套接字即Socket是支持TCP/IP协议的网络通信的基本操作单元。通过Socket编程,可以方便的访问TCP/IP开发以太网通讯程序。Embedded VC++中基于TCP的Socket编程的服务器端程序工作流程如下:
(1)创建套接字Socket();
(2)将套接字绑定到一个本地地址和端口上bind();
(3)将套接字设置为监听模式,接收上位机的请求(listen);
(4)等待上位机请求,当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字accept();
(5)用返回的套接字于上位机进行通信(send/reev);
(6)关闭套接字。
串口通讯在Windows CE环境下与桌面Windows环境下类似,通过CreateFile函数打开串口,ReadFile和WriteFile函数读写串口数据。
修改注册表使ARM系统上电后自动运行通讯软件:首先进行串口和以太网的初始化,对每个串口创建单独的接收线程和发送线程,Socket监听到上位机连接后,创建与上位机连接的数据收发线程。当串口的接收线程接收到数据时,触发相应的回调函数,调用Socket的发送线程把数据发送给上位机。当上位机发送数据给ARM服务器时,Socket的接收线程触发相应的回调函数,根据帧中负载地址,调用对应的串口发送线程向指定的目标负载转发数据。工作流程,如图3所示。