基于嵌入式的无线手持控制系统的设计与实现*

2014-07-04 08:54杨军平侯沛德许存禄
机械研究与应用 2014年2期
关键词:网络地址开发板网关

杨军平,侯沛德,许存禄

(兰州大学信息科学与工程学院,甘肃兰州 730030)

0 引言

对那些现场环境恶劣或受客观条件制约不适宜布线的场合,建立一个通畅可靠的无线信息传输渠道,实现控制信息和数据的远程传输是整个自动化控制系统的一个关键环节,为此寻找一种安全可靠、低成本的解决方案,有着重要的社会意义和应用前景[1]。Zigbee无线通信系统使用了抗干扰能力极强的直序扩频和动态路由数据传输的通信方式,且具有功耗低,成本低,ⅠSM 2.4GHz 频段免费等优点[2]。嵌入式系统是以应用为中心,以计算机为基础,软硬件可剪裁,适用于对功能,可靠性,成本,功耗严格要求的专用计算机系统[3]。嵌入式系统的迅速发展,恰恰满足了现代工业生产和科学研究对数据采集水平的日益提高这一强烈需求。将嵌入式系统应用与工业控制相结合的研究及应用正在世界范围内兴起[4]。

硅铁炉加料装置的控制系统由基于嵌入式的无线手持控制单元、无线网关、西门子PLC控制柜、强电控制柜等几部分组成。可以用手持控制单元和配电柜控制面板两种方式完成加料动作。通过配电柜控制面板上的控制按钮和转换开关直接控制PLC可完成各种加料动作,但由于加料车在加料过程中配电控制柜跟随加料车在不停运动,且距离硅铁炉门较远不便于观察炉内加料情况,因此控制面板操作只作为应急情况下的一种操作方式,加料主要依靠手持控制单元来完成。操作人员通过触摸屏上的控制按钮和状态信号指示灯,控制加料车完成整个加料过程。硅铁炉加料装置的控制系统整体架构如图1所示。

图1 硅铁炉加料装置的控制系统整体架构

1 基于嵌入式无线手持控制终端硬件设计

本项目无线控制传输部分由基于嵌入式的无线手持控制终端和工业现场的无线收发装置两部分组成。手持控制终端采用ARM11+CC2530+Linux系统的形式,ARM手持控制终端作为主处理器主要负责人机交互画面的显示,设备状态的监测显示、控制命令的发送、故障报警、系统设置与管理。CC2530作为从处理器负责控制命令和状态数据的接收发送、以及数据在接收和发送过程的加密解密,提高数据的抗干扰能力。工业现场的无线收发装置负责接收手持终端发送的命令和数据,并将从PLC读取的状态信息发送回手持终端。手持终端控制命令数据的发送和接收通过Zigbee模块来完成,在PLC端的Zigbee收发模块,要将收到的控制命令和数据转换成MODBUS协议要求的格式,再和PLC进行自由口通信。从PLC中按MODBUS协议形式读取的状态数据也要进行数据格式转换,转换成ZSTACK-PDU格式再由Zigbee模块进行发送。基于嵌入式的无线手持控制系统框图如图2所示。

图2 基于嵌入式的无线手持控制系统框图

1.1 ARM手持控制单元的硬件电路设计与选型

本项目选用UT-S3C6410开发板作为主控制器,UT-S3C6410采用“底板+核心板”的结构形式[5]。核心板配置如下:SamsungS3C6410处理器,ARM1176JZF-S内核,系统最高运行频率667MHz;128M DDR内存作为RAM存储器;256M nand flash作为随机存储器;MAX11T复位芯片作为控制系统复位操作。底板配置如下:采用AMD AM29LV160DB芯片2M Nor Flash存储器;4路UART接口,采用3片Sipex SP3232EEA芯片,可通过2个8位拨码开关选择TTL电平或RS-232电平。选用7寸电阻式触摸液晶屏,5V,4A直流电源。

1.2 CC2530无线收发模块的硬件电路设计

选用CC2530单片机作为核心处理芯片,32M和32.768M晶振,SP3232EEA串口电路,天线和巴比伦匹配电路,LED电路,AD转换电路,8MRAM存储器[2]。

2 开发环境搭建

2.1 ARM手持单元开发环境的搭建

本项目选用UT-6410开发板+CC2530开发板+linux系统作为开发平台,按以下步骤搭建嵌入式linux 开发平台[5]。

(1) 在电脑上安装 Windows xp、Vmware7.0、ubuntu 10.04,下载 android6410-u-boot-v 2.0 .tgz、android6410-linux2.6.28-v2.0.tgz 、cross-4.2.2-eabi.tar.bz2 和 arm-none-linux-gnue abi-arm-2008q3-72-for-linux.tar.bz2、mini gui-rootfs.tgzmovi NAND_Fusing_Tool.exe、dnw.exe、USB 驱动。

