最近有位博友提出了一种应用场景,根据工作中实际遇到的类似的产品应用场景,记录下自己的解决方案。

场景: 需要在云端控制和采集各个站点的PLC数据。各个站点是分散的,每个站点有公网访问能力,但是分散站点的PLC没有固定IP,部分站点PLC设备不止一台。

方案一:

在这种场景下,其实最优和高效的解决方案是,使用物联网网关+MQTT的方式最可靠。这种方案比较简单,在每个站点的PLC上层加上物联网网关,网关与PLC设备进行数据通信。物联网网关一般支持多种数据协议,包括像Modbus等工控协议。

所以使用物联网网关 就不需要考虑设备层的协议解析问题,这部分工作网关内已经集成过了,然后网关多数会以MQTT的形式发送数据,MQTT报文多数为JSON格式的明文。所以采集只需按照不同厂家的网关的上传格式解析json字符串就能拿到数据,

控制的话流程也是这样,按照指定的格式拼装JSON字符串通过MQTT发送即可,MQTT服务的搭建我在之前的博客中介绍过,这里不在赘述。

所以使用物联网网关可以省去很大一部分工作量,但是缺点就是网关的费用是一笔不小的支出。还有就是现场没有宽带网络的话就需要使用物联网卡,通过3/4/5G通道传输。这样的话流量费也是比较大的支出。

所以项目经费充足,稳定性要求高的话可以采用这种方案。

方案二:

这里重点介绍下经济实惠的方案二。方案二采用Modbus协议直读的方式.

简单介绍下大致思路,首先站点分散,每台PLC没有固定IP,这样的话传统方式,在云服务器安装组态然后再去给各个PLC建点,读取数据的方式显然走不通。因为再云服务器找不到各个站点的PLC,在这种情景下,云服务器对各个PLC是可见的,

因为云服务器有公网IP,各个站点可以访问,但是云服务器无法访问到各个设备,因为他们不在一个局域网里。

所以传统路线是无法获取数据。考虑下别的思路。

在这里考虑用到虚拟串口+Modbus 直读的方式实现,这也是在类似项目遇到相同问题后的解决方案。在中小型规模的情况下满足使用需求,数据采集响应时间在5s内,当然也可以对程序进一步优化达到更好的效果。

具体方法:

步骤一,打开虚拟串口工具,监听TCP端口,注意选择TCPServer,端口选择已经映射过的且公网能访问的端口即可,

第二步:在与PLC相连的DTU上配置好 IP和端口,就是上面配置的监听端口。这样的话站点PLC 就通过TCP的形式和服务器建立起了连接。说到这里大家应该就清楚了,通过DTU和虚拟串口的目的,就是间接的将PLC与服务器连接在一起,这就好比通过一根无形

的串口线将PLC与服务器连接在一起,这样的话。接下来就该怎么读取就怎么读了,直接通过modbus从虚拟串口读取就可以了。控制也是一样。

我这里用Modsim模拟PLC

Modsim 连接串口三 COM3,这里TCPClient 就是实际应用中的DTU,连接到服务器的 8234 端口。这样PLC就与服务器连接上了。

然后,这里服务器我用kepserver 建了2个点模拟读取,

读取成功

这里大家可能会有疑问,如果多台PLC怎么办,其实是一样的,但是这里的多台PLC需要通过PLC 的DeviceID来区分。 多台PLC也是统一发到服务器的一个监听端口的。

这样,这种思路的PLC数据读取的方式就结束了。其实效果还是可以的。

