告別“一鍋粥”!PLC結(jié)構(gòu)化編程:FC、FB、DB是什么?
初學(xué)者寫程序,常常把所有邏輯都堆砌在主程序(OB1)里,就像把所有的菜和調(diào)料都扔進一個大鍋里亂燉。程序規(guī)模小時還行,一旦成百上千個點,這種“一鍋粥”式的程序就會變得難以閱讀、難以調(diào)試、難以維護,改一行可能引發(fā)全盤崩潰。
為了解決這個問題,現(xiàn)代PLC編程普遍采用結(jié)構(gòu)化編程(Structured Programming)的思想,其核心就是像搭積木一樣,用函數(shù)(FC)、函數(shù)塊(FB)和數(shù)據(jù)塊(DB)來構(gòu)建程序。
一、函數(shù)(FC - Function)—— “無記憶的工具”
比喻:FC就像計算器上的一個標(biāo)準(zhǔn)函數(shù),比如“求正弦值(sin)”。你每次輸入一個角度(Input),它都返回一個對應(yīng)的正弦值(Output)。但計算器本身并不“記住”你上次算了什么。FC是沒有記憶功能的,它只處理輸入,給出輸出。
特點:
沒有專用的存儲區(qū),執(zhí)行時產(chǎn)生的臨時數(shù)據(jù)通常不保留。
類似于C語言中的函數(shù)。
適用場景:用于編寫通用的、無狀態(tài)的純邏輯運算。比如,一個標(biāo)準(zhǔn)的數(shù)學(xué)計算(求平均值、單位換算)、一個通用的報警燈閃爍邏輯(輸入報警信號,輸出閃爍的燈控信號)。同一個FC可以被多次調(diào)用,每次調(diào)用互不影響。
二、函數(shù)塊(FB - Function Block)—— “有記憶的機器”
比喻:FB更像一臺咖啡機。你每次操作它(按下按鈕Input),它都能做出一杯咖啡(Output)。但更重要的是,咖啡機有內(nèi)部狀態(tài):還剩多少豆、多少水?這些數(shù)據(jù)是需要被“記住”的,為下一次做咖啡做準(zhǔn)備。FB是有記憶功能的,它的內(nèi)部變量在每次調(diào)用后都會保持。
特點:
必須配一個背景數(shù)據(jù)塊(Instance DB)來存儲其輸入、輸出、內(nèi)部變量。每次調(diào)用一個FB,都需要指定一個專屬的DB來“配”著它用。
類似于面向?qū)ο缶幊讨械囊粋€“類”(Class),而背景DB就是這個類的“實例”(Instance)。
適用場景:用于控制一個有狀態(tài)的具體設(shè)備。比如,控制一臺電機(需要記錄啟動、停止、故障狀態(tài)),控制一個氣動閥門(需要記錄開閥、關(guān)閥、超時狀態(tài)),控制一個PID回路。你寫好一個“電機控制”FB后,可以重復(fù)調(diào)用它10次,分別配10個不同的背景DB,來控制10臺真實的電機,它們彼此獨立,互不干擾。
三、數(shù)據(jù)塊(DB - Data Block)—— “共享的記事本”
比喻:DB是PLC中的全局記事本或共享內(nèi)存區(qū)。所有程序塊(OB, FC, FB)都可以往里面讀寫數(shù)據(jù)。
類型:
全局數(shù)據(jù)塊:存儲全局變量,誰都可以用。常用于存放設(shè)備的手自動狀態(tài)、總產(chǎn)量、配方參數(shù)等需要全局訪問的數(shù)據(jù)。
背景數(shù)據(jù)塊:FB的“專屬儲物間”,由FB自動生成,主要用于存儲FB的內(nèi)部狀態(tài)。一般只由對應(yīng)的FB來使用。
結(jié)構(gòu)化編程的優(yōu)勢:
可復(fù)用性(Reusability):寫好一個“電機控制”FB,就能無限復(fù)用來控制所有電機,極大減少代碼量。
可讀性(Readability):主程序(OB1)變得非常簡潔清晰,就像一本書的目錄:
text
復(fù)制
下載
Network1:調(diào)用“喂料機控制”FB
Network2:調(diào)用“攪拌機控制”FB
Network3:調(diào)用“包裝機控制”FB
Network4:調(diào)用“報警處理”FC可維護性(Maintainability):當(dāng)需要修改所有電機的控制邏輯時,你只需要修改“電機控制”FB這一個地方,所有調(diào)用它的地方就自動更新了。避免了牽一發(fā)而動全身的災(zāi)難。
團隊協(xié)作:不同工程師可以負責(zé)不同的FB/FC開發(fā),后像搭積木一樣整合起來。
從“一鍋粥”的主程序思維,轉(zhuǎn)變到“搭積木”的結(jié)構(gòu)化編程思維,是從一個PLC初學(xué)者邁向合格工程師的關(guān)鍵一步。它讓你的程序不再是“一次性藝術(shù)品”,而是一個堅固、可靠、可擴展的工程作品。