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