加速工业物联网应用开发 - 第 2 部分:快速工业物联网传感器部署
投稿人:DigiKey 北美编辑
2020-03-11
编者按:由于开发人员需要等待新设备的硬件实现可用才能开始开始工作,因此嵌入式应用开发项目通常会出现延迟。工业物联网 (IIoT) 应用开发面临类似的瓶颈,需要等待传感器数据才开始像工业预见性维护系统或设施自动化系统之类基于机器学习方法的应用的开发。本系列文章由两部分组成,将探讨哪些替代方法能提供所需的早期数据流,以加速工业物联网应用开发。第 1 部分介绍了如何使用模拟方法生成这些数据流。本文是第 2 部分,将会讨论有哪些选择方案可用来快速进行传感器系统原型开发,以帮助生成数据。
大规模工业物联网 (IIoT) 应用从根本上依赖于对目标环境中所部署传感器网络产生的数据流的分析和响应。如果在开发初期不能随时获得这些数据流,则工业物联网应用可能会落后于紧迫的工期或低于公司的预期。
尽管模拟方法可以满足许多应用的数据要求,但有些应用可能需要与目标环境精确匹配的数据。对于这些应用,要想获得有效的模拟结果,所需的投入可能不切实际。而使用现成的传感器和网关装置提供了一个可能更容易的快速数据交付途径。这些装置专为工业环境而设计,支持各种传感器类型和连接选项,几乎不需用户花费什么精力。
本文是关于加速工业物联网应用开发的两部分系列文章中的第二部分,将会介绍多种预配置型工业物联网传感器和网关,用于生成加速工业物联网应用开发所需的数据。
工业物联网数据模拟的局限性
传感器数据是工业物联网应用的核心,但完整的应用部署同时依赖于能提供这些数据的传感器系统,以及将这些数据转换为有用信息的软件系统是否现成可用。对于某些工业物联网应用,模拟可能无法提供足够有用的数据。如果不仔细注意模拟的参数,则模拟的数据流可能会展现出将应用偏向特定工作曲线的属性。
例如,若数据模拟配置为在 -40°C 至 +125°C 范围内提供均匀分布的随机温度,则可能会使应用偏向极端温度,超出目标环境的实际温度范围。此外,这种简单的模拟提供的温度数据还可能容易从一个测量期到下一个测量期一下跳过几十度。在典型的工业物联网应用中,此类不切实际的大幅温度变化可能会对过程控制回路和其他应用结果造成混乱。
如果应用预期要嵌入机器学习推断模型,则数据质量及其对真实情况的体现程度尤其值得关注。数据科学家们都知道,采用糟糕数据进行训练的推断模型也会提供同样糟糕的结果。因此,为了构造这些模型所需的有效数据模拟,投入水平可能会迅速攀升。
对于大多数工业物联网项目而言,将应用开发推迟到传感器系统部署完成后,这根本不现实。事实上,当需要执行软件应用来提供所需的信息,甚至来验证能否全面部署时,等待传感器部署甚至都不可行。例如,数据科学家可能需要复杂算法的结果来确定是否需要更高分辨率、更快更新速率,甚至不同类型的传感器数据,来解决结果中的不明确性,或在其他方面优化应用。
由于所有这些原因,组织可能不情愿地决定延迟工业物联网应用的开发,因为相比使用对目标工业过程和环境表现不佳的模拟数据来开发应用,这是更好的选择。幸运的是,随着预置工业物联网传感器系统和相关网关设备的不断增多,组织至少能够快速部署应用开发所需的一组最关键的传感器。
快速部署传感器网络
工业物联网传感器将传感器、处理器和连接接口组合在一个封装中,以承受典型的工业环境压力。除了用于温度、振动、压力和湿度的单个传感器,开发人员还可以找到可用的多传感器装置,这些装置封装了特定应用功能(如预见性维护)所需的传感器组合。
预见性维护方法会监测起着设备潜在故障指示作用的特性。例如,在电机中,振动频率和温度的特定变化能可靠地指出电机中非常具体的故障类型。工业物联网传感器设计用于捕获这些数据,例如 National Control Devices (NCD) 的 PR55-20A 预见性维护传感器,它将所需的传感器与低功耗微控制器和 DigiMesh 无线网状网络连接组合在一起(图 1)。
图 1:NCD PR55-20A 预见性维护传感器结合了多个传感器以及将数据传送至本地无线节点所需的网状网络连接。(图片来源:National Control Devices)
为了加速工业物联网应用的开发,开发人员可以轻松地将专用传感器(例如 NCD 预见性维护传感器)与其他传感器(例如 NCD PR49-24G 无线环境传感器)组合使用。NCD PR49-24G 采用由两节 AA 电池供电的工业封装,并集成了温度、湿度和气体传感器。
除了各种特定的传感器类型,工业物联网传感器制造商还提供了预置的通信网关装置,旨在简化传感器到本地连接网络的集成。实际上,开发人员可以找到一些可用的网关装置,需要预先配置成连接特定的商业云或支持常用于连接物联网云平台的通信协议。
针对其 DigiMesh 无线传感器,NCD PR55-21 网关系列使用 Wi-Fi 连接来连接到特定的云服务,包括 Microsoft Azure IoT (PR55-21_AZURE)、Amazon Web Services IoT (PR55-21_AWS) 或 Losant IoT 平台 (PR55-21_LOSANT)。此外,PR55-21_MQTT 网关还支持与使用 ISO 标准 MQ 遥测传输 (MQTT) 协议的任何主机进行通信。与 PR55-21 系列的其他成员一样,PR55-21_MQTT 网关将低功耗工业微控制器与子系统相结合,以实现本地 DigiMesh 无线连接以及与本地或远程 MQTT 服务器的加密 Wi-Fi 回程连接(图 2)。
图 2:NCD PR55-21_MQTT 网关不仅为本地 DigiMesh 网状网络提供无线支持,还可通过 Wi-Fi 连接与服务器进行 MQTT 信息交换。(图片来源:National Control Devices)
开发人员可以使用通过网关的嵌入式 Web 服务器提供的菜单式工具,快速配置 DigiMesh 本地网络和 MQTT Wi-Fi 连接。例如,下图中的设备屏幕显示了 DigiMesh 连接的设备及其信号强度和活动情况,并提供一个用于管理配置的集中点(图 3)。
图 3:NCD PR55-21_MQTT 网关嵌入式 Web 服务器允许用户更改设置并检查连接到本地网络的传感器的活动情况。(图片来源:National Control Devices)
DigiMesh 网状网络提供了一种有效的方法,用于扩展电池供电型传感器系统中所需的低功率收发器的有效范围。当然,这只是工业环境中可能遇到的多种连接选项之一,制造商针对其中许多连接提供了类似的传感器和网关组合。例如,Laird 的 Sentrius RS1xx 系列包括专用于支持蓝牙和 LoRaWAN 连接的工业传感器。该公司的 Sentrius RG1xx 系列包括互补性网关,用于支持 LoRaWAN 部署的区域频率要求。此外,这些网关还支持本地蓝牙连接和 Wi-Fi 回程 Internet 连接。
在某些应用中,强电磁干扰 (EMI) 源会降低无线通信中的信号完整性。对于这些情况,若能够将传感器与通信功能分开,这可是重要的优势。除了自家公司的无线工业传感器,Banner Engineering 还提供了能通过 RS-485 或单线串行接口连接至单独无线节点的传感器。因此,操作人员可以将无线通信节点与连接至强 EMI 源(例如高速电机)的传感器相距一定距离放置(图 4)。
图 4:对于电机振动测量等电磁干扰严重的情况,开发人员可以将 Banner Engineering 安装在电机上的振动传感器与相距噪声源一定距离放置的无线节点连接。(图片来源:Banner Engineering)
为支持这种配置,Banner Engineering 的 DX80N9Q45VTP 无线节点设计成与该公司的 QM30VT1 单线振动和温度传感器连接,而 DX80N9Q45TH 无线节点则与 M12FTH4Q 单线温度和湿度传感器连接。为了满足更广泛的传感器接口要求,该公司的 DX80N9Q45U 可用作通用的单线无线节点,同时该公司的 DX80G9M6S 系列无线节点支持 RS-485 传感器连接到多跳网络。
本地处理
即使能快速部署工业物联网传感器网络,开发人员也可能需要预期进行一定程度的本地处理,以减少数据量或减轻下游资源的处理负载。实际上,先进的工业传感器(例如 Banner Engineering 的 QM30VT2 振动和温度传感器)能够让用户将测得的振动频率分成多达 20 个频段。此功能在预见性维护应用中尤为重要,在这些应用中,通过确定不同频段内的变化可确定特定类型的故障。
除了由传感器进行预处理外,在早期部署传感器网络时,也可能会产生一系列本地处理要求。Banner Engineer 的 DXM700 控制器和网关提供了此功能。DXM700 的尺寸仅为 70 x 86 x 55 毫米 (mm),可提供多个本地无线和有线连接以及到主机服务器的以太网回程连接(图 5)。
图 5:Banner Engineering 的 DXM700 控制器和网关提供了多个本地和 Internet 连接选项,并支持本地 ScriptBasic 处理。(图片来源:Banner Engineering)
当从本地传感器网络接收数据时,该控制器可以执行用 ScriptBasic 编写的程序,来检查输入数据,根据输入数据激活输出,或执行简单的数据转换。Banner Engineering 说明文档中包括了一些 ScriptBasic 示例,用于说明像响应传感器数据变化这样的典型操作 (清单 1)。
副本 ...'Function to read the T/H sensor FUNCTION GetTempHumidityData LastValueTempC = TempC LastValueHumidity = Humidity Humidity =GETREG(SensorHumidity_reg, TH_SID, MBtype) TempC = GETREG(SensorTempC_reg, TH_SID, MBtype) IF Humidity > 65535 or TempC > 65535 THEN PRINT "Read Error - humidity / temp reading...", Humidity," ",TempC,"\n\r" END IF WrErr = SETREG (Humidity_reg, Humidity, LocalRegSID, MBtype) WrErr = SETREG (TempC_reg, TempC, LocalRegSID , MBtype) FUNCTION StateMachine 'State machine definitions for the periodic reading of temp/humidity ' TH_State = 0 current state of the state machine ' TH_Idle= 0 initial state ' TH_Wait= 1 wait time between samples ' TH_Sample= 2 get samples from remote sensor ' TH_Error= 3 error state - unknown condition LOCAL StartState StartState = TH_State WrErr = SETREG (SM_reg, TH_State, LocalRegSID, MBtype) IF TH_State = TH_Idle THEN StartTime = NOW TH_State = TH_Wait ELSEIF TH_State = TH_Wait THEN IF NOW >= (StartTime + WaitTime) THEN TH_State = TH_Sample ELSE TH_State = TH_Wait END IF ELSEIF TH_State = TH_Sample THEN GetTempHumidityData TH_State = TH_Idle ELSE TH_State = TH_Error END IF IF StartState <> TH_State THEN PRINT "\r\n Time ",NOW," SM Started-> ",THState[StartState]," End->",THState[TH_State]," \r\n" END IF END FUNCTION FUNCTION LED_driver IF LastValueTempC < TempC THEN WrErr = SETREG (TempGoingUp_LED2_reg,1,DisplaySID, MBtype) ELSE WrErr = SETREG (TempGoingUp_LED2_reg,0,DisplaySID, MBtype) END IF IF LastValueTempC > TempC THEN WrErr = SETREG (TempGoingDown_LED3_reg,1,DisplaySID, MBtype) ELSE WrErr = SETREG (TempGoingDown_LED3_reg,0,DisplaySID, MBtype) END IF IF (Humidity > 65535 ) OR (TempC > 65535) THEN WrErr = SETREG (CommsError_LED4_reg,1,DisplaySID, MBtype) ELSE WrErr = SETREG (CommsError_LED4_reg,0,DisplaySID, MBtype) END IF IF GETREG(ScriptRunnning_LED1_reg, DisplaySID, MBtype) THEN WrErr = SETREG (ScriptRunnning_LED1_reg,0,DisplaySID, MBtype) ELSE WrErr = SETREG (ScriptRunnning_LED1_reg,1,DisplaySID, MBtype) END IF END FUNCTION ‘Main program loop BEGIN: PRINT "Script Starting\r\n" ITERATE: 'PRINT "\r\n Time = ",NOW," \r\n" StateMachine LED_driver Sleep(1) GOTO ITERATE END
清单 1:此 ScriptBasic 代码段来自 Banner Engineering,展示了开发人员如何对 Banner Engineering 的 DXM700 进行编程,以在本地对传感器数据作出响应。在此例中,通过打开和关闭 LED 来响应温度和湿度传感器数据的变化。(代码来源:Banner Engineering)
Multi-Tech Systems 的 MTCAP-Lxxx 系列等网关为本地处理提供了更大的灵活性。此系列专用于满足各种连接要求,可支持传感器侧的本地 LoRaWAN 连接,以及回程信道的以太网和可选宽带 LTE 连接。针对其工作环境,此网关系列基于开源的 Multi-Tech Linux (mLinux) 操作系统。因此,开发人员可以使用熟悉的开发环境来创建本地处理软件例程。此外,这些网关还支持 Node-RED,这是一种需要很少代码的开发选项,对于事件驱动型应用(例如工业物联网)非常有用。关于 Node-RED 的更多信息请参阅后文。
低代码快速原型开发
通过快速部署物理传感器网络,在全面设计、开发和调试传感器网络之前就能提供早期的关键数据来源,从而帮助加速工业物联网应用的开发。如果快速部署带来了大量附带的软件开发要求,则可能会妨碍进行部署。在很多情况下,前述预配置型工业物联网的传感器和网关都可以避免这种情况,但若超出即用型传感器和网关功能的独特数据要求,则可能会带来相关的软件要求。
为了满足独特的数据要求,快速原型设计平台(例如 Arduino 和 Raspberry Pi)提供了各种各样的专用传感器和执行器作为扩展板。通过混合搭配这些扩展板,开发人员可以快速构建几乎满足任何传感器数据要求的原型设计。
对于物联网应用来说,制造商通过发布多传感器板来简化应用的原型设计,这些多传感器板设计具有应用通常需要的最小尺寸和功能。诸如 ON Semiconductor 的 RSL10-SENSE-GEVK 评估套件或 STMicroelectronics 的 STEVAL-STLKT01V1 SensorTile 开发套件之类开发板,则将高性能处理器与可穿戴设备和物联网设备通常需要的各种各样传感器集成在一起。例如,SensorTile 就组合了 STMicroelectronics 的 STM32L4 处理器、STMicroelectronics 的 BLUENRG-MS 收发器和一个传感器阵列,而传感器阵列则包括了该公司的 LPS22HBTR 微机电系统 (MEMS) 压力传感器、带加速计和陀螺仪的 LSM6DSMTR MEMS 惯性测量装置 (IMU) 以及带线性加速和磁传感器的 LSM303AGRTR MEMS 电子罗盘(图 6)。
图 6:STMicroelectronics 的 SensorTile 基于该公司的 STM32L4 处理器,提供了一个灵活的传感器系统硬件构建平台,以满足超出即用型工业物联网传感器系统支持范围的独特要求。(图片来源:STMicroelectronics)
作为流行的低代码开发环境,Node-RED 允许开发人员通过绘制连接功能元件(节点)的图形(流程),来对这些板卡和其他硬件系统(例如 NCD 设备和 Multi-Tech 网关)进行编程。这些流程与节点之间的交互相对应,而这些节点又对应于一些特定的功能,包括读取传感器数据、对数据执行操作、将数据传输到其他功能元件(如云网关)以及显示数据(图 7)。
图 7:Node-RED 开发环境能够让开发人员通过连接从广泛的开源资源库中提取的节点,来创建应用。(图片来源:National Control Devices)
在开源的 Node-RED 流程存储库中有超过 225,000 个模块可用,该环境提供了一个可用于开发事件驱动型应用的丰富生态系统,例如采集传感器数据并传输到云。尽管 Node-RED 提供了在生产应用中集成结果流程的方法,但它对 Node.js 的依赖可能不适用于某些应用或生产环境。
Digi-Key 的 DK IoT Studio 提供了另一个低代码开发环境,大幅消除了对手动软件开发的需求,同时仍提供 C 语言源代码。通过使用 DK IoT Studio,开发人员可以在 DK IoT Studio 画布上拖放与 SensorTile 的每个功能关联的组件,从而创建所需的功能(图 8)。
图 8:Digi-Key DK IoT Studio 通过在画布(中间)上连接作为图标放置的功能组件并根据需要修改相关特征(右侧),从创建的应用自动生成代码(左侧)。(图片来源:Digi-Key/STMicroelectronics)
除了支持特定的硬件组件外,该环境还提供了类似的可拖放功能组件,这些组件代表了云数据传输或云资源操作。在绘制描述数据流和操作的图表后,开发人员可以下载生成的代码,以上传到 SensorTile。在构建典型原型时,此过程几乎或完全不需要额外的代码开发。有关这一快速原型开发流程的更多信息,请阅读“快速部署电池供电型蓝牙 5 认证多传感器物联网设备”。
总结
大规模工业物联网应用的开发主要依赖能否获得如实呈现目标环境的数据。正如本系列文章的第 1 部分所述,尽管模拟方法可以满足许多应用的数据要求,但有些应用可能需要与目标环境精确匹配的数据。对于这些应用,要想获得有效的模拟结果,所需的投入可能不切实际。而使用现成的传感器和网关装置,则提供了一种更加简单的快速数据交付解决方案。
如第 2 部分(本文)所述,这些装置支持各种传感器类型和连接选项,几乎不需要用户花费什么精力。使用这些产品,开发人员可以快速部署传感器网络,从而能够交付加速工业物联网应用开发所需的数据。
免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。