[ 高级搜索 ]
·电能优化万里行 ·赛尔专业买家团重装出击2015上海EP展 ·第六届工业设计院及工业用户技术交流 ·工信部发布关于2015年工业转型升级重 [更多...]
 当前位置:自控频道首页 >> 论文
工业物联网通讯框架 ServerSuperIO 的实践应用
2017-03-29 11:48:50  作者:王强  来源:头条号/科技百分百  
  •   不知从何时起,物联网、大数据、云计算……等一大批概念词汇流行起来,占领着各大 IT 网站。不能把这三个语汇独立来看,而是现实系统体系化建设的三个方面。物联网以智能传感器为基础的网络化建设,对大量传感器的实时感知和控制必然会产生大量的数据,而对特定行业的这些数据集合进行数学模型分析必然会产生具有现实的价值。
  概述

  不知从何时起,物联网、大数据、云计算……等一大批概念词汇流行起来,占领着各大 IT 网站。不能把这三个语汇独立来看,而是现实系统体系化建设的三个方面。物联网以智能传感器为基础的网络化建设,对大量传感器的实时感知和控制必然会产生大量的数据,而对特定行业的这些数据集合进行数学模型分析必然会产生具有现实的价值。

工业物联网通讯框架 ServerSuperIO 的实践应用

  一个体系三个方面

  大公司都在争夺制高点,大数据、云服务、各种标准……,做这些事情都很有意义。在大家都去占领大脑的时候,难道脚就不重要了嘛?显然不是,应该是同等重要。不少公司对于基础物联网建设也是很头痛的一件事,这是系统体系化建设的根基,特别是工业领域。所以针对现阶段物联网建设中高可用、高扩展性通讯框架的应用有很大现实意义和发展空间。

  认清物联网建设困难的前提是对现实世界的认知,有些特定行业都根本不具备物联的基础条件,也更谈不上物联网建设,相反也证明物联网的发展会有广阔的市场空间;也有很多具备物联网建设的基础,但是条件比较落后,底子比较薄,现实面临四个多样性的困难:设备多样性、协议多样性、通讯机制多样性、数据多样性。这就是我们面临的问题,但是面对结构化的多样性问题,要用结构化的手段或框架来解决,这是各方面得到保障的前提。

工业物联网通讯框架 ServerSuperIO 的实践应用

  四个多样性

  大公司都在搞云平台、协议标准……,当然其有资本和实力,对于他们来说,养这么多人,反而成本是最低的。他们奉行一流企业定标准,用这种思维模式去整合资源,竞争比的就是占领资源的多少。我们认真考虑一下,对于传统企业来讲,生存本来就很困难,他们有能力在很短的时间内完全统一更新换代嘛?!参加上海工业博览会,也进行了市场调查,这是不现实的。我们再认真考虑一下,用框架性的东西去解决设备多样性、协议多样性、通讯机制多样性、数据多样性的问题,在物联网和集成系统的建设中是否也是整合资源的一种手段?先解决企业互联监控的问题,再解决企业标准化的问题,这样是否也是一种思维模式?是的,我们就先这样干!

工业物联网通讯框架 ServerSuperIO 的实践应用

  不同方式的整合资源

  曾接触过上海一家公司,有专人负责网关层的数据采集,有专人负责服务(云)端的对接,不太稳定、经常出现问题。解决细节问题,不能用细节的思维方式去解决,而是要有更广阔的思维、结构化思路才能够彻底的、更好的解决问题。网关层、服务端是否可以使用同一套框架?并且框架之间是否可以无缝对接?如果可以实现,应用同一套框架,开发效率会提高,用人成本和时间成本会降低。好的组织结构、好的框架要解决效率和成本的问题,否则没有任何价值。

