FB塊接口類型大不同
對于工控新人來說,使用STEP7編程時,首先需了解OB/FC/FB/DB等塊的功能和作用,待掌握這些塊后再進行編程就“輕而易舉”了。
在熱線上經常遇到用戶咨詢FB的接口變量類型IN_OUT、STAT、TEMP在使用上有何區別,以下通過一個簡單的例子進行說明。運用FB塊編程計算公式:(A+B) * C = D,在程序中需要通過一個中間變量(例如其變量名定義為“TEMP_value”)傳遞“A”和“B”相加的結果,然后再乘以“C”得到最終結果“D”;將中間變量“TEMP_value”分別定義為IN_OUT、STAT或TEMP類型后做如下測試。
首先創建FB1,在IN接口類型中新建A、B、C 三個變量,數據類型INT;在OUT接口類型中新建D 變量,數據類型INT;在OB1中調用FB1,并生成對應的背景DB塊DB1。
情形一,將中間變量“TEMP_value”定義為IN_OUT類型時,接口定義及程序如圖1:
圖1 中間變量“TEMP_value”定義為IN_OUT類型
下載到CPU中執行程序監控,在調用FB1的接口參數處和背景DB塊中都可以監控到變量“A”和“B”相加的中間結果“TEMP_value”,如圖2所示。
圖2 中間變量“TEMP_value”定義為IN_OUT時的在線數據
情形二,將中間變量“TEMP_value”定義為STAT類型時,接口定義及程序如圖3:
圖3 中間變量“TEMP_value”定義為STAT類型
下載到CPU中執行程序監控,僅能在其背景DB塊中監控到變量“A”和“B”相加的中間結果“TEMP_value”的值,而在調用FB1的接口參數處無該中間變量,如圖4所示。
圖4 中間變量“TEMP_value”定義為STAT時的在線數據
情形三,將中間變量“TEMP_value”定義為TEMP類型時,接口定義及程序如圖5:
圖5 中間變量“TEMP_value”定義為TEMP類型
下載到CPU中執行程序監控,既不能在其背景DB塊中監控到變量“A”和“B”相加的中間結果“TEMP_value”的值,也不能在調用FB1的接口參數處看到該中間變量,如圖6所示。
圖6 中間變量“TEMP_value”定義為TEMP時的在線數據
對于同一個中間變量,在FB中定義為不同的參數類型時,其接口參數和對應的背景數據塊的顯示都不盡相同。所以在不同的需求下可自行定義中間變量的類型,以滿足不同的需求。西門子創新工業之道是“知其道,用其妙”,編程也不例外,知“FB接口類型”之道,用其妙。