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