關於GO在工業網際網路方面的一些心得

2021-10-20 18:26:18 字數 1146 閱讀 6724

對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相應measurements中。

時間和條件有限,用一台5年前的台式電腦搭配win10做伺服器,配置完成後,系統跑了大半個月,資料庫中資料完備,完全按照資料採集間隔、沒有任何資料丟失,由於influxdb資料行中自帶時間戳,檢索極其便利,同時influxdb效能本就強悍、查詢速率極高,在對歷史資料的整理和鑑別時極其便利,體驗相當舒適。

經過這次的嘗試,我更加堅定了進一步深入go語言開發的想法,並進行了多次嘗試。後面的文章中將分別說明。

簡訊驗證碼在網際網路方面的應用

在 簡訊驗證碼平台 簡訊驗證碼在 中的應用有很多,比如電商和 類的 這些 每天有大量的人群訪問。使用者每次在不同機器登入時,都會收到企業傳送的簡訊驗證碼,只有正確輸入簡訊驗證碼,才可以正常登入進行訪問,在後續的支付過程也一樣。這樣就極大的防止使用者賬戶被盜的發生,減少客戶的損失。簡訊驗證碼在網際網路...

網際網路 工業視覺分析

我國工業網際網路已經形成 三條途徑 一是打造智慧型工廠,提高企業內部生產效率,就是通過我們現在網際網路技術以及一些相關的機器視覺 圖象演算法 模式識別的方式,提高企業的生產效率 二是打造智慧型產品,延伸企業外部的價值鏈 三是匯聚產業鏈資源,實現向平台運營的轉變,打造資料驅動的生態運營能力。在端 雲解...

工業網際網路後台開發

jsonformat pattern yyyy mm dd hh mm ss timezone gmt 8 datetimeformat pattern yyyy mm dd hh mm ss private date time jsonformat 預設是標準時區的時間,多出現少8小時的情況 使用...