锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

吐血推荐!那些书里不会教你的工业物联网开发经验

时间:2023-08-29 02:07:00 无线传感器永久电源

d966c753f83a127e6a2a31dd1e76cff8.jpeg

作者 | 刘洪峰

编辑 | 屠敏

微信公众号ID | csdn_iot

自去年年初以来,国内外一些大公司推出了微软等物联网平台产品Azure平台的IoT Hub、阿里云平台物联网开发套件,百度云平台物联网接入IoT Hub、物解析IoT Parser和物管理IoT Device但从平台特点和技术角度来看,上述公司的产品,它相对适用于一些企业项目开发和智能硬件的云连接和云存储。事实上,它不适用于控制实时性高、接入点多、业务逻辑复杂的行业。

工业自动化领域相对封闭,发展缓慢。多年来,涉及通信的技术大多采用现场工业总线等技术。作者发表了一篇文章《谈工业物联网项目的架构设计与实施》,不仅介绍了工业物联网的概念和特点,还介绍了物联网通用中间件平台的架构设计。如今,随着国内外大公司的介入,物联网越来越受欢迎。以下作者将结合工业控制领域的特点和当前物联网领域的一些新技术和趋势,分享工业物联网和民用物联网的特点和异同,解释工业物联网项目从端到云的快速发展道路。

1

前言

1.1

民用物联网VS工业物联网

最近诞生的自行车共享在短短一年多的时间里遍布中国一二线城市,迅速成为民用物联网领域最大的现象应用。小米的智能家居套件以低廉的价格和相对实用的功能赢得了许多智能家居爱好者的追捧,也是典型的民用物联网应用。

对于大多数人来说,工业物联网相对陌生,往往是面向行业的应用,比如我们目前做的养殖物联网监控、污水处理物联网监控、垃圾处理物联网监控。

民用物联网和工业物联网有什么区别?

从技术角度来看,民用物联网与工业物联网没有本质区别,具有云、端、传感器数据采集、设备控制、通信传输等功能。只有工业物联网诞生于工业控制自动化网络,后者对可靠性和实时性有很高的要求,有各种工业级的现场总线,如Profibus,Modbus RTU/TCP,CANopen等等,工业以太网在民用以太网的基础上推出。当时没有云的概念。考虑到安全,网络是私有的,很少与因特网互联。从某种意义上说,没有云技术的快速发展,民用物联网上就不会有各种非凡的应用。当然,由于云技术的成熟,工业物联网可以在一定程度上推广高门槛的工业自动化技术,否则今天就很难有所谓的工业物联网。但是民用物联网和工业物联网还是有一些区别的,下面就简单介绍一下。

  • 首先是数量的差异。民用物联网往往面临着数百万和数千万的用户群。工业物联网的数量远小于这一规模。

  • 二是功能差异,民用物联网功能往往相对单一,易于使用,免维护。工业物联网的功能要复杂得多,通常对应于一个行业的一系列特定功能,

  • 然后是价格差异。民用领域的用户对价格相对敏感,因此民用领域的物联网产品往往价格相对较低。工业物联网领域的产品相对昂贵,因为它们面向行业和较少,单价相对昂贵。

  • 最后是质量的差异。工业和民用最简单的区别是,在设计产品时,设备选择的民用产品往往选择民用水平,工业产品往往选择工业水平。除了昂贵的工业芯片外,应用环境的温度范围也比民用领域更广,在相对恶劣的条件下可以可靠地工作。

1.2

工业物联网全栈开发

全栈开发的概念来源于Web开发领域是指具有前端和后台开发能力的领域。在工业物联网领域,全栈开发意味着了解硬件开发、各种传感器、云开发Web开发技术,手机APP大数据时代还需要了解数据挖掘和分析,开发各种通信技术和数据访问。

全栈工程师要求很高。考虑到现实,从技术路线来看,全栈开发还是分配系,比如Java各级的发展都是基于Java以开发技术为主。如“.NET各级的发展都是用来的.NET开发技术。由于历史原因,我从2001年开始进入工业控制开发,工业控制软件开发主要是微软技术,所以全栈开发主要采用.NET技术。

2

工业物联网设备端开发

