




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《工業(yè)數(shù)據(jù)處理與分析》/工業(yè)互聯(lián)網(wǎng)系列課程
項(xiàng)目二工業(yè)設(shè)備健康維度分析任務(wù)二設(shè)備運(yùn)維指標(biāo)計(jì)算>>目錄任務(wù)說明01《工業(yè)數(shù)據(jù)處理與分析》/工業(yè)互聯(lián)網(wǎng)系列課程知識(shí)準(zhǔn)備02任務(wù)實(shí)施03思考與討論04任務(wù)說明故障預(yù)測(cè)的前提是需要采集到故障數(shù)據(jù),在模型中稱為設(shè)備連接變量,四級(jí)指標(biāo)、三級(jí)指標(biāo)、一級(jí)指標(biāo)通常具備相關(guān)性,可以相互推導(dǎo)和拆分,計(jì)算機(jī)規(guī)則設(shè)置是建模的重要過程,本次任務(wù)將對(duì)故障指標(biāo)進(jìn)行分析,并根據(jù)各級(jí)指標(biāo)建立沖壓機(jī)故障預(yù)警模型。任務(wù)說明學(xué)習(xí)導(dǎo)圖目錄任務(wù)說明01《工業(yè)數(shù)據(jù)處理與分析》/工業(yè)互聯(lián)網(wǎng)系列課程知識(shí)準(zhǔn)備02任務(wù)實(shí)施03思考與討論04內(nèi)置變量平臺(tái)提供了一些內(nèi)置變量,用于協(xié)助物模型屬性進(jìn)行復(fù)雜計(jì)算。變量名說明$inputMap
當(dāng)前工況輸入timestamplong
該變量表示當(dāng)前工況的epoch時(shí)間戳,以長(zhǎng)整型表示,單位:毫秒。支持的控制語(yǔ)句平臺(tái)提供了一些控制語(yǔ)句,在特殊條件下,用于協(xié)助物模型屬性進(jìn)行復(fù)雜計(jì)算。語(yǔ)句語(yǔ)法示例forfor(def元素變量名:數(shù)組變量名){
語(yǔ)句#1
語(yǔ)句#2
…
}sum=0
defelements=[0,1,2]
for(defi:elements){
sum=sum+i;
}
printlnsumwhilewhile(循環(huán)條件){
語(yǔ)句#1
語(yǔ)句#2
...
}sum=0
i=0
while(i<10){
sum++
i++
}支持的數(shù)值計(jì)算函數(shù)平臺(tái)提供了數(shù)值計(jì)算函數(shù),用于協(xié)助物模型屬性進(jìn)行數(shù)值計(jì)算。支持的字符串處理函數(shù)平臺(tái)提供了字符串處理函數(shù),用于協(xié)助物模型屬性的字符串函數(shù)進(jìn)行處理。函數(shù)表達(dá)式說明字符串1.contains(字符串2)字符串1是否包含了字符串2。字符串1.indexOf(子串)字符串1中第一次出現(xiàn)子串的下標(biāo)。字符串1.lastIndexOf(子串)字符串1中最后一次出現(xiàn)子串的下標(biāo)。字符串1.substring(beginIndex)從下標(biāo)beginIndex開始,截取目標(biāo)字符串中的子串。字符串1.startsWith(字符串2)檢查字符串1是否以字符串2開頭。字符串1.endsWith(字符串2)檢查字符串1是否以字符串2結(jié)尾。toLowerCase()將目標(biāo)字符串全轉(zhuǎn)為小寫。toUpperCase()將目標(biāo)字符串全轉(zhuǎn)為大寫。用法示例:$recent("屬性ID")在設(shè)置屬性規(guī)則時(shí),用“$+指標(biāo)名”的方式來實(shí)時(shí)獲取某一個(gè)指標(biāo)值,例如在獲取指標(biāo)的過程中。屬性值調(diào)試屬性值調(diào)試包括設(shè)置屬性值計(jì)算規(guī)則、屬性賦值、運(yùn)行三步。設(shè)置屬性計(jì)算規(guī)則:獲取屬性實(shí)時(shí)值時(shí),使用$recent函數(shù)用來對(duì)齊數(shù)據(jù),否則會(huì)對(duì)表達(dá)式執(zhí)行結(jié)果造成很大影響!屬性值調(diào)試屬性賦值:在給屬性賦值時(shí)需要添加變量,然后給變量賦值當(dāng)屬性當(dāng)前值為null時(shí),在計(jì)算過程中會(huì)取屬性上一值,當(dāng)屬性當(dāng)前值和屬性上一值同時(shí)存在時(shí),屬性上一值會(huì)失效。屬性值調(diào)試運(yùn)行屬性規(guī)則:當(dāng)設(shè)置好屬性規(guī)則,并給屬性賦值后,就可以單擊開始運(yùn)行,當(dāng)電機(jī)開始運(yùn)行后可在運(yùn)行詳情查看結(jié)果,單擊錯(cuò)誤按鈕可以查看錯(cuò)誤信息,單擊清空按鈕可以清空當(dāng)前運(yùn)行結(jié)果。屬性值調(diào)試常見的錯(cuò)誤提示和解決方法:給屬性賦值后,開始運(yùn)行代碼,當(dāng)代碼運(yùn)行成功時(shí),可以在運(yùn)行詳情處查看運(yùn)行結(jié)果,當(dāng)代碼運(yùn)行不成功時(shí),可以單擊“錯(cuò)誤”按鈕,查看錯(cuò)誤提示,如表列舉一些常見的錯(cuò)誤提示和解決方法。問題描述報(bào)錯(cuò)運(yùn)行代碼(或者描述)調(diào)試是否通過物模型發(fā)布是否成功解決方法屬性id報(bào)錯(cuò)或者屬性id不存在unknownpropertyin$recent:xxx(屬性id).調(diào)試不通過發(fā)布不成功正確填寫對(duì)應(yīng)的屬性idgroovy代碼中,定義的變量名與模型的屬性id相同Parseerror:line2:4thepropertyxxx(屬性id)isread-only.Parseerror:line18:4thepropertyxxx(屬性id)isread-only.調(diào)試通過發(fā)布不成功修改定義的變量名或者屬性id,使兩者不相同groovy代碼中,recent()函數(shù)獲取屬性值沒有處理空值情況Cannotexecutenull+null調(diào)試不通過發(fā)布成功用三目運(yùn)算符?:做空值判斷。$recent(屬性id)?:0調(diào)試groovy代碼時(shí),時(shí)間戳沒有賦值CannotinvokemethodlongValue()onnullobject調(diào)試不通過發(fā)布成功調(diào)試時(shí),給時(shí)間戳__timestamp__賦初始值時(shí)間窗口時(shí)間窗口是指在設(shè)置的時(shí)間段內(nèi),對(duì)屬性進(jìn)行處理。為了滿足多種場(chǎng)景的需要,對(duì)于物模型中的規(guī)則指定來源的屬性,平臺(tái)除了支持高級(jí)表達(dá)式外,還支持使用時(shí)間窗口對(duì)屬性進(jìn)行計(jì)算,同時(shí)允許其他屬性使用已經(jīng)使用時(shí)間窗口計(jì)算后的屬性。由于一個(gè)表達(dá)式不能有兩個(gè)時(shí)間窗口,所以當(dāng)表達(dá)式里面有一個(gè)屬性的值是通過時(shí)間窗口算出來的時(shí)候,這個(gè)表達(dá)式就不能在疊加時(shí)間窗口了,因此兩選項(xiàng)不能同時(shí)勾選。時(shí)間窗口時(shí)間窗口參數(shù)說明表參數(shù)說明對(duì)上述規(guī)則添加的函數(shù)使用“規(guī)則指定”的屬性值來源,按照定義的規(guī)則計(jì)算屬性值,再對(duì)其計(jì)算結(jié)果執(zhí)行該函數(shù)計(jì)算,以該函數(shù)計(jì)算結(jié)果作為最終的屬性值輸出。
min:對(duì)目標(biāo)值取最小值。
max:對(duì)目標(biāo)值取最大值。
sum:對(duì)目標(biāo)值求和。
avg:對(duì)目標(biāo)值取平均值。
count:計(jì)算目標(biāo)值有效的個(gè)數(shù)。
dev:對(duì)目標(biāo)值計(jì)算標(biāo)準(zhǔn)差。
range:計(jì)算目標(biāo)值中最大值和最小值的差值。
first:返回目標(biāo)值在窗口中的第一個(gè)非空值。
last:返回目標(biāo)值在窗口中的最后一個(gè)非空值。
majority:計(jì)算目標(biāo)值在窗口中出現(xiàn)最多的值。
例如:規(guī)則指定為B=A*2,對(duì)規(guī)則添加min函數(shù),則最后會(huì)呈現(xiàn)該屬性所有數(shù)值B中的最小值。規(guī)則容納的時(shí)間和規(guī)則執(zhí)行時(shí)間間隔例如:規(guī)則容納的時(shí)間設(shè)為60,規(guī)則執(zhí)行時(shí)間間隔設(shè)為34,則每34秒計(jì)算一次前60秒內(nèi)上述規(guī)則的值。缺省值當(dāng)該屬性為空時(shí)顯示的內(nèi)容,可以為空值、上一有效值,也可以自定義,例如:{"id":"001","name":"用來舉例的"}。時(shí)間窗口使用時(shí)間窗口,每隔固定時(shí)間(步長(zhǎng)),開始對(duì)后面某段時(shí)間區(qū)間(窗口長(zhǎng)度)內(nèi)上報(bào)工況進(jìn)行結(jié)算(使用聚合函數(shù)),如求和、最初值、均值等,并輸出運(yùn)算結(jié)果。假設(shè)為某個(gè)設(shè)備的屬性A上報(bào)工況的情況,該屬性每秒上報(bào)一次工況值,第0秒為初次上報(bào)時(shí)間,其值為a0,第1秒上報(bào)的工況值為a1…,因數(shù)據(jù)上傳頻繁,可以對(duì)時(shí)間窗口功能對(duì)其進(jìn)行聚合。設(shè)置參數(shù)步長(zhǎng)為3秒,窗口長(zhǎng)度為4秒,函數(shù)為均值,那么,每隔3秒開始結(jié)算后4秒屬性A工況的均值。屬性取值范圍設(shè)置在編輯屬性的過程中,可以給屬性設(shè)置取值范圍;還可以預(yù)設(shè)超出范圍后的取值和異常值保留方式。目錄任務(wù)說明01《工業(yè)數(shù)據(jù)處理與分析》/工業(yè)互聯(lián)網(wǎng)系列課程知識(shí)準(zhǔn)備02任務(wù)實(shí)施03思考與討論04梳理物模型指標(biāo)點(diǎn)表根據(jù)任務(wù)一中設(shè)備故障的指標(biāo)體系,梳理設(shè)備物模型的屬性點(diǎn)表。沖壓機(jī)原始屬性點(diǎn)表的部分內(nèi)容屬性名稱屬性ID數(shù)據(jù)類型讀寫操作設(shè)置屬性值來源主電機(jī)溫度motor_tempNumber讀寫連接變量主電機(jī)轉(zhuǎn)速motor_speedNumber讀寫連接變量主電機(jī)電流motor_currentNumber讀寫連接變量液壓墊通訊狀態(tài)io_comInteger讀寫連接變量液壓墊同步狀態(tài)io_synInteger讀寫連接變量離合器壓力clutch_preNumber讀寫連接變量離合器油箱液位liquid_levelNumber讀寫連接變量滑塊狀態(tài)block_staInteger讀寫連接變量設(shè)備狀態(tài)device_statusInteger讀寫連接變量完整的沖壓機(jī)屬性點(diǎn)表梳理物模型指標(biāo)點(diǎn)表通過拆解指標(biāo)體系,整理出指標(biāo)體系的名稱、ID、數(shù)據(jù)類型以及計(jì)算規(guī)則。主電機(jī)部分屬性點(diǎn)表的屬性計(jì)算規(guī)則高級(jí)表達(dá)式邏輯梳理本次任務(wù)根據(jù)任務(wù)一的指標(biāo)拆解,梳理設(shè)備各部件報(bào)警邏輯,以主電機(jī)為例,對(duì)設(shè)備主電機(jī)零件的健康度進(jìn)行分析,計(jì)算步驟為:計(jì)算主電機(jī)溫度報(bào)警標(biāo)識(shí)、主電機(jī)電流報(bào)警標(biāo)識(shí)、主電機(jī)電流報(bào)警標(biāo)識(shí)計(jì)算主電機(jī)報(bào)警指標(biāo)計(jì)算設(shè)備今日主電機(jī)報(bào)警次數(shù)、今日主電機(jī)報(bào)警時(shí)長(zhǎng)計(jì)算主電機(jī)今日?qǐng)?bào)警次數(shù)得分與今日主電機(jī)報(bào)警時(shí)長(zhǎng)得分計(jì)算今日主電機(jī)健康度高級(jí)表達(dá)式邏輯梳理根據(jù)沖壓機(jī)主電機(jī)報(bào)警標(biāo)識(shí)屬性規(guī)則,對(duì)其報(bào)警標(biāo)識(shí)分析。主電機(jī)轉(zhuǎn)速報(bào)警:轉(zhuǎn)速大于等于3000且設(shè)備工作狀態(tài)為1,則報(bào)警,否則正常。主電機(jī)電流報(bào)警標(biāo)識(shí):電流大于等于20或者小于10,且設(shè)備工作狀態(tài)為1,則報(bào)警,否則正常。主電機(jī)溫度報(bào)警標(biāo)識(shí):溫度大于等于130,且設(shè)備工作狀態(tài)為1,則報(bào)警),否則正常。高級(jí)表達(dá)式邏輯梳理計(jì)算主電機(jī)報(bào)警指標(biāo):當(dāng)前主電機(jī)溫度報(bào)警標(biāo)識(shí)、當(dāng)前主電機(jī)轉(zhuǎn)速報(bào)警標(biāo)識(shí)、當(dāng)前主電機(jī)電流報(bào)警標(biāo)識(shí)三者中有任意一個(gè)為1,則緊急報(bào)警,否則為非緊急報(bào)警。當(dāng)報(bào)警標(biāo)識(shí)取值不同時(shí),主電機(jī)報(bào)警的屬性值取值情況也有所不同。報(bào)警標(biāo)識(shí)屬性值溫度報(bào)警標(biāo)識(shí)01111000轉(zhuǎn)速報(bào)警標(biāo)識(shí)00101110電流報(bào)警標(biāo)識(shí)00011001主電機(jī)報(bào)警01111111報(bào)警標(biāo)識(shí)取值不同時(shí)的主電機(jī)報(bào)警的屬性值取值情況表高級(jí)表達(dá)式邏輯梳理計(jì)算設(shè)備今日主電機(jī)報(bào)警時(shí)長(zhǎng)的步驟高級(jí)表達(dá)式邏輯梳理計(jì)算設(shè)備今日主電機(jī)報(bào)警時(shí)長(zhǎng)的代碼邏輯:高級(jí)表達(dá)式邏輯梳理今日主電機(jī)報(bào)警次數(shù):獲取當(dāng)前的今日主電機(jī)報(bào)警次數(shù),如果當(dāng)前屬性值為空,默認(rèn)今日主電機(jī)報(bào)警次數(shù)為0。獲取當(dāng)前主電機(jī)報(bào)警狀態(tài),如果主電機(jī)報(bào)警的當(dāng)前屬性值是空的話默認(rèn)為0,即主電機(jī)不報(bào)警。獲取當(dāng)前時(shí)間戳和上一次上云時(shí)間戳,判斷是否隔天,隔天則清零,否則判斷當(dāng)前緊急報(bào)警狀態(tài)是否為0,為0則返回當(dāng)前次數(shù),否則,當(dāng)前緊急報(bào)警狀態(tài)加1。創(chuàng)建設(shè)備物模型創(chuàng)建一個(gè)新的物模型的基本步驟:登錄平臺(tái)>進(jìn)入控制臺(tái)>接入與建模>物>物模型>直接創(chuàng)建。選擇類型設(shè)備,自定義設(shè)置模型名稱為沖壓機(jī)模型,選擇其它分類,然后單擊完成物模型的創(chuàng)建。批量導(dǎo)入沖壓機(jī)原始數(shù)據(jù),將沖壓機(jī)原始屬性點(diǎn)表.xlsx拖拽到上傳屬性位置。創(chuàng)建設(shè)備物模型建立對(duì)應(yīng)的網(wǎng)關(guān)物模型和物實(shí)例網(wǎng)關(guān)物模型網(wǎng)關(guān)物實(shí)例添加物模型屬性分組單擊修改模型,物模型進(jìn)入草稿狀態(tài)。單擊空白處,在菜單欄右側(cè)會(huì)出現(xiàn)屬性組欄目。添加物模型屬性分組在全部屬性的子級(jí)分組中中有默認(rèn)為未分組的分組,單擊添加子級(jí)分組。添加物模型屬性分組可以將已添加的連接進(jìn)行分組,選擇選擇對(duì)應(yīng)的分組,單擊關(guān)聯(lián)屬性來對(duì)選擇對(duì)應(yīng)的屬性,從而達(dá)到分組目的。在添加分組中,分別添加分組名稱為主電機(jī)、液壓墊、離合器、滑塊的分組。手動(dòng)添加設(shè)備計(jì)算屬性主電機(jī)溫度報(bào)警標(biāo)識(shí),主電機(jī)轉(zhuǎn)速報(bào)警標(biāo)識(shí),主電機(jī)電流報(bào)警標(biāo)識(shí)屬性指標(biāo)點(diǎn)表。手動(dòng)添加設(shè)備計(jì)算屬性添加主電機(jī)溫度報(bào)警標(biāo)識(shí):設(shè)置屬性名稱為主電機(jī)溫度報(bào)警標(biāo)識(shí),屬性ID為motor_temp_flag,設(shè)置數(shù)據(jù)類型為Interger類型,讀寫操作設(shè)置選擇讀寫。手動(dòng)添加設(shè)備計(jì)算屬性主電機(jī)溫度報(bào)警標(biāo)識(shí)是根據(jù)設(shè)備采集溫度來判定是否發(fā)出報(bào)警,在屬性值值來源處選擇規(guī)則指定,編輯主電機(jī)溫度報(bào)警標(biāo)識(shí)的計(jì)算規(guī)則。在指標(biāo)優(yōu)先級(jí)設(shè)置過程中,0為最高級(jí),優(yōu)先級(jí)默認(rèn)為0。主電機(jī)溫度報(bào)警標(biāo)識(shí)規(guī)則的Groovy語(yǔ)句//獲取當(dāng)前沖壓機(jī)的溫度longtemp1=$recent("motor_temp")?:0;//獲取當(dāng)前沖壓機(jī)設(shè)備狀態(tài)longworkstatus=$recent("device_status")?:0;//如果設(shè)備處于運(yùn)行狀態(tài),同時(shí)溫度大于130攝氏度,則返回1,否則返回0if(temp1>130&&workstatus==1){return1;}else{return0;}手動(dòng)添加設(shè)備計(jì)算屬性主電機(jī)轉(zhuǎn)速報(bào)警標(biāo)識(shí):設(shè)置屬性名稱為主電機(jī)轉(zhuǎn)速報(bào)警標(biāo)識(shí),屬性ID為motor_speed_flag,設(shè)置數(shù)據(jù)類型為Interger類型,讀寫操作設(shè)置選擇讀寫。主電機(jī)轉(zhuǎn)速報(bào)警標(biāo)識(shí)規(guī)則的Groovy語(yǔ)句defspeed1=$recent("motor_speed")?:0;//獲取當(dāng)前主電機(jī)轉(zhuǎn)速defworkstatus=$recent("device_status")?:0;//獲取當(dāng)前沖壓機(jī)設(shè)備狀態(tài)//如果設(shè)備處于運(yùn)行狀態(tài),同時(shí)主電機(jī)轉(zhuǎn)速超過3000ramp,則返回1,否則,返回0if(speed1>=3000&&workstatus==1){return1;}else{return0;}手動(dòng)添加設(shè)備計(jì)算屬性主電機(jī)電流報(bào)警標(biāo)識(shí):設(shè)置屬性名稱為主電機(jī)電流報(bào)警標(biāo)識(shí),屬性ID為motor_current_flag,設(shè)置數(shù)據(jù)類型為Interger類型,讀寫操作設(shè)置選擇讀寫。主電機(jī)轉(zhuǎn)速報(bào)警標(biāo)識(shí)規(guī)則的Groovy語(yǔ)句defcur1=$recent("motor_current")?:0;//獲取當(dāng)前主電機(jī)電流defworkstatus=$recent("device_status")?:0;//獲取當(dāng)前沖壓機(jī)的狀態(tài)//如果設(shè)備處于運(yùn)行狀態(tài),同時(shí)當(dāng)前主電機(jī)電流大于20A,或者小于20A,返回1,否則返回0if((cur1>=20||cur1<=10)&&workstatus==1){return1;}else{return0;}手動(dòng)添加設(shè)備計(jì)算屬性在更多配置中設(shè)置出發(fā)方式為參與規(guī)則的任一屬性有工況上報(bào)即觸發(fā)(__online__除外),歷史數(shù)據(jù)保存方式選擇全部保存。手動(dòng)添加設(shè)備計(jì)算屬性單擊手動(dòng)添加,添加主電機(jī)報(bào)警基本信息,屬性名稱為主電機(jī)報(bào)警,屬性ID為motor_alarm,數(shù)據(jù)類型使用Integer,讀寫操作設(shè)置為讀寫。進(jìn)行主電機(jī)報(bào)警屬性配置,屬性值來源選定規(guī)則指定,編輯主電機(jī)報(bào)警的計(jì)算規(guī)則。優(yōu)先級(jí)設(shè)置為1級(jí)。intflag1=$recent("motor_temp_flag");//獲取主電機(jī)溫度報(bào)警標(biāo)識(shí)intflag2=$recent("motor_speed_flag");//獲取主電機(jī)轉(zhuǎn)速報(bào)警標(biāo)識(shí)intflag3=$recent("motor_current_flag");//獲取主電機(jī)電流報(bào)警標(biāo)識(shí)//如果主電機(jī)溫度和主電機(jī)轉(zhuǎn)速和主電機(jī)電流任意一個(gè)為1則報(bào)警if(flag1==1||flag2==1||flag3==1){return1;}else{return0;}主電機(jī)報(bào)警規(guī)則的Groovy語(yǔ)句手動(dòng)添加設(shè)備計(jì)算屬性單擊手動(dòng)添加,添加今日主電機(jī)報(bào)警時(shí)長(zhǎng)基本信息,屬性名稱為今日主電機(jī)報(bào)警時(shí)長(zhǎng),屬性ID為motor_dah,數(shù)據(jù)類型使用Number,讀寫操作設(shè)置為讀寫。進(jìn)行今日主電機(jī)報(bào)警時(shí)長(zhǎng)屬性配置,屬性值來源選定規(guī)則指定,編輯今日主電機(jī)報(bào)警時(shí)長(zhǎng)的計(jì)算規(guī)則。優(yōu)先級(jí)設(shè)置為2級(jí)。今日主電機(jī)報(bào)警時(shí)長(zhǎng)規(guī)則的Groovy語(yǔ)句//獲取當(dāng)前今日主電機(jī)報(bào)警時(shí)長(zhǎng)deftemp_duration=$recent("motor_dah")//如果今日主電機(jī)報(bào)警時(shí)長(zhǎng)為空,則今日主電機(jī)報(bào)警時(shí)長(zhǎng)為0if(temp_duration==null){temp_duration=0}//獲取當(dāng)前數(shù)據(jù)時(shí)間戳Longcurrent_timestamp=__timestamp__.longValue()/1000//獲取上一數(shù)據(jù)時(shí)間戳Longlast_timestamp=$lastStamp()/1000?:current_timestamp//指定'年-月-日'轉(zhuǎn)化格式j(luò)ava.text.SimpleDateFormatsf=newjava.text.SimpleDateFormat("yyyy-MM-dd")//將格式為長(zhǎng)整型的當(dāng)前數(shù)據(jù)時(shí)間戳轉(zhuǎn)化為'年-月-日'格式的字符串StringnowTimeStr=sf.format(newjava.util.Date(current_timestamp*1000))//將格式為長(zhǎng)整型的上一數(shù)據(jù)時(shí)間戳轉(zhuǎn)化為'年-月-日'格式的字符串StringlastTimeStr=sf.format(newjava.util.Date(last_timestamp*1000))//如果當(dāng)前時(shí)間和上一時(shí)間不相等,則判斷為隔天if(nowTimeStr<=>lastTimeStr){//初始化今日主電機(jī)報(bào)警時(shí)長(zhǎng)為0temp_duration=0//指定'年-月-日-時(shí)-分-秒'轉(zhuǎn)化格式j(luò)ava.text.SimpleDateFormatsdf_convert=newjava.text.SimpleDateFormat("yyyy-MM-ddHH:mm:ss")//上一時(shí)間戳設(shè)置為當(dāng)天的0時(shí)0分0秒,并將其轉(zhuǎn)化為數(shù)值格式last_timestamp=((sdf_convert.parse(nowTimeStr+"00:00:00")).getTime())/1000}//如果當(dāng)前主電機(jī)報(bào)警為1,if($recent("motor_alarm")==1){//狀態(tài)時(shí)長(zhǎng)與轉(zhuǎn)化秒的時(shí)間片段累加temp_duration=temp_duration+(current_timestamp-last_timestamp)}//返回今日主電機(jī)報(bào)警時(shí)長(zhǎng)returntemp_duration手動(dòng)添加設(shè)備計(jì)算屬性單擊手動(dòng)添加,添加今日主電機(jī)報(bào)警次數(shù)基本信息,屬性名稱為今日主電機(jī)報(bào)警次數(shù),屬性ID為motor_dac,數(shù)據(jù)類型使用Number,讀寫操作設(shè)置為讀寫。進(jìn)行今日主電機(jī)報(bào)警次數(shù)屬性配置,屬性值來源選定規(guī)則指定,編輯今日主電機(jī)報(bào)警次數(shù)的計(jì)算規(guī)則。優(yōu)先級(jí)設(shè)置為2級(jí)。今日主電機(jī)報(bào)警次數(shù)規(guī)則的Groovy語(yǔ)句//獲取當(dāng)前今日主電機(jī)報(bào)警次數(shù)deftodayAlarmCoun=$recent("motor_dac")?:0;//獲取當(dāng)前主電機(jī)報(bào)警defnowCount=$recent("motor_alarm")?:0;longnow=__timestamp__.longValue();longlast=$lastStamp()?:now;java.text.SimpleDateFormatsf=newjava.text.SimpleDateFormat("yyyy-MM-dd")StringnowTimeStr=sf.format(newjava.util.Date(now))StringlastTimeStr=sf.format(newjava.util.Date(last))//隔天重新計(jì)算//如果當(dāng)前時(shí)間和上一時(shí)間不相等,則判斷為隔天,返回0if(nowTimeStr<=>lastTimeStr){return0;}//如果主電機(jī)報(bào)警為0,則返回當(dāng)前今日主電機(jī)報(bào)警次數(shù)if(nowCount==0){returntodayAlarmCoun;}else{//否則,返回當(dāng)前今日主電機(jī)報(bào)警次數(shù)加1returntodayAlarmCoun+1;}手動(dòng)添加設(shè)備計(jì)算屬性單擊手動(dòng)添加,添加今日主電機(jī)報(bào)警時(shí)長(zhǎng)得分基本信息,屬性名稱為今日主電機(jī)報(bào)警時(shí)長(zhǎng)得分,屬性ID為motor_dah_df,數(shù)據(jù)類型使用Number,讀寫操作設(shè)置為讀寫。進(jìn)行今日主電機(jī)報(bào)警時(shí)長(zhǎng)得分屬性配置,屬性值來源選定規(guī)則指定,編輯今日主電機(jī)報(bào)警時(shí)長(zhǎng)得分的計(jì)算規(guī)則。優(yōu)先級(jí)設(shè)置為3級(jí)。今日主電機(jī)報(bào)警時(shí)長(zhǎng)得分規(guī)則的Groovy語(yǔ)句//獲取當(dāng)前今日主電機(jī)報(bào)警時(shí)長(zhǎng)defalarmHour=$recent("motor_dah")?:0//如果報(bào)警時(shí)長(zhǎng)小于等于60秒時(shí),報(bào)警時(shí)長(zhǎng)的得分為100-1*今日主電機(jī)報(bào)警時(shí)長(zhǎng)/60if(alarmHour<=60||alarmHour==0){return100-1*alarmHour/60;}elseif(alarmHour>60&&alarmHour<=360){//當(dāng)報(bào)警時(shí)長(zhǎng)大于60秒,并且小于等于360秒時(shí),返回得分為99-2*(今日主電機(jī)報(bào)警時(shí)長(zhǎng)/60-1)return99-2*(alarmHour/60-1);}elseif(alarmHour>360&&alarmHour<=1428){//當(dāng)報(bào)警時(shí)長(zhǎng)大于360秒,并且小于等于1428秒時(shí),返回89-5*(今日主電機(jī)報(bào)警時(shí)長(zhǎng)/60-6)return89-5*(alarmHour/60-6);}else{//當(dāng)?shù)梅执笥?428秒時(shí),得分為0return0}手動(dòng)添加設(shè)備計(jì)算屬性單擊手動(dòng)添加,添加今日主電機(jī)報(bào)警次數(shù)得分基本信息,屬性名稱為今日主電機(jī)報(bào)警次數(shù)得分,屬性ID為motor_dac_df,數(shù)據(jù)類型使用Number,讀寫操作設(shè)置為讀寫。進(jìn)行今日主電機(jī)報(bào)警次數(shù)得分屬性配置,屬性值來源選定規(guī)則指定,編輯今日主電機(jī)報(bào)警次數(shù)得分的計(jì)算規(guī)則。優(yōu)先級(jí)設(shè)置為3級(jí)。今日主電機(jī)報(bào)警次數(shù)得分規(guī)則的Groovy語(yǔ)句//今日主電機(jī)報(bào)警次數(shù)defalarmCount=$recent("motor_dac")?:0//如果今日?qǐng)?bào)警次數(shù)為0次或者1次時(shí),返回得分為100-1*今日主電機(jī)報(bào)警次數(shù)if(alarmCount==1||alarmCount==0){return100-1*alarmCount;}elseif(alarmCount>=2&&alarmCount<=5){//如果今日?qǐng)?bào)警次數(shù)大于等于2次,小于等于5次時(shí),返回得分99-2*(今日主電機(jī)報(bào)警次數(shù)-1)return99-2*(alarmCount-1);}elseif(alarmCount>=6&&alarmCount<=23){//如果今日?qǐng)?bào)警次數(shù)大于等于6次,小于等于23次時(shí),返回得分99-5*(今日主電機(jī)報(bào)警次數(shù)-5)return91-5*(alarmCount-5);}else{//所有當(dāng)報(bào)警次數(shù)大于23次時(shí),返回得分為0return0}手動(dòng)添加設(shè)備計(jì)算屬性單擊手動(dòng)添加,添加今日主電機(jī)健康度基本信息,屬性名稱為今日主電機(jī)健康度,屬性ID為today_motor_health,數(shù)據(jù)類型使用Numb
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 確保施工現(xiàn)場(chǎng)安全的管理措施
- 安全裝卸作業(yè)
- 2025年呼吸科多學(xué)科合作計(jì)劃
- 菜籃子電子商務(wù)商業(yè)計(jì)劃書
- 中國(guó)賽車數(shù)據(jù)采集系統(tǒng)市場(chǎng)現(xiàn)狀研究分析與發(fā)展前景預(yù)測(cè)報(bào)告
- “俱樂部”商業(yè)計(jì)劃書
- 2025人教版小學(xué)三年級(jí)下冊(cè)綜合實(shí)踐教學(xué)計(jì)劃
- 塑料工業(yè)散熱器安裝施工方案與技術(shù)措施
- 咖啡店員工服務(wù)質(zhì)量提升計(jì)劃
- 2025秋部編本新人教版二年級(jí)上冊(cè) 綜合實(shí)踐教學(xué)計(jì)劃
- 2025年江蘇建筑職業(yè)技術(shù)學(xué)院高職單招(數(shù)學(xué))歷年真題考點(diǎn)含答案解析
- 配電工程施工方案
- 2025年深入貫徹中央八項(xiàng)規(guī)定精神學(xué)習(xí)教育知識(shí)競(jìng)賽試題及答案
- 2025年中國(guó)計(jì)量器具市場(chǎng)調(diào)查研究報(bào)告
- 2025年吉林鐵道職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)必考題
- 《正定矩陣的應(yīng)用分析》1400字
- 掛網(wǎng)噴播植草施工方案
- CNAS-CC190-2021 能源管理體系認(rèn)證機(jī)構(gòu)要求
- 牧運(yùn)通備案辦理流程
- 中職高教版(2023)語(yǔ)文職業(yè)模塊-第三單元3.2簡(jiǎn)單相信傻傻堅(jiān)持【課件】
- 《企業(yè)安全生產(chǎn)培訓(xùn)課件:個(gè)人防護(hù)裝備及使用》
評(píng)論
0/150
提交評(píng)論