APP下载

基于无线网络的多智能体仿真系统的设计

2014-12-23王中林刘忠信马争光陈增强孙青林

计算机工程与设计 2014年11期
关键词:下位上位串口

王中林,刘忠信+,吴 垠,马争光,陈增强,孙青林

(1.南开大学 计算机与控制工程学院,天津300071;2.南开大学 天津市智能机器人技术重点实验室,天津300071)

0 引 言

ZigBee协议从下到上分别为物理层 (PHY)、媒体访问控制层 (MAC)、传输层 (TL)、网络层 (NWK)、应用层(APL)等。其中物理层和媒体访问控制层遵循IEEE 802.15.4标准的规定。ZigBee网络主要特点是低成本、低功耗、低复杂度、低速率、支持大量节点和多种网络拓扑、快速、安全、可靠等,因此得到了广泛的应用,与此同时,中国物联网校企联盟认为ZigBee作为一种短距离无线通信技术,由于其网络可以便捷地为用户提供无线数据传输功能,因此在物联网领域具有非常强的可应用性。在ZigBee网络中的设备可分为协调器 (Coordinator)、路由节点(Router)和终端节点 (EndDevice)3种角色。ZigBee技术可以看成无线传感器网络的一个具体应用规范,而由德州仪器 (TI)公司推出的无线网络协议堆栈软件Z-Stack则是ZigBee技术的一个具体实现,它对物理层、媒体访问控制层、网络层以及应用支持子层做了定义,所以用户可以在Z-Stack的基础上专注于做应用层的开发,这样能大大提高开发效率并能明显缩短开发周期,本文的下位机软件的开发就是在其基础上进行的[1,2]。

一个一致性协议[3]设计完成后,需要去验证它的正确性和实用性,通常的做法是在Matlab 环境中做相应的仿真,然后通过分析仿真结果来说明协议的正确性,鉴于这种方式比较快捷迅速,成为了国内外学者目前广泛采用的方法。但是毕竟理论和现实环境相差比较大,仅仅在理论环境中做仿真无法验证协议的实用性,所以为了更加接近现实环境,本文采用在无线传感器网络中做实验的方法去验证一致性协议,网络中的每个节点都充当着智能体的角色。为了能有更好的交互性与可控性,本文采用Matlab Gui针对性地开发了一个上位机控制系统,它的主要功能是给下位机发送指令,且实时接收下位机发送来的数据,并在表格中实时显示各个智能体的状态信息及在坐标中实时地绘图,令整个实验过程的监视更加直观。该系统界面简洁友好、运行稳定、操作简单便捷、可扩展性良好,可以有效地帮助一致性协议的研究。

1 实验设备简介

通过上面的简单介绍,我们对无线传感器网络、Zig-Bee技术以及一致性有了一定的认识,在对仿真系统的设计做详细介绍之前,这里先简单介绍一下仿真系统的硬件实验设备——CC2530-MDK。

这里的CC2530-MDK,即我们采用的系统的硬件平台——ZigBee设备,它是由深圳飞比电子科技有限公司推出的,它是基于美国德州仪器 (TI)公司生产的CC253X 的专业ZigBee/RF4CE 开 发 系 统。完 美 支 持IEEE 802.15.4标 准 以 及ZigBee 2007/PRO 和ZigBee RF4CE 标 准。CC2530-MDK 整合了TI公司ZigBee CC2530DK 和RemoTI CC2530DK 两套开发系统,在功能上与TI公司的官方开发板SmartRF05EB完美兼容,仅需替换相应协议栈中LCD驱动文件即可。它不但可实现简单的CC253X 系列单品开发,还可方便组建复杂的ZigBee无线网络。我们用这个平台组建简单的星型网络,只是在各终端节点之间通过能否接受到彼此的信息来设定网络拓扑结构[4,5]。

本文该系统中的ZigBee设备采用16位的网络地址,并且除了协调器的网络地址是0x00外,其他终端节点的起始网络地址是0x796F,然后按加入到网络的先后顺序依次累加。考虑到实验的随机性,当协调器重启后,我们设定终端设备的16位网络地址将按上面既定的规则重新分配。关于ZigBee设备的2种地址类型 (64位的MAC地址和16位的网络地址)的详细介绍参见文献 [4,5]。

