×
嵌入式 > 技术百科 > 详情

加速工业物联网应用开发(二):工业物联网传感器部署

发布时间:2021-04-20 发布时间:
|

由于开发人员需要等待新设备的硬件实现可用才能开始开始工作,因此嵌入式应用开发项目通常会出现延迟。工业物联网(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,"nr" 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 "rn Time ",NOW," SM Started-> ",THState[StartState]," End->",THState[TH_State]," rn" 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 Startingrn" ITERATE: 'PRINT "rn Time = ",NOW," rn" StateMachine LED_driver Sleep(1) GOTO ITERATE END


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Semtech的LoRa技术携手Chipsafer将牧场连接至云端