(2)安装交叉编译链arm-none-linux-gnueabiarm-2008q3 和 cross-4.2.2-eabi。

(3)编译U-boot、修改内核Kerner参数配置,编译Kerner后保存退出。

(4)烧写u-boot格式化SD卡(2G以内),文件类型为 FAT32,用 moviNAND_Fusing_Tool.exe将 SD-boot.bin写入SD卡,将SD卡插入开发板SD卡槽,设置拨码开关SW1,设为SD卡启动模式。安装USB驱动程序,打开dnw.exe,正常启动开发板。格式化Nand Flash,在 SDboot命令行中输入“nand erase 0 10000000”,回车。输入“dnw c0008000”,回车。如果已经安装过USB下载驱动,状态栏显示:[USB:OK],信息提示:OTG cable Connected!点击USB Port->Transmit-> Transmit,将linux2.6.28imageu-bootnand.bin读到 ram 0xc0008000,输入“nand write c0008000 0 100000”,回车。

(5)将开发板设置为Nand Flash启动模式,正常启动后,烧写 zⅠmage。进入 u-boot命令行后,输入“dnw c0008000”,回车。点击 USB Port->Transmit->Transmit,将配置好参数的 zⅠmage读到 ram 0xc0008000地址,输入“nand write c0008000 100000 300000”,回车。

(6)挂载NFS根文件系统,在linux主机(ubuntu 10.04)上安装NFS服务,修改linux主机上NFS配置文件(/etc/exports),添加如下内容:/home/yang/nfs_share 192.168.1.10(rw,sync,no_root_squash),其中/home/yang/nfs_share是服务器共享的目录,192.168.1.10 是开发板的 ⅠP。

将minigui-rootfs.tgz复制到 linux主机共享目录/home/yang/nfs_share 解压,minigui-rootfs.tgz保留在nfs_share目录下不动,重启linux主机NFS服务器。开发板插入网线,将开发板接入linux主机所在局域网内,开发板开机,并进入u-boot命令行、设置u-boot启动参数,设置bootcmd、bootargs,重启开发板,内核启动后,将自动挂载NFS文件系统。

(7)修改串口驱动程序,并重新加载[6]。

(8)对开发板的触摸屏驱动程序、串口驱动程序进行测试,对触摸屏进行校正。

2.2 Zigbee开发环境的搭建

CC2530的内核为 C8051,使用 ⅠAR Embedded Workbench软件集成开发环境,Zigbee 2007栈协议。首先按照软件提示,在Windos XP主机上安装ⅠAR,安装成功后点击菜单栏的project选项下的Option项,弹出 Options for node“CC2530Test”对话框,按要求对开发环境进行配置[2]。

3 应用程序开发

本项目用到的应用程序包括:基于MiniGUⅠ的加料车无线手持单元图形界面,Zigbee无线通信程序,Zigbee无线通讯模块和UT-6410开发板之间串口通信程序,MODBUS协议与Zigbee协议之间的数据格式转换。

3.1 基于MiniGUI的加料车无线手持单元图形界面的开发

(1)在linux主机上安装minigui程序首先需要下载如下组件,libminigui-gpl-3_0_12.tar.gz、mgsamples-3_0_12.tar.gz、freetype-1_3_1.tar.gz、jpegsrc_v7.tar.gz、libpng-1_2_37.tar.gz、minigui-res-be-3_0_12.tar.gz、zlib-1_2_2.tar.gz、qvfb2-2.0、libmgplus-1.2.4、libqt3-mt、libqt3-mt-dev、alien、qt-devel-3.3.8-4.fc7.i386.rpm。其次,按如下顺序安装各组件:libminigui-gpl-3_0_12.tar.gz、minigui-res-be-3_0_12.tar.gz、freetype-1_3_1.tar.gz、PNG 库、JPEG库、zlib 库、libmgplus-1.2.4、qvfb2、mg-samples-3_0_12。最后运行 helloword程序,检验 linux主机上的miniGUⅠ是否安装成功。

(2)对开发板进行交叉编译 首先安装交叉编译器 cross-2.95.3.tar.bz2,再安装 zlib 库、png 库、jpeg库、libttf库、编译安装 libminigui、popt库,将库文件安装到/usr/local/arm/2.95.3/arm-linu文件夹下。

(3)把miniGUⅠ移植到开发板 嵌入式系统的根目录为/opt/rootfs,把 /usr/local/arm/2.95.3/armlinux/lib中相应的库复制到 /opt/rootfs/usr/local/lib目录下,修改MiniGUⅠ.cfg并保存退出。安装并修改mde-1.3.0.tar.gz,保存退出,制作根文件系统镜像,把 root.cramfs烧到板子里。

(4)基于Minigui的图形界面开发。

3.2 基于Zigbee无线通信模块程序的开发

