S7-200 SMART PLC編程技巧及陷阱(2)
累加器AC0、AC1、AC2、AC3的使用陷阱
編程時很多人習慣使用累加器作為中間變數,比如要把一個BYTE變數值賦給一個子程序的DINT輸入參數,通常需要INT、DINT兩個中間變數地址,先把BYTE轉換成INT,再把INT轉換成DINT。如果使用累加器,可以把BYTE變數值MOVE_B給AC0,然後AC0直接賦值給DINT參數。好處是顯而易見的。
但是當項目調用了外部庫功能子程序的時候,使用累加器就要注意了。
看下面一個例子:
編寫一個簡單的使用了AC0的子程序,然後生成庫,供其它項目調用。
在另外一個項目中調用該庫子程序,然後再添加一段使用AC0作為中間變數計算三個數和的程序
編譯下載運行後發現,1+2+3的結果賦值給VW10變成了94,多了88,而這個值就是調用的外部庫子程序賦值給AC0的值。
綜上所述,在調用了不確定是否使用了累加器的外部庫子程序的項目中,要避免自己使用的累加器值受到庫程序的干擾。
上面程序可以改寫成:
運行結果正確
TAG:工控技術FAQ |