论文部分内容阅读
随着互联网和通信技术的发展,将传统电子设备融入互联网成为互联网的另一个扩展方向,即物联网。物联网的发展离不开可靠性高,语义简明,扩展性强的物联网协议,具体来说在物联网所面临的物体的识别,物体的连接和物体的数据交换三个主要问题中均面临着协议规范。物体的识别和物体的链接均依赖于底层硬件支持,如RFID、NFC物体识别技术和LPWAN和3GPP连接技术。在物联网情形下,传感器、嵌入式设备、智能控制系统和远程服务器都需要紧密地联系在一起,形成一个物与物、物与人通信的智能网络。在这个网络中各个数据源差异性非常大,各种设备之间的网络结构也多种多样,因此设计一种适用于物联网场景的通信协议需要考虑到如下几个问题:首先,需要选择一种开放性高、应用广泛的标准协议作为协议栈实现参考。其次,针对复杂的物联网应用场景,需要协议兼容各类物理链路和物理设备的可扩展。再次,为提高开发者效率,能灵活提供远程、进场通信和透明传输的各种API,特别在物联网场景下远程和近场数据转换应具有透明传输的能力。针对标准协议选择问题,文章分析了几大流行的物联网协议的优缺点,最终选择了基于公开的ModBus协议来实现协议栈。ModBus协议在工业自动化领域的广泛应用和协议本身具备的远程和现场网络的连接能力,并且由于工业以太网与物联网之间存在极大的相似性,在普世的物联网应用场景中也能很好扩展。因此,参考ModBus协议标准,设计一种运用在物联网应用层的Modbus协议栈,以适应如今分层的物联网架构。该协议栈能同时提供远程TCP连接,本地串行链路连接,TCP与设备间数据透传等功能。针对兼容性和可扩展性的问题,文章基于低耦合的思想提出三层协议栈架构。应用层和设备相关层各自维护操作结构体及其操作函数,并使用中间的核心层来进行耦合,这样使得应用层屏蔽了设备相关层的差异性,使得设备相关层则可以按需求扩展或删除对某种设备的支持,具有很好的兼容性和可扩展性。针对远程、近场和透传通过能力支持的问题,文章基于所提出的三层协议栈架构,抽象了各个层的接口函数。设备相关层针对不同的物理设备,实现串行链路上的ModBus-RTU通信接口和TCP/IP协议下ModBus-TCP通信接口,前者提供了进场通信能力,后者提供了远程通信能力。在进行应用层的API设计,应用层基于四个基本通信函数来实现12种功能码,体现出协议栈面向功能的服务架构思想。在透传能力支持方面,也是基于应用层四个基本通信函数实现了ModBus-RTU协议向ModBus-TCP协议相互转换的API接口。在协议栈应用方面,文章设计了一种简单的智能家居系统来对本课题所实现的协议栈加以应用,从而验证协议栈性能。所设计的智能家居系统由家庭网关和传感控制子节点两部分。家庭网关基于AM335X处理器+Linux操作系统,实现ModBus-TCP远程连接和ModBus-RTU本地控制及两协议数据相互转换的功能。传感控制子节点作为ModBus-RTU协议子设备,它基于STM32单片机实现室内环境监测和家电控制功能。通过系统测试可以看出,本文针对物联网应用设计了一种与底层链路无关的ModBus协议的协议栈。实验结果表明该协议栈在功能上符合ModBus标准协议的规范,性能上每个指令的通信延时小于540us,并且帧出错了几乎为0,保证了协议栈的可靠性。此外协议栈的设计基于分层抽象思想,面向应用层的接口是统一的,可以很好的屏蔽物理层的多样性,在扩展性和可移植方面有一定的优势。此外本协议栈可用于嵌入式网关中用于RTU和TCP协议的转换,也可单独用作主站或者从站,基于本协议栈设计的接口可很好的面向各种物联网应用场景及与某些物联网开放平台互联。