工業互聯網平臺綜合應用課件:工業設備運營指標計算_第1頁
工業互聯網平臺綜合應用課件:工業設備運營指標計算_第2頁
工業互聯網平臺綜合應用課件:工業設備運營指標計算_第3頁
工業互聯網平臺綜合應用課件:工業設備運營指標計算_第4頁
工業互聯網平臺綜合應用課件:工業設備運營指標計算_第5頁
已閱讀5頁,還剩45頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《工業互聯網平臺綜合應用》/

工業互聯網平臺指標計算

工業設備運營指標計算《工業互聯網平臺綜合應用》/知識準備任務實施目錄0102添加物模型屬性有“手動添加”和“批量添加”兩種方式。手動添加物模型屬性:點擊手動添加,填寫屬性名稱為設備狀態、屬性ID、數據類型、讀寫操作設置。添加物模型屬性工業互聯網平臺綜合應用選擇屬性值來源,輸入連接變量,填寫倍率和基數,其中,屬性

=倍率*連接變量+基數。添加物模型屬性工業互聯網平臺綜合應用當選擇規則指定時,選擇是否允許添加使用時間窗口,編寫groovy語句進行規則指定。當選擇手動寫值時,在下方方框中填寫屬性的默認值。添加物模型屬性工業互聯網平臺綜合應用

添加物模型屬性更多配置:在更多配置中設置屬性的觸發方式,屬性的小數點保留方式可以選擇保存1-6位小數,歷史數據保存方式有周期保存、變化保存、全部保存、不保存4種方式。在屬性添加時設置屬性的工程單位、屬性標簽、取值

范圍和屬性描述。工業互聯網平臺綜合應用批量添加:登錄控制臺,進入接入與建模,在菜單欄選擇物>物模型>修改模型。點擊右上角批量添加,彈出批量添加屬性彈窗。兩種方式批量添加,第一種,單擊從本地選擇文件,找到目標文件,點擊確定。第二種,直接將目標拖拽到從本都選擇文件處

,點擊確定。首次使用批量導入功能,需先單擊下載Excel模板。添加物模型屬性工業互聯網平臺綜合應用若導入失敗,可以點擊右上角消息中心圖標可以查看導入錯誤詳情,并前往下載導入錯誤文件,按照提示修改文件后重新上傳。若導入成功,則刷新查看導入結果。添加物模型屬性工業互聯網平臺綜合應用需要對終端設備采集點數據進行復雜計算,或需要結合其他屬性數據進行計算的屬性,屬性值來源就需要使用規則指定;而規則指定的函數表達式按照groovy語法編寫。物模型屬性的規則指定工業互聯網平臺綜合應用◆使用時間窗口:勾選該條件后,會對編寫的表達式添加指定的時間窗口和表達式。◆允許使用添加時間窗口的屬性:當表達式中使用的屬性,本身就是通過時間窗口計算所得時,必須勾選此

參數,否則無法計算。◆優先級設置:該方式可以根據需要按0~9自定義表達式的計算順序,優先級默認設置為0

,0為最高優先級。◆規則觸發方式:僅規則指定類型的屬性值允許選擇。◆斷線緩存的數據重新參與表達式運算:僅規則指定類

型的屬性值允許勾選。物模型屬性的規則指定工業互聯網平臺綜合應用Groovy特點口同時支持靜態和動態類型口支持運算符重載口本地語法列表和關聯數組口對正則表達式的本地支持口和Java語法非常相似口可以使用現有的Java庫口Groovy擴展了java.lang.ObjectGroovy是一種基于Java平臺的面向對象語言。Groovy語言基本介紹工業互聯網平臺綜合應用import

java.lang.*import

java.util.*import

java.io.*import

java.net.*import

groovy.lang.*import

groovy.util.*import

java.math.BigIntegerimportjavamathBigDecimalimportgroovy.xml.MarkupBuilderdef

xml=newMarkupBuilder()在Groovy語言中,import語句可以用來導入,可它以讓代碼使用其他庫的功能。Groovy語言基本介紹

在Groovy中不需要顯式導入的庫

示例使用MarkupBuilder的類工業互聯網平臺綜合應用class