工业物联网通讯框架 ServerSuperIO 的实践应用

  降本增效

  ServerSuperIO就是以这样的一种思维方式演变而来,ServerSuperIO不仅仅是通讯框架,否则它和任何其他的通讯框架没有任何区别,也不具备现实意义。ServerSuperIO是一个物联网框架,首先是以设备(传感器)为核心构建的框架,设备(传感器)的协议无关性,可以随意挂载设备驱动在框架下运行。所以ServerSuperIO本质上协调设备驱动(协议)、IO通道(COM和NET)、运行机制(模式)之间的协调机制,使之无缝结合、运行。框架具备如下特点:

  轻型高性能通信框架,适用多种应用场:轮询模式、自控模式、并发模式和单例模式。

  支持协议驱动器,可以按规范写标准协议和自定义协议。

  支持发送数据缓存器,支持命令缓存重发和按优先级别发送。

  支持协议过滤器,按规则筛选数据,并且可以承继接口,自定义过滤方式。

  支持接收数据缓存器,可以缓存不符合过滤器的数据,和下次接收数据进行拼接。

  支持按设备命令优先级别进行调度设备,保证有高级别命令的驱动及时发送。

  支持一个设备驱动,同时支持串口和网络两种通讯方式,可以监视IO通道数据。

  支持一个设备驱动,在网络通讯时可以支持TCP Server和TCP Client两种工作模式。

  支持多设备共享同一IO通道进行通讯。

  支持定时清理超时的网络IO通道。

  支持显示视图接口,满足不同人机对话的需求。

  支持服务组件接口,例如:4-20mA输出、LED大屏显示、短信服务、以及多功能网关服务。

  设备驱动与设备驱动,设备驱动与服务器(云端)可以实时双向交互,上传数据和指令下发。

  支持OPC Server服务。

  支持创建多服务实例,完成不同业务的拆分。

  支持跨平台部署,可以运行在Linux和Windows系统。

  通讯机制

  有些网友认为通讯很简单,打开连接之后发送、接收数据就可以了。但是把复杂的情况考虑全面,并非易事。对于实时数据采集框架,通讯部分始终是软件的核心,要求高实时性、高稳定性、高扩展性。软件框架决定了软件运行的稳定性,以及以后的扩展性,所以需要对通讯机制、控制方式进行良好的设计。

  所以决定了软件框架在通讯方面有两种应用方式:主动请求和被动接收。

  主动请求方式又可以称之为呼叫应答方式或主从方式。也就是说,主动权在软件框架端,只有软件框架主动发送请求命令,从机(硬件设备、传感器等)接收到命令后并且检验数据的完整性,以及确定是否发给自己的命令,校验成功后,返回指定的数据信息,完成一次完整的链路通讯过程。呼叫应答通讯方式,如图5所示:

工业物联网通讯框架 ServerSuperIO 的实践应用

  呼叫应答通讯方式

  被动接收方式是软件框架实时监测IO通道,只要有数据信息就会提取出来,进行数据校验,检验成功后,分析、处理、保存数据信息。例如设备、传感器等定时发送状态数据。这种通讯方式,如下图:

工业物联网通讯框架 ServerSuperIO 的实践应用

  被动接收方式

  在复杂的应用场景中,这两种通讯方式都有可能存在,此类情况一般是采用以太网链路进行通讯。针对只有外接串口的设备可以通过以太网转换模块来接入。

  轮询通讯机制

  这是框架最早的运行模式,串口和网络通讯时都可以使用这种控制模式。当有多个设备 连接到通讯平台时,通讯平台会轮询调度设备进行通讯任务。某一时刻只能有一个设备发送请求命令、等待接收返回数据,这个设备完成发送、接收(如果遇到超时 情况,则自动返回)后,下一个设备才进行通讯任务,依次轮询设备。

  应用场景是这样的,服务端与设备进行通讯遵循呼叫应答的方式,也就是IO可用的情况下,服务端先发起通讯命令请求,设备根据命令信息,检验通过后返回数据给服务端。这种通讯模式很好理解,每个设备的通讯都遵循排队的原则。但是如果某个设备的命令需要及时发送,怎么办?ServerSuperIO框架是支持设备优先级别调度的,例如:对某个设备要进行实时的检测,需要连续发送命令,那么就需要对设备进行高级别设置,发送请求数据命令。

  通讯结构如下图:

工业物联网通讯框架 ServerSuperIO 的实践应用

  并发通讯机制

  网络通讯的情况下,轮询模式显然效率比较低,那么可以采用并发模式。并发通讯模式是集中发送给所有设备请求指令,框架是采用循环同步方式发送请求命令给每个IO通道对应的设备,当然也可以采用并行异步方式集中发送请求命令。硬件设备接收到指令后进行校验,校验成功后返回对应指令的数据,通讯平台异步监听到数据信息后,进行接收操作,然后再进行数据的分发、处理等。

  那么这里就涉及到IO通道接收到的数据是异步接收的,如何才能和设备驱动匹配上(把数据分发到设备驱动上),这是能过DeviceCode和DeviceIP两种方式来实现的。DeviceCode可以是设备地址或是设备编码,DeviceIP是预先设置好的参数,要求终端设备的IP地址是固定的。

  通讯结构如下图:

工业物联网通讯框架 ServerSuperIO 的实践应用

  自控通讯机制

  只有网络通讯时可以使用这种控制模式。自控通讯模式与并发通讯模式类似,区别在于发送指令操作交给设备驱动本身进行控制,或者说交给二次开发者,二次开发者可以通过时钟定时用事件驱动的方式发送指令数据。硬件设 备接收到指令后进行校验,校验成功后返回对应指令的数据,通讯平台异步监听到数据信息后,进行接收操作,然后再进行数据的分发、处理等。

  自控通讯模式可以为二次开发者提供精确的定时请求实时数据机制,使通讯机制更灵活、自主,如果多个设备驱动共享使用同一个IO通道的话,时间控制会有偏差。

  同样涉及到数据的分发,和并发模式一样。

  通讯结构如下图:

