詳細介紹
德國西門子CPU代理商用戶程序結(jié)構(gòu)是由各種塊組成的,這些塊使的程序結(jié)構(gòu)可以模塊化。可以通過這些塊的相互調(diào)用來組織程序,便于修改與調(diào)試。幾種塊的簡要描述見下表:
在博途軟件中添加好S7-1200的CPU模塊后,默認會自動添加一個OB1組織塊。在項目樹中單擊“添加新塊”,可以添加其他塊,如下圖所示:
2.1 OB 組織塊
它們充當操作系統(tǒng)和用戶程序之間的接口。由操作系統(tǒng)調(diào)用,用于控制循環(huán)掃描和中斷程序的執(zhí)行、PLC的啟動和錯誤處理等。組織塊的程序是用戶編寫的。接下來我們來看看一些常用的組織塊介紹。
1)循環(huán)組織塊OB1
OB1在RUN模式下會循環(huán)執(zhí)行,可以理解為主程序。可以在OB1中編寫處理程序,還可以調(diào)用函數(shù)或功能塊來處理。其循環(huán)過程如下圖所示:
2)初始化組織塊OB100
OB100,為初始化組織塊,當從STOP轉(zhuǎn)為RUN時,會執(zhí)行一次。啟動組織塊執(zhí)行完畢后才開始執(zhí)行主“程序循環(huán)”OB 。S7-1200 CPU 中支持多個啟動 OB ,按照編號順序(由小到大)依次執(zhí)行,OB100 是默認設(shè)置。其它啟動 OB 的編號必須大于、等于123。如下圖所示添加了兩個初始化組織塊OB100和OB123
PLC啟動過程和運行過程如下圖所示:
3)循環(huán)中斷OB
通過“循環(huán)中斷”OB,可以定時的執(zhí)行其中的代碼。在新建時可以設(shè)置好,執(zhí)行的時間間隔,如下圖所示:
通過“循環(huán)中斷”OB,可以定時的執(zhí)行其中的代碼。在新建時可以設(shè)置好,執(zhí)行的時間間隔,如下圖所示:
2.2 功能(函數(shù)) FC
功能(Function,F(xiàn)C)是用戶程序編寫的子程序,它包含完成特定任務(wù)的代碼和參數(shù)。當某些代碼需要經(jīng)常重復(fù)被執(zhí)行時,可以將其寫入功能中,但需要執(zhí)行時調(diào)用該功能即可,例如某些算術(shù)運算。
注:無自己專屬的數(shù)據(jù)塊,執(zhí)行結(jié)束后,其臨時變量中的數(shù)據(jù)就丟失了
2.3 功能塊 (FB)
FB:功能塊 (FB) 是使用背景數(shù)據(jù)塊保存其參數(shù)和靜態(tài)數(shù)據(jù)的代碼塊。可以被組織塊調(diào)用,也可以調(diào)用其他功能塊和功能。
調(diào)用同一個功能塊時使用不同的背景數(shù)據(jù)塊,可以控制不同的設(shè)備。例如,可以控制多個相似的設(shè)備(如電機),在每次調(diào)用時為各設(shè)備分配不同的背景數(shù)據(jù)塊。 每個背景 DB 存儲單個設(shè)備的數(shù)據(jù)(如速度、加速時間和總運行時間)
注:擁有自己專屬的數(shù)據(jù)塊,F(xiàn)B中定義的變量會保持,即執(zhí)行時FB時變量的值的大小于上一次調(diào)用退出時的值相同。
2.4、數(shù)據(jù)塊
數(shù)據(jù)塊(Data block,DB)是用于存放執(zhí)行代碼塊時所需的數(shù)據(jù)的數(shù)據(jù)區(qū),有兩種類型的數(shù)據(jù)塊:
1) 全局(Global)數(shù)據(jù)塊:存儲供所有的代碼塊使用的數(shù)據(jù),所有的OB、FB和FC都可以訪問。例如,可以用全局數(shù)據(jù)塊來存儲那些在功能執(zhí)行結(jié)束后需要保持的數(shù)據(jù)。
2) 背景數(shù)據(jù)塊:存儲供特定的FB使用的數(shù)據(jù)。背景 DB 中數(shù)據(jù)的結(jié)構(gòu)反映了 FB的參數(shù)(Input、Output 和 InOut)和靜態(tài)數(shù)據(jù)。
2.5 調(diào)用關(guān)系
組織塊(OB)、功能塊(FB)和功能(FC)調(diào)用關(guān)系如下圖所示:
西門子PLC系統(tǒng)軟件冗余調(diào)試的常見問題
發(fā)表時間:2018-01-02 11:28
西門子PLC系統(tǒng)軟件冗余調(diào)試的常見問題
問題1:硬件組態(tài)需要注意什么?德國西門子CPU代理商
回答:軟冗余系統(tǒng)的冗余控制只能通過ET 200M 實現(xiàn),按照圖1進行組態(tài)。A 、B站的組態(tài)必須確保*,可以拷貝ET200M 的組態(tài),在另一站點組態(tài)中使用圖2所示菜單操作。
圖1
圖2
問題2:哪些模塊可以支持軟冗余?
回答:軟冗余模塊型號鏈接
問題3:FC100“SWR_START”中定義的數(shù)據(jù)區(qū),哪些是冗余數(shù)據(jù)區(qū)?哪些是非冗余數(shù)據(jù)區(qū)?有什么區(qū)別?
回答:如圖3紅色區(qū)域,冗余同步數(shù)據(jù)區(qū)包括:過程映像輸出區(qū)/DB/IEC/M;如圖3綠色區(qū)域,非冗余數(shù)據(jù)區(qū)包括:DB。冗余數(shù)據(jù)區(qū),主站的數(shù)據(jù)會通過冗余鏈路覆蓋到備用站,保證主備之間數(shù)據(jù)同步;非冗余DB區(qū),無論主備,數(shù)據(jù)按照定義的A-B B-A方向傳遞。注意!無論冗余數(shù)據(jù)區(qū)還是非冗余數(shù)據(jù)區(qū),A 、B站點的長度必須*。如果不需要使用,長度定義為0。
圖3
問題3:軟冗余中DB塊的影響。
回答: 軟冗余系統(tǒng)中會使用一些特殊功能的DB 塊,在FC100“SWR_START”中定義,如圖4:
圖4
A: 軟冗余工作DB,程序會自動生成,不要在項目中手動添加; “DB_SEND_NO” 、“DB_RCV_NO”定義的DB,在冗余站兩側(cè)*。
B: FB101“SWR_ZYK”的背景數(shù)據(jù)塊,注意生成DB5的長度。如果創(chuàng)建出錯,CPU 能夠正常運行但是SF 燈報錯,診斷緩沖區(qū)如圖5:
圖5
查看DB5的長度如圖6,只有100字節(jié),此時雙擊打開DB5看不到內(nèi)部參數(shù),如圖7。可以刪除DB5,重新生成FB101“SWR_ZYK”背景數(shù)據(jù)塊。正常MPI同步-194字節(jié);以太網(wǎng)/PROFIBUS 同步-358字節(jié)。
圖6
圖7
C:冗余DB區(qū),主站的數(shù)據(jù)隨時同步備用站。需要手動創(chuàng)建,IEC定時器的背景數(shù)據(jù)塊也需要生成,A 、B站點長度*;生成的DB塊的長度需要大于2個字(新生成的DB塊,內(nèi)部只有一個INT變量,長度2字節(jié))。否則,CPU會停機,診斷緩沖區(qū)報如圖8錯誤:
圖8
D:非冗余DB塊
? 不要手動創(chuàng)建,程序自動生成。
? A-B B-A的DB必須同時使用,不能只有一個方向的(A-B 0 BYTE ,B-A 100BYTE -----B STOP;B-A 0 BYTE ,A-B 100BYTE -----A STOP)。否則,CPU停機,診斷緩沖區(qū)如圖9:
圖9
? 創(chuàng)建的長度必須是偶數(shù)字節(jié),不能是奇數(shù)字節(jié),如圖10;A、 B站點長度*。否則,CPU停機,診斷緩沖區(qū)如圖11:
圖10
圖11
問題5:其他冗余同步數(shù)據(jù)區(qū)的影響。
回答:其他冗余同步數(shù)據(jù)區(qū)如下,包括過程映像輸出區(qū)和M區(qū),如圖12。主站數(shù)據(jù)隨時同步到備用站。過程映像輸出區(qū)不要大于CPU允許范圍,而且每個ET 200M從站允許zui大32字節(jié);M區(qū)大于1個字節(jié),小于CPU允許zui大M區(qū)范圍。否則,CPU停機,診斷緩沖區(qū)如圖13。如果不需要使用,長度定義為0。
圖12
圖13
問題6:修改完FC100“SWR_START”的參數(shù),重新下載后為何會導(dǎo)致CPU報錯?
回答:FC100“SWR_START”在CPU啟動會生成相關(guān)的DB塊,修改參數(shù)后必須刪除已生成舊的DB塊,否則會導(dǎo)致CPU故障。手冊描述如圖14:
圖14
所以,修改完FC100“SWR_START”參數(shù)后,建議使用下面方法重新下載。
方法1:
打開項目在線窗口,如圖15。
刪除所有程序塊,如圖15。
重新下載塊,如圖16。
對CPU進行存儲器復(fù)位操作。
圖15
圖16
方法2:選中“Blocks” ,按照圖17所示菜單進行下載(刪除MMC卡中所有的塊,并把新的程序?qū)懙娇ㄖ校瑫r對CPU RAM進行一次復(fù)位)。
圖17
問題7:同步失敗的原因?
回答:當同步失敗時,F(xiàn)B101“SWR_ZYK”的返回值會報16#8015的錯誤,如圖18,同時狀態(tài)字DB5.DBX9.5置1,如圖19。在確保物理連接正常情況下,檢查下面的參數(shù)設(shè)置。
圖18
圖19
? 根據(jù)不同的同步方式,注意FC100 “SWR_START”的參數(shù),如圖20。“MPI_ADR”表示對方的MPI地址,對于MPI同步有效;“LADDR” “VERB_ID”對于PROFIBUS/ETHERENT 同步有效,分別代表同步CP的硬件地址和連接號,如圖21。
圖20
圖21
? 選擇MPI同步,冗余程序塊會調(diào)用SFC65“X_SEND”和SFC66“X_REV”進行數(shù)據(jù)同步,占用S7-300 CPU的2個“S7 basic communication”連接資源,如圖22。注意,要確保在組態(tài)中預(yù)留足夠的資源,如圖23,否則會因為連接資源不夠影響同步鏈路的通訊。
圖22
圖23
問題8:FC102 “SWR_DIAG”作用。
回答:FC102 “SWR_DIAG”必須在OB86中調(diào)用,軟冗余系統(tǒng)才會對DP總線錯誤做出判斷,從而控制主備切換。注意!如果不調(diào)用,此時狀態(tài)字不會報任何錯誤,也不會影響CPU故障導(dǎo)致主備切換。但是對于此時出現(xiàn)的總線故障軟冗余系統(tǒng)不會切換,但是外部IM153模塊會執(zhí)行切換。注意!FC102 “SWR_DIAG”一定不能修改塊編號。
問題9:為什么狀態(tài)字不穩(wěn)定,DB5.DBX9.5 0-1閃爍?
回答:如圖24,DB5.DBX9.5 0-1閃爍表示同步有時成功有時失敗。首先,要保證兩個CPU之間冗余數(shù)據(jù)和非冗余數(shù)據(jù)區(qū)大小*。其次,冗余主備CPU之間同步過程如圖25所示,數(shù)據(jù)的同步是隨著FB101“SWR_ZYK”的執(zhí)行實現(xiàn)的,所以要確保同步成功,需要兩個CPU對FB101“SWR_ZYK”的調(diào)用周期*,建議在OB35中調(diào)用(如果在OB1中調(diào)用,確保OB1循環(huán)掃描周期相差不多)。
圖24
圖25
如果冗余系統(tǒng)使用不同CPU,使用OB35調(diào)用FB101“SWR_ZYK”,不要在OB1中調(diào)用。因為,不同CPU運算速度不同,會導(dǎo)致OB1循環(huán)周期差異較大,從而影響同步效果,如圖26、 27。
圖26
圖27
問題10:不同版本的軟冗余程序包區(qū)別。
回答:V1.1版本用于早期CPU315-2DP和S7-400的CPU。新CPU需要使用V1.2版本庫。如圖28(來自冗余軟件包文檔說明)。
圖28
CPU暖啟動過程中如果PROFIBUS總線故障,V1.2版本會導(dǎo)致CPU停機,診斷緩沖區(qū)如圖29;V1.3版本,CPU 不會停機,SF 亮BF閃爍,診斷緩沖會報總線錯誤。