工业通信网络结构

2023-11-06

工业通信网络结构

工业通信网络包含所谓的工业现场总线、局域网、公网等概念。这些概念在物理环境下并不是界线分明的,是一种主观上的分类。在物理环境下,目前工业网络结构都是设备与双绞线之间的通信。可以互相通信的设备与双绞线的集合称为网络。当网络中含有工业生产、加工、安防设备时,此网络可以称为工业通信网络。工业通信网络与其它网络命名不是互斥关系,同一个网络可以有多种定义。

网络结构是对设备通信逻辑的设计理念,目前已有的网络结构有多主结构(如:CANOpen)、一主多从结构(如:Modbus)、一从多主结构(如:MQTT)。

所谓的多主结构,是指网络上的设备都具有主动发送有意义的请求的逻辑结构,目前只有CAN链路可以真正实现多主结构。当我们把路由器、交换机这类网络通信设备作为线路的一部分时,UDP Socket通信也可以实现多主结构。多主结构的优点在于信号按需发送,在变化信号较少的情况下可以节省带宽。但是变化信号多的情况下,多主结构容易造成冲突,使网络质量下降。当TCP Socket网络上只有两台设备时,也可以实现多主网络。

一主多从结构,是指网络上只有一台设备具有主动发送有意义的请求的逻辑结构,一主多从是非常普遍的结构,主要应用在485链路上。一主多从结构的优点在于逻辑有序,当变化信号较多时不会冲突。但是变化信号较少时会浪费带宽。

一从多主结构,是指网络上只有一台设备不能主动发送有意义的请求的逻辑结构,一从多主的代表是SQL数据库、WEB服务器、OPC服务器和MQTT服务器。一从多主实际上是数据库结构。所有一从多主的网络都是围绕着实质上是数据库的从机建设的。OPC是一种实时数据库、MQTT是一种临时数据库、WEB服务器是一种资源数据库,它们都是数据库,都是按相似的流程工作的。当然,这几种数据库也各有其特点。OPCUA的特点是数据库软件可以自己产生有意义的数据,MQTT数据库可以主动推送数据本身并不需要长期持有数据,WEB服务器具有较强的可视化功能。一从多主结构的优点是将通信逻辑的难点集中在一台设备上,使网络上其他设备的开发变得简单,也可以模拟多主结构和一主多从结构,具有较强的灵活性。但是一从多主结构的通信流程通常较复杂,从机上的数据流量大,依赖TCP Socket。

工业通信网络的跨度可能是一个有限的现场或虚拟现场,也可能是公共网络。当工业通信网络跨越公共网络时,会产生更多的要求。

公共网络需要进行通信保密设计

通信保密的方法有身份验证、数据加密两种思路。

身份验证即是指对从双绞线上传来的数据进行来源验证,它的优点是可以很方便地将网络建设分配给公共开发者实现,缺点是容易被破解、流程复杂。身份验证常伴有不完全的加密,以防止身份信息被窃听。常见的身份验证方式是VPN、数据库的登陆。

数据加密即是指对将送往双绞线上的数据流进行加密,再由接收者解密。它的优点是数据安全性高,断线时也不需要对授权进行撤销,缺点是计算量大消耗更多时间,没有登入机制则难以大规模公开使用。只要对数据进行加密,所有通信规约都可以用于公网。

公共网络需要身份确认和探测和自恢复设计

身份确认是确认信息是否是授权设备发出的逻辑,对于有登入机制的通信流程,身份确认是流程中必然存在的一个环节。对于仅依赖数据加密的通信方式,身份确认可以使用与身份相关的校验码、RSA密钥的匹配来实现。不论是登入还是校验,密钥总是会被一定程度上地公开。

探测和自恢复是确认网络设备是否存在,并在恢复通信时自动重新授权的逻辑。对于TCP客户端,可以在应用层按时通信得到服务器端是否还在线的状态。对于TCP服务器端,可以收到对方主动下线的消息,但是异常断线仍然需要接收心跳包并以超时机制判断。对于UCP和485这种无连接状态的链路,主机使用主动访问通过是否有回复确定从机是否在线,从机只有心跳超时逻辑这一种选择。若使用登入机制,自恢复的过程包含重新登入流程。若仅加密数据无登入,则自恢复的过程就是直接开始正常通信。

