簡(jiǎn)介
本地錯(cuò)誤處理可單獨(dú)編程,也可與其它代碼一起編程。為確??勺R(shí)別程序中的所有錯(cuò)誤,建議使用本地錯(cuò)誤處理組合方案,如以下示例所示。
為提高錯(cuò)誤分析的準(zhǔn)確程度的錯(cuò)誤分析,除輸出參數(shù) RET_VAL 之外,還可使用指令“GET_ERROR”或“GET_ERR_ID”。這些方案提供有錯(cuò)誤代碼,并在相應(yīng)指令的描述中對(duì)其進(jìn)行詳細(xì)說(shuō)明。
此外,RET_VAL 輸出參數(shù)也可能不輸出有效錯(cuò)誤代碼。如果在讀取輸入?yún)?shù)時(shí)發(fā)生訪問(wèn)錯(cuò)誤(如,指令輸出無(wú)法入),則這是因?yàn)橹噶顖?zhí)行已中斷。此時(shí),建議在用戶(hù)程序中插入兩條指令“GET_ERROR”和“GET_ERR_ID”。這是因?yàn)椋l(fā)生此類(lèi)錯(cuò)誤時(shí),這兩條指令將返回可靠的錯(cuò)誤信息。
警告 | |
讀取輸入?yún)?shù)時(shí)發(fā)生訪問(wèn)錯(cuò)誤 RET_VAL 參數(shù)未返回有效的錯(cuò)誤代碼,且診斷緩沖區(qū)中未輸出任何詳細(xì)錯(cuò)誤信息。 |
錯(cuò)誤的第一個(gè)指示符可以是狀態(tài)字的 BR 位,也可以是使能輸出 ENO 。如果返回信號(hào)狀態(tài)“0”,則說(shuō)明指令執(zhí)行過(guò)程中出錯(cuò)。信號(hào)狀態(tài)為“1”表示無(wú)錯(cuò)誤,因而無(wú)需進(jìn)行進(jìn)一步錯(cuò)誤分析,但存儲(chǔ)器訪問(wèn)錯(cuò)誤例外。此時(shí),信號(hào)狀態(tài)為“1”表示發(fā)生錯(cuò)誤。
操作步驟
以下示例說(shuō)明了如何在讀取輸入?yún)?shù)時(shí)識(shí)別訪問(wèn)錯(cuò)誤:
按以下方式聲明程序塊的塊接口:![]() ![]() 編寫(xiě)以下程序代碼: ![]() ![]() |
在程序段 1 中,調(diào)用指令“MOVE_BLK_VARIANT:塊移動(dòng)”。在 SRC 參數(shù)中,使用一個(gè)變量索引訪問(wèn)“SrcField”源區(qū)域。如果指令成功執(zhí)行無(wú)錯(cuò)誤,則使能輸出 ENO 將返回信號(hào)狀態(tài)“1”,同時(shí)程序執(zhí)行跳轉(zhuǎn)到程序段 4 中繼續(xù)執(zhí)行。
如果指令在執(zhí)行過(guò)程中發(fā)生訪問(wèn)錯(cuò)誤(如,由變量索引而引發(fā)),則程序段 2 中的指令“GET_ERR_ID:獲取本地錯(cuò)誤 ID”將返回錯(cuò)誤 ID。程序段 2 中“UNEQUAL”的錯(cuò)誤 ID 將與值“0”進(jìn)行比較并返回結(jié)果 #Test2 = TRUE。在程序段 3 中,“EQUAL”的錯(cuò)誤 ID 將與值“0”進(jìn)行比較,并返回結(jié)果 #Test3 = TRUE。
此時(shí),輸出參數(shù) RET_VAL 處的 #TagRet_Val 操作數(shù)將不返回有效錯(cuò)誤代碼。
例外
但也有一些指令不適用于以上示例中所列的錯(cuò)誤處理方式。具體包括以下指令:
通常不支持 EN/ENO 機(jī)制的指令
禁用 ENO 的指令
S_COMP
PEEK、PEEK_BOOL、POKE、POKE_BOOL 和 POKE_BLK
即使發(fā)生訪問(wèn)錯(cuò)誤,這些指令中的 BR 位或使能輸出 ENO 也將設(shè)置為 TRUE。
以下示例中說(shuō)明了如何在 STL 編程語(yǔ)言中編程可靠的錯(cuò)誤處理方式:
STL | 說(shuō)明 |
---|---|
SET | // 操作數(shù) #Tag_ErrorID 將初始化為“0”。 |
L 0 | |
T #Tag_ErrorID | |
CALL S_COMP | // 調(diào)用該指令。 |
src_type := String | // 參數(shù) IN1 和 IN2 的數(shù)據(jù)類(lèi)型 |
relation := EQ | // 該指令的比較類(lèi)型 |
IN1 := #StringArray.THIS[#index] | // 對(duì) ARRAY 元素的可變?cè)L問(wèn)。 |
IN2 := 'STRING' | // 將兩個(gè)值互相比較。 |
OUT := #TagResult | // 如果兩個(gè)值相等,則操作數(shù) #TagResult 的信號(hào)狀態(tài)為“1”。 |
A BR | // 查詢(xún) BR 位。 |
CALL GET_ERR_ID | // 調(diào)用該指令。 |
RET_VAL := #Tag_ErrorID | // 發(fā)生訪問(wèn)錯(cuò)誤時(shí),該指令將輸出一個(gè)錯(cuò)誤代碼。 |
即使 BR 位的信號(hào)狀態(tài)為“1”,也將檢測(cè)到訪問(wèn)錯(cuò)誤。通過(guò)評(píng)估指令“GET_ERR_ID:獲取本地錯(cuò)誤 ID”的操作數(shù) #Tag_ErrorID,可查詢(xún)?cè)撳e(cuò)誤代碼。
審核編輯:劉清
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7643瀏覽量
166848 -
西門(mén)子
+關(guān)注
關(guān)注
98文章
3149瀏覽量
118021 -
STL算法
+關(guān)注
關(guān)注
0文章
6瀏覽量
5467
原文標(biāo)題:西門(mén)子博途: 有關(guān)處理程序執(zhí)行錯(cuò)誤的示例
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
北京回收西門(mén)子博途組態(tài)軟件
西門(mén)子博途1200碼垛機(jī)程序應(yīng)用
西門(mén)子PLC S7-200smart程序下載錯(cuò)誤分析
西門(mén)子PLC編程軟件博途下載
博圖如何實(shí)現(xiàn)遠(yuǎn)程調(diào)試西門(mén)子PLC
如何在博途平臺(tái)調(diào)試西門(mén)子G120變頻器

西門(mén)子plc單按鈕啟停的十種方法(博途1200/1500PLC)

如何在博途平臺(tái)調(diào)試西門(mén)子G120變頻器

評(píng)論