ganz so einfach ist das nicht...
Da Du von 2 PNIO-Systemen redest, gehe ich mal davon aus, dass Du S2-Teilnehmer hast, also nen "offenen Ring" Was für PN-Slaves sind das wirklich?
Für ET200SP hab ich das mal so gelöst:
jeder Slave bekommt 3 Meldungen, Redundanzefehler zu CPU0, Redundanzfehler zu CPU1, Slave ausgefallen
2 SCF51 Aufrufe mit SZL_ID W#16#D91 für IO-System 100 und IO-System 101
Code:
// PNIO-System 100 -------------------------------------------------------------------
L 3 // laufende Nummer des SFC51 Aufrufes
T #AufrufNr
L "DIAGNOSE PN".ALLG.Zaehler_REQ_SFC51 // nur einen SFC51 gleichzeitig anfordern
L #AufrufNr
==I
FP "DIAGNOSE PN".ALLG.Flanke[3]
= #DIAG.REQ
L 1 // Kennbit für PNIO immer 1
SLW 15
L 0 // PNIO-System-ID minus 100
SLW 11
+I
L 1 // Stationsnummer
+I
T #DIAG.INDEX
CALL "RDSYSST"
REQ :=#DIAG.REQ
SZL_ID :=W#16#D91 // 0D91 Baugruppenzustandsinformation
INDEX :=#DIAG.INDEX
RET_VAL :=#DIAG.Fehler
BUSY :=#DIAG.BUSY
SZL_HEADER:=#DIAG.HEADER
DR :="DIAGNOSE PN".PNIO100_GN01
// PNIO-System 101 -------------------------------------------------------------
L 4 // laufende Nummer des SFC51 Aufrufes
T #AufrufNr
L "DIAGNOSE PN".ALLG.Zaehler_REQ_SFC51 // nur einen SFC51 gleichzeitig anfordern
L #AufrufNr
==I
FP "DIAGNOSE PN".ALLG.Flanke[4]
= #DIAG.REQ
L 1 // Kennbit für PNIO immer 1
SLW 15
L 1 // PNIO-System-ID minus 100
SLW 11
+I
L 1 // Stationsnummer
+I
T #DIAG.INDEX
CALL "RDSYSST"
REQ :=#DIAG.REQ
SZL_ID :=W#16#D91 // 0D91 Baugruppenzustandsinformation
INDEX :=#DIAG.INDEX
RET_VAL :=#DIAG.Fehler
BUSY :=#DIAG.BUSY
SZL_HEADER:=#DIAG.HEADER
DR :="DIAGNOSE PN".PNIO101_GN01
auswerten tue ich dann jeweils das eastat.bit01 (Baugruppe vorhanden)
"DIAGNOSE PN".PNIO100_GN01[0].eastat.BIT01 // Profinet-Anschaltung 1 erreichbar CPU0
"DIAGNOSE PN".PNIO101_GN01[0].eastat.BIT01 // Profinet-Anschaltung 1 erreichbar CPU1
Slave ausgefalle wäre dann:
UN "DIAGNOSE PN".PNIO100_GN01[0].eastat.BIT01 // Profinet-Anschaltung 1 erreichbar CPU0
UN "DIAGNOSE PN".PNIO101_GN01[0].eastat.BIT01 // Profinet-Anschaltung 1 erreichbar CPU1
= Slave ausgefallen
...