(1)组建网络 协调器(手持终端)主要负责网络组建、维护、控制终端节点加入无线网络等任务,Zigbee栈协议采用事件驱动的方式。当系统上电后,协调器首先进行初始化,自动选择一个信道,然后选择一个网络号,建立无线网络,等待终端节点(无线网关)发出的请求加入网络的信标(Beacon)信号,协调器对收到的终端节点加入网络的请求作出应答,终端节点收到协调器的应答后,发送数据请求,请求协调器分配网络地址,协调器对终端节点的数据请求作出应答,将分配的网络地址发送给终端节点,终端节点使用自己的网络地址和协调器进行通信。

(2)发送控制命令或数据 操作人员通过触摸屏发出各种控制命令或数据,ARM处理器接到发送控制命令或数据的请求后,将待发送的数据存入串口缓存,对串口进行初始化,设置串口参数,和CC2530的串口进行通信,CC2530将接收到的数据存入串口缓存,CC2530处理器读取数据,将需要发送的数据存入相应的端口,调用Zigbee栈协议中的发送函数与相关硬件函数最终将数据通过天线发送出去。

(3)接收终端节点返回的状态数据 当协调器收到数据后,Zigbee栈协议将接收到的数据封装成一个消息,然后放入消息队列中,每个消息都有一个ⅠD,使用Zigbee栈协议中的osal_msg_receive函数从消息队列中接收一个消息,然后使用switch-case语句对消息类型进行判断,进行相应的数据处理,将处理好的数据存入串口缓存,打开串口将数据发送至ARM开发板的串口缓存,ARM处理器读取数据,对触摸屏上的状态指示灯进行刷新[7]。

3.3 无线网关程序开发

无线网关的主要作用是完成MODBUS协议和Zigbee无线协议数据转换,转换协议中使用了两种网络数据格式 MODBUS-PDU和 ZSTACK-PDU,PLC设备能够响应的协议数据为MODBUS-PDU,Zigbee网络中传输的 Z-Stack协议数据为 ZSTACK-PDU。MODBUS协议数据以站号指定通信目的地址(无线终端),需要将MODBUS命令中的地址信息提取出来并根据此信息得到相应的PLC设备绑定的Zigbee无线终端的无线网络地址,并根据网络地址将MODBUS命令数据转发至对应的无线终端。无线手持终端发送的控制命令是Zigbee无线协议数据,无线网关将接收到ZSTACK-PDU经过与上面相反的过程得到MODBUS-PDU数据发送至与之相连 PLC设备完成一次命令的接收。

在本项目中无线网关内部维护地址映射表,将整个网络中的所有PLC设备的站号和与其绑定的无线终端的Zigbee网络地址以及通信协议端口记录在映射表中。实际通信过程中将通过查询表格得到对应的PLC站号和无线终端网络地址。当PLC通过串口将MODBUS协议命令数据发送给 Zigbee模块时,首先在应用层将目的站号解析出来,查询网络映射表得到无线终端网络地址,在 MODBUS协议命令的基础上加上自己Zigbee的ⅠEEE地址,并将这些数据作为应用层数据发送给网络层封装,然后交给ZSTACK协议栈来完成发送,当无线终端收到信息,发送响应信息给发送方,完成一次通信过程。这个通信过程需要设置通信超时机制,当超过一段时间无法接收到回复和应答将作为通信失败处理,请求重新发送[8]。

4 结语

在青海进行了硅铁炉加料实验,整个设备移动范围最大不超过 30 m,通过 TexasⅠnstruments Packet Sniffer软件进行抓包实验,无线手持终端发送控制命令、接收监测数据的误码率为零,整个加料装置运转正常,反应灵敏,达到了预期设计要求。

[1] 王 泉,陈加林.工业现场级Zigbee手持控制器的设计与实现[J].微计算机信息,2009(2):5-2.

[2] 王小强,欧阳骏.黄宁淋.Zigbee无线传感器网络设计与实现[M].北京:化学工业出版社,2012.

[3] 弓 雷.ARM嵌入式Linux系统开发详解[M].北京:清华大学出版社,2010.

[4] 胡国珍,王 泉,魏 旻.基于 Zigbee的工业无线网关研究[J].技术纵横,2009(2):5-25.

[5] 北京飞漫技术有限公司.XM6410原型机Linux2.6.28使用手册[Z].北京:2011.

[6] 宋宝华,何昭然.精通Linux设备驱动程序开发[M].北京:人民邮电出版社,2012.

[7] 蒋 挺,赵成林.紫峰技术及其应用[M].北京:北京邮电大学出版社,2006.

[8] Modbus.org.Modbus Application Protocol Specification V1.1[EB/OL].httP://www.Modbus.org.

猜你喜欢
网络地址开发板网关
网络地址转换技术在局域网中的应用
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
浅析IP地址分类
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板
一种实时高效的伺服控制网关设计
基于Zigbee与TCP的物联网网关设计