工业物联网通讯框架 ServerSuperIO 的实践应用

  单例通讯机制

  只有网络通讯时可以使用这种控制模式。在一个服务实例内只能有一个设备驱动,相当于一个设备驱动对应着N多个硬件设备终端。更适合通讯的数据协议有固定的标准,以命令关键字处理不同的数据。适用于高并发的硬件终端设备主动上传数据,服务器端根据数据信息进行处理和返回相应的数据。 通讯结构如下图:

工业物联网通讯框架 ServerSuperIO 的实践应用

  “传感器”驱动的插件化应用

  插件技术是在软件的设计和开发过程中,将整个应用程序划分为宿主程序和插件对象两部分,宿主程序能够调用插件对象,插件对象能够在宿主程序上实现自己的逻辑,而两者的交互基于一种公共的通信契约。宿主程序可以独立于插件对象存在,即使没有任何插件对象,宿主程序的运行也不受影响,因此,我们可以在避免改变宿主程序的情况下通过增减插件或修改插件的方式增加或调整功能。由于使用了插件技术的宿主程序具备了一个框架的本质特征,因此可以将它看作是一种插件式框架。插件式框架能够有效地降低功能对象与对象管理逻辑之间的耦合程度,并将耦合置于最优的程度。

  一个框架使用插件机制的原因主要基于以下3点:

  可以在无需对程序进行重新编译和发布的条件下扩展程序的功能。

  可以在不需要程序源代码的环境下为程序增加新的功能。

  在一个程序的业务逻辑不断发生改变、新的规则频频加入时能够灵活适应。

  实现插件机制一般有3种技术:基于动态连接库DLL的插件、基于组件对象模型COM的插件、以及基于.NET反射技术的插件。ServerSuperIO是使用.NET反射技术实现的插件机制。

  插件式框架的宿主程序启动后,它首先会加载相应的配置文件(例如:设备驱动配置文件等),找到相应的插件程序集,这些程序集以DLL文件格式存在,框架的宿主程序会找到指定的插件类型,由插件引擎依据插件类型(例如:IRunDevice)生成对象实例,由框架的宿主程序的管理器对插件实例进行管理和调度。

  一个插件程序集可能包括多个插件类型,那么框架宿主程序是如何识别这些类型是否为要加载的插件呢?每个插件对象都有一个身份标识-接口,这个标识在框架设计中被称为“通讯契约”。接口可以被看作是一种定义了必要的方法、属性和事件的集合,因此宿主程序就可以通过这种契约来生成具体的实例对象,并对其他组件或接口公开可操作的对象。

  插件式框架作为一个高聚合低耦合的平台,它的功能定义与功能实现之间是分离的。只要符合插件规范的二次开发组件都可以挂载到框架平台中,而它并不关心这些组件的具体功能。当然,框架平台提供了一些必要的信息、机制来保证这些组件能够正常实现二次开发的功能。

  在具有多个逻辑层次的结构设计中,各层之间的通信大多通过接口来实现,接口不会轻易改变,如果一个层的功能发生变化,不会影响其他层;只要正常实现了接口的组件功能,那么程序的运行就没有问题。这种做法使得各层之间的相互影响降低到最低,总之,接口在多业务层级中能够更好的解耦,所以每个设备驱动都可以有自己的业务逻辑。

  可挂载的设备驱动信息在配置文件中进行标注,当挂载新的设备驱动的时候,如增加设备,就会从这个配置组中加载信息,以便操作人员进行选择。设备驱动配置信息定义如下图:

工业物联网通讯框架 ServerSuperIO 的实践应用

  当调用增加设备驱动窗体的时候会从配置文件读取程序集信息,以完成增加设备驱动,并且在ServerSuperIO框架下运行。

  一套驱动同时支持多种IO链路

  作为物联网通讯框架平台软件,IO是核心部分之一,涉及到与硬件设备、软件之间的信息数据交互,主要包括两部分:IO实例与IO管理器。IO实例负责直接对串口和网络进行操作;IO管理器负责对IO实例进行管理。

  框架平台一大特点就是开发一套设备驱动(插件)同时支持串口和网络两种通讯方式,而两种通讯方式的切换只需要改动配制文件。

  不同的设备类型和协议、不同的通讯方式,用堆代码的方式进行开发,根本无法适应不同场景的应用,提高了代码的维护成本,以及修改代码可能造成潜在的BUG,是让人很头疼的一件事。

  在开始设计框架平台的时候,一个核心的思想就是把变的东西要设计灵活,把不变的东西设计稳定。对于设备的协议就是变的东西,对于IO部分就是相对不变的东西,那就需要对串口IO和网络IO进行整合。不仅在代码层面要运行稳定;在逻辑层面,不管是串口IO还是网络IO在框架内部是统一的接口,所有对IO的操作都会通过这个统一的接口来完成。

  示意如下图:

工业物联网通讯框架 ServerSuperIO 的实践应用

[1] [2]
本文引用地址:
关于我们赛尔传媒联系我们网站地图
Copyright © 2005-2017 shejis.com.All Rights Reserved 京ICP备14009797号-5 京公网安备: 11010802022333