簡介
在以下示例中,將讀取延時中斷 OB (OB20) 的狀態(tài),設(shè)置新的延時并啟動或禁用 OB20。
要求
在全局?jǐn)?shù)據(jù)塊中,創(chuàng)建有 10 個變量和一個結(jié)構(gòu)進(jìn)行數(shù)據(jù)存儲。
互連參數(shù):“SLI_itemiseStatus_DINT”函數(shù)
要評該估狀態(tài)信息,需創(chuàng)建一個函數(shù)“SLI_itemiseStatus_DINT”。
在該函數(shù)中創(chuàng)建以下局部變量。
為所有相關(guān)位創(chuàng)建互連。
程序段 1:
程序段 2:
程序段 3:
互連參數(shù):“SLI_FB_SRT_DINT”函數(shù)塊
要調(diào)用指令,可創(chuàng)建函數(shù)塊(“SLI_FB_SRT_DINT”)。在函數(shù)塊“SLI_FB_SRT_DINT”中,創(chuàng)建以下局部變量。
程序段 1:互連“QRY_DINT”指令的參數(shù),如下所示:
程序段 2:互連“SRT_DINT”指令的參數(shù),如下所示:
程序段 3:互連“CAN_DINT”指令的參數(shù),如下所示:
程序段 4:互連將由“CAN_DINT”復(fù)位的參數(shù),如下所示:
程序段 5:互連“SLI_itemiseStatus_DINT”函數(shù)的參數(shù),如下所示。
在循環(huán) OB (OB1) 中調(diào)用函數(shù)塊“SLI_FB_SRT_DINT”。
互連參數(shù):OB20
在 OB20 中創(chuàng)建以下互連:
“QRY_DINT”的結(jié)果
這些指令通過輸入?yún)?shù) OB_NR(“obNbr”)接收待調(diào)用 OB 的編號 (OB20)。
程序段 1:
當(dāng)常開觸點(“executeQry”)的信號狀態(tài)為“TRUE”時,執(zhí)行“QRY_DINT”指令并讀取 OB20 的數(shù)據(jù)。輸出參數(shù) STATUS(“#statWord”)中將顯示 OB20 的狀態(tài)。輸出參數(shù) RET_VAL(“returnValueQry”)可用于指示該過程是否存在錯誤。
將變量“#statWord”的值映射到結(jié)構(gòu)“itemiseStatus”中。
“SRT_DINT”的結(jié)果
程序段 2:當(dāng)常開觸點(“executeSrt”)的信號狀態(tài)為“TRUE”時,執(zhí)行“SRT_DINT”指令。通過輸入?yún)?shù) DTIME(“delayTime”),將延時時間 (6s) 傳送到 OB20 中,并啟用 OB20。
說明 在時間點 OB20 處,啟動延時時間運行,然后再調(diào)用 OB20,除非在 CPU 的新循環(huán)周期內(nèi)中再次預(yù)先接收到延時時間。 |
執(zhí)行 OB20 后,待輸出的選定標(biāo)識符(值“16#0001”)將存儲在輸入?yún)?shù) SIGN(“sign”)中。該標(biāo)識符將顯示在 OB20 的啟動事件信息中。輸出參數(shù) RET_VAL(“returnValueSrt”)用于指示處理無錯誤。
SRT_DINT 成功執(zhí)行后,常開觸點(“executeSrt”)將返回信號狀態(tài)“FALSE”,延時時間不再傳送到 OB20 中。延時時間結(jié)束后,將立即再次執(zhí)行 OB20。
說明 僅當(dāng)當(dāng)前所用的 CPU 循環(huán)時間小于 OB20 的延時時間,才能根據(jù)參數(shù) EN 確定 OB20 中指定的響應(yīng)操作。 |
OB20 的結(jié)果
每次調(diào)用 OB20 時,都將執(zhí)行指令“ADD”,且變量“testCurrCount”的值遞增“1”。SRT_DINT 中定義的延時時間結(jié)束后,僅調(diào)用 OB20 一次。OB20 調(diào)用后,將再次“禁用”。
“CAN_DINT”的結(jié)果
程序段 3:設(shè)置和啟用了 OB20(“#statWord”的值為“16#0014”)時,比較器將返回信號狀態(tài)“TRUE”,同時 CAN_DINT 可以執(zhí)行。
當(dāng)常開觸點(“executeCan”)的信號狀態(tài)為“TRUE”時,執(zhí)行“CAN_DINT”指令。該指令將禁用 OB20 并刪除所設(shè)置的 OB20 調(diào)用數(shù)據(jù)。
輸出參數(shù) RET_VAL(“returnValueCan”)用于指示處理無錯誤。
CAN_DINT 執(zhí)行后,線圈(“#statMem”)將置位為“TRUE”,并執(zhí)行程序段 4。
復(fù)位操作的結(jié)果
程序段 4:當(dāng)常開觸點(“#statMem”)的信號狀態(tài)為“TRUE”時,通過指令“MOVE”可將變量“testCurrCount”的值復(fù)位為“0”。信號狀態(tài)為“TRUE”時,復(fù)位操作(“executeCan”)將自動結(jié)束指令“CAN_DINT”的運行。
狀態(tài)信息“#statWord”的結(jié)果
在程序段 7 中,調(diào)用函數(shù)“SLI_itemiseStatus_DINT”。將評估變量“#statWord”的有效位,并輸出為帶有純文本名稱的布爾型變量。當(dāng)結(jié)構(gòu)為“itemiseStatus”的變量信號狀態(tài)為“TRUE”時,則語句正確。
審核編輯:劉清
-
CAN總線
+關(guān)注
關(guān)注
145文章
1911瀏覽量
130561 -
中斷函數(shù)
+關(guān)注
關(guān)注
0文章
13瀏覽量
5270
原文標(biāo)題:西門子博途:時間中斷函數(shù)的編程示例
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論