2 仿真系统的设计

通过上面的介绍我们对实验所用的ZigBee设备有了一定地了解,该部分将详细介绍一下仿真系统的设计。我们将首先介绍仿真系统的系统构成;然后对系统的软件开发平台做一下简单概述;接下来会详细说一下仿真系统各个部分的软件所实现的功能;之后将介绍一下以及整个系统的工作流程;最后回顾一下在系统设计中解决的关键问题。

2.1 系统构成

本实验系统包括硬件和软件2个部分。硬件包括上文提到的CC2530-MDK,另外还有CCdebugger和USB to RS-232。由于CC2530-MDK 是全功能节点,所以其即可以做协调器节点也可以充当路由节点和终端节点,在本文中只用到了协调器节点和终端节点。CCdebugger主要作用是在线调试程序以及通过其向板子下载编译好的程序。USB to RS-232的作用主要是连接协调器节点和电脑,然后通过上位机控制界面收发数据和向下发送指令。

软件包括上位机软件和下位机软件2个部分,而下位机软件又包括协调器节点的软件设计和终端节点的软件设计。上位机软件则是由Matlab Gui开发的无线传感器网络实验系统。整个系统的结构框架及总体设计如图1 和图2所示。

图1 系统的结构框架

2.2 软件开发平台

通过上面的简单介绍,我们对系统的整体结构框架以及系统的总体设计有了一个直观的认识,在对系统做进一步介绍之前,这里先简单说一下系统的上位机和下位机软件开发平台。

图2 系统的总体设计

本文的下位机 (CC2530-MDK)软件的开发平台采用嵌入式IAR Embedded Workbench IDE。它适用于大量8位、16位以及32位的微处理器和微控制器,为用户提供一个代码继承能力强且支持绝大多数目标包括特殊目标在内的并易学的开发环境,使用户即使在开发新的项目时也能在所熟悉的开发环境中进行,而且通过IAR 工具用户可以大大节省工作时间,有效地提高了用户的工作效率。考虑到对我们所选择的协议栈软件版本ZStack-CC2530-2.3.0-1.4.0的兼容性问题,本文所用的IAR Embedded Workbench IDE版本是IAR EW8051-7.51A。

而上位机控制界面的开发平台我们选择的是Matlab Gui(graphical user interface)。Matlab Gui也是面向对象的图形化用户界面开发环境,并且相对于其他高级语言Matlab Gui编程更加简单易学,只要有一定的C 语言基础即可很快入门,然后能在短期内开发出比较实用简洁的程序。很适合对VC++、C#、Java等高级语言不太熟悉并且注重程序的功能性与实用性的研究人员。利用Matlab Gui开发程序有一个最大的优势就是可以借助Matlab强大的计算与图形绘制功能来提高编程效率[6]。

2.3 仿真系统的软件功能

通过图1,我们可以对整个系统的框架结构有个大致的了解,下面分别介绍一下协调器节点、终端节点以及无线传感器网络实验系统这三部分所能实现的功能。

首先协调器节点实现的功能包括:组建网络;接收各终端节点的发来的数据然后通过USB to RS-232传到电脑;接收上位机的指令并做相应的处理然后通过无线发送到各终端节点;如果有LCD 显示屏的话可以在显示屏上显示相应的提示等。

其次终端节点实现的功能包括:加入到协调器建立的网络中,并在网络中模拟动态智能体;接收来自协调器发来的指令以执行相应的动作;接收邻居节点发来的数据然后做相应的处理并将处理后的信息广播给协调器和邻居节点;可以在LCD 显示屏上实时显示相应的提示信息等。

最后无线传感器网络实验系统,它实现的功能主要有以下几点:通过USB转串口线和协调器节点连接,然后实时接收协调器传上来的数据并在界面的表格区域显示各终端节点的信息,并用图像的形式直观显示实时的变化曲线或者是相应的节点坐标位置;用自定义的命令格式通过向协调器发送命令并经过协调器将指令发送到各终端节点;其他的实验过程需要的软件设置、软件的快捷工具菜单以及不同实验方案的管理、对历史数据的查看功能和实验参数的设置等。无线传感器网络实验系统的主界面视图以及相应的下拉功能菜单如图3所示。

