西門子FC FB中關於Temp變量的使用、OUT線圈的使用說明


我試了在FC中用塊接口OUT變量來驅動別的OUT變量,會警告,但是先賦值線圈后使用觸點還是可以正常使用的,如果先使用觸點后賦值線圈不能正常使用. 可是在FB中同樣用塊接口OUT變量來驅動別的OUT變量,不用管先后順序都能正常使用,為什么?

第二個問題,為什么在IF表達式中,CASE狀態中,REGION里使用塊接口的OUT變量有警告,提示參數無法初始化是什么意思.

第三 個問題,CASE語句中 上一個狀態轉移到下一個狀態,如果當前 狀態不定義會保持上一狀態的輸入輸出對嗎

 

這個東西說起來有點繞,記住這么用就行了。FC運行后沒有東西保存上次運行的數據,

FB運行后 有東西保存的數據(Temp不保存);

FC中的 out 類型 沒有保存數據,運行時的初始狀態也不知道,西門子不建議根據它的狀態去控制其他邏輯,你要用也禁止,風險由你把控。

你的第三個問題,分幾種情況如果被賦值的變量是全局變量會保持,是Temp的變量就未知了。

 

1、FC沒有背景DB塊,所有的接口參數都是臨時變量,在下一個以掃描周期值將清零,所以不賦值的話就一直是零!FB有背景DB塊,變量值可以保存到下一個掃描周期!
2、OUT變量是只寫參數,所以無法獲取它接口上連接變量的狀態,只能獲取DB塊中OUT的狀態!
3、SCL的賦值相當於置位、復位所以會保持的!

 

說明:FC中使用 OUT 全局變量可以正常使用,數據塊靜態變量不能正常使用,先使用觸點再使用線圈不正常

                    使用SET指令時觸點、線圈使用正常

===================================================

別用temp類型的中間變量
FC的話,可以把這個中間變量改成INOUT類型
FB的話,可以使用stat靜態類型的變量可以實現

中間變量必須先讀后寫,你這種起保停還有沿指令 不要用temp類型的變量

===================================================

temp變量必須是先賦值,后使用的原則,看似你的程序能夠滿足這個需求。但是,作為典型的起、保、停控制回路,這個線圈變量的地址又必須具有雙重特性,即即要有輸出特性,又要有輸入特性。而且且temp這個變量沒有輸入特性而言,因為當該函數掃描完成后,temp是無法保持原有的運算結果(是一個隨機數),這個從你的圖示上就能夠反映這個情況。
如果你采用置位、復位方式,那這個程序就沒有問題。
另外,程序編輯提倡簡潔、明了,而你的程序這個為什么不直接做輸出,而多一個temp變量來轉移,這個不可取。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM