西門(mén)子SCL編程實(shí)例-計(jì)算設(shè)備運(yùn)行時(shí)間(2)
上一篇文章(西門(mén)子SCL編程實(shí)例-計(jì)算設(shè)備運(yùn)行時(shí)間)我們使用Time數(shù)據(jù)類(lèi)型的數(shù)據(jù)來(lái)存放設(shè)備的運(yùn)行時(shí)間。由于Time類(lèi)型的最大值為:24天20小時(shí)31分鐘23秒647毫秒,細(xì)心的小伙伴提出一個(gè)問(wèn)題:如果設(shè)備運(yùn)行時(shí)間超過(guò)這個(gè)最大值怎么辦呢?的確,設(shè)備實(shí)際使用中運(yùn)行時(shí)間很可能會(huì)超過(guò)這個(gè)限值。今天這篇文章,我給出我的解決思路。

解決方案分兩種情況:
1、項(xiàng)目使用的PLC類(lèi)型為S7-1500系列
這種情況很好解決,因?yàn)镾7-1500支持LTime類(lèi)型,該類(lèi)型的最大時(shí)間為11350天_20小時(shí)_25分鐘_14秒_830毫秒_652微秒_315納秒,這個(gè)時(shí)間足夠長(zhǎng)了。因此,只需要把數(shù)據(jù)類(lèi)型MyEquipment中的running_time的類(lèi)型改LTime,并且把FC_Runtime_Caculate做相應(yīng)更改就可以了;
2、項(xiàng)目使用的PLC類(lèi)型為S7-1200系列
這種情況下,如果仍然按照獲取兩個(gè)日期時(shí)間差值的思路,編程會(huì)很復(fù)雜。所以,需要換一下思路:通過(guò)時(shí)間中斷組織塊OB10,將某個(gè)值按照指定的頻率周期性加一,達(dá)到計(jì)時(shí)的目的。
具體步驟如下:
2.1、更新MyEquipment數(shù)據(jù)類(lèi)型
在原來(lái)的基礎(chǔ)上,做如下更改:
1)增加totalRunningTime,類(lèi)型為:UDInt,表示設(shè)備運(yùn)行的總時(shí)間,以分鐘為單位;
2)以分鐘為單位的總時(shí)間不太直觀,所以將其轉(zhuǎn)換成*天*小時(shí)*分鐘的形式,相關(guān)數(shù)值存放在:totalRunningDays/totalRunningHours/totalRunningMinutes中;
如下圖所示:

2.2、重新編譯數(shù)據(jù)塊myEquipmentData
如下圖所示:

2.3、添加時(shí)間中斷組織塊OB10
在OB10中編寫(xiě)代碼將設(shè)備的運(yùn)行時(shí)間加1,并設(shè)定最大運(yùn)行時(shí)間為10年(5256000分鐘),如果超過(guò)該值則運(yùn)行時(shí)間清零,如下圖所示:

2.4、將OB10的中斷執(zhí)行頻率設(shè)置為每分鐘
如下圖所示:

2.5、添加FC_Handle_Time2
FC_Handle_Time2用來(lái)將總時(shí)間的分鐘數(shù)轉(zhuǎn)換成直觀的*天*小時(shí)*分鐘的形式,變量聲明部分如下圖所示:

代碼如下圖所示:

2.6、在主程序中調(diào)用FC_Handle_Time2
OB1代碼如下圖所示:

好了,關(guān)于設(shè)備運(yùn)行時(shí)間統(tǒng)計(jì)的第二個(gè)版本就先介紹到這里。
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計(jì)算焓和比熱容 2020-08-31
-
CAD外部參照無(wú)法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