图3 无线传感器网络实验系统主界面

2.4 仿真系统的工作流程

上面对实验系统的软件部分的功能做了详细地介绍。接下来介绍一下整个系统的工作流程。

如图4所示,首先需要给协调器和终端节点上电,上电后协调器负责建立网络,终端节点搜索到网络并加入,之后协调器和终端节点等待上位机发送开始指令;下位机准备就绪后通过USB转串口线连接电脑和协调器;接下来打开无线传感器网络实验系统;之后开始新建实验,在新建实验部分有2个必选设置分别是选择实验方案和选择实验节点数及状态数,节点数是根据打开的终端节点的个数来确定,而状态个数则是由选择何种实验方案来确定的,新建实验部分还有2个可选设置项分别是设置实验名称及日期和设置串口连接参数,这两项参数也可以在新建实验后在系统设置中进行更改。节点名称以及节点状态名称也可以在系统设置中进行自定义更改;新建实验完成后先尝试打开串口,若串口不可用会有相应提示,用户可以在系统设置中重新选择可用串口以及将各项参数更改成和协调器的一样;成功打开串口后就可以点击开始按钮开始实验了;实验完成后,先后点击停止与断开串口连接按钮,接下来就可以对实验数据进行保存和另存为,以备以后查看历史数据之用。

图4 系统工作流程

2.5 系统设计中的关键问题

系统设计中存在的一些关键问题包括:上位机串口通信的设计以及下位机和上位机之间的数据收发周期的同步2个方面。

在上位机串口通信的设计上的关键问题主要是选择采用何种方式进行接收数据的问题。在Matlab环境中,有查询和中断2种方法对串口数据进行读取。查询方式是一种异步串行通信,它需要不停地查询串行口的缓冲区,一旦有数据就进行读取,这种通信方式的优点在于编程简单,但是由于不能对数据进行实时处理以至于系统的实时性比较差,而且会极大地占用系统资源,所以在实际的应用中实用价值不高,故本文选择了中断方式收发数据。中断方式主要是通过对串口进行控制来实现串行通信的,它采用了Matlab的事件驱动以及编写相应的回调函数机制。Matlab常用的串口通信中断事件有:输出缓冲区为空事件、串行口引脚状态改变事件、缓冲区有指定字节数目的数据可用事件、接收到的数据有指定的结束符事件等[7]。

本文选择的事件驱动方式是缓冲区有指定字节数目的数据可用事件,假定我们指定的字节数为n,则当串口监视到接收数据缓冲区中一旦有n个字节的数据时就即刻激活该事件,然后产生中断立刻响应相应的回调函数进行数据处理。这也要求下位机向串口写数据时保证每次写入的数据字节数一致,当数据字节数不够时可以用空格补齐。在选择事件驱动方式的问题上,我们也尝试过采用接收到的数据有指定的结束符事件,我们通过实验验证这种方式和缓冲区有指定字节数目的数据可用事件效果一样,这种方式要求下位机每次向串口写入数据时必须添加和上位机接收指定结束符一样的自定义字符,譬如我们假定自定义的结束符是T,则上位机串口监视到发送上来的数据的末尾有字符T 时就立刻激活该事件,然后产生中断调用相应的回调函数进行数据处理。用户可以根据自己的需要来选择采用哪种事件来产生中断。上面说的回调函数相当于一个中断服务子程序。Matlab 提供了一个缺省的instrcallback(obj,event)回调函数,其实这个函数是一个程序模板,用户可以根据自己的需要自定义回调函数的函数名和实现方式等。

为了在上位机控制界面实时显示数据以及实时绘图,界面数据的更新周期和下位机终端节点的无线发送周期需要保持一致,这样能避免数据显示出错。

3 实验结果

我们用这套系统分别做了Vicsek 模型一致性算法[8]、有状态限制的丢弃型一致性算法[9]以及目标跟踪算法[10]等几个方面的实验。本文主要介绍一下目标跟踪算法的实验。这里的目标跟踪算法指的是我们人为的将一个智能体设定成领导者,而其他智能体则作为跟随者,跟随者通过接收到的邻居信息并根据内置在智能体中的算法程序在实验一段时间后能够跟在领导者的附近。图5演示了跟踪算法的实验效果。

