本发明涉及电子通信技术领域,特别涉及一种通用物联网软网关的设计方法。
背景技术:
网关是物联网和工控系统的核心组件。网关起的是承上启下的作用。上即上位机,电脑/触屏监控系统、mes这些;下即下位机,包括plc、传感器、嵌入式芯片等。现有软网关多为国外专有技术,面对物联网设备及相关通讯协议的迅速增多,国内目前仍缺乏自主知识产权的软网关产品。软网关设计需要解决如下几个关键问题:
不同类型的下位机设备,其采用的地址规约方式各异。如西门子s7系列plc包含db块、io输入区等;modbus设备包含多种功能码,分别读写保持寄存器和逻辑寄存器等;abcontrollogix系列plc的地址则采用标签命名法则。
各类下位机设备遵循的通讯协议不同。目前主流的通讯协议包括modbus、profibus、cclink、devicenet等。不同协议的读写方式差别很大。
通讯的效率问题。各plc及下位机设备厂商,其自有网关产品对其自有设备均有针对性的读写优化措施,但多数并不公开;而如果通用网关产品不对读写进行优化,其通讯效率是极低的。
技术实现要素:
针对现有技术中存在的上述技术问题,本发明提供一种通用物联网软网关的设计方法,规约各类物联网设备地址、集成各类通讯协议,优化了对物联网设备的读写方法。
为解决上述技术问题,本发明的实施例采用的技术方案是:
一种通用物联网软网关的设计方法,其包括:
步骤1,制定设备通讯地址规约方式,以统一地址编码方式,获得读写地址参数;
步骤2,设计读写物联网设备的接口,用于根据读写地址参数对设备地址排序,批量读写不同类型的数据;
步骤3,设计调度模块,批量轮询物联网设备,按固定周期对设备地址执行扫描,比对各地址数据与上一周期数值的异同,获取当前数据发生改变的地址及相关信息,即可批量向上位机推送。
优选的,步骤1中根据设备地址的共性特征,将设备地址抽象为区域area、块block、起始地址start、位号bit四个逐级嵌套的层级。
优选的,区域area,可抽象为不同的地址空间,对应modbus为slave地址,对应s7plc为功能区;
块block,对应modbus为功能码,对应s7plc为db块号;
起始地址start,即区块内的地址偏移量;
位号bit,即对应地址内的位偏移。
优选的,步骤2中按照设备地址层级以及起始地址、位号的次序,对设备地址排序。
优选的,步骤2中接口包含读32位整数、读16位整数、读浮点数、读逻辑位、读字符串、写32位整数、写16位整数、写浮点数、写逻辑位和写字符串功能,且均带有一个抽象的地址参数。
优选的,步骤3中该调度模块检测物联网设备的连接状态,如当前已连接即可调度,如断开转入异常处理,并对于错误的地址、错误的返回数据可提示并记录日志。
优选的,所述读写物联网设备的接口中,在协议数据单元pdu范围内,按地址顺序批量读/写数据块,实现对设备数据的批量读写。
优选的,特定义接口ibatch,包含readmultiple(针对批量读设备地址),writemultiple(针对批量写设备地址)两个方法,参数均为设备地址deviceaddress数组。可根据传来的地址数组排序,归结到尽可能小的pdu块以内,批量读入/写入。
优选的,对于批量读入,因设备返回的数据包将包含连续地址空间的所有数据,需要再根据deviceaddress数组进行拆包,提取出对应于所需地址的数据。
优选的,调度模块为定时器。
有益效果
本发明解决了当前工业控制及物联网领域缺少通用的通讯方法的问题。通过设计通用的通讯地址规约、通用的批量轮询物联网设备的调度模块、通用的读写物联网设备的接口、通用的读写优化模块,规约了各类物联网设备地址、集成了各类通讯协议。
附图说明
图1是本发明的通用物联网软网关的设计方法流程图。
具体实施方式
本发明提供一种通用物联网软网关的设计方法,其包括:
步骤1,制定设备通讯地址规约方式,以统一地址编码方式,获得读写地址参数。为了实现通用的物联网设备的读写,需要对设备的地址进行规约。定义一个通用的地址规约结构deviceaddress。该结构的设计原理为:物联网设备的地址结构,一般包含至多不超过四个逐级嵌套的层级:即区域area,可抽象为不同的地址空间,对应modbus为slave地址,对应s7plc为功能区(如i,o,m,db区);area包含区块block,对应modbus为功能码,对应s7plc为db块号;起始地址start,即区块内的地址偏移量;位号bit,即对应地址内的位偏移。规约之后可实现的功能包括:一种统一的地址编码方式,可作为通用化读写地址的参数;可对地址进行排序,以此为基础可实现通用的批量读写优化手段;可统一对地址进行编码和解码,只要在设备地址中寻找与deviceaddress结构对应的映射关系,在此基础上设计通用的地址编码/解码组件。
步骤2,设计读写物联网设备的接口,用于根据读写地址参数对设备地址排序,批量读写不同类型的数据。为了设计通用的软网关,首先抽取各类物联网、plc设备的共性。即:可连接性,可读写性。可连接性即设备之间必须通过总线、网络联接,联接可抽象为一个iconnect接口,包含connect方法(负责设备的连接),onerro方法(在设备断开后触发,可自定义处理方式),dispose方法(用于断开连接,释放资源),isclosed属性(指示当前设备是否断开连接),timeout属性(定义连接超时),server属性(指定连接对象的地址,如ip地址,服务器名等)。这一接口代表了物联网设备的共性,可实现的功能包括:调用connect方法,根据server属性连接设备;根据timeout属性判断是否连接超时;连接断开或连接出错后转入onerror异常处理;根据isclosed判断连接是否断开,断开可调用connect方法重新连接;心跳检测;强制断开连接并释放资源(调用dispose方法)。可读写性即设备均具备可读、可写的特性。连接成功之后,即可对设备的地址进行读写操作。根据地址包含数据类型的不同,设计接口抽象为ireadwrite接口,包含readint32(读32位整数),readint16(读16位整数),readfloat(读浮点数),readbool(读逻辑位),readstring(读字符串),writeint32(写32位整数),writeint16(写16位整数),writefloat(写浮点数),writebool(写逻辑位),writestring(写字符串)。所有上述接口方法,均包含一个抽象的地址参数deviceaddress。该接口实现的功能即根据设备的地址进行读写。
步骤3,设计调度模块,批量轮询物联网设备,按固定周期对设备地址执行扫描,比对各地址数据与上一周期数值的异同,获取当前数据发生改变的地址及相关信息,即可批量向上位机推送。要实现对物联网设备的读写优化,考虑到物联网设备普遍的读写瓶颈在于通信往返的时间,如对串口通讯而言,性能瓶颈为串口的波特率;对工业以太网通讯而言,性能瓶颈在于设备的读写周期。因此要实现通用的优化手段,应着眼于最大限度减少通讯往返次数,因此必须实现批量读、写功能。但必须考虑地址分布可能是不连续的,地址空间是离散的。而且一次读写的最大单元pdu,各个设备均不相同。为实现批量读写,就需要按照地址规约,对地址进行排序,在pdu范围内包含最大限度的地址数量,保证每次与设备通讯可读入/写入尽可能多的地址。特定义接口ibatch,包含readmultiple(针对批量读设备地址),writemultiple(针对批量写设备地址)两个方法,参数均为设备地址deviceaddress数组。可根据传来的地址数组排序,归结到尽可能小的pdu块以内,批量读入/写入。对于读入,因设备返回的数据包将包含连续地址空间的所有数据,需要再根据deviceaddress数组进行拆包,提取出对应于所需地址的数据。目前绝大部分物联网设备采用请求-响应模式,而非订阅-发布模式,为通用性考虑,对物联网设备的读写采用轮询方式。调度模块按照所需读写的地址集,按照设定的轮询周期,定时请求数据,执行批量读入;根据读入结果,比对上一个轮询周期各地址的数据,即可获取当前数据已改变的地址、数据、时间戳等信息,便于批量向上位机推送;该模块能够检测物联网设备的连接状态,如当前已连接即可调度,如断开转入异常处理。对于错误的地址、错误的返回数据可提示并记录日志。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。