高端学术
您当前的位置:核心期刊咨询网电子信息论文》面向软件测试的物联网节点模拟单元开发

面向软件测试的物联网节点模拟单元开发

来源:核心期刊咨询网时间:12

摘要:摘 要:在物联网应用开发中,其软件系统的开发往往受制于硬件节点的开发进度和完善程度,造成开发进度缓慢,需求不断变更,软件测试维护困难等问题。如果能在开发初期迅速搭建一个物联网节点的模拟单元则能够极大促进系统的开发和完善。Arduino提供了一个开

  摘 要:在物联网应用开发中,其软件系统的开发往往受制于硬件节点的开发进度和完善程度,造成开发进度缓慢,需求不断变更,软件测试维护困难等问题。如果能在开发初期迅速搭建一个物联网节点的模拟单元则能够极大促进系统的开发和完善。Arduino提供了一个开源的、通用的、简单易用的硬件平台,非常适合模拟物联网的硬件节点功能。本论文基于Arduino及其开发框架,提出了一个通用的物联网节点的模拟单元模型,基于该模型开发了智能靶的虚拟节點用于智能靶网管控系统的开发,开发实践表明该模型和方法可以快速实现物联网节点功能和数据的模拟,提高物联网系统的开发质量。

  关键词:物联网;Arduino;软件框架

