作者介紹: 徐子攀,上海旬思科技(ji)有限(xian)公司(si)研發總監,長期從(cong)事底層工業通訊協議開發,獨立完成(cheng)多種主流PLC、流量計(ji)等(deng)工業設備通訊采集(ji)(ji)驅動(dong)開發,對工業現場數據采集(ji)(ji)相關技(ji)術有深入研究(jiu)。近(jin)年(nian)參與工業互聯網平(ping)臺構建工作,負責平(ping)臺架構設計(ji)以及主要業務代(dai)碼開發工作。
上(shang)海旬思科技有限公(gong)司專注于工業(ye)大數(shu)據平臺(tai)實時數(shu)據采集、設備遠(yuan)程(cheng)監測及預測性(xing)維護、機器協同互(hu)聯、遠(yuan)程(cheng)實時控(kong)制等(deng)多個工業(ye)領域(yu)。背靠上(shang)海臨(lin)港(gang)新(xin)片區針對(dui)工業(ye)互(hu)聯網、智能(neng)制造(zao)領域(yu)的(de)產業(ye)扶(fu)持,打造(zao)國內工業(ye)互(hu)聯網行業(ye)先進產品和技術(shu)的(de)先鋒企業(ye)。
旬(xun)思工業(ye)(ye)互(hu)(hu)聯(lian)平臺(TServer)是面(mian)向(xiang)工業(ye)(ye)企業(ye)(ye)建立(li)大(da)數(shu)據平臺的產品(pin)解(jie)決(jue)方案(an),提供數(shu)據采(cai)集(ji)、解(jie)析、展示、報警、統(tong)計、查詢、分析以(yi)及(ji)遠程運維(wei)通道管理等功能,內置實時數(shu)據庫(ku)引擎,融合傳統(tong)SCADA軟件和工業(ye)(ye)互(hu)(hu)聯(lian)網架(jia)構技術,適(shi)用(yong)于工業(ye)(ye)互(hu)(hu)聯(lian)網行業(ye)(ye)的賦(fu)能創新。
項目背景和技術難點
湖北某特(te)鋼公司的(de)(de)電(dian)(dian)(dian)(dian)力(li)能(neng)源(yuan)介(jie)質(zhi)的(de)(de)計(ji)量(liang),是(shi)通過TBox工控網(wang)(wang)(wang)關(guan)采(cai)集(ji)多(duo)功能(neng)電(dian)(dian)(dian)(dian)表來實(shi)現的(de)(de)。按照《關(guan)于(yu)湖北電(dian)(dian)(dian)(dian)網(wang)(wang)(wang)2020-2022年輸配電(dian)(dian)(dian)(dian)價(jia)和(he)銷售(shou)電(dian)(dian)(dian)(dian)價(jia)有關(guan)事項的(de)(de)通知》,需(xu)要(yao)完(wan)善并(bing)實(shi)現“峰谷平尖”電(dian)(dian)(dian)(dian)能(neng)量(liang)費率計(ji)量(liang)和(he)能(neng)源(yuan)報表。TBox工控網(wang)(wang)(wang)關(guan)基于(yu)前(qian)期項目實(shi)施(shi)和(he)實(shi)際應用需(xu)求提(ti)供了完(wan)整的(de)(de)技術方案,包含(han)從電(dian)(dian)(dian)(dian)表采(cai)集(ji)電(dian)(dian)(dian)(dian)能(neng)數據并(bing)寫入TDengine時序數據庫,再(zai)經過ETL工具處理后(hou)轉存到(dao)Oracle數據庫,從而滿(man)足企(qi)業一期電(dian)(dian)(dian)(dian)能(neng)量(liang)數據報表對實(shi)時數據采(cai)集(ji)和(he)存儲的(de)(de)要(yao)求。
本項(xiang)目(mu)(mu)主要接(jie)入(ru)的能源(yuan)(yuan)介質(zhi)有(you):電(dian)(dian)力(li)、焦爐(lu)煤氣(qi)(qi)、高爐(lu)煤氣(qi)(qi)、轉爐(lu)煤氣(qi)(qi)、壓(ya)縮空(kong)氣(qi)(qi)、天(tian)然氣(qi)(qi)、氧氣(qi)(qi)、氮氣(qi)(qi)、氬氣(qi)(qi)、蒸汽、凈水、軟水、除鹽水和生(sheng)活水等(deng),項(xiang)目(mu)(mu)一期首先要求采集電(dian)(dian)能量數(shu)據(ju),其中(zhong)需(xu)要接(jie)入(ru)的電(dian)(dian)表(biao)多達874塊,電(dian)(dian)力(li)能源(yuan)(yuan)數(shu)據(ju)已超(chao)20000點(dian)(dian),每天(tian)產生(sheng)的數(shu)據(ju)量在(zai)2800萬條(tiao)(tiao)以(yi)上(shang);項(xiang)目(mu)(mu)二期如果(guo)再(zai)接(jie)入(ru)非(fei)電(dian)(dian)數(shu)據(ju),還會有(you)幾千個(ge)流量設備的接(jie)入(ru),整個(ge)系統(tong)數(shu)據(ju)點(dian)(dian)也將遠超(chao)50000點(dian)(dian),每天(tian)產生(sheng)的數(shu)據(ju)量預(yu)估在(zai)1億條(tiao)(tiao)左右。
在設備通訊數據(ju)采集方(fang)面,我們一直(zhi)處于行業領先水平;但對于大數據(ju)量(liang)的(de)存儲(chu),選擇什(shen)么(me)樣的(de)數據(ju)庫,是否(fou)也能滿足二期大數據(ju)量(liang)的(de)接(jie)入能力,給我們帶(dai)來(lai)了(le)極大的(de)挑戰。