Example{static

void

main(String[]args){//One

can

see

the

use

of

a

semi-colon

after

eachstatementdef

x=5;println('Hello

World');}}defemployeenamedefstudent1def

student_name標識符被用來定義變量,函數或其他用戶定義的變量。標識符以字母、美元或下劃線開頭,不能以數字開頭。Groovy語言基本介紹

在程序中使用標識符的代碼示例

有效標識符的示例工業互聯網平臺綜合應用asassertbreakcasecatchclassconstcontinuedefdefaultdoelseenumextendsfalseFinallyforgotoifimplementsimportininstanceofinterfacenewpullpackagereturnsuperswitchthisthrowthrowstraittruetrywhile關鍵字作為名稱建議是在Groovy編程語言中保留的特殊字。Groovy語言基本介紹 Groovy中定義的關鍵字工業互聯網平臺綜合應用class

Example{static

void

main(String[]args){/*This

program

is

thefirstprogramThis

program

shows

howtodisplayhelloworld*/println('Hello

World');}}class

Example{static

void

main(String[]args){//Using

a

simple

println

statement

to

print

output

tothe

consoleprintln('Hello

World');}}Groovy令牌可以是一個關鍵字,一個標識符,常量,字符串文字或符號;Groovy的注釋可以是單行或多行。println(“Hello

World”);Groovy語言基本介紹

示例的代碼行中,有兩個令牌單行注釋的使用多行注釋的使用工業互聯網平臺綜合應用class

Example{static

void

main(String[]args){//One

can

see

the

use

of

a

semi-colon

after

eachstatementdef

x=5;println('Hello

World');}}121.45‘a’“aa”分號就像Java編程語言一樣,需要分號在Groovy定義多個語句之間進行區分。空白是在編程語言如Java和Groovy用來表示空格、制表符、換行符和注釋術語。文字是在Groovy中表示固定值的符號。def

x=5;Groovy語言基本介紹

文字的使用

空白的使用分號的使用實例工業互聯網平臺綜合應用口byte表示字節值。口short表示一個短整型。

int表示整數。口long表示一個長整型。口float表示32位浮點數。口double表示64位浮點數,這些數字是有時可能需要的更長的十進制數表示。口char

表示單個字符文字。口Boolean

表示一個布爾值,可以是true或false。口String

表示以字符串的形式表示的文本。Groovy的數據類型工業互聯網平臺綜合應用運算符說明例子+兩個操作數的加法1+2將得到3-第一第二操作數相減2-1將得到1*兩個操作數的乘法2*2將得到4/兩個操作數的除法3/2將得到1.5++自增運算,在自身值的基礎上加1INT

X=5;X

++;X

將得到6--自減運算,在自身值的基礎上減1INT

X=5;X--;X

將得到4運算符是一個符號

,通知編譯器執行特定的數學或邏輯操作。Groovy中有5種運算符:算術運算符,關系運算符,邏輯運算符,位運算符,賦值運算符。平臺支持的操作符

算數運算符表工業互聯網平臺綜合應用運算符說明例子==測試兩個對象之間是否相等2==2將得到true!=測試兩個對象之間是否不等3!=2將得到true<檢查是否左邊的對象是小于右邊的對象。2<3將得到true<=檢查是否向左對象是小于或等于右邊的對象2<=3將得到true>檢查是否左邊的對象比右邊的對象大。3>2將得到true>=檢查是否向左對象大于或等于右邊的對象。3>=2將得到true平臺支持的操作符

關系運算符表工業互聯網平臺綜合應用運算符說明例子&&這是邏輯“與”運算true&&true得到true||這是邏輯“或”運算true||true得到true!這是邏輯“非”運算!true得到false平臺支持的操作符

邏輯運算符表工業互聯網平臺綜合應用運算符說明&這是位“與”運算|這是按位“或”運算^這是按位“異或”或異或運算符~這是按位反運算符平臺支持的操作符

位運算符表工業互聯網平臺綜合應用pqp&Qp

|

qp

^

Q00000010111111010011平臺支持的操作符

位運算符的真值表工業互聯網平臺綜合應用運算符說明例子+=A+=B等價于A=A+BDEF

A=5A+=3輸出將是8-=A-=B

等價于A

=A-BDEF

A=5A-=3輸出將是2*=A*=B等價于A=A*BDEF

A=5A*=3輸出將是15/=A/=B等價于A=A/BDEF

A=6A/=3輸出將是2(%)=A(%)=B等價于A=A%BDEF

A=5A%=3輸出將是2平臺支持的操作符

賦值運算符表工業互聯網平臺綜合應用語句語法示例ifif(條件){語句#1語句#2...}else{語句#3語句#4...}if(myAttribute>0){return"value1"}else{return"value2"}forfor(def元素變量名:數組變量名){語句#1語句#2…}sum=0defelements=[0,1,2]for(def

i:elements){sum

=sum+i;}println

sumwhilewhile(循環條件){語句#1語句#2...}sum=0i=0while(i<10){sum++i++}根云平臺支持的控制語句,在使用規則指定進行函數表達式代碼編寫時,可以直接使用。平臺支持的控制語句

平臺支持的控制語句使用表工業互聯網平臺綜合應用函數表達式說明舉例$sum()累加不特定多數個浮點數,得到一個浮點數(整形會自動轉換為浮點數$sum(1,1.5,2)返回:45$location()將經緯度轉換為省市區信息(根據給定坐標系)$location(114.000863,22.598430)返回:{"country":"中國","city":"深圳市","latitude":22.598430,"district":"南山區","districtCode":440305,"locationSource":"GPS","state":"廣東省","longitude":114.000863}$online()根據給定布爾值,計算設備在線狀態$online(true)返回:{"connected":"true"}

平臺支持的內置函數根云平臺支持的內置函數,在使用規則指定進行函數表達式代碼編寫時,可以直接使用。

平臺支持的內置函數說明表工業互聯網平臺綜合應用函數表達式說明舉例$connect()參考當前計算上下文,計算設備在線狀態,若工況中包含參數中的屬性認為設備在線$connect("__online__")返回:當前設備為直連設備且工況中包含__online__的連接變量{"connected":"true""directlyLinked":"true"}$recent()返回目標屬性的當前有效值,參數為目標屬性名。如果目標屬性當前工況有值上報,則取上報值,反之則取目標屬性上一個非空值。如果目標屬性從未被賦值,則返回null。不支持復合物子節點屬性,例如:$recent("node

property")。$recent("speed")返回:speed屬性的當前有效值$lastState()返回目標屬性的上一個有效值,參數為目標屬性名。無論目標屬性當前工況是否有值,都取目標屬性上一個非空值。如果目標屬性從未被賦值,則返回null。不支持復合物子節點屬性,例如:$lastState("node

property")。$lastState("speed")返回:speed屬性的上一次上數的有效值$timestamp()獲取設備本次上數的時間,返回值以長整型表示的時間戳$timestamp()返回:設備本次上數的時間,例如1599475541447,表示2020-09-07T10:45:41.447Z平臺支持的內置函數

平臺支持的內置函數說明續表工業互聯網平臺綜合應用函數表達式說明舉例$lastStamp()獲取設備上一次上數的時間,返回值以長整型表示的時間戳$lastStamp()返回:設備上一次上數的時間,例如1599475541447,表示2020-09-07T10:45:41447Z$max()計算同類型可比較的不定參中最大的一個,對象類型可以是數值型,字符串$max(1,1.5,2)返回:2$min()計算同類型可比較的不定參中小的一個,對象類型可以是數值型,字符串$min(1,1.5,2)返回:1$dateFromTimestampString()將給定的時間字符串按照給定的格式,轉換為日期結構的JSON$dateFromTimestampString("2021-05-0709:48:39","yyyy-MM-dd

HH:mm:ss")

返回:{"dayOfWeek":5,"hour":9,"month":5,"dayOfMonth":7,"year":2021,"second":39,"minute":48}$hasProperty()判斷當前計算上下文中是否有目標屬性$hasProperty("node","targetProperty")返回:true如果輸入中的node節點包含targetProperty屬性,等價于node?.targetProperty!=

null

說明:本任務示例是重點內置函數,完整的內置函數參考附錄B。平臺支持的內置函數

平臺支持的內置函數說明續表工業互聯網平臺綜合應用《工業互聯網平臺綜合應用》/知識準備任務實施目錄0102屬性名稱屬性ID數據類型讀寫操作設置報警AlarmInteger讀寫工作模式ModeInteger讀寫執行信號workIOInteger讀寫作業燈work_lightInteger讀寫待機燈wait_lightInteger讀寫報警燈alarm_lightInteger讀寫停機燈close_lightInteger讀寫急停按鈕EmgInteger讀寫在建立模型之后,需要根據真實設備梳理一份設備屬性采集點表,回顧任務一的指標體系的拆解和任務二設備數據采集,得出設備屬性采集點表。梳理連接變量屬性點表

部分屬性點表工業互聯網平臺綜合應用進入物模型,點擊具體物模型右側的查看,進入任務二創建的工業機器人模型的詳情頁面。批量添加連接變量屬性工業互聯網平臺綜合應用進入工業機器人模型之后,點擊頁面右上角修改模型。頁面跳轉后進入可編輯頁面。物模型的狀態由已發布狀態轉為草稿狀態。出現手動添加和批量添加按鈕。批量添加連接變量屬性工業互聯網平臺綜合應用點擊批量添加,頁面彈出頁面,將機器人連接變量屬性點表拖入

,點擊確定,完成上傳。添加完成指標屬性之后,返回到物模型的詳情頁,單擊更新發布重新發布物模型。成功發布模型后,會彈出模型已成功

發布的提示框。批量添加連接變量屬性工業互聯網平臺綜合應用口綠燈亮,設備狀態為1:作業口黃燈亮,設備狀態為2:待機口紅燈亮,設備狀態為3:報警口其他情況為停機,設備狀態為0:停機根據任務一的指標拆解,梳理設備各類指標代碼邏輯,主要步驟為:計算設備狀態;計算今日開機時長;計算今日開機率;計算今日產量;梳理高級表達式邏輯工業互聯網平臺綜合應用依據任務一中,今日開機時長的指標拆解

邏輯,今日開機時長與設備狀態相關,梳理今日開機時長計算邏輯:◆獲取當前開機狀態的值,為空時默認為

停◆獲取當前的開機時長,如果當前屬性值

是空的話默認為0◆獲取當前時間戳和上一次上云時間戳

◆判斷日期是否相等,不相等則開機時長

清零,起始時間設置為今日0時0分0秒。梳理高級表達式邏輯工業互聯網平臺綜合應用計算今日產量邏輯步驟為:◆獲取當前今日產量的值,為空時默認為0。◆獲取當前的執行信號,如果當前屬性值

是空的話默認為0。◆對當前執行信號值進行判斷,如果執行

信號為1,則今日產量加1,否則今日產量

保持不變。◆判斷日期是否相等,不相等則產量清零。梳理高級表達式邏輯工業互聯網平臺綜合應用本次任務需要根據任務一中指標拆解的一二三級指標進行計算。點擊手動添加,添加設備狀態基本信息,屬性名稱為設備狀態,屬性ID為device_status,數據類型使用Integer,讀寫操作設置為讀寫。手動添加規則指定屬性工業互聯網平臺綜合應用設備狀態的Groovy代碼def

io1

=

$recent("work_light")?:0

//獲取當前作業燈取值def

io2

=

$recent("wait_light")?:0

//獲取當前待機燈取值

def

io3

=

$recent("alarm_light")?:0

//獲取當前報警燈取值

if(io1

==

1){//如果綠燈亮

,設備狀態為1:工作return

1}else

if(io2

==

1){//如果黃燈亮

,設備狀態為2:待機return

2}else

if(io3

==

1){//如果紅燈亮

,設備狀態為3:故障return

3}else{//其他情況為停機

,設備狀態為0:停機return

0}進行設備狀態屬性配置,屬性值來源選定規則指定,根據高級表達式邏輯梳理,編寫設備狀態的代碼。為設備狀態添加定義,優先級設置為0

,添加0為停機,

1為作業,

2為待機,

3為報警。手動添加規則指定屬性工業互聯網平臺綜合應用添加今日開機時長屬性:點擊手動添加,依據物模型指標點表,添加今日開機時長基本信息,屬性名稱為今日開機時長,屬性ID為open_hour,數據類型使用Number,讀寫操作設置為讀寫。手動添加規則指定屬性工業互聯網平臺綜合應用def

tempDuration

=

$recent("open_hour")?:0

//變量名稱修改,符合通用,根據傳入的狀態時長屬性ID獲取該狀態當前時長def

runningStatus

=

$recent("Status")?:0

//獲取當前設備運行狀態long

dataTimestamp

=

__timestamp__.longValue()

//獲取當前時間戳(單位毫秒)long

lastStamp

=

$lastStamp()?:dataTimestamp//獲取上次上云時間戳(單位毫秒)//判斷隔天java.text.SimpleDateFormat

sf

=

new

java.text.SimpleDateFormat("yyyy

-MM

-dd")

//指定'年

-月

-

日'轉化格式String

nowTimeStr

=

sf.format(new

java.util.Date(dataTimestamp))

//將格式為長整型的當前時間戳轉化為'年

-月

-

日'格式的字符串String

lastTimeStr

=

sf.format(new

java.util.Date(lastStamp))

//將格式為長整型的上一時間戳轉化為'年

-月

-

日'格式的字符串if(nowTimeStr

<=>

lastTimeStr){//如果當前時間和上一時間不相等,

則判斷為隔天tempDuration

=

0//初始化今日開機時長為0java.text.SimpleDateFormat

sdf_convert

=

new

java.text.SimpleDateFormat("yyyy

-MM

-dd

HH:mm:ss")

//指定'年

-月

-

-

-分

-秒'轉化格式lastStamp

=

(sdf_convert.parse(nowTimeStr

+

"

"

+

"00:00:00")).getTime()

//上一時間戳設置為當天的0時0分0秒,

并將其轉化為數值格式

}//判斷隔天結束if(runningStatus

!=

0){//根據傳入的狀態時長修改條件(0

停機,1

作業,2

待機,非0

開機)tempDuration

=

tempDuration

+

(dataTimestamp

-

lastStamp)/1000/3600

//狀態時長與轉化成小時的時間片段累加}return

tempDuration//返回時長進行今日開機時長屬性配置,屬性值來源選定規則指定,根據高級表達式邏輯梳理,編寫今日開機時長的代碼。手動添加規則指定屬性今日開機時長的Groovy代碼工業互聯網平臺綜合應用今日開機時長更多配置,注意今日開機時長屬性值小數點位數保留方式為保留6位,時間戳毫秒數單位換算為小時后,保留位數需6位以上。手動添加規則指定屬性工業互聯網平臺綜合應用添加今日開機率屬性:點擊手動添加,依據物模型指標點表,添加今日開機率基本信息,屬性名稱為開機率,屬性ID為open_rate,數據類型使用Number,讀寫操作設置為讀寫。手動添加規則指定屬性工業互聯網平臺綜合應用

手動添加規則指定屬性進行今日開機率屬性配置,屬性值來源選定規則指定,根據高級表達式邏輯梳理,編寫今日開機率代碼。//獲取當前今日開機時長def

openHour=$recent("open_hour")//返回今日開機時長*100/自然時長returnopenHour*100/24

今日開機率的Groovy代碼工業互聯網平臺綜合應用今日開機率更多配置,注意今日開機率屬性值小數點位數保留方式為保留2位,歷史數據保存方式為全部保存,工程單位為%。手動添加規則指定屬性工業互聯網平臺綜合應用添加今日產量屬性:點擊手動添加,依據物模型指標點表,添加今日產量基本信息,屬性名稱為今日產量,屬性ID為today_output,數據類型使用Number,讀寫操作設置為讀寫。手動添加規則指定屬性工業互聯網平臺綜合應用今日產量的Groovy代碼def

todayProductOutput=$recent("today_output")?:0;//獲取當前今日產量def

nowCount=$recent("workIO")?:0;//獲取當前執行信號long

now=__timestamp__.longValue();//獲取當前時間戳long

last=$lastStamp()?:now;//獲取上次上云時間戳java.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論