草庐IT

物联网边缘计算方案

虹科工业物联网 2024-03-10 原文

一、 前言

随着互联网技术的进一步发展以及数据和物联网的爆发式增长,基于云计算模型的聚合性服务,逐渐体现出在网络制约、实施性资源、隐私保护方面的缺陷。

为了更好地解决数据问题,人们在物联网中引入了边缘计算。边缘计算支持物联网数据的爆炸性增长,这些数据可以连接并集成工业边缘的各种不同设备和应用,促使物联网在各个垂直行业落地生根。基于此,发展物联网边缘计算技术就显得尤为必要。

二、 传统云计算框架与边缘计算框架对比

云计算框架

云计算框架中,终端设备不仅负责数据收集后向云中心传送,同时也接受云中心传递过来的数据,它们和云中心之间进行相互的数据传输。

 

边缘计算框架 

边缘计算模式相较于传统的云计算模式,多了一层边缘层。边缘计算利用近数据端的边缘结点直接对数据源数据进行计算处理,将部分或全部计算任务从云中心分散到各个边缘节点进行计算处理,分担了云中心的工作量,一定程度上减少了网络中数据的交换量,提升了网络系统中计算资源的使用效率,终端服务的及时性和安全性得到一定程度的保证。

另一方面,传统云计算模型中的隐私保护问题一直颇受关注。边缘计算模式为了实现对用户数据的隔离保护,边缘结点对终端的隐私数据进行一定封装处理后才上传至云数据中心。同时,边缘节点接收来自云计算中心的请求时,不提交源数据,仅将计算后的结果返回云中心,这种方法有效地规避了传输过程中产生的数据泄露风险,为数据的安全提供了很好的保护机制。

这也构成了边缘计算的三大突出特点:本地化、实时性、低能耗

三、 边缘计算架构分享

1. 边缘计算架构1.0

边缘计算架构1.0,该架构按照层次领域进行设计,主要包括应用域、数据域、网络域、数据域、设备域。


2. 边缘计算架构2.0

边缘计算架构2.0如图所示,相较于1.0的边缘计算的层级结构,该模型更加复杂并拓展了边缘计算层的作用。

2.0架构从横向层次来看,具有如下特点:

•开发部署智能协同

•端对端的业务逻辑

•极简架构

•更快速、准确的计算

边缘计算节点层兼容多种异构联接,支持实时处理与响应,提供软硬一体化安全等,并且作为节点的边缘设备在保证实时性的同时对终端设备产生的数据进行存储和计算,同时,为了系统能够实现更新和优化,节点也具有和云平台或云端进行交互的功能。

3. 边缘计算架构3.0

整个系统分为云、边缘和现场三层,边缘计算位于云和现场层之间,向下支持各种现场设备的接入,向上可以与云端对接。

边缘计算3.0的特点是:


•虚拟化技术

•MQTT协议

•采取层级的结构,无需部署专门的服务器

•架构可以灵活调整或扩展

架构中边缘层包括边缘节点和边缘管理器两个主要部分。

边缘节点是硬件实体,是承载边缘计算业务的核心。根据业务侧重点和硬件特点不同,边缘节点包括以网络协议处理和转换为重点的边缘网关、以支持实时闭环控制业务为重点的边缘控制器、以大规模数据处理为重点的边缘云和以低功耗信息采集和处理为重点的边缘传感器等。

边缘管理器的呈现核心是软件,主要功能是对边缘节点进行统一的管理。

四、 虹科物联网边缘计算解决方案

虹科物联网边缘计算方案分为软件解决方案、硬件解决方案两种,解决三大工业难题:

超强的互操作性:支持主流PLC和现场总线协议200+种

边缘计算能力&软PLC控制:支持Javascript自定义、预置函数、边缘数据批量处理

多种物联网方式:MQTT通信、OPC UA Client/Sever、CORVINA Cloud REST API

软/硬件产品方案向下可以通过各大主流PLC协议驱动实现与现场设备互联对数据进行采集,向上可对接到SCADA系统、Mes系统、数据库、云平台等,并且支持VNC服务,可以进行远程可视化查看

五、 应用案例

智慧水务系统中,底层设备使用的协议很复杂,考虑到协议的多样化,我们选用的是虹科eXware网关。虹科eXware网关支持的现场总线协议和PLC协议共计200多种,并且提供多个硬件接口,可以很好地适配水厂设备。

水厂的底层设备通过现场总线协议与虹科eXware网关进行对接,虹科eXware网关内置了web服务器,可以通过浏览器查看虚拟HMI画面,实现远程可视化数据监控。

虹科eXware网关采集数据信息后,使用JavaScript对采集到数据进行处理。在该水务系统中,应用边缘计算实现对水厂当天水质的监测。

当虹科eXware网关完成数据处理后,将数据上传到Corvina Cloud云平台中进行数据分析、终端管理以及存储操作。此外,通过网关连接到集中式服务器的各种远程设备,在Corvina Cloud云平台可以实现对水厂的远程管理


更多资讯 欢迎关注博主

有关物联网边缘计算方案的更多相关文章

  1. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  2. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  3. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  4. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  5. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  6. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  7. Ruby 守护进程和 JRuby - 备选方案 - 2

    我有一个应用程序正在从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全支持)。我使用的gem之一是daemons创建后台作业。问题在于它使用fork+exec来创建后台进程,但这对JRuby来说是禁忌。那么-是否有用于创建后台作业的替代gem/wrapper?我目前的想法是只从shell脚本调用rake并让rake任务永远运行......提前致谢,克里斯。更新我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-scheduler和https://github.com/philostler/acts

  8. ruby-on-rails - 如何计算 Ruby/Rails 中 JSON 对象的数量 - 2

    Ruby中如何“一般地”计算以下格式(有根、无根)的JSON对象的数量?一般来说,我的意思是元素可能不同(例如“标题”被称为其他东西)。没有根:{[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]}根包裹:{"posts":[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]} 最佳答案 首先,withoutroot代码不是有效的json格式。它将没有包

  9. ruby - 如何计算自 Ruby 中给定日期以来的周数? - 2

    目标我正在尝试计算自给定日期以来周的距离,而无需跳过任何步骤。我更喜欢用普通的Ruby来做,但ActiveSupport无疑是一个可以接受的选择。我的代码我写了以下内容,这似乎可行,但对我来说似乎还有很长的路要走。require'date'DAYS_IN_WEEK=7.0defweeks_sincedate_stringdate=Date.parsedate_stringdays=Date.today-dateweeks=days/DAYS_IN_WEEKweeks.round2endweeks_since'2015-06-15'#=>32.57ActiveSupport的#weeks

  10. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

随机推荐