經(jīng)常有用戶咨詢fb的接口變量類型in_out、stat、temp在使用上有何區(qū)別,以下通過一個簡單的例子進行說明。運用fb塊編程計算公式:(a+b) * c = d,在程序中需要通過一個中間變量(例如其變量名定義為“temp_value”)傳遞“a”和“b”相加的結果,然后再乘以“c”得到最終結果“d”;將中間變量“temp_value”分別定義為in_out、stat或temp類型后做如下測試。
首先創(chuàng)建fb1,在in接口類型中新建a、b、c 三個變量,數(shù)據(jù)類型int;在out接口類型中新建d 變量,數(shù)據(jù)類型int;在ob1中調用fb1,并生成對應的背景db塊db1。
情形一,將中間變量“temp_value”定義為in_out類型時,接口定義及程序如圖1:
圖1 中間變量“temp_value”定義為in_out類型
下載到cpu中執(zhí)行程序監(jiān)控,在調用fb1的接口參數(shù)處和背景db塊中都可以監(jiān)控到變量“a”和“b”相加的中間結果“temp_value”,如圖2所示。
圖2 中間變量“temp_value”定義為in_out時的在線數(shù)據(jù)
情形二,將中間變量“temp_value”定義為stat類型時,接口定義及程序如圖3:
圖3 中間變量“temp_value”定義為stat類型
下載到cpu中執(zhí)行程序監(jiān)控,僅能在其背景db塊中監(jiān)控到變量“a”和“b”相加的中間結果“temp_value”的值,而在調用fb1的接口參數(shù)處無該中間變量,如圖4所示。
圖4 中間變量“temp_value”定義為stat時的在線數(shù)據(jù)
情形三,將中間變量“temp_value”定義為temp類型時,接口定義及程序如圖5:
圖5 中間變量“temp_value”定義為temp類型
下載到cpu中執(zhí)行程序監(jiān)控,既不能在其背景db塊中監(jiān)控到變量“a”和“b”相加的中間結果“temp_value”的值,也不能在調用fb1的接口參數(shù)處看到該中間變量,如圖6所示。
圖6 中間變量“temp_value”定義為temp時的在線數(shù)據(jù)
對于同一個中間變量,在fb中定義為不同的參數(shù)類型時,其接口參數(shù)和對應的背景數(shù)據(jù)塊的顯示都不盡相同。所以在不同的需求下可自行定義中間變量的類型,以滿足不同的需求。西門子創(chuàng)新工業(yè)之道是“知其道,用其妙”,編程也不例外,知“fb接口類型”之道,用其妙。