民用物联网终端的发展与工业物联网终端的发展仍有很大的不同。民用物联网终端产品由制造商直接基于芯片进行产品开发。这是一个典型的硬件开发。工业物联网终端的发展往往是基于第三方制造商的产品,即更多的是进行综合开发。

我们的工业物联网终端设备是为其他工业物联网集成商开发的。当然,我们也将基于我们的软硬件产品进行工业物联网项目的综合开发。

以现有工业物联网产品为基础的项目开发为重点。

2.1

常见IO接口

工业领域很常见IO接口如下:

  • RS485:两线制,差分信号传输,半双工通信,最大通信距离公里以上。

  • RS232制,全双工通信,一般通信距离小于10米。

  • CAN:多主通信、高性能、高可靠性,每次最多传输8个字节的数据。通信距离超过公里。

  • 以太网:4线或8线,多主通信,性能高。

  • Zigbee:基于IEEE802.15.4标准低功耗无线通信协议,低功率传输距离一般在100米以内,高功率约1000米。

  • LoRa:超远距离无线传输方案基于扩频技术。功耗低,节点多。

  • GPRS:通用分组无线服务技术,广域网通信。

  • NB-IoT:IoT该领域的一项新技术支持广域网中低功耗设备的蜂窝数据连接,又称低功耗广域网(LPWA)。

  • 模拟输入:0~20mA/0~5V/0~20V

  • 开关量输入:0~24V

  • 继电器输出:0~220V/2A

2.2

通信协议很常见

  • Modbus RTU: 基于施耐德公司制定的施耐德公司RS485/RS串行通信总线协议232。

  • Modbus TCP: 基于以太网的通信总线协议由施耐德公司制定。

  • PPI:专为西门子公司S7-200系列PLC开发的通信协议。

  • Profibus:它是一种不依赖设备制造商的国际、开放的现场总线标准。

  • CANopen:是一种架构在CAN高层通信协议包括通信子协议和设备子协议。

2.3

常见的智能模块

事实上,常见的智能模块有很多种,如智能电表、智能水表和各种智能模块PLC及其配套的扩展模块等。这里主要介绍的是凌霄物联网智能网关、智能终端、智能终端IO模块和综合采集模块。

图1 物联网智能网关 智能终端 综合采集器

除网口外,网关USB、SD两个智能模块(无线通信,RTC、除了存储等板卡外,还可以配置各种通信接口板(当然也可以直接连接智能终端或智能终端)IO输入输出子板)。

  • 综合通信:1路RS485,2路RS232,1路CAN

  • RS485-CAN:3路RS485,1路CAN

  • RS485:4路RS485

智能终端和智能终端IO模块的主要区别是通信接口,智能终端有三个接口,以太网,RS485和CAN;而智能IO模块仅具备CAN接口。二是智能终端支持二次开发,可独立运行,也可作为智能网关的扩展模块IO仅作为智能网关的扩展模块存在。

智能终端和智能终端IO模块,根据对外接口不同,主要有如下种类的模块:

  • 综合输入输出模块:2路模拟量入,2路开关量入,2路继电器输出

  • 综合模拟量模块:4路模拟量输入,2路模拟量输出

  • 综合开关量模块:4路开关量输入,4路开关量输出

  • 模拟量采集模块:4路模拟量输入

  • 开关量输入模块:8路开关量输入

  • 继电器输出模块:8路开关量输出

  • 热电偶采集模块:4路热电偶采集模块

综合收集器是一个九合一的传感器集成模块,可以说是国内外集成度最高的产品。一次可收集的传感器数据包括三个温度、一个湿度、一个氧气、一个氨、一个二氧化碳、一个光和一个PM2.5.模块可以通过RS485与网关直接相连,标准Modbus RTU通信协议。

2.4

YFIOs开发数据组态

图2 YFIOs系统架构

图2是YFIOs数据组态系统的架构图包括三个部分:驱动层、核心层(驱动引擎和实时数据库)和策略。

所谓的二次开发大部分就是开发和具体业务联系密切相关的策略程序,此外就是少部分的驱动程序开发(除了对接特殊设备,大部分情况下无需用户开发驱动程序)。

下面我们用一个简单示例来介绍一下YFIOs组态开发。

2.4.1 硬件准备及连接

