建立 FB / FC 的三個考量-舉例

Yu
Oct 3, 2024

--

上一篇在《建立 FB / FC 的三個考量-說明

應用

Pump 控制就很適合包成一個 FB。
1. 要解決什麼問題 : 想知道在馬達在特定條件下有沒有輸出。
2. 重複性高 : 在這個案子裡,有 10 個硬體配置類似的馬達要控制。
3. 變動性低 : 馬達的起停控制條件很明確、固定。

輸入變數(左側):

En:啟用這個 FB。
DI_Trip:馬達跳脫信號。為 1 時,表示馬達跳脫。
DI_Running:馬達運行信號。為 1 時,表示馬達運轉。
mCMD_Auto:自動模式指令。
mCMD_Man:手動模式指令。
mCMD_Start:手動啟動指令,手動模式下用來啟動馬達的信號。
mCMD_Stop:手動停止指令,手動模式下用來停止馬達的信號。
aCMD_Start:自動啟動指令,自動模式下用來啟動馬達的信號。
aCMD_Stop:自動停止指令,自動模式下用來停止馬達的信號。
DelayTime_ALM:警報延遲的時間設定。可依據每個馬達的需求調整。預設 10 Sec,有上下限,不能設定負數。

在輸入參數中,除了 DelayTime 之外,其他所有的變數都會直接影響 Out。

輸出變數(右側):

Eno:表示 FB 執行的輸出信號,類似於 En,但作為執行結果的反饋。
Out:Pump 的輸出信號。
ST_AutoMode:自動模式的狀態指示信號。
ST_ManMode:手動模式的狀態指示信號。
ST_Running:馬達運行狀態指示信號。
ST_Stopped:馬達停止狀態指示信號。
ALM_Trip:跳脫故障報警。需手動復歸。
ALM_Fail:故障報警信號。啟動失敗或停止失敗的報警信號。需手動復歸。
ALM_FailToStart:啟動失敗報警信號。有 DO 沒 DI。需手動復歸。
ALM_FailToStop:停止失敗報警信號。沒 DO 有 DI。需手動復歸。

在輸出參數裡,Out 是我最想知道的參數。其他的狀態和警報是從 Out 延伸的資訊。有沒有輸出?有輸出。是手動輸出還是自動輸出?沒輸出。原因是什麼?有沒有跳脫?是真輸出還是假輸出?回授訊號有沒有回來?

功能修改

有些專案會規劃 [遠近端控制] (DI_Remote) [緊急停止] (DI_EMO),或是需要 [模擬輸出功能] (EN_Simulation),跟馬達本身有關,會直接影響 Out 的,就再根據實際的需求調整程式寫法。

有些像是 [運轉時間] [運轉次數] 的統計,跟 Out 有關,但不會直接影響 Out 的,可以寫在一起,也可以另外寫一個 FB 計算,注意數值上限不要加到爆掉就好。

另外,其他跟馬達本身沒有直接相關,但會影響馬達輸出的連鎖控制,建議是寫在 FB 外面的程式,透過觸發 aCMD_Start / Stop 來控制馬達起停。因為這些變數不屬於馬達,而且常常會改。如:
[源頭低液位停止運轉] : [液位計] 與 [馬達] 的控制。防止馬達空轉。
[出口高液位停止運轉] : [液位計] 與 [馬達] 的控制。防止桶槽溢出。
[低流量時停止運轉] : [流量計] 與 [馬達] 的控制。異常情況。
[漏液時停止運轉] : [漏液檢知器 ] 與 [馬達] 的控制。異常情況。
[先開閥再開泵] : [閥門] 與 [馬達] 的控制。防止管線蓄壓。

結語

使用 FB / FC 有好處也有限制,適當運用在程式上能夠更有彈性和效率。從零開始建立一個功能塊並沒有想像中難喔,大家可以試著寫寫看符合自己需求的 FB / FC ~

--

--

No responses yet