图5中的最长的红色箭头代表领导者,蓝色箭头表示跟随者,从图5 (a)中可以看出一开始它们都是随机分布的,方向和速度大小也都是随机的,整体看上去比较杂乱无章;而从图5 (b)我们观察到过一段时间后跟随者慢慢向领导者靠近,方向、位置及速度都在渐渐趋近领导者;最后的图5 (c)显示跟随者在位置上已经全部跟在领导者附近,方向趋于相同,速度基本一致,达到了预期的实验目标。同时该实验也验证了基于Matlab的缓冲区有指定字节数目的数据可用事件驱动的中断方式能够稳定可靠地进行实时串行通信,并且由于Matlab环境下编程简单、数据处理及图形显示比较方便,大大缩短了控制界面的开发周期。

4 结束语

本文主要介绍了基于无线传感器网络的多智能体系统一致性仿真系统的设计与实现。下位机软件采用C 语言编程;上位机控制界面则用Matlab Gui编程,之所以选择Matlab Gui是为了借助Matlab强大的计算与绘图功能,同时由于Matlab Gui比较简单易于掌握,可以整体上简化上位机控制界面的编程工作量,从而能极大地提高控制界面的开发效率。本文中上位机控制系统的界面简洁友好,操作便捷,运行稳定,而且软件具有良好的可扩展性,能够实时的接收并显示协调器发送上来的各节点的状态信息,同时还能进行实时的绘图让用户能够更加直观地观察系统运行中各智能体的状态变化情况,以及通过向下发送命令对下位机进行实时的控制。本文利用该仿真系统在多个CC2530-MDK 实验设备上运行一致性协议,通过实验结果验证了一致性协议的正确性及在实际环境中的可行性,也说明了该系统能有效地帮助一致性问题的研究。

[1]GAO Shouwei,WU Canyang.ZigBee technology practice tuto-rial:Solutions of the wireless sensor network based on CC2430/31 [M].Beijing:Beijing Aeronautics and Astronautics University Press,2009 (in Chinese). [高守玮,吴灿阳.ZigBee技术实践教程:基于CC2430/31的无线传感器网络解决方案 [M].北京:北京航空航天大学出版社,2009.]

[2]Farahani S.ZigBee wireless networks and transceivers [M].Access Online via Elsevier,2011.

[3]YANG Wen.Consensus problem in multi-agent systems[D].Shanghai:Shanghai Jiao Tong University,2009 (in Chinese).[杨文.多智能体系统一致性问题研究 [D].上海:上海交通大学,2009.]

[4]Instruments T.A true system-on-chip solution for 2.4-GHz IEEE802.15.4and ZigBee applications[EB/OL]. [2011-02-19/2014-02-12].http://www.ti.com/lit/ds/symlink/cc2530.pdf.

[5]Instruments T.CC253xSystem-on-chip Solution for 2.4GHz IEEE802.15.4and ZigBee applications user’s Guide[EB/OL].[2014-01-20/2014-02-12].http://www.ti.com/lit/ug/swru191e/swru191e.pdf.

[6]LUO Huafei.Study notes of MATLAB GUI design [M].Beijing:Beijing Aeronautics and Astronautics University Press,2009 (in Chinese). [罗华飞.MATLAB GUI设计学习手记[M].北京:北京航空航天大学出版社,2009.]

[7]Gupta R,Bera JN,Mitra M.Development of an embedded system and MATLAB-based GUI for online acquisition and analysis of ECG signal [J]. Measurement,2010,43 (9):1119-1126.

[8]Degond P,Dimarco G,Mac TBN.Hydrodynamics of the Kuramoto-Vicsek model of rotating self-propelled particles[J].arXiv Preprint arXiv:1306.3372,2013.

[9]Liu ZX,Chen ZQ.Discarded consensus of network of agents with state constraint [J].IEEE Transactions on Automatic Control,2012,57 (11):2869-2874.

[10]Hu J,Feng G.Distributed tracking control of leader-follower multi-agent systems under noisy measurement[J].Automatica,2010,46 (8):1382-1387.

猜你喜欢

下位上位串口
浅谈AB PLC串口跟RFID传感器的通讯应用
发射机房监控系统之下位机
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式