回覆列表
  • 1 # 電子及工控技術
    “塊”的誕生和功能

    1、“塊”的功能

    在PLC程式中有兩種程式,一種是廠家在生產PLC時把它固化在PLC內部CPU中的系統程式,還有一種就是我們需要自己編寫且能夠隨意“擦寫”和下載的使用者程式。我們在編寫PLC程式時,為了使我們的程式條理清晰和便於管理維護和閱讀,軟體製作者給我們規制製作了不同功能的塊,我們在編寫程式時就把不同功能的程式寫在不同的程式塊中,當PLC執行時,它的CPU就會按照程式需要執行的條件去命令相應的“塊”來完成特定的控制任務,這就是塊的功能。

    “FC”函式的意義及使用

    在PLC程式設計軟體中的"FC"是指函式的意思,它是使用者自己編寫的程式塊。在函式(FC)中是沒有資料儲存器的,它是可以透過呼叫使用,在呼叫時要給它的形式引數送一個具體的數值才可以用。另外在這個“FC”函數里面是有區域性變量表和塊引數的,比如這些變數可以是有輸入、輸出和輸入/輸出和臨時變數等。它有點類似一個子程式,可以在主程式中呼叫。

    舉個PLC啟停控制的簡單例子,我們可以在主函式中建立一個子函式“FC”命名為“啟停控制FC1”,建立好函式後給啟動按鈕與停止按鈕以及輸出繼電器關聯一個具體的實際引數就可以了。比如I0.0和I0.1是啟動和停止,Q0.0是輸出控制電機,我們把這種函式的呼叫叫絕對呼叫,很顯然這種方式是不夠靈活的。

    “FB”函式塊的意義和作用

    這個“FB”函式塊是我們自己編寫程式時自己可以建立的,我們建立的這個函式塊FB具有他的引數是可以分配的特點,具有相應的儲存空間。比如剛才講的我們在主程式建立了“FC”函式,由於採用了絕對呼叫顯得不夠靈活,如果我們用“FB”函式塊來操作就顯得很“柔性化”了。我們先在專案中建立一個函式塊,在輸入引數中建立兩個變數分別命名“啟動變數”和“停止變數”,再在輸出引數中建立一個變數,命名為“電機變數”。然後再透過主程式呼叫後,啟動和停止按鈕就不僅限於I0.0和I0.1了,我們可以任意地相關聯就可以了,所以透過“FB”函式塊的使用使程式更加靈活,增加了程式的“柔性化”。

    “DB”資料塊的意義和作用

    “DB”是資料塊,它的作用是儲存我們所編寫程式時所用的資料的,以及所我們所設定的中間變數也都有它儲存。我們把這種資料塊“DB”分成全域性資料塊、資料背景資料塊和資料型別資料塊三種。全域性資料塊是儲存程式資料的,它可以儲存我們前面所設定的變數,比如前面說的“啟動變數”和“停止變數”等。

    “OB”組織塊的意義和作用

    “OB”組織塊是PLC的軟體作業系統與我們所編寫程式的介面,在PLC啟動後,PLC裡面的CPU就會迴圈執行OB組織塊,在“OB”組織塊中我們可以呼叫“FC”函式和“FB”函式塊。“OB”具有多個種類,比如有主程式快“OB1”、中斷程式塊“OB10”等,這樣以來組織塊“OB”是具有優先順序的。這就像微控制器中的優先順序相類似。比如中斷程式塊“OB10”可以打斷“OB1”的執行。

  • 2 # 礦山電氣小東

    PLC是可程式設計邏輯控制器,在當今的自動化控制中起到了核心作用。PLC最大的特點就是能夠根據控制要求,自己編輯控制程式,自由度非常高,硬體輸入、輸出埠可以自由的更改。

    如果要掌握PLC就必須學習編輯語言,程式語言是各PLC廠家規定好規則,只要你用他家的PLC,就得用他家的規定好的程式語言。

    問題中提到的FB、FC、DB、OB就是西門子PLC一種編輯語言,它各代表著不同的作用和功能。

    在西門子PLC程式語言中有FB、FC、DB、OB等語言,那麼我們就來講一講西門子PLC程式設計中的FB、FC、DB、OB是什麼?

    1、什麼是OB?

    OB是組織塊,是英文Organization block的縮寫,組織塊是CPU系統和使用者程式之間的介面。OB組織塊是PLC程式設計底層語言,有一點像電腦主機板的BIOS一樣,有一些OB組織塊是PLC程式工作的必要先決條件,如OB1迴圈呼叫指令,如果程式不呼叫OB1,我們編寫的程式只會掃描一次之後就會停止了,這將無法正常工作。所以我們在編寫程式時,必須在OB1中呼叫或編寫,或利用中斷指令OB32。

    在PLC中有很多不同作用的組織塊,比如,可以迴圈呼叫的OB1;可以檢測通訊是否正常的OB87; CPU硬體故障組織塊OB84;CPU上電只執行一次的OB100等。

    OB組織塊就是像是一個單位,各個部門的一把手一樣,在單位中各司其職,組織排程自己部門的人員來完成工作,它有著決定權和優先權。OB組織塊也像一個排程,根據PLC執行的不同狀況,輸出不同的控制指令。

    在西門子程式設計中,有很多功能的OB組織塊,這裡不一一列舉,可以根據自己程式設計需要查詢相關手冊。

    2、什麼是FB?

    FB是功能塊,FB功能塊就是把一些應用程式模組化了,就好像把編寫好的程式封裝在一個盒子裡,我們想用的時候就拿過來用,不需要在編寫相同控制功能的程式了,為我們程式設計提供了便利。FB功能塊是由單獨的背景資料塊做支撐的,就好比把封裝好程式的相同的盒子,它們擁有自己獨立的房間,即使它們相貌是完全一樣的,確可以根據房間的不同來區別它們,這就是在應用的時候互不干擾的原因。

    在西門子程式設計中,功能塊有兩種,一種是系統定義好的功能塊,一種是使用者自定義功能塊。

    ①、系統功能塊

    系統定義好的功能塊,它是西門子工程師把一些常用的、不常用的程式編寫封裝好的,我們只管拿來用,不可以修改。如,SFB 0 遞增計數器。

    優點:是在程式設計時方便、省時。

    缺點:是你得按它的規則來應用,必須熟悉功能塊的應用。

    ②、使用者功能塊

    使用者自定義的功能塊,是我們需要我們自己編寫封裝的,引腳的多少和功能都是需要自己定義的。

    優點:可以根據自己的控制工藝需要來編寫、定義引腳,方便靈活應用。

    缺點:需要自己程式設計,工作量比較大。

    3、什麼是FC?

    FC是功能,FC是沒有自己獨立的背景資料塊,FC與FB的應用基本是致的,就好像FC沒有自己獨立的房間,大家都住在一個房間裡,所以它們必須是不同的,不能長一樣的相貌,以便於應用的時候區別對待,避免了混亂。

    FC也是分為系統功能與使用者自定義功能,它與FB應用方法基本相同,不同的是FB執行過程的資料,都可以在DB塊中儲存下來,只到下一次運算,被新的資料覆蓋,而FC是不具備背景DB塊儲存資料。

    4、什麼是OB?

    OB是資料塊,它是用來儲存裝置、生產線中的變數資料的,資料塊是用來實現各邏輯塊之間的資料據交換、資料傳遞和共享資料。可以理解它是由一個個小格子的資料集散中心,DB資料塊就是儲存、轉運資料。

    OB資料塊分為共享資料塊(DB)和背景資料塊(DI)。

    共享資料塊,用於儲存PLC的全域性資料,所有的FB、FC或OB都可以對通用資料塊進行讀寫操作。

    背景資料塊( DI),用於傳遞功能塊的引數,只能被指定的功能塊FB訪問,呼叫功能塊FB時,必須同時指定用於該功能塊的即時資料塊DI,即時資料塊內的資料可以自動生成,它們可以是FB變數宣告表中的資料。

    FB、FC、DB、OB是如何應用的?

    1、FB的應用

    FB功能塊一般是應用在大型、複雜控制系統中,能夠實現重複的相同控制或各獨立程式設計系統間相互相容。怎麼理解這句話呢,就拿我礦的充填自動化控制系統舉例吧,充填自動化控制中,使用了非常多的開關閥和調節閥,因控制工藝的不同,少則十幾二十個,多則幾十上百個,各個閥的控制都是相同的,就是開關控制和調節控制,程式設計時就可以建立一個FB功能塊,每一個閥控制來呼叫它,因為呼叫FB時產生的資料,存入呼叫時生成的獨立DB背景資料塊中,而會不會產生互相干擾的問題。這樣就避免每一個閥控制都要獨立編輯自己的控制程式了。

    下圖中的FB2,就是應用在不同的控制中,大家注意看一下它的背景資料塊是不相同的,一個是DB2,一個是DB3。

    而在複雜的控制系統中,程式是需要很多人來編寫的,每個人編寫的習慣不同,會有相容問題,他們只要把自己編寫的程式封裝成FB塊,留出I/O介面就行了,大家編寫的程式就會相互相容了。這就是FB的優勢所在。

    ***FB的應用是為了使程式設計模組化,簡化程式設計,便於各獨立程式設計系統中的相互相容。***

    2、FC的應用

    FC的應用就比FB要簡化一些,我們可以把程式封閉成FC,可以靈活呼叫,它是不可以重複呼叫的。它的功能與FB有很多的相同之處。我們可以理解FC是一個子程式,我們想用的是時候就呼叫它,不用的時候就不呼叫它。

    FC的應用是把控制程式分類化,還是拿我礦充填自動化控制系統來說,充填是需要造漿、壓力水、下砂控制等,在程式設計時,可以把各系統控制程式,獨立編寫FC塊內,這樣的程式對檢修、維護都是有幫助的。

    3、DB的應用

    PLC處理的資料是二進位制的,也就是1和0,所謂的資料就是一長串的1和0的組合,資料塊就是儲存這些數字串的一個方式。PLC還有別的儲存方式,比如M映像區。

    DB塊是儲存過程資料用的,可讀可寫,背景資料塊是與FB同時使用的,在你呼叫FB時,會自動按照FB形參的資料型別自動生成。全域性資料塊是使用者自己定義和建立的,你可以把你的需要的過程資料寫入,也可以讀出來。如果你想把I0.0的狀態傳送到DB1,可以寫作:

    A I 0.0

    = DB1.DBX0.1

    這段程式就是把I0.0的狀態寫入到了DB1的第一位DBX0.1中。

    *****DB資料塊是具有斷電儲存功能的。就是我們把資料寫入DB資料塊之後,即使PLC掉電了,DB資料塊中的資料是不會丟失的,直到資料被其它覆蓋才會改變,我們可以利用這個特性,來儲存一些計算的資料。*****

    4、OB的應用

    程式是需要迴圈掃描來完成工作的,所以在編寫程式的第一步,就是要建立一個OB1組織塊,所有的程式都是需要OB1來排程執行的。

    其它的OB組織塊就要看它的功能是什麼了,在程式時呼叫了。比如,我們想編寫一個在PLC通電後復位資料程式,那麼我們只要呼叫OB100,在OB100中呼叫此復位程式,那麼這段程式只在PLC通電瞬間做一次復位,之後就停止工作,不參與之後的程式控制了。而OB85、OB86、OB87是故障檢測,我們可以根據控制工藝要求來呼叫它們完成控制。

    3、自己編寫的程式是需要實際應用來驗證的,有的時候編寫時是不會體現出BUG的,只有在實際應用中才能夠體現出來,這個時間有時會很長才能體現出來,所以新編寫的程式是要驗證觀察的,尤其是新學程式設計的人員。

    4、給程式加一個密碼有時候是必要的,它的作用是避免自己或別人誤操作修改程式,也是保護自己的程式不被有目的的人所利用,也算是保護智慧財產權的一種手段吧。

    總結

    以上是以西門子PLC來講解的,適用於西門子的300、400、1200、1500,當然了西門子PLC家族裡有一個另類,就是200PLC,它是西門子公司收購的公司,程式語言與西門子自己的語言不一樣。

    當然了其它的PLC的語言與這個的叫法或用法不同,但是基本的原理都是相通的,只是在程式語言上有所不同罷了。所以如果弄懂了這些,其它的PLC也就不在話下了。

  • 3 # 靜觀其變持之以恆

    對這些定義有疑惑的一般都是初學者,只能從簡單實用的角度回答這個問題。比如我們要控制一個電機,你可以用FB或FC去程式設計,使用FC時用到的臨時變數結果只能在一個掃描週期內有效,無法儲存結果,除非另外自建一個DB將結果轉存到其中,因此FC可以單獨使用。使用FB時用到的靜態變數可以儲存計算結果,當呼叫FB時會自動產生背景DB塊,計算結果就是儲存在這個DB塊中因此FB和DB是同時使用的。FB和FC中都可以多次呼叫不同的FB和FC,注意產生的背景DB名稱不能相同。當編好FB或FC的程式後,要執行必須在OB1中先呼叫才可以。關於多重背景DB,特殊功能的OB都是根據不同的使用需求進行選擇。

  • 4 # 科技電氣篇

    首先FB塊功能塊,FC功能。FC裡面可以程式設計不同的程式就是沒有共同程式的程式而後被OB塊呼叫,OB是執行,它可以呼叫你所編的程式的每個塊,呼叫你所編的塊之後,然後PLC只能透過掃描OB塊來處理你所程式設計序,OB塊可以呼叫很多塊。FB塊裡面主要編的就是一些有共同程式的一些程式,舉例,三個電機要分別執行,都是透過星三角啟動的,只是他們功率不一樣,所以所選擇的交流接觸器,熱保護型號也不一樣,包括啟動關閉開關形成的電路圖都是一樣的,所以此時他們三個電路圖都是一樣的,這就起他們的共同點形成的程式,這個共同的程式也就是電路圖就程式設計在FB裡面,每個FB塊可以形成不同的DB,DB裡面就是沒有電機執行的引數。三個電機就會呼叫共同的FB三次就形成3個DB塊,每個DB對應每組的引數。這個DB塊我們稱之為背景資料塊,因為它是一個DB相對應一組電機的。FC在程式設計的時候也會產生資料。這個資料在共享資料塊裡,都可以呼叫的,公用的。

  • 5 # 控制研究控

    首先你說的這些是在西門子的PLC程式設計軟體中才有的程式塊,而在其他廠牌的PLC中也有相似功能的程式塊但是就不是叫這些名字了!--比如STEP7軟體和博圖軟體中就有這些,且這些程式塊的規劃也是西門子300/400/1200/1500系列的PLC中才有的。像西門子200系列的PLC中就沒有這樣的程式塊規劃了,雖然200系列的PLC中也有主程式,子程式和資料塊等說法,但是和你提問的這些資料塊有很大的差別!

    至於這些塊是什麼含義,最好是來看一下STEP7幫助檔案中的解釋,如下圖:

    這個圖片是來自STEP7的幫助檔案中,從這個圖片可以看到OB塊就叫做組織塊,FB叫功能塊,FC叫功能,DB是資料塊(但是DB其實可以分為共享資料塊和背景資料塊)。這個圖上還可以看到有SFB和SFC這些是系統提供的預定義過的功能塊和功能!

    我來簡要的說一下這些塊通常怎麼使用,因為像組織塊OB就有很型別,即很多個OB塊的,每個塊的作用不同,用法也就不同,所以這裡只簡要說一點常規的。

    OB組織塊中最普通常用的就是OB1它就像西門子200PLC中的主程式一樣,根據掃描週期一遍又一遍的自動執行OB1中的程式,所有的其他的FB、FC等的子程式都需要在OB1中被呼叫,它們中的程式才能被執行,因為只有OB1才是一個自動迴圈執行的主程式,CPU上電後這個OB1塊就不斷的自動執行。而像OB35是一個100ms的根據時間來自動執行的迴圈中斷OB組織塊,OB40是一個硬體中斷組織塊,這裡中斷的意思主要就是中斷OB1的程式迴圈,先執行中斷,中斷執行後再繼續執行OB1中的程式。

    FB功能塊,就是可以建立你想建立的子程式,但是FB塊的在呼叫的時候必須配合DB塊來使用。

    FC功能,它和FB塊的作用一樣,都是用來建立子程式的時候使用,但是FC就不需要配合DB塊使用。

    FB和FC塊中寫好子程式後,必須在OB1中被呼叫,它們塊中的程式才能被執行。如果,你忘記在OB1中呼叫了,那麼響應的程式則無法執行!

    再來說一下DB塊,上邊我說了DB塊有2種,當其為背景資料塊的時候,其實他就像是一個FB塊的專用映像資料塊,可以便於我們觀察這個FB塊中的一些引數。而當DB塊被定義為全域性資料塊的時候,它就不專屬於某個FB功能塊了,它可能可以儲存多個FB塊的資料,當然也可以儲存不是FB塊中的資料。

  • 6 # べ_べ469

    我是這樣用的,沒專門詳細研究。OB塊主程式呼叫FC,也有系統自帶OB遮蔽故障和問題用的。DB資料塊,程式內部的變數可以專門分配合某個具體的DB塊。比如,一個系統,一號機我用DB1的變數,二號機我用DB2,以此類推。FC在裡面寫程式,這種程式不會再多處重複使用。FB類似編寫個公式,重複利用。比如氣缸動作,10個氣缸都一樣的動作。寫個公式,裡面帶入不同氣缸的值就可以了。不用寫10個FC,這樣程式量下降,對CUP運算速度好。

  • 中秋節和大豐收的關聯?
  • 如何科學的坐月子?