【OB86配合SFC12在PROFINET診斷中的應用】
OB86是機架故障組織塊,操作系統在檢測到下列PN系統故障時將調用OB86:
1、檢測到PROFINET IO設備故障,故障產生和消失時分別調用一次OB86;
2、使用SFC12“D_ACT_DP”的模式4禁止一個PROFINET IO或PROFIBUS DP站時;
3、使用SFC12“D_ACT_DP”的模式3激活一個PROFINET IO或PROFIBUS DP站時;
4、檢測到PROFINET IO系統、PROFINET IO設備或PROFINET IO設備的某些子模塊的故障。
【PROFINET診斷故障可能進一步觸發SFB20】
1、SFB20的作用:如果S7/M7-300/400或C7-300 CPU處於RUN、HALT操作模式或正在啟動,則該功能塊將觸發這些模塊的停機(STOP)功能;
2、應對方法:檢查你的程序,程序中的控制邏輯調用了SFB20。即,在SFB20 “STOP”的控制輸入REQ上有上升沿,則將由ID尋址的遠程設備切換到STOP模式。看看是什么條件觸發了REQ;
3、詳見《S7-300400的系統軟件和標准功能》中的19.12通過SFB 20“STOP”將遠程設備切換到STOP狀態。
【通過對OB86的編程,可以用人機界面畫面上的指示燈顯示PROFINET IO設備的狀態】
假設CPU為CPU 315-2PN/DP,以太網上有6個IO設備號分別為1~6的PROFINET IO設備。在SIMATIC管理器中生成一個人機界面(HMI)的站點,在網絡組態工具NetPro中,將CPU和HMI連接到以太網上。雙擊HMI站點中的“畫面_1”,打開WinCC flexible的項目,在畫面上生成6個指示燈。在PLC的程序中用M10.1~M10.6來控制HMI畫面上的6個PROFINET IO設備的狀態指示燈。有故障的IO設備的存儲器位為1狀態,指示燈點亮。OB86的局部變量OB86_EV_CLASS(LB0)為16#39、16#38分別表示故障出現和消失。故障代碼OB86_FLT_ID(LB1)為16#CA表示PROFINET IO系統故障。OB86_FLT_ID為16#CB表示PROFINET IO設備故障或故障消失。此時OB86_RESERVED_1為16#C4,OB86_Z23(LD8)的第0~第10位為IO設備號,第11~第14位為IO系統的ID(編號),該項目只有一個PROFINET IO系統。根據上述信息可以控制顯示故障IO設備狀態的指示燈。
【OB86示例程序】
下面是OB86中的程序。出現PROFINET IO系統故障時(LW0為16#39CA),將16#7E送MB10,M10.1~M10.6全部被置為1,點亮所有的PROFINET IO設備的故障指示燈。某個PROFINET IO設備出現故障時(LW0為16#39CB),將故障IO設備的編號和M10.0的地址相加,計算出故障IO設備對應的地址,然后用間接尋址將對應的M位置位,點亮故障IO設備對應的指示燈。某個PROFINET IO設備故障消失時(LW0為16#38CB),用同樣的方法計算出故障IO設備對應的地址,然后用間接尋址將對應的M位復位,熄滅故障IO設備對應的指示燈。
A(
L W#16#39CA
L LW 0
==I
)
JCN m001 //不是PROFINET IO系統故障出現則跳轉
L B#16#7E //令MB10的第1~第6位為1
T MB 10 //點亮1~6號IO設備的指示燈
m001: A(
L W#16#39CB
L LW 0
==I //PROFINET IO設備故障出現時比較條件滿足
)
A(
L B#16#C4
L #OB86_RESERVED_1 //再次確認
==I
)
JCN m002 //不是PROFINET IO設備故障出現則跳轉
L LD 8 //裝載OB86_Z23
L 2#11111111111
AW //提取故障IO設備編號
L P#10.0 //起始地址送累加器1
+D
T LD 20 //故障IO設備對應的存儲器位地址送地址指針
S M [LD 20] //點亮故障IO設備對應的指示燈
m002: A(
L W#16#38CB
L LW 0
==I //PROFINET IO設備故障消失時比較條件滿足
)
A(
L B#16#C4
L #OB86_RESERVED_1 //再次確認
==I
)
JCN m003 //不是IO設備故障消失則跳轉
L LD 8 //裝載OB86_Z23
L 2#11111111111
AW //提取故障IO設備編號
L P#10.0 //起始地址送累加器1
+D
T LD 20 //故障IO設備對應的存儲器位地址送地址指針
R M [LD 20] //熄滅故障IO設備對應的指示燈
m003: NOP 0