本項目特點:
- 開發周期短:用戶要求系統一個月上線;
- 穩定性要求高:工業應用的特點,系統無人化運維;
- 單機性能要求:在用戶提供的一臺16核32G內存服務器上,需要完成所有工作,包含數據上傳、處理和轉存等服務;
- 系統兼容性:同時要考慮滿足二期50000+點的數據接入能力。
選擇 TDengine Database 的理由
為了解決大數據(ju)量帶來的數據(ju)存儲(chu)難點,以及滿足系(xi)統性能要求(qiu),我們(men)在數據(ju)庫選型方面,做了充分的調(diao)研(yan):
- MySQL:傳統關系型數據庫
開源(yuan)免費,安裝使用簡單,維護成本低,很少宕機,支持多(duo)操作系統。
- InfluxDB:時序數據庫
可(ke)以高性能地查詢與(yu)存儲時(shi)序型(xing)數據,被廣泛應(ying)用于存儲系統的(de)監控數據、IoT行(xing)業的(de)實時(shi)數據等場景;集群功(gong)能沒有開源。
- TDengine:國產時序數據庫
國產開(kai)源,針對工(gong)業互聯網場景(jing)做了(le)大量優化,同時還支(zhi)持(chi)滑動窗口(kou),流式(shi)計算。開(kai)源了(le)集群版本。
分析(xi)項(xiang)目需求不難發現,時(shi)序(xu)數(shu)(shu)據(ju)(ju)庫(ku)更適(shi)合此(ci)類工業大數(shu)(shu)據(ju)(ju)應用(yong)。而在同(tong)等數(shu)(shu)據(ju)(ju)集(ji)和硬件環境下,濤(tao)思官(guan)方(fang)的測(ce)試結果顯示,TDengine的寫(xie)入速度遠高于InfluxDB。同(tong)時(shi)TDengine支持多種數(shu)(shu)據(ju)(ju)接口,包含C/C++,Java,Python,Go和RESTful等。由(you)于我們數(shu)(shu)據(ju)(ju)解析(xi)部(bu)分使用(yong)Go語(yu)言(yan)編寫(xie),所(suo)以最(zui)終(zhong)采用(yong)了Go Connector接口方(fang)式進(jin)行時(shi)序(xu)庫(ku)讀寫(xie)。
應用 TDengine Database 的場景、業務架構
本項(xiang)目場景的能源(yuan)管理類數據除(chu)時(shi)序(xu)特征(zheng)外(wai),還具(ju)有(you)其他(ta)多(duo)種明顯特征(zheng):
- 數據結構簡單,寫多讀少;
- 數據極少需要更新或刪除;
- 流量平穩,根據設備數量和采集頻次,可預測;
- 數據保留期限為10年;
- 數據的查詢分析是基于時間段和空間區域;
- 除存儲、查詢操作外,還需要各種統計和實時計算操作;
- 數據量巨大,一天采集的數據可能超過1億條。
根據上述(shu)數據特征(zheng),結合TDengine給的(de)建(jian)議,以及本(ben)項目數據特點(dian)和使(shi)用場景,我們做了以下優化設(she)計:
- 包含模擬量,數字量,報警,系統日志等類型數據,同類型使用一個超級表集合;
- 單個數據點對應單個表存儲;
- 批量數據寫入,最大化SQL字符串拼接,提高數據寫入效率;
- Go多協程并發寫入,進一步提高寫入效率。
庫結構設計:保(bao)留(liu)update功能(neng),方便后期(qi)對壞數據做二次(ci)處理。