我们需要准备如下设备:1台物联网智能网关,1台物联网智能终端(或智能IO),1台综合采集器,1条USB线及附属电源及连接线等。设备及辅材准备好后,按如下方式进行接线:

图3 设备连接

2.4.2 创建用户驱动

图4 新建YFIOs设备

如图4所示,根据设备的类型,对应的网关接口,新建综合采集器和输入输出智能终端对应的用户设备。

设备创建后,对应的设备变量也会自动创建。

2.4.3 设备及变量监控

无需任何编程,只要把相关的驱动和配置信息部署到网关,就可以直接监控设备的通信状态、IO输入状态和连接的传感器数据。如果有IO继电器输出,也可以在IO监控界面,直接修改对应的值以改变继电器的开闭状态。

图5 IO数据监控

2.4.4 创建用户策略

如果仅仅实现数据从端到云的传输,那么无需写用户策略。当然对大部分的工业物联网现场应用来说,还是需要一定的业务逻辑进行处理的。比如检测到设备电机过热,则要求网关立即停止电机运行或者对外发出报警信号。这里我们写一个最简单的用户策略,就是当一路开关量输入为高电平的时候,让一路继电器闭合,低电平的时候则继电器释放。

开发用户策略,可以采用微软Visual Studio IDE开发工具进行开发,我们也提供了对应的模板程序,可以直接填入必要的业务代码即可。如图6所示,标准的用户策略其实只需要实现3个接口函数即可:OnLoad、OnRun和OnUnload。

图6 策略开发

OnLoad在用户策略开始加载的时候执行,只执行一次。OnRun按设定的间隔,循环被YFIOs的驱动引擎调用。OnUnload是策略被卸载前执行一次。

图6中在OnRun添加的代码如下:

if (op.IOReadInt("QI44:I1") != op.IOReadInt("QI44:Q1"))

      {

         op.Extern_IOWrite("QI44:Q1", op.IOReadInt("QI44:I1").ToString());

         op.Print(MessageType.Debug, "I1=" + op.IOReadInt("QI44:I1").ToString(), Name);

      }

以上代码的意思是,从YFIOs实时数据库中读取QI44:I1通道值,如果和继电器的输出状态不同,则继电器的状态和输入通道保持一致。

用户策略编写完毕后,则可以用YFIOsManager工具进行加载和调试了(如图7和图8所示)。

图7 新建策略

图8 策略调试

从图8中我们可以看出,当I1输入状态被改变的时候,继电器的输出状态也被改变了,调试窗口中也输出了对应的调试信息。

2.4.5 添加QCPB云端通信策略

如果不和云端通信,也就不需要添加QCPB云端通信策略了,但是如果没有这部分也称之不上为物联网项目了,只是一个典型的小自动化项目而已。

和添加用户策略一样,我们添加上QCPB云端通信策略,除了设置运行间隔外,我们还需要设定相关的参数,如图9所示。

图9 添加云端通信策略

IP地址是指云端服务器端地址,端口号默认为12000,项目ID是指云端创建对应项目时的ID号(这个后文会有介绍)。由于QCPB协议支持变化上传数据,所以针对浮点数,需要设置数据变化的阈值。

“IO配置”面板中有一个导出按钮,可以单击导出,保存后的XML文件在创建云端项目及云端组态画面的时候会用到。

3

云端通信协议

3.1

MQTT通信协议

MQTT是Message Queuing Telemetry Transport的缩写,中文意思是消息队列遥测传输,它是IBM开发的一个即时通讯协议,目前已经成为物联网主流的通信协议,微软云、百度云、阿里云等都支持该通信协议。这意味着设备只要支持了该通信协议,就可以和当前主流的云进行云端通信。凌霄物联网网关也支持该协议,在一个消防相关的项目中,就是通过该协议把采集到的数据上传到的微软Azure IoT Hub中。

3.2

WebSocket通信协议

WebSocket协议是HTML5标准里,基于TCP的一种新的网络协议,2011年被IETF定为标准RFC 6455。它实现了浏览器与服务器全双工(full-duplex)通信,服务器可随时向客户端发送信息,不仅通信数据量变小,同时也大大改善了网页动画的实时性能。我们的YFHMI组态动画,就是基于WebSocket通信协议和服务器中间件YFCloud进行通信的。

3.3

QCPB通信协议

