无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

TDengine在SCARM云設備服務平臺的使用

科大(da)智能 張少華, 黃一多

2020-03-04 / ,

小 T 導讀:科大智能(neng)(CSG)是(shi)(shi)全國(guo)領先的工(gong)業智能(neng)化(hua)解決方案(an)供應商(shang)之一。SCARM是(shi)(shi)CSG開(kai)發(fa)的遠程(cheng)監控(kong)與維(wei)護管理平臺(tai),是(shi)(shi)典型的物聯網(wang)應用,開(kai)發(fa)團隊在(zai)評估不同的物聯網(wang)開(kai)發(fa)框(kuang)架后,選用了(le)TDengine Database。

設備監測與預測性維護業務場景介紹

設(she)(she)備預(yu)(yu)測性維護是(shi)在物(wu)流裝(zhuang)(zhuang)備/機臺等(deng)生(sheng)產(chan)設(she)(she)備上加裝(zhuang)(zhuang)物(wu)聯(lian)網傳感器,實(shi)時采集設(she)(she)備運行(xing)過程中的狀態數(shu)(shu)據(ju),運用邊(bian)緣端(duan)/云(yun)端(duan)的設(she)(she)備維保(bao)知(zhi)識庫,管理設(she)(she)備維保(bao)作業(ye),預(yu)(yu)警設(she)(she)備故障發生(sheng)風險;形成物(wu)聯(lian)采集端(duan)—邊(bian)緣計算端(duan)—云(yun)端(duan)大數(shu)(shu)據(ju)端(duan)的管理閉(bi)環。這個閉(bi)環產(chan)生(sheng)的行(xing)業(ye)價值是(shi)巨大的:

  • 按計劃保養設備,有效延長設備使用壽命;
  • 預警設備故障風險,保障生產安全;
  • 提供遠程故障診斷工具,沉淀維保經驗到知識庫,為設備廠商創造增值服務,指導第三方維保服務;
  • 量化管理維保作業,為第三方維保服務質量提供管理依據;
  • 運用實時監控和數據分析等技術手段,借助邊緣策略,及時處理現場宕機、來料短缺等突發情況。

SCARM是CSG開(kai)發(fa)的遠程監控與(yu)維(wei)護管理平臺(tai)。運(yun)用(yong)物聯網技術(shu),實時監控堆垛機、穿梭車(che)、提升機等(deng)物流設(she)(she)備(bei)(bei)的運(yun)行狀態,結合(he)維(wei)保作業管理數據,計(ji)算設(she)(she)備(bei)(bei)故(gu)障(zhang)風(feng)險,指導用(yong)戶采取適當措施排除設(she)(she)備(bei)(bei)故(gu)障(zhang)風(feng)險,降低(di)設(she)(she)備(bei)(bei)由于維(wei)護不(bu)當所致的停機風(feng)險。

實現目標如下:

  1. 采集和存儲堆垛機、穿梭車、提升機等設備實時運行數據;
  2. 實時展示儲堆垛機、穿梭車、提升機等運行情況,比如電機的電壓、電流、行走速度、異常噪音等;
  3. 預防性維護,綜合分析設備運行與維護作業數據,推算設備故障風險;
  4. 按期生成檢查和維護保養計劃,管理維保作業,保障生產安全。

設計系統的業務流程

SCARM是典型的(de)(de)物(wu)(wu)聯(lian)(lian)網(wang)(wang)應用,邊緣計(ji)算(suan)(suan)節點推送的(de)(de)數(shu)據經消(xiao)息隊(dui)列分發給流(liu)式計(ji)算(suan)(suan)模(mo)(mo)(mo)塊(kuai)及日志存儲模(mo)(mo)(mo)塊(kuai),物(wu)(wu)化(hua)模(mo)(mo)(mo)型與以(yi)關(guan)系數(shu)據庫為中心的(de)(de)模(mo)(mo)(mo)型有很大區(qu)別,開發團隊(dui)在評估不同的(de)(de)物(wu)(wu)聯(lian)(lian)網(wang)(wang)開發框(kuang)架(jia)后,選用了TDengine Database。我們以(yi)一個例子來展示TDengine簡(jian)單易用的(de)(de)編程(cheng)接(jie)口,及如何用它解決物(wu)(wu)聯(lian)(lian)網(wang)(wang)特有的(de)(de)流(liu)式計(ji)算(suan)(suan)問題。例子的(de)(de)編程(cheng)思路如下:

  1. 采集服務采集設備數據,并傳遞到MQTT Server進行數據推送;
  2. 數據處理服務訂閱MQTTServer的最新數據,進行協議解析,將具體的字段進行處理,并調用TDengine的JDBC標準接口寫入數據;
  3. 再往上的架構就是標準的MVC架構:應用層調用服務層獲取到數據層(TDengine時序數據庫)中設備的統計及分析數據,并返回進行展示和操作;
  4. 通過Grafana直接連接數據層TDengine數據庫,在應用層展示設備的實時數據情況。

這(zhe)里(li)需要(yao)注意的(de)(de)(de)是,TDengine是一(yi)個設(she)備(bei)(bei)(bei)一(yi)張表(biao)的(de)(de)(de)設(she)計思(si)路,因此在(zai)步驟(zou)2的(de)(de)(de)數(shu)據(ju)(ju)處理服務中(zhong),我(wo)(wo)們根據(ju)(ju)項目(mu)及(ji)設(she)備(bei)(bei)(bei)類(lei)(lei)(lei)型在(zai)TDengine時(shi)序數(shu)據(ju)(ju)庫(ku)中(zhong)先建好(hao)超級(ji)表(biao)(每(mei)(mei)類(lei)(lei)(lei)設(she)備(bei)(bei)(bei)一(yi)個超級(ji)表(biao),定義好(hao)該類(lei)(lei)(lei)設(she)備(bei)(bei)(bei)要(yao)采集的(de)(de)(de)字段,以(yi)及(ji)一(yi)些靜(jing)態標簽如設(she)備(bei)(bei)(bei)ID、分組等)和每(mei)(mei)個設(she)備(bei)(bei)(bei)對(dui)應(ying)的(de)(de)(de)子表(biao)。在(zai)MQTT協議解析后(hou),每(mei)(mei)臺設(she)備(bei)(bei)(bei)的(de)(de)(de)數(shu)據(ju)(ju)應(ying)存(cun)到其對(dui)應(ying)的(de)(de)(de)子表(biao)中(zhong)。子表(biao)的(de)(de)(de)名(ming)字和設(she)備(bei)(bei)(bei)ID之間要(yao)建立一(yi)種(zhong)映(ying)射(she)關(guan)系(xi),這(zhe)樣在(zai)寫(xie)入數(shu)據(ju)(ju)時(shi)可以(yi)根據(ju)(ju)上報數(shu)據(ju)(ju)中(zhong)的(de)(de)(de)設(she)備(bei)(bei)(bei)ID信息直接找(zhao)到要(yao)寫(xie)的(de)(de)(de)表(biao)名(ming)。當然(ran)整(zheng)個平臺的(de)(de)(de)業務數(shu)據(ju)(ju)還是存(cun)儲在(zai)關(guan)系(xi)數(shu)據(ju)(ju)庫(ku)MySQL中(zhong);一(yi)些用戶(hu)最常用的(de)(de)(de)數(shu)據(ju)(ju)我(wo)(wo)們也(ye)放到了Redis中(zhong)。TDengine可以(yi)解決最新采集數(shu)據(ju)(ju)的(de)(de)(de)緩存(cun)問題,省去了一(yi)些Redis的(de)(de)(de)內存(cun)開銷。

系統(tong)的整體架(jia)構如下圖。

TDengine在SCARM云設備服務平臺的使用 - TDengine Database 時序數據庫

TDengine配置使用

一、安裝和配置TDengine數據庫集群

1. 安裝

在一臺(tai)Linux服(fu)務器上安裝TDengine的過程非常簡(jian)單,只需要執行install.sh腳本(ben),然后執行命令啟動taosd服(fu)務即可(更多可參考 TDengine官網(wang)):

sudo systemctl start taosd

2. 配置數據庫集群(qun)

項目中采用3臺服務器(qi)配(pei)置TDengine數(shu)據(ju)庫集群(qun)。TDengine的(de)(de)分(fen)布式架構中分(fen)為虛(xu)擬數(shu)據(ju)節(jie)(jie)點(dian)和虛(xu)擬管(guan)理節(jie)(jie)點(dian)兩種不(bu)同的(de)(de)虛(xu)擬化節(jie)(jie)點(dian)。虛(xu)擬節(jie)(jie)點(dian)是對物理服務節(jie)(jie)點(dian)的(de)(de)虛(xu)擬化分(fen),其(qi)中數(shu)據(ju)節(jie)(jie)點(dian)的(de)(de)分(fen)布是完全去中心化的(de)(de),而管(guan)理節(jie)(jie)點(dian)則是遵循Master-Slave的(de)(de)方(fang)式。因此再集群(qun)配(pei)置時,要配(pei)置一下管(guan)理節(jie)(jie)點(dian)主節(jie)(jie)點(dian)所在服務器(qi)的(de)(de)IP地址(MasterIP),以及(ji)第(di)一備選節(jie)(jie)點(dian)的(de)(de)IP(SecondIP)。

首(shou)先在3臺服務(wu)器均完成(cheng)TDengine安裝后,先不要啟(qi)動(dong)服務(wu),在每臺服務(wu)器的taos.cfg文件中添加(jia)MasterIP、SecondIP以及PrivateIP的配置(zhi)信息(xi)。之后,啟(qi)動(dong)3臺服務(wu)器上的taosd服務(wu),并(bing)用taos客戶端連入主節點所在服務(wu)執行(xing)

create dnode <DataNodeIP>

其中(zhong)<DataNodeIP>是具體的第二臺服務器的通信IP地址。這樣這臺服務器就被(bei)加入(ru)到了(le)集群中(zhong)。

