詳細(xì)介紹
德國西門子CPU代理商用戶程序結(jié)構(gòu)是由各種塊組成的,,這些塊使的程序結(jié)構(gòu)可以模塊化,。可以通過這些塊的相互調(diào)用來組織程序,,便于修改與調(diào)試,。幾種塊的簡要描述見下表:
在博途軟件中添加好S7-1200的CPU模塊后,默認(rèn)會自動添加一個OB1組織塊,。在項目樹中單擊“添加新塊”,,可以添加其他塊,如下圖所示:
2.1 OB 組織塊
它們充當(dāng)操作系統(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,為初始化組織塊,,當(dāng)從STOP轉(zhuǎn)為RUN時,,會執(zhí)行一次。啟動組織塊執(zhí)行完畢后才開始執(zhí)行主“程序循環(huán)”OB ,。S7-1200 CPU 中支持多個啟動 OB ,,按照編號順序(由小到大)依次執(zhí)行,OB100 是默認(rèn)設(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ù),。當(dāng)某些代碼需要經(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ù)的代碼塊??梢员唤M織塊調(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都可以訪問。例如,,可以用全局?jǐn)?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進(jìn)行組態(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,??梢詣h除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進(jìn)行存儲器復(fù)位操作。
圖15
圖16
方法2:選中“Blocks” ,,按照圖17所示菜單進(jìn)行下載(刪除MMC卡中所有的塊,,并把新的程序?qū)懙娇ㄖ校瑫r對CPU RAM進(jìn)行一次復(fù)位),。
圖17
問題7:同步失敗的原因,?
回答:當(dāng)同步失敗時,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”進(jìn)行數(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閃爍,,診斷緩沖會報總線錯誤。