这是我们自行开发的一个基于二进制格式的云端通信协议,其优点是通信数据量小,支持数据变化上传。除了支持数据通信外,还支持设备的远程诊断、远程参数下载和远程升级等功能。支持TCP/IP以太网和GPRS双链路自动切换通信模式。本篇文章中所介绍的云端通信就是基于该协议来实现的。

4

云服务YFCloud开发

云端YFCloud有三部分组成:Web后台、Web前台和YFIOs云端中间件。Web后台和前台采用ASP.NET进行开发,YFIOs云端中间件也是采用.NET技术进行开发,是一个标准的Windows服务程序。

4.1

云端项目构建

首先登录YFCloud物联网中间件通用监控平台就可以开始创建云端项目了。YFCloud的构建思想是,先有项目模板,然后再基于项目模板创建应用。这样的好处就是,基于一个项目模板可以创建若干应用。

4.1.1 创建项目模板

图10 创建项目模板

先添加一个项目模板,然后比较重要的一步就是导入【2.4.5】章节所导出的IO配置文件,从而构建云端IO实时数据库(如图11所示)。

图11 云端IO列表

4.1.2 创建项目应用

基于我们刚刚创建的“工业物联网演示”模板创建一个项目应用。创建一个项目应用后,系统会自动生成一个项目ID号,把这个ID号填入【2.4.5】章节中所示的云端通信策略中的IO配置面板中,填入后部署到物联网智能网关即可。

4.2

YFIOs云端中间件

YFIOs云端中间件脱胎于嵌入式YFIOs,从图12的架构图上就可以看出,嵌入式YFIOs是一个“单机版”的数据组态平台,而云端中间件YFIOs是一个“网络版”数据组态平台。

图12 YFIOs中间件架构

YFIOs云端中间件集成了WebSocket服务器,Web动态网页可以通过WebSocket协议和服务器进行通信。

YFIOs云端中间件以项目为最小单位来进行管理的,一个或多个项目对应一个项目模板,实际应用通过项目ID进行区分。

4.2.1 远程IO监控

图13 YFIOs云端中间件

在云端服务器上打开YFIOs云端中间件-客户端程序,可以看到在“工业物联网演示”项目模板下,我们看到“工业物联网Demo”应用的运行标志已经变为绿色,表示物联网智能网关设备已经和云端连接成功。右侧的显示面板上可以看到从物联网智能网关上传到云端的各种IO数据。在该界面上,也可以对继电器变量进行操作,写入0或1,可以看到物联网智能终端上对应的继电器闭合或开启。

4.2.2 远程参数&远程升级

图14 远程参数&远程升级

针对一个具体的项目,远程参数即可能云端策略需要,也可能同时远程设备上的策略需要,如果是这种情况,处理要复杂一些,相关参数需要保存到云端服务器,并且参数一旦修改,需要同时通知云端策略和远程设备上的策略。如果仅远程设备需要,那么简单期间,可以直接通过YFIOs云端中间件直接传递一个二进制参数文件即可。

远程升级的实现要相对复杂,因为升级文件相对较大,并且传输通道有可能是GPRS窄带传输,所以需要分段进行传输。要确保整个的升级文件,完整可靠的传输到远程的物联网智能网关上,并且重启重连成功后,才算真正的升级完毕。

由于基于同一个项目模板下的多个相关应用的物联网智能网关上的应用往往是一样的,所以只要设定一个升级文件就可以升级整个项目模板下的所有的项目应用。但是这有一个前提,要升级的固件版本,要比设备上当前运行的版本高。

考虑到一些特殊情况的存在,YFIOs云端中间件也支持远程强制升级,不管当前什么版本,不管以前运行的什么应用,都可以强制实现远程升级的功能。

4.2.3 云端策略开发

YFIOs云端中间件的策略和YFIOs嵌入式的策略开发基本相同,也含有OnLoad、OnRun和OnUnload,差别就是云端中间的策略能力更强,可以充分利用Windows平台本身的.NET Framework能力。

有些业务逻辑即可以放在设备端的策略里,也可以放到云端的策略里,比如一些当日量和累积量的处理和换算。有些最好放到设备端,比如某些指标超过阈值,需要立即关闭或开启设备的。有些则放在云端更合理,比如需要把数据进行永久存储的。