软件工程师论文

  1 引言(Introduction)

  物联网(IoT, Internet of Things)的繁荣带动了大量的物联网应用的开发需求,一个完整的物联网应用开发包括基于智能硬件的节点开发,以及移动端、PC端的网络应用开发,即使是一个小规模的物联网应用也是如此。由于硬件开发的周期较长,网络应用软件的开发则相对较快,造成了软件测试受制于硬件开发进度的矛盾,特别是对于那些依赖于快速迭代的软件开发技术的项目,会因此而受到很大的制约。此外,由于软硬件开发通常由不同的团队完成,测试带来的人力和协调方面的成本也会很高[1]。

  为了解决上述问题,在软件工程实践中,通常是采用标准化的物联网通讯协议或者数据封装来解耦硬件和软件系统之间的依赖。例如在物联网应用开发中广泛使用的MQTT协议[2,3],以及基于TLV的数据封装格式[4]等。但由于具体应用千变万化,物联网络结构复杂,感知层网络类型不统一等问题的存在,这种方法并不能很好地解决开发中的问题。半物理仿真的概念是在仿真回路中引入部分实物,即硬件在环的方法,进行控制系统的仿真[5],同样,在软件开发和测试过程中,借鉴半物理仿真的思想,引入通用硬件技术,对物联网节点进行模拟,可以很好地解决物联网应用开发过程中的矛盾。

  Arduino是一种开源的通用硬件平台,具有开发简单,接口丰富,成本低廉等优点,非常适合作为物联网节点的模拟设备[6]。本论文将基于Arduino硬件平台,通过设计实现面向物联网应用的节点模拟软件框架和模型,并以靶网管理系统软件开发为应用背景,探讨如何实现智能靶节点的模拟,以降低软件开发的周期和成本。

  2 软件系统建模(Software modeling)

  2.1 框架设计

  对于物联网应用来说,本质上是物联网智能节点与服务器之间的数据交换。由于物联网底层和互联网通常采用的协议不同,数据交换通常是基于一个物联网关实现[2,7]。物联网应用系统的典型结构模型如图1所示。

  物联网传输协议有很多种,例如Zigbee、工业以太网、工业总线、NB-IoT等。对于Arduino而言,都有专门的模块和转接板对应于这些网络。通常Arduino与这些模块之间是通过串口进行通讯的,因此在设计基于Arduino的物联网节点模拟软件框架如图2所示。

  该软件框架是从基于时间的嵌入式多任务框架[8]中扩展而来,其中方框表示软件模块/任务,而箭头表示调用关系。该框架包括以下内容:

  (1)“定时器”模块提供了多任务的运行时间片参考。该定时器使用了Arduino板上单片机的硬件定时器,并利用定时器的中断服务来运行任务调度模块。

  (2)“任务调度模块”实现了对任务的管理和执行。任务调度模块会在定时器产生的时间间隔内依次调用系统内的任务模块,这些任务模块实现了对输入的协议数据的解析,数据处理,模拟设备模型的执行,以及生成返回给服务器的数据。这些任务模块包括数据解析任务模块、协议处理任务模块、模拟设备任务模块和数据发送任务模块。其中模拟设备任务模块是为了模拟节点的功能,例如和执行控制、状态更新等。

  (3)“数据通讯模块”实现了基于串口的与通讯设备的数据交换机制,针对不同的通讯设备,该模块的实现不同,主要封装了针对不同设备的通讯细节;“设备实体/状态模拟模块”实现了节点功能和状态的仿真,通常情况下是存储与被模拟节点相关的数据。

  2.2 工作原理

  该框架的工作原理如图3所示。根据程序流程分为Setup(设置)和Loop(运行)两个部分,前者主要完成调度器的初始化,后者主要负责执行任务和与通讯设备通讯。

  首先,系统上电后执行Setup()部分,该部分主要是初始化任务调度器,并将需要运行的任务增加到任务列表中,并在最后启动任务调度器的执行,完成初始化的工作。然后系统进入运行状态,开始循环调用loop()部分。在这部分主要工作是(1)根据调度结果执行任务调度器中的任务,主要包括获取接收缓冲区的数据,根据具体的应用协议进行解析,然后根据解析的结果执行对应的操作,之后运行被模拟设备的控制功能,并更新被模拟设备的状态。最后根据应用协议的要求生成相应的数据并放入发送缓冲区。(2)处理串口应用层数据的收发。其主要操作是判断是否有串口数据需要读取,如有数据则根据具体设备的传输层通讯协议进行解析和接收,将收到的合法数据存入接收缓冲区内。然后判断发送缓冲区是否有数据需要发送,如有则将其按照传输协议写入串口中。除了loop()主线程外,还有定时器周期触发的中断线程,在该线程中主要是进行任务的调度[5]。

  3 系统实现(Implementation)

  3.1 Arduino的编程框架

  Arduino的编程是采用一种类似Java和C的语言,本质是C++的语言,因此采用C程序设计的风格对上一节描述的框架进行了实现。

  将整个框架功能分散在多个C和h文件中实现,其中TaskManager、Main等有具体的代码实现,并提供Jobs和Communication的头文件,供用户在进行具体测试应用时进行开发。

  3.2 接收/发送缓冲区的数据结构

  考虑到存在变长数据帧的情况,将通讯数据缓冲区长度设置为1024个字节,同时只存放一帧数据(即最新),并设置一个Ready变量解决读写的同步问题。即对于输入缓冲区通讯模块在写完完整一帧数据后将ready置1,对于输出缓冲区则只有在ready为1时才读取并发送。

  4 应用:智能靶网控制系统软件测试(Application:Testing in target network control software system)

  4.1 智能靶网控制系统结构及靶网节点功能

  智能靶网控制系统是将智能靶机组合成网络,结合控制软件和触控面板,用于部队射击和战术训练的一整套系统。其核心是智能靶机组成的物联网络,其结构如图5所示。

  智能靶与服务器通过Zigbee网络进行数据交换,操作人员可通过服务器控制靶的动作(举靶、倒靶),对靶进行编组,并进行成组控制,可控制多个靶和靶组按照指定的顺序进行动作等。智能靶同时可以通过Zigbee网络上传靶机状态数据,并且在射击时主动上报射击成绩等。由于靶機数量多、功能多,靶网数据流量较大(随着节点数目增多而增大),Zigbee通讯不稳定等问题会导致服务器端软件开发简单但调试工作量巨大。另外智能靶机成本高,体积重量大,移动困难,可用于调试的靶机数量不能满足开发需要,造成后期开发人力成本居高不下。

  4.2 智能靶网节点模拟方案

  为了解决上述问题,基于Arduino和物联网节点模拟框架,开发了智能靶网节点模拟单元,以一块Arduino板代替了图5中的“智能靶”硬件设备,降低了测试成本,提高了开发效率。

  在图6中,Arduino板子上外接了一块XBee/Zigbee通讯模块用于和服务器通讯,并基于Arduino的I/O口模拟了报靶、故障注入、靶机编码等触发功能和立倒状态指示灯等显示功能。其中状态指示灯利用的Arduino的板载LED代替,这样几乎就没有什么外接设备。

  4.3 具体模块实现

  (1)数据通讯模块

  数据通讯模块实现有两种方案,一种是基于XBee提供的Arduino开发库开发[9]。使用该库使得Arduino与Zigbee设备的通讯极大简化,并使得通讯更为可靠。另外一种是使用XBee提供的透传模式[10]。在透传模式下只需要根据应用协议检测数据的帧头并按长度接收即可。不过透传模式无法对XBee设备进行更多的控制,牺牲了灵活性。本系统中使用XBee的透传模式,根据应用协议,服务器发送的数据是以0x55开头,固定长度的数据包,根据该特点就可以实现数据通讯模块的接收。发送数据由于是已经按照应用协议编码之后的数据,因此可以直接发送。

  (2)协议解析与处理

  根据靶网通讯协议,节点与服务器之间的通讯主要包括以下过程,如图8所示。其中每一行代表一条通讯协议。其中协议1—4需要按照流程顺序执行,而协议6—8则根据需要随机发起,协议5则为周期性发送的状态数据。协议解析与处理模块主要工作流程为:a.解析协议,判断其为协议1—8中的哪种;b.执行对应协议的命令动作;c.对于NETINIT和SETID协议,生成应答数据帧并存入发送缓冲区。

  推荐阅读:《软件工程师》(原名《软件工程师》)创刊于1998年,邮发代码:8-198,由东北大学、计算机软件国家工程研究中心主办,国家级,月刊,大16开本,全国发行。

转载请注明来自:http://www.qikan2017.com/lunwen/dzi/14278.html

相关论文阅读

论文发表技巧

期刊论文问答区

电子信息优质期刊

最新期刊更新

精品推荐