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