對于 FC的使用,另一個的常見的錯誤是對輸出的錯誤處理:導致這個錯誤的原因還是對FC認識的不清楚。
再次強調(diào):相比較于 FB,FC是一個沒有存儲空間的邏輯塊。
如果沒有數(shù)據(jù)被寫至 FC 的 OUT參數(shù),F(xiàn)C將會輸出一個隨機值!對于 FB, 因為其可以使用背景數(shù)據(jù)塊來存儲 OUT參數(shù)的數(shù)值,即使某次調(diào)用沒有對 OUT參數(shù)進行寫操作,OUT參數(shù)依然可以輸出上一次的舊值。
下面的程序?qū)⒄f明這一點:程序原本目的:
在 OB1中調(diào)兩次 FC22,將 MW0,MW2作為輸入?yún)?shù),DB1.DBX0.0,DB1.DBX0.1分別作為輸出參數(shù)賦給 FC22
FC22檢測當輸入大于 10時,置位輸出為 1FC22檢測當輸入小于-10時,復位輸出為 0 FC22的輸出的動作死區(qū)為-10至 10
此程序乍看是沒有錯誤的,但是,如果 OB1中調(diào)用了兩次 FC22,而且 MW2位于死區(qū)(-10 至10)之間時,MW0的數(shù)值改變將不僅僅改變 DB1.DBX0.0的狀態(tài),同時會影響輸出 DB1.DBX0.1的數(shù)值。
故障分析:在上面的例子,OB1中調(diào)用了兩次 FC22,而且 MW2位于死區(qū)(-10至 10)之間時,其輸出在FC22沒有被賦值,DB1.DBX0.1正常情況下不應當改變數(shù)值。
本例中,MW0的數(shù)值改變將不僅僅改變DB1.DBX0.0的狀態(tài),同時會影響輸出 DB1.DBX0.1的數(shù)值。如下圖。
對于 FC的輸出變量,必須要在每次執(zhí)行 FC時賦給一個確定的值,否則輸出有可能會輸出一個隨機值。下列用法都是錯誤的:
將輸出變量用于上升/下降沿指令
將輸出變量用于自保持邏輯
輸出變量未在所在程序段中賦值
警告:不要因為在 FC編程中遇到?jīng)]有對輸出賦值,而程序執(zhí)行正確,就忽略了對 FC輸出編程的注意事項,否則將承擔這個錯誤有可能帶來的風險。
建議:
用 IN/OUT 變量代替 OUTPUT 變量
不論何時調(diào)用塊,F(xiàn)C中的OUT參數(shù)都必須被賦值。
審核編輯:劉清
-
MFC編程
+關(guān)注
關(guān)注
0文章
8瀏覽量
6249
原文標題:FC 輸出處理
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論