SCL 中的 EN/ENO 機制概述
在 SCL 程序段中,可以通過賦值來改變 ENO。為此,請寫入“ENO:=TRUE”或“ENO:=FALSE”,或使用 BOOL 數據類型的變量。當激活“自動置位 ENO”(Set ENO automatically) 塊屬性時,編譯器會添加程序代碼來計算 ENO,類似于編程語言 LAD 和 FBD。添加的程序代碼會增加運行時間,因此默認情況下禁用“自動置位 ENO”(Set ENO automatically) 屬性。 更多信息,請參見:“在 SCL 中啟用和禁用“自動置位 ENO”(Set ENO automatically) 屬性” 在 SCL 程序段中,無法為 FC 的 EN 參數賦值。但是可以在條件語句中調用 FC,這意味著需要將其置于“IF”指令中。這意味著塊調用不會執行,也不會改變 ENO。此行為與編程語言 LAD 和 FBD 中的行為不同。 SCL 指令中使用使能輸出 ENO
說明
要運行諸如數學函數等每個 SCL 指令,都必須查詢使能輸出 ENO。
操作步驟
要查詢使能輸出 ENO,請按以下步驟操作:
激活 EN/ENO 機制。 SCL 指令執行后,查詢使能輸出 ENO(如,#MyOutputBool := ENO;) 如果發生錯誤(如,結果溢出),則使能輸出 ENO 將返回信號狀態“0”。基于該信號狀態時,指令可繼續執行。例如,編程指令“RETURN”、故障顯示或替換值。 執行下一個指令之前,先將使能輸出 ENO 的信號狀態復位為“1”(如,ENO :=1;)。 發生下一處錯誤時,該信號狀態因此可復位為“0”。否則,使能輸出 ENO 的信號狀態將保持為“0”。 |
說明 跳轉到一個 SCL 塊中。 跳轉到一個 SCL 塊中時,使能輸出 ENO 的信號狀態將自動置位為“1”。 |
影響 SCL 塊的“ENO” |
說明
SCL 程序塊中 ENO 的最后一個賦值即此塊的 ENO。另外,也可退出此程序塊,并同時使用“RETURN”指令為此塊的 ENO 賦值“TRUE”或“FALSE”。
操作步驟
可按照以下步驟影響此塊的 ENO 的信號狀態:
激活 ENO 機制。
然后編程:
IF #n := 0 THEN
RETURN FALSE;
END_IF;
結果
當本地變量“#n”為“0”時,系統會返回到調用塊。在這種情況下,塊的 ENO 值為“FALSE”。
但無需對 RETURN 進行編程。SCL 編譯器將當前 ENO 值轉發到塊的 ENO 值。這意味著,ENO 的最后一個賦值將來自塊的 ENO。
ENO 值可能會受到賦值“ENO:=TRUE”或“ENO:=FALSE”或者 BOOL 數據類型的變量的影響。如果激活“自動置位 ENO”(Set ENO automatically) (TRUE) 塊屬性,則 ENO 在調用塊或指令時也會受到影響。
ENO的設置示例
以下示例顯示了一個 SCL 塊,用于在執行除法運算前檢查除數是否為 0。此時,ENO 的值將設置為“FALSE”,同時不執行后續的除法運算。調用塊可評估被調用塊的 ENO 并確定是否繼續執行此程序。
IF #Divisor = 0 THEN |
ENO:=false; |
RETURN; |
END_IF; |
#Quotient:=Dividend/Divisor; |
通過 ENO 評估程序塊調用的示例
以下示例顯示了程序塊 (A) 的調用過程,還程序塊用于處理被調用塊 (B) 的 ENO。
"BlockName_DB"( ENO => ENO ); |
IF ENO = false THEN |
RETURN; |
END_IF; |
調用并處理程序塊 (A)。被調用的程序塊 (B) 反映了其 ENO 在此過程中的值。被調用的塊 (B) 的 ENO 值將復制到調用塊 (A) 的 ENO 中。隨后將此 ENO 用于“IF”指令中。
被調用塊 (B) 返回信號狀態“ENO=FALSE”時,調用塊 (A) 將不繼續處理并返回信號狀態“ENO=FALSE”。
審核編輯:彭菁
-
數據
+關注
關注
8文章
6898瀏覽量
88836 -
程序
+關注
關注
116文章
3777瀏覽量
80853 -
編譯器
+關注
關注
1文章
1618瀏覽量
49052 -
機制
+關注
關注
0文章
24瀏覽量
9774 -
SCL
+關注
關注
1文章
239瀏覽量
17038
原文標題:在 SCL 中使用 ENO 的示例
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論