西門子plc怎樣使用fc功能?FC,功能因為是一個功能,如果這個功能在多處都能用到,那麼這段FC就具有通用性我們在程序的其他地方就可以調用,簡化代碼,這個是FC的模塊式的作用當然,FC也可以作為我們被調用的一個子程序,用OB1去調用它,以實現結構化編程,我來為大家科普一下關于西門子plc怎樣使用fc功能?以下内容希望對你有幫助!
FC,功能。因為是一個功能,如果這個功能在多處都能用到,那麼這段FC就具有通用性。我們在程序的其他地方就可以調用,簡化代碼,這個是FC的模塊式的作用。當然,FC也可以作為我們被調用的一個子程序,用OB1去調用它,以實現結構化編程。
因此,得出結論,FC可以幹兩個事:
第一,實現功能化編程。比如,我們有大車,小車,起升3個結構。我們就可以定義3個FC,跟這3個機構一一對應,然後用OB1依次調用。為什麼這樣做,為什麼不都放在OB1裡。你也可以放OB1裡,對段數比較少,很簡單的項目就把代碼都放在OB1裡。如果功能,機構多了,最好還是分開來,這樣有利于程序的可讀可調,更符合規範。否則一個小故障都會導緻你把OB1翻個遍,會很麻煩的。找準故障機構,在相應的FC裡再去找會少看很多代碼。這個道理比較簡單。
第二個事,就是我上面說的模塊化編程,我的描述不是很準确,因為是自己的總結。這個意思就是我們平常讨論說的,把所有功能都寫到一個塊裡,然後去調用整個塊。FC可以幹這個事(當然,FB也可以幹,區别後面說),新建好FC,确定好輸入,輸出接口,然後編寫邏輯,一個FC就搞定了。大家可以寫一些簡單的功能,來感受下FC。寫好FC之後,在主程序OB1或者其他FC裡就可以調用該塊,程序界面右邊“FC BLOCK”裡就有該塊,相信做到這裡的話大家都應該知道怎麼做了。我這裡要說明其他問題。關于FC的編寫,這裡就不得不說一些概念性的東西,FC是不帶背景數據塊的,就這句話。因為FC是不帶背景數據塊,所以我們在調用FC時,關于FC這些邏輯的計算完全靠的是我們輸入輸出接口上的這些地址位,給FC提供數據來源。我們在編寫FC的時候,需要注意的是,如果需要中間變量,考慮使用temp,臨時變量滿足需要。但是使用臨時變量需要注意的是,在一個周期沒有完成掃描時,A段程序調用FC1,使用了臨時變量X,改變了其值。那麼B段程序再次調用FC1時,X的值已經被改變了。在下個周期,才會釋放。這點要非常小心。這就是跟FB無法比的,沒有地址來存放數據。編程的時候,盡量多考慮使能。同樣,M寄存器也要慎用,比如,你FC裡用了M2.0這個位表示中間狀态。現在第一次調用FC時,改變了M2.0的值,為ON。現在又第二次調用FC,M2.0的值已經為ON了,顯然這不是我們想要的。雖然你調用了兩次,分别賦了兩組輸入輸出變量,但是你FC内的M終究是内存裡的那個M,你調用無數次都是跟這個M打交道。不知道我說清楚了沒。所以一般不要用這樣呀的中間變量,一定要用時,多考慮通過使能來改變調用時序。同樣,像定時器啊什麼的,如果我們要使用,都需要定義一個in接口,為FC内的定時器提供一個實實在在的通道。第一次調用,我們用T21輸入。第二次調用,我們用T22輸入。這樣就不會出錯。否則就會像M那樣出錯。這個部分很重要。如果沒聽懂,不要緊。繼續聽FB。兩個比較下,應該就很更清楚了。
FB,功能塊。可以幹的事,就是FC能幹的第二個事。隻能幹這個事,為什麼要特别些呢,幹嘛不讓FC一個人搞定就行了。是因為FB功能更強悍些,每次調用他都需要一個DB來供他為邏輯計算存放數據。而不像我之前說的FC,需要輸入輸出接口地址來作為數據來源。每次調用FB時,需要指明一個DB,兩個相互配合。而DB中存放的數據,也可以供全局享用。比如,有一個電機的加速功能塊,作用是調節電機的加速。我們需要輸入的參數是加速時間,最高速度兩個參數,然後計算得出速度給定。這個時候我們最好用FB。現有電機1,輸入加速時間2,最高速度20。那麼2,20這個值放在哪呢,我們調用FB時,就可以放到DB電機1裡去了。現有電機2,加速時間3,最高速度30,。我們仍然調用這個FB,3和30放DB電機2裡就可以了。如果用FC,也可以做這個塊。但是,沒有DB來存放這些數據,就很不方便,也就失去了通用性。
記住一點,簡單的功能集合用FC,複雜的用FB。保準不錯。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!