简单的公网通信方案

  1. tcp/ip/http post application/json携带加密的数据报文和身份信息,具有身份验证和数据加密两种功能,又能很方便地和WEB工程通信,其地位等同于现场485总线上的Modbus-RTU,是一种广泛、公认、简单、强大的公网通信方案。不建议使用https。https需要几十倍的通信时间,而且https不具备双向身份校验的功能。它的缺点是http短连接在公网上会浪费额外的时间。
  2. RSA加密后通过公网TCP Socket通信。这是一种比较适合于自建平台的方案。适合使用自制的软件或SDK通过公网进行数据同步,再从局域网或localhost将数据以任意方式传送给其它进程或子程序。它可以采用长连接工作,效率更高,但没有办法提供登入机制,无法公开给公众使用。
  3. VPN。使用VPN意味着数据的安全性和稳定性更低一些,换来的好处是开发难度更低。使用VPN和RSA加密可以达到比http登入更高的安全性,但仍然不适合开放给公众使用。

复杂的主流方案

  1. MQTT、OPC及其它公网数据库交换数据。所有数据库类型的通信方案都有一个很大的问题,就是通信规约不完善,自由度较高,但又有一定程度的限制。所有的数据标签、数据类型都没有定义,只知道如何与数据库连接和一个可能性的范围。这种情况下开发难度并不会有什么好的改观,我们依然不知道别人的设备会产生什么数据。但这种方法可以节省一些设计时间。比如MQTT已经定义了有效负载是UTF8字符串,那么我们就不会花时间去考虑非UTF-8的可行性了,也不考虑二进制的可行性了。OPC需要对数据库进行数据定义,附带的好处是可以产生一份数据标签的类型的清单,这样我们就不会花时间再去建一份清单了。
  2. 使用扩展的Modbus进行通信。扩展的Modbus实际上已经不是兼容的通信规约了,也没有规定登入机制,其实没有必要再按Modbus的方式去设计报文。但Modbus是唯一的一种实际上通用的兼容通信规约,对于简单数据类型的通信有较好的借鉴价值。
  3. 使用云服务或转换器。云服务和转换器的配置工作较多,但有成品的通信规约程序,可以节省研发工作。成本较高,云服务的可信度较低。使用云或转换器意味着将技术问题中的主要部分交给别人解决,是一种降低工程难度的好办法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工业通信网络结构 的相关文章

随机推荐

  • Java-抽象类和抽象方法

    Java 抽象类和抽象方法 1 概念 Abstract用来修饰类 方法 修饰类 此类不能实例化 抽象类中一定有构造器 便于子类实例化时的调用 设计子类对象实例化的全过程 开发中 都会提供抽象类的子类 让子类进行对象的实例化 完成相关操作 修
  • EduCoder_web实训作业--交互元素

    第一关 A C B A B 第二关
  • 重装Ubuntu18.04双系统

    重装Ubuntu18 04双系统 1 检查电脑设备 2 Ubuntu18 04 下载 3 下载UltraISO 3 1 win10遇到无法连接虚拟磁盘服务解决方法 4 安装Ubuntu系统 1 检查电脑设备 https www cnblog
  • RSA的数学运算步骤

    原创文章 绝非抄袭 叙述一下我学了很久的一个RSA公钥加密 很多地方在用的一种安全的加密方法 以前只知道那种老式电报的加密 两边各拿一个对照表 什么数字对什么字 倒是很好理解 算是对称加密 在学校的时候就讨论过很长时间的公钥加密 一直理解不
  • Huffman-哈夫曼编码算法详解

    1 概述 背景 哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法 其压缩率通常在20 90 之间 哈夫曼编码算法用字符在文件中出现的频率表来建立一 个用0 1串表示各字符的最优表示方式 给出现频率高的字符较短的编码 出现频率较低的字符
  • Linux系统之ifconfig命令的基本使用

    Linux系统之ifconfig命令的基本使用 一 ifconfig命令介绍 1 ifconfig简介 2 ifconfig注意事项 3 ifconfig命令特点 二 ifconfig命令的使用方法 1 查看ifconfig的帮助信息 2
  • LeetCode 之 剑指 Offer 11. 旋转数组的最小数字(Java)

    文章目录 LeetCode 之 剑指 Offer 11 旋转数组的最小数字 Java 一 题目 二 解题思路 三 代码 LeetCode 之 剑指 Offer 11 旋转数组的最小数字 Java 一 题目 剑指 Offer 11 旋转数组的
  • 机器视觉之霍夫变换提取直线

    机器视觉之霍夫变换提取直线 import cv2 as cv import numpy as np img cv imread home local EUROPRO guoliang wang OpenCV opencv samples d
  • 使用Visual Studio Profiler分析程序性能

    Profiler 是 Visual Studio 中集成的性能分析工具 它主要用于分析程序中所有函数调用所占的耗费时间 它提供了Sample和Instrumentation两种检测方式 能够生成简洁易读的报告 它只适用于Team Suit版
  • 怎样修改linux时区

    怎样修改linux时区 如果你的 Linux 系统时区配置不正确 必需要手动调整到正确的当地时区 NTP 对时间的同步处理只计算当地时间与 UTC 时间的偏移量 因此配置一个 NTP 对时间进行同步并不能解决时区不正确的问题 所以大家在用了
  • vue项目,ie11 浏览器报 Promise 未定义的错误

    报错 description Promise 未定义 message Promise 未定义 name ReferenceEr number 2146823279 stack ReferenceEr 解决办法 1 npm install b
  • AIDL实现跨APP通信(双向通信)

    某天 接到了一人任务要在两个app互相传递一些消息 上网查了以后发现有几种方式 第一是广播 第二是AIDL 由于初出茅庐全不会就选择了AIDL 下面简单粗暴的开始贴代码好了 也是得到了网上的一些借鉴 若有雷同 嗯你懂的 1 我们需要先建立A
  • SVN出现:原始内容“XXXX“不存在

    缘由 偶然一次在工作期间 策划的svn出现了 原始内容 XXXX 不存在 的提示 无论是用清理 还是还原都无效 由于是第一次遇到所以记录一下解决过程 分析 从提示上看大致可知是某个文件不存在了 估计是异常操作svn导致一些文件丢失 据网上资
  • Python中的for循环

    Python中的for循环 在Python编程语言中 for循环是一种常用的迭代结构 用于遍历可迭代对象 iterable 它允许我们按照指定的方式重复执行一系列操作 直到满足退出条件 在本文中 我们将详细介绍for循环的使用方式 并提供相
  • 快速排序的优化及其与qsort的比较

    快速排序是用的最多的一种排序方法 编程珠玑 在第十一章 排序 中讨论了快速排序的几个版本 其实版本的不同 都是体现在partition函数上 partition版本1 其实就是 算法导论 给出的版本 很好理解 int partition1
  • 在main函数实现两个数的输入并用函数实现两个数的值相换(两种方法实现)

    在main函数实现两个数的输入并用函数实现两个数的值相换 1 方法一 void f int x int y 定义 声明函数 int t 临时变量 t x x y y t 关于汉诺塔这个是最简单的算法 include
  • python lambda函数排序_python笔记-lambda函数、sorted函数、map函数

    1 lambda函数 又称匿名函数 示例如下 def f x return x 2 print f 4 16 g lambda x x 2 print g 4 16 2 map函数 print map lambda x x 2 range
  • 分布式任务调度(XXL-JOB)

    什么是分布式任务调度 任务调度顾名思义 就是对任务的调度 它是指系统为了完成特定业务 基于给定时间点 给定时间间隔或者给定执行次数自动执行任务 通常任务调度的程序是集成在应用中的 比如 优惠卷服务中包括了定时发放优惠卷的的调度程序 结算服务
  • 减小android button的大小

    当我们仅需要按钮的大小恰当包裹其中文本的大小 尽可能减小多余的空白空间 第一种方式 我们可以直接设置button属性 minHeight和minWidth android minHeight 0dp android minWidth 0dp
  • 工业通信网络结构

    工业通信网络结构 工业通信网络包含所谓的工业现场总线 局域网 公网等概念 这些概念在物理环境下并不是界线分明的 是一种主观上的分类 在物理环境下 目前工业网络结构都是设备与双绞线之间的通信 可以互相通信的设备与双绞线的集合称为网络 当网络中