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

PLC編程系統(tǒng)的時(shí)間中斷存在的問題和解決方案
SIMATIC S7-1500 PLC時(shí)間中斷組織塊及其應(yīng)用

評(píng)論