特定场景下的PLC 远程控制和数据读取的更多相关文章

  1. 自己总结的C#编码规范--3.特定场景下的命名最佳实践

    特定场景下的命名最佳实践 命名空间 要使用PascalCasing,并用点号来分隔名字空间中的各个部分. 如Microsof.Office.PowerPoint 要用公司名作为命名空间的前缀,这样就可 ...

  2. 特定场景下Ajax技术的使用

    ajax介绍 jax技术包含了几种技术:javascript.xml.css.xstl.dom.xhtml和XMLHttpRequest七种技术,所以ajax就像是粘合剂把七种技术整合到一起,从而发挥 ...

  3. 特定场景下SQL的优化

    1.大表的数据修改最好分批处理. 1000万行的记录表中删除更新100万行记录,一次只删除或更新5000行数据.每批处理完成后,暂停几秒中,进行同步处理. 2.如何修改大表的表结构. 对表的列的字段类 ...

  4. HBase指定大量列集合的场景下并发拉取数据时卡住的问题排查

    最近遇到一例,HBase 指定大量列集合的场景下,并发拉取数据,应用卡住不响应的情形.记录一下. 问题背景 退款导出中,为了获取商品规格编码,需要从 HBase 表 T 里拉取对应的数据. T 对商品 ...

  5. 使用Swoole测试MySQL在特定SQL下的并发性能

    场景描述 从全文检索或者缓存中获取ID,根据ID查询数据库获取基础信息,进行页面展示 SQL:select * from table where id in(id1,id2,id3...id40) 此 ...

  6. 亿级流量场景下,大型缓存架构设计实现【1】---redis篇

    *****************开篇介绍**************** -------------------------------------------------------------- ...

  7. 美团在O2O场景下的广告营销

    美团作为中国最大的在线本地生活服务平台,覆盖了餐饮.酒店.旅行.休闲娱乐.外卖配送等方方面面生活场景,连接了数亿用户和数百万商户.如何帮助本地商户开展在线营销,使得他们能快速有效地触达目标用户群体提升 ...

  8. 浅谈Vue不同场景下组件间的数据交流

    浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完 ...

  9. mock以及特殊场景下对mock数据的处理

    一.为什么要mock 工作中遇到以下问题,我们可以使用mock解决: 无法控制第三方系统某接口的返回,返回的数据不满足要求 某依赖系统还未开发完成,就需要对被测系统进行测试 有些系统不支持重复请求,或 ...

随机推荐

  1. asp.net中挺高性能的24种方法

    那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置 ...

  2. 如何修改visual-studio的sln文件和project工程名

    关于VS的 .sln 文件和 .suo 文件 *.sln:(Visual Studio.Solution) 通过为环境提供对项目.项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中.比如是 ...

  3. 1组-Alpha冲刺-1/6

    一.基本情况 队名:震震带着六菜鸟 组长博客:https://www.cnblogs.com/Klein-Wang/p/15526531.html 小组人数:7人 二.冲刺概况汇报 王业震 过去两天完 ...

  4. Go语言核心36讲(Go语言实战与应用十二)--学习笔记

    34 | 并发安全字典sync.Map (上) 我们今天再来讲一个并发安全的高级数据结构:sync.Map.众所周知,Go 语言自带的字典类型map并不是并发安全的. 前导知识:并发安全字典诞生史 换 ...

  5. vue 事件监听和es6模板语法

    es6模板语法的反引号是通过左上角的飘字符弄出来了,学废了吗?

  6. Apache Kafka分布式流处理平台及大厂面试宝典v3.0.0

    概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Apache Kafka官网地址 http://kafka.apache.org/ 最新版本为 3.0.0 Apach ...

  7. HelloWorld与java运行机制

    HelloWorld 新建文件夹存放代码 新建一个java文件 文件后缀为.java Hello.java 注意文件拓展名改为java文件 编写代码 public class Hello{ #类名 p ...

  8. 提升 RTC 音频体验 - 从搞懂硬件开始

    前言 RTC(实时音视频通信)技术的快速发展,助力了直播.短视频等互动娱乐形式的普及:在全球疫情持续蔓延的态势下,云会议需求呈现爆发式增长,进一步推动了 RTC 行业的快速发展.为了给客户提供稳定可靠 ...

  9. 如何在 Kubernetes 集群中玩转 Fluid + JuiceFS

    作者简介: 吕冬冬,云知声超算平台架构师, 负责大规模分布式机器学习平台架构设计与功能研发,负责深度学习算法应用的优化与 AI 模型加速.研究领域包括高性能计算.分布式文件存储.分布式缓存等. 朱唯唯 ...

  10. Linux 使用wpa_supplicant手动配置连接wifi

    Linux 使用wpa_supplicant手动配置连接wifi wpa_supplicant 简介 wpa_supplicant是Linux BSD, Mac OSX和Windows的WPA的服务, ...