隨著工業(yè)物聯(lián)網(wǎng)時(shí)代的到來(lái),企業(yè)用戶對(duì)建立數(shù)控機(jī)床在日常生產(chǎn)中的監(jiān)控和報(bào)警平臺(tái)的需求越來(lái)越大。通過(guò)搭建對(duì)于數(shù)控機(jī)床的監(jiān)控和報(bào)警平臺(tái),企業(yè)用戶可以隨時(shí)了解自己生產(chǎn)線的工作情況,及時(shí)獲得異常反饋,從而合理安排生產(chǎn),規(guī)避風(fēng)險(xiǎn)等。TDengine作為一款新型的,面向物聯(lián)網(wǎng)的單機(jī)開源的數(shù)據(jù)引擎,以其輕體量、部署快、高寫入查詢性能、低資源占用、高并發(fā)、實(shí)時(shí)響應(yīng)等特點(diǎn),大大降低了監(jiān)控報(bào)警平臺(tái)部署的成本,提高了效率。
技術(shù)架構(gòu)及特點(diǎn)
TDengine的引入使得數(shù)控機(jī)床的監(jiān)控系統(tǒng)架構(gòu)變得極其簡(jiǎn)單。平臺(tái)架構(gòu)如下圖所示:

采集器采集的數(shù)控機(jī)床的監(jiān)控?cái)?shù)據(jù)匯集到MQTT Server上。隨后,數(shù)據(jù)輪詢模塊定期循環(huán)從MQTT Server上拉取數(shù)據(jù),并轉(zhuǎn)換為TDengine理解的SQL語(yǔ)句寫入引擎。TDengine后面可接入各種應(yīng)用程序,實(shí)時(shí)查詢最新數(shù)據(jù)。少量的TDengine的配置信息等也會(huì)經(jīng)過(guò)ETL模塊轉(zhuǎn)換寫入一個(gè)關(guān)系型數(shù)據(jù)庫(kù)(Relational Database),方便各個(gè)應(yīng)用查詢使用。
TDengine的引入使得架構(gòu)變得極其簡(jiǎn)單。一方面,TDengine本身帶有緩存功能,從而使得在應(yīng)用中不需要再部署其他的緩存數(shù)據(jù)庫(kù)來(lái)維持?jǐn)?shù)據(jù)的高可靠。另一方面,TDengine的高并發(fā)性能,使得TDengine在處理高頻率的寫入任務(wù)的同時(shí),可以同時(shí)拉起成百上千的查詢。而TDengine的實(shí)時(shí)性和低資源占用的特點(diǎn)也使得TDengine可以并發(fā)支持各種實(shí)時(shí)請(qǐng)求。
數(shù)據(jù)模型介紹及寫入和查詢
數(shù)控機(jī)床的監(jiān)控量,包括時(shí)間戳和報(bào)警信息在內(nèi)有多達(dá)60幾個(gè)字段。其中大部分字段為整形或浮點(diǎn)型。由于涉及非ASCII碼字符,其中的報(bào)警信息為nchar類型。報(bào)警信息字段的長(zhǎng)度約有1K左右,而且大部分時(shí)候?yàn)榭?。?shù)控機(jī)床的監(jiān)控采集頻率為10秒鐘一次,源源不斷地寫入TDengine。
由于數(shù)控機(jī)床采集數(shù)據(jù)schema的相似性,在建表時(shí),可以采用超級(jí)表建表:
create table cnc_st (cnc_dqtime timestamp, ….) tags (cnc_id binary(64));
然后對(duì)于每臺(tái)數(shù)控機(jī)床創(chuàng)建一張單獨(dú)的表:
create table cnc_9293078 using cnc_st tags ('cnc_9293097');
利用超級(jí)表建表來(lái)處理數(shù)控機(jī)床的監(jiān)控有很大的優(yōu)勢(shì):
- 一方面,超級(jí)表可以看成是很多表的集合。在對(duì)多表進(jìn)行查詢時(shí),可以通過(guò)對(duì)超級(jí)表的查詢?cè)谝粋€(gè)SQL語(yǔ)句中完成,避免進(jìn)行多個(gè)SQL語(yǔ)句的查詢。
- 另一方面,通過(guò)超級(jí)表,可以實(shí)現(xiàn)表與表之間數(shù)據(jù)的聚合。
在數(shù)控機(jī)床的監(jiān)控中,經(jīng)常需要進(jìn)行查詢的是各機(jī)床最新采集數(shù)據(jù)的展示和刷新。在TDengine中,這個(gè)可以通過(guò)一條SQL語(yǔ)句很容易實(shí)現(xiàn):
select last_row(*) from cnc_st group by tbname;
其中,tbname為關(guān)鍵表名關(guān)鍵字,用以按表名對(duì)結(jié)果進(jìn)行分組。TDengine的應(yīng)用大大簡(jiǎn)化了數(shù)據(jù)實(shí)時(shí)獲取的流程,提高了響應(yīng)度。
小結(jié)
不同于其他的大數(shù)據(jù)處理系統(tǒng),TDengine部署極其方便。這使得在搭建數(shù)控機(jī)床監(jiān)控平臺(tái)的過(guò)程中,用戶可以花極少的時(shí)間在數(shù)據(jù)庫(kù)系統(tǒng)的搭建上,大幅縮短工程周期。另外,TDengine的高性能、低資源消耗、實(shí)時(shí)響應(yīng)以及高并發(fā)等特點(diǎn),都使得它在一邊寫入數(shù)據(jù)的過(guò)程中,可以實(shí)時(shí)服務(wù)多個(gè)應(yīng)用的請(qǐng)求。真正做到實(shí)時(shí)響應(yīng),實(shí)時(shí)監(jiān)控。



互聯(lián)網(wǎng).png)



-1.png)




.png)


證.png)


伙伴.png)
伙伴.png)
伙伴.png)