仿照(zhao)上述操(cao)作配(pei)置(zhi)第三臺服務(wu)器后,通過show dnodes命令(ling)可查詢(xun)配(pei)置(zhi)的集群節點如下(xia):

TDengine在SCARM云設備服務平臺的使用 - TDengine Database 時序數據庫

到此,集群(qun)配(pei)置成功(gong)。

二、創建Spring Boot項目,配置taos依賴及參數

在SpringBoot項目的pom.xml文件中加(jia)入taos的jdbc依賴:

<dependency>  
    <groupId>com.taosdata.jdbc</groupId>  
    <artifactId>taos-jdbcdriver</artifactId>  
    <version>1.0.1</version>  
</dependency>  

在SpringBoot項目(mu)的.yml文(wen)件(jian)中配置公共的taos數(shu)據庫(ku)連接(jie)url:

spring:
  taos:  
      enable: true  
      jdbcUrl: jdbc:TAOS://192.168.12.28:6020/demo?user=root&password=taosdata
      database: demo

三、實現taos相關業務

打開taos數(shu)據庫連接

try {  
if(connection == null)  
    connection = DriverManager.getConnection(url);  
}catch (Exception e){  
    e.printStackTrace();  
}

創建超級表及設備(bei)的子表

Statement smt = connection.createStatement();  
String sql = String.format(CREATE_SUPER_TABLE, s_name);  
smt.executeUpdate(sql);
sql = String.format(CREATE_TABLE, t_name, s_name, paras[0], paras[1]); 
smt.executeUpdate(sql);  

設備信息的插入

Statement smt = null;  
try{  
      smt = connection.createStatement();  
      return smt.executeUpdate("import into " + sqlBody);  
}catch (Exception e){  
      e.printStackTrace();  
}finally {  
      try {  
          if(smt != null)  
?              smt.close();  
      }catch (Exception e){  
          e.printStackTrace();  
      }  
}  

設備信息的查詢

Statement smt = null;  
List<T> list = new ArrayList<>();  
try{  
    smt = connection.createStatement();  
    result = smt.executeQuery(sql);  
    Field[] fields = clazz.getDeclaredFields();  
    T t = null;  
    while (result.next()){  
        t = clazz.newInstance();  
        for (Field field : fields){  
            field.setAccessible(true);  
            field.set(t, result.getObject(field.getName(), field.getType()));  
        }  
        list.add(t);  
    }  
}catch (Exception e){  
    e.printStackTrace();  
}finally {  
    try{  
        if(smt != null)  
            smt.close();  
    }catch (SQLException se){  
        se.printStackTrace();  
    }  
}

四、配合Grafana的可視化展示

實際效果圖如下圖

TDengine在SCARM云設備服務平臺的使用 - TDengine Database 時序數據庫

使用TDengine的體會

相(xiang)比關系型(xing)數(shu)(shu)(shu)據(ju)(ju)(ju)庫,時序數(shu)(shu)(shu)據(ju)(ju)(ju)庫對量級龐(pang)大(da)的時序數(shu)(shu)(shu)據(ju)(ju)(ju)能高效(xiao)的進行存儲和查詢(xun),而(er)且在(zai)存儲空(kong)間的節省上(shang)也(ye)有很大(da)的優勢(shi)。特別是(shi)使用(yong)(yong)TDengine數(shu)(shu)(shu)據(ju)(ju)(ju)庫,相(xiang)較于一開始使用(yong)(yong)的OpenTSDB時序數(shu)(shu)(shu)據(ju)(ju)(ju)庫,在(zai)I/O的操作(zuo)會(hui)更快,數(shu)(shu)(shu)據(ju)(ju)(ju)存儲空(kong)間占用(yong)(yong)少。再加上(shang)TDengine數(shu)(shu)(shu)據(ju)(ju)(ju)庫輕量、集成簡單的優勢(shi),使用(yong)(yong)方式(shi)靈活,可發揮空(kong)間很大(da)。后續(xu)期望(wang)能通過數(shu)(shu)(shu)據(ju)(ju)(ju)庫自帶(dai)的流(liu)式(shi)計算來(lai)分擔業務上(shang)的一些(xie)計算壓力。

作者簡介:

張少華(第一作者),安徽科大智能物聯高級軟件開發工程(cheng)師,目前負責物聯網應用方向研發工作。

黃一多,安(an)徽科大(da)智能物(wu)聯軟(ruan)件總工程師,目前(qian)主要負責物(wu)聯網、大(da)數據等核心(xin)技術研究工作(zuo)。

公司介紹:

科大智能物聯技術有限公司作為科大智能科技股份有限公司(股票代碼:300222)的重要成員,是面向工業智能物聯解決方案的先驅者和領軍企業。公司在“引領行業發展,促進工業進步”的愿景下,秉承“創造價值、交付價值”的經營理念,致力于將智能算法、大數據技術、物聯網技術等應用在物流與供應鏈、生產工藝優化、智能加工、產品質量檢測與追溯等工業生產的不同領域和環節,將新技術賦能各類制造業企業,實現智能制造,提(ti)升客(ke)戶企業競(jing)爭力,推動行業轉型升級。

原文首發于: