面向软件测试的物联网节点模拟单元开发
来源:核心期刊咨询网时间: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
相关论文阅读
- 2022-09-28创新要素对涉农科技型企业发展质量的影响
- 2022-09-19“一带一路”建设框架下中非经贸合作的机遇与挑战
- 2022-07-14多媒体计算机技术在广播电视工程中的应用
- 2022-07-12高校教务管理信息化的优势及发展趋势
- 2022-07-04探讨光伏发电技术中分布式控制的有效应用
- 2022-07-02计算机通信网络安全维护措施研究
- 2022-06-30在线实训教学模式在电子商务教学中的应用研究
- 2022-06-25低代码数据接口开发架构的研究与实现
- 2022-06-24区块链技术对审计模式优化的探索
- 2022-05-28云网安全防护运维管控的研究
期刊论文问答区
- 2025-05-13教师职称评审级别及所需学术成果材料
- 2025-04-24英文期刊发表论文几个版面起发
- 2025-01-21论文顺利通过审稿的8个操作
- 2025-01-11管理学类30本期刊(国自然基金委员会认定)
- 2025-01-02电刺激治疗相关文章选题推荐
- 2024-12-17植物学比较热门的论文选题
- 2024-12-03人事管理方面文章选题推荐和发表期刊
- 2024-11-18金融学专业的论文选题方向推荐
- 2024-11-01教育核心期刊有哪些
- 2024-07-12学术论文初审是谁在审?审什么?审多久?
电子信息优质期刊
- 1国家级《计算机与网络》
- 2国家级《解放军理论学习》
- 3省级《工程技术研究》
- 4核心级《无线电通信技术》
- 5省级《常州工学院学报》
- 6省级《计算力学学报》
- 7核心级《电子技术与软件工程》
- 8省级《天津大学学报:自然科学与工程技术版》
- 1国家级《计算机与网络》
- 2国家级《解放军理论学习》
- 3国家级《机电元件》
- 4国家级《中国电子科学研究院学报》
- 5国家级《电子科学学刊:英文版》
- 6国家级《材料科学技术学报:英文版》
- 7国家级《电光与控制 》
- 8国家级《测绘学报》
- 1省级《工程技术研究》
- 2省级《常州工学院学报》
- 3省级《计算力学学报》
- 4省级《天津大学学报:自然科学与工程技术版》
- 5省级《福建电脑》
- 6省级《计算机技术与发展》
- 7省级《深圳大学学报:理工版》
- 8省级《测绘科学与工程》
- 1核心级《无线电通信技术》
- 2核心级《电子技术与软件工程》
- 3核心级《润滑与密封》
- 4核心级《计算机应用与软件》
- 5核心级《电讯技术》
- 6核心级《固体电子学研究与进展》
- 7核心级《自动化学报》
- 8核心级《内蒙古大学学报:自然科学版》
最新期刊更新
- 《中国政府采购》
- 《中国政府采购》
- 《农业图书情报学刊》
- 《农业技术经济》
- 《水文地质工程地质》
- 《房地产世界》
- 《中央民族大学学报:哲》
- 《广州化学》
- 《物理学报》
- 《东方宝宝》
- 《新能源进展》
- 《热带农业科学》
- 《建筑经济》
- 《中国学校卫生》
精品推荐
- 12022-09-28创新要素对涉农科技型企业发展质量的影响
- 22022-09-19“一带一路”建设框架下中非经贸合作的机遇与挑战
- 32022-07-14多媒体计算机技术在广播电视工程中的应用
- 42022-07-12高校教务管理信息化的优势及发展趋势
- 52022-07-04探讨光伏发电技术中分布式控制的有效应用
- 62022-07-02计算机通信网络安全维护措施研究
- 72022-06-30在线实训教学模式在电子商务教学中的应用研究
- 82022-06-25低代码数据接口开发架构的研究与实现
- 12018-05-06机器人研究方向有哪些核心期刊比较好投
- 22017-09-07国内电气工程方面的普刊有哪些?
- 32018-03-02电气审稿较快的期刊
- 42022-02-26人工智能在财会领域的运用与应对策略
- 52021-11-17港口码头系统智能化应用的现状与发展
- 62022-02-26电气工程及其自动化技术在电力系统中的应用分析
- 72022-03-01数据管理视角下的内控信息化建设
- 82022-06-30在线实训教学模式在电子商务教学中的应用研究
- 12025-05-13教师职称评审级别及所需学术成果材料
- 22025-05-08人力资源专业论文发ssci
- 32025-05-08评职称著作合著快还是独著快
- 42025-04-24英文期刊发表论文几个版面起发
- 52025-04-24声音与振动杂志JOURNAL OF SOUND AND VIBRATION期刊收稿方向
- 62025-02-12“互联网+”时代的农产品营销与农业经济发展
- 72025-02-12羊肉消费市场调研
- 82025-02-12文创产品营销策略
- 12021-05-24刊号字母G、G0、G1、G2、G3、G4、G8是什么意思
- 22021-05-06论文引用率不能超过多少
- 32018-09-11语法翻译法的运用以及优缺点分析
- 42020-03-08发表在期刊上的论文一般多少字
- 52020-09-21疾控中心工作怎么评职称
- 62020-01-03新北大核心什么时候更新,几年更新一次
- 72020-03-08通讯作者和二作哪个含金量比较高
- 82021-02-23发表的期刊论文见刊的时候可以在知网查到吗