关于GO在工业互联网方面的一些心得

本文讲述了作者在工业互联网场景中,如何从传统的C#系统转向使用GO语言进行设备管理和数据采集。通过了解GO语言的goroutine特性和influxDB时序数据库,结合Grafana构建了一个高并发、低延迟的数据采集展示系统,有效解决了高并发问题和数据存储效率。初次尝试的成功让作者决定进一步深入GO语言的开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

起因

对GO语言的认识,来自一次与工业圈外朋友的闲聊,彼时我正在思考如何构建一套系统,连接车间设备和管理系统,监控设备上下线状态、设备运行数据和生产指令数据等,在这样的场景中,连接数量多、单一数据量小、单设备数据持续采集的特征就很明显。传统做法是使用C#搭建上位机系统,通过路由器、网关等与每台设备之间通过TCP方式轮训通信,数据采集后存储到关系型数据库,管理系统通过查询关系型数据库得到相应的数据。每当我想到数千台设备同时连入C#后台,轮询批次规划、设备上下线管理、生产指令数据上传下达,再加上关系型数据库的各种表单处理,简直头皮发麻。系统架构进度缓慢,在处理高并发时甚至一筹莫展。

改变

朋友给我介绍说,现在工业互联网应用采用GO语言的比较多。我得承认,在此之前我用过C++、Swift,了解过Python,对于GO语言简直闻所未闻。通过一段时间的了解和摸索,逐步掌握到GO语言中goroutine的魅力。与此同时,发现了同样基于GO高并发特性开发的influxDB时序数据库,完美适配了工业数据采集的高并发、低数据、简单关系、强时序的使用场景,配合上Grafana的炫酷界面,我有一种强烈的预感,这就是我需要的。

初次尝试

为了配合运营商应对一次工业互联网使用情况演示,利用免费的OneNet平台、GO、influxDB和Grafana临时搭建了一套数据采集、展示系统。

生产设备采用西门子S7-1215PLC,装了一块485通信模块,连接到Modbus无线网关,Modbus无线网关自带Modbus TCP转RTU功能,同时集成了MQTT 3.0协议。
将网关配置为向下与PLC通信,采集相应寄存器点位数据、开关量数据;向上按照MQTT协议连接到OneNet平台,以JSON格式上送数据。

用GO语言编写后台采集程序,实际上influxDB有个好伙伴telegraf,可以配置好后无代码采集MQTT数据,尝试过官方教程,无果,索性自己编写数据采集代码,好处是可以自由发挥、任意配置。采集程序访问OneNet平台api,get各项数据,并存储到influxDB相应m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会写代码的销售不是好领导

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值