云端策略分三种类型:核心策略、公共策略和用户策略。核心策略,YFIOs云端中间件每个项目都会执行,公共策略是多个项目可选择性的执行,用户策略则是用户项目模板下的项目才会执行。其上三种策略从代码结构上没有什么区别,以所在的目录决定其策略类型。

图15 策略管理

5

云画面YFHMI组态开发

YFHMI画面组态最早支持WinCE平台,后来在WinCE平台软件的基础上开发出了基于.NET Micro Framework平台的版本。.NET Micro Framework一般运行在相对资源较小的物联网芯片(Cortex-M系列)上,所以YFHMI在性能和体积上做了进一步的优化。考虑到Html5+WebSocket是未来WEB前端的主流,在YFHMI支持Windows版本后,又直接推出了Html5的组态版本。

5.1

Web组态画面构建

5.1.1 创建组态画面

在创建基本组态画面的同时,我们还是需要导入在【2.4.5】章节所导出的IO配置文件,以便于动画绑定对应的IO变量(如图16所示)。

图16 YFHMI图元创建 & IO导入

我们构建的组态画面比较简单,两个指示灯分别对应智能终端的I1、I2,一个切换开关对应Q2,四个文本框分别对应T1、T2、T3和H。IO变量导入后,相关的图元分别绑定上对应的变量。 

5.1.2 导出Html5文件

图17 Html5网页导出

导出的bg.png、Monitor.html、PublishIO.xml和YFWebSocket.js四个文件需要上传到云端对应的项目模板目录下。导出的PublishIO.xml文件需要导入云端IO列表,以设定对应的发布IO。

5.2

Web画面呈现及操控

图18 动画监控

在Web网页上我们打开动画监控页,可以看到这个内容是和我们在YFHMI中创建的组态画面是一致的,并且其显示的数据也和真实设备的值一样(和YFIOs云端中间件的IO实时数据保持一致)。这个时候如果我们用鼠标操作开关按钮,可以看到物联网智能终端的继电器吸合或释放。

6

应用案例

综上,我们可以看出无需太多专业技能,无需太多时间,就可以从端到云构建一套相对实用,且有一定复杂度的工业物联网方案。下面我们将介绍的案例,就是我们这两三年来在实际现场实施的项目,是真正得到实际运行考验的项目。

6.1

远程污水监测/监控系统

图19 恭城远程污水监测界面

图20 龙滩远程污水监控界面

图21 硬件控制柜

广西龙滩和恭城的污水监控和监测系统,分别在2014和2015年开始着手实施,最初龙滩项目没有远程监控画面,仅包含现场自动化系统,在恭城远程监控画面实现后,才又增添了远程监控功能。目前该项目已经在现场运行了两年以上。

6.2

远程垃圾处理系统

广西龙滩垃圾处理系统在2015年开始研发实施,和污水监控系统不同的是,除了包含现场自动化控制、远程云端监控外,现场还有显示器进行现场监控。所以YFHMI构建的组态,不仅支持HTML 5网页组态画面,还支持嵌入式组态画面。

图22 龙滩远程垃圾监控系统

6.3

物联网养殖监控系统

物联网养殖监控系统是我们在2015年底和新希望六合还有微软共同合作研发的一套养殖监控系统。目前已经在山东济南、潍坊、河南新乡、武陟,河北香河等地进行了安装实施。

本系统和上面介绍的污水处理和垃圾处理系统有些不同,上述两个系统的架构,核心就是物联网智能网关连接若干不同功能的智能终端和智能电表,通信也是仅采用3G/4G方式和远程服务器进行通信。物联网养殖系统除了包含上述的功能外,还专门为其研制了九合一的综合采集器,此外还能连接智能电表、智能水表,环控器等等智能设备。为了保证通信的可靠性,还支持GPRS/因特网双网自动切换功能。在远程监控端,除了具备网页监控,微信监控外,还提供手机APP进行远程操控。

图23 养殖监控-实时数据

刘洪峰,网名叶帆,叶帆科技创始人兼CEO,前微软(中国).NET Micro Framework开发团队成员,微软全球最有价值专家(MVP),CSDN十大MVB。以微软.NET MF系统为核心,研发了物联网智能网关、YFIOs和YFHMI等物联网中间件软硬件平台。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章