普通(tong)表一覽:基于超級表自(zi)動生產(chan)普通(tong)點表。

電力(li)能源數據一(yi)覽(lan):數據上傳(chuan)平臺(tai)后解析并顯示。

電(dian)力(li)能(neng)源數據(ju)滑(hua)動查詢:根據(ju)查詢時(shi)間長度(du)自適應選(xuan)擇滑(hua)動窗口大(da)小。

下圖是本項目完整業務架構圖,TBox工控網關南向采集現場電力能源數據,北向(xiang)實時(shi)上傳數據(ju)到(dao)TServer工業(ye)互聯(lian)平臺;TServer接收到(dao)數據(ju)后,通過解析(xi)識別,分(fen)類組包高并(bing)發寫入TDengine時(shi)序(xu)庫(ku)。

前期調研,TDengine優勢再體現
在這里我們首先提兩個工業實時數據庫。 一個是Wonderware的(de)高性能(neng)實(shi)時(shi)關系型(xing)數據(ju)(ju)庫InSQL,它集(ji)成(cheng)了微軟公(gong)司(si)的(de)MS SQL Server并對其進行了擴(kuo)展,具有(you)高效數據(ju)(ju)壓縮和(he)數據(ju)(ju)存(cun)儲(chu)等實(shi)時(shi)數據(ju)(ju)庫功能(neng),它比常規關系型(xing)數據(ju)(ju)庫的(de)數據(ju)(ju)采集(ji)速度、存(cun)儲(chu)量高數百倍。
InSQL擴(kuo)展(zhan)了SQL語句,使其具(ju)有了時間特性(xing)。InSQL的(de)(de)(de)運行性(xing)能與所用的(de)(de)(de)硬件系統(tong)有關(guan),單(dan)機可(ke)以在1秒(miao)內完成6萬(wan)個點的(de)(de)(de)取數(shu)(shu)或(huo)存(cun)(cun)儲(峰值(zhi)(zhi))。這個速(su)度與數(shu)(shu)據(ju)存(cun)(cun)貯方(fang)式(shi)無關(guan),采用的(de)(de)(de)周期性(xing)存(cun)(cun)儲(以固定(ding)(ding)的(de)(de)(de)多少(shao)毫(hao)秒(miao)存(cun)(cun)儲一次)或(huo)增量(liang)存(cun)(cun)儲(數(shu)(shu)據(ju)的(de)(de)(de)變化超過(guo)設(she)定(ding)(ding)百分比時存(cun)(cun)一次)。InSQL可(ke)以每秒(miao)存(cun)(cun)儲3萬(wan)點(均(jun)值(zhi)(zhi))或(huo)每100毫(hao)秒(miao)存(cun)(cun)2000點數(shu)(shu)據(ju)。要提(ti)高(gao)數(shu)(shu)據(ju)采集速(su)度,主要障礙是大多數(shu)(shu)數(shu)(shu)據(ju)源(PLC或(huo)DCS)提(ti)供數(shu)(shu)據(ju)的(de)(de)(de)速(su)度趕(gan)不上InSQL取數(shu)(shu)的(de)(de)(de)速(su)度。InSQL的(de)(de)(de)最小分辨率為3.3毫(hao)秒(miao)。
另一個(ge)是OSI的PI數據(ju)庫,每個(ge)PI的高端產(chan)品服務器中(zhong)可(ke)以(yi)處(chu)理每秒鐘(zhong)15萬點的數據(ju)。在客戶端軟件ProcessBook上(shang),可(ke)以(yi)在秒級時間內從2年或3年歷史中(zhong)取到1000點數據(ju)。在OSI的WEB網(wang)站上(shang)有(you)一個(ge)電(dian)子表格可(ke)以(yi)幫助你詳(xiang)細計算(suan)所需的配(pei)置。
TDengine是濤思數據面對高速增長的物聯(lian)網大數據市場和技術挑(tiao)戰推出的創新性的大數據處理(li)產品,在時序空間(jian)大數據處理(li)上,有著自己獨(du)到的優勢(shi)。TDengine單核每秒(miao)能處理(li)至少2萬(wan)次請求(qiu),插入數百(bai)萬(wan)個數據點,讀(du)(du)出一千萬(wan)以上數據點,比現有通(tong)用(yong)數據庫(ku)快十(shi)倍(bei)以上,也遠遠超出了InSQL、PI這兩(liang)個工業實(shi)時數據庫(ku)的讀(du)(du)寫(xie)能力。
TDengine問題解決
使用TDengine過程(cheng)中,幾乎沒有(you)遇到(dao)(dao)什么大(da)問(wen)題。一些(xie)小bug也可以通過版本(ben)升級(ji)解決。這里要(yao)對濤思數據的(de)物聯(lian)網(wang)大(da)數據微信(xin)交流群,以及非常熱心的(de)濤思工程(cheng)師陳(chen)玉同學,在我們一期系(xi)統上線后遇到(dao)(dao)的(de)配置錯誤導致服務(wu)啟(qi)動失敗(bai)的(de)積極(ji)快(kuai)速響應表示感謝。
未來規劃
本項目(mu)一期電(dian)力能源數(shu)據的采集(ji)早已上線運行3個多月,用(yong)戶也非常認可(ke)這套系(xi)統。我們在(zai)給用(yong)戶培(pei)訓過程中,也強力推薦了國(guo)產的TDengine數(shu)據庫,相信未來這些用(yong)戶也將成為TDengine的忠實(shi)粉絲。
我(wo)們正在準備(bei)項目二期非電能數(shu)據的采集,這次(ci)變量會(hui)成倍增長,同時也會(hui)面(mian)臨新的挑戰,比如分布式存(cun)儲,熱冗余備(bei)份等(deng)作(zuo)為大數(shu)據量接入和數(shu)據安(an)全備(bei)份的必要(yao)保(bao)障(zhang)。
經過一(yi)期成功經驗的(de)(de)積累,我們相(xiang)信二期新(xin)系統也會很順利的(de)(de)交付運行。后續在(zai)石(shi)油管道(dao),冶金智(zhi)能制造等更多場景(jing)中,也在(zai)嘗試使用TDengine時序庫作為(wei)我們的(de)(de)存儲方(fang)案。 對于(yu)TDengine,我們也有一(yi)些期待升(sheng)級改進的(de)(de)地方(fang):
- 推出Windows平臺的Server端;
- 更多的SQL語句支持,支持更豐富的復雜計算;
- 更穩定運行,異常不重啟服務。


























