Profibus/Profinet-Teilnehmer Diagnose

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
warum der Compiler meckert sehe ich auch gerade nicht - im Augenblick kann ich es auch nicht nachstellen ...
Was meinst du mit "granular diagnostizieren" ?
Die Zuordnung Teilnehmer-Statusbit ist dadurch sicher gestellt, dass du ja nicht den I-DB dynamisch vergrößern/verkleinern kannst. Dadurch bleiben die Indexe ja immer auf den gleichen Adressen ...

Gruß
Larry
 
Was meinst du mit "granular diagnostizieren" ?
In meinem PN_DIAG_SCL werden ja die SZL_IDs 0092, und 294 verwendet. Das gibt mir Info über die Baugruppenträger (lt. S7 Hilfe zum SFC 51). (Btw.: Gibt das eigentlich auch Auskunft über den Zustand der IMs?)

Die Baugruppenzustände möchte ich mir mit SFB 52 RDREC. Wobei ich da gerade am Rätseln (im Siemens Handbuch System- und Standardfunktionen für S7300/400) bin, wo ich die Struktur der zurückgegebenen Datensätze nachlesen kann !?? Woher soll ich wissen, wie ich die SZL-Teilliste interpretieren soll?
Die Zuordnung Teilnehmer-Statusbit ist dadurch sicher gestellt, dass du ja nicht den I-DB dynamisch vergrößern/verkleinern kannst. Dadurch bleiben die Indexe ja immer auf den gleichen Adressen ...
Gilt das auch, wenn mir ein TN ausfällt ? Oder verschieben sich dann die indizes ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der gebildete Index und dessen Zuordnung bezieht sich auf die Teilnehmer-Nummer laut HW-Konfig. Fällt der Teilnehmer 6 (z.B.) aus dann wird er FALSE, die Anderen verschieben sich dadurch aber nicht nach vorne.

Die SCL-ZTeil-Liste wird in der Step7-Hilfe, wenn man sich da durchkämpft, immer wieder stückweise erklärt. Ich habe mich damit aber dann nicht mehr weiter beschäftigt, da es mir insgesamt zu aufwändig war. Mir ging es ja nur darum, eine "schmalere" Variante zum FB126 zu haben (der das dann ja zum Teil kann ...).

Gruß
Larry
 
Hallo,

da ich nicht extra einen neuen Thread dafür aufmachen möchte und es ansatzweise hierrein passt:

Ich hab ne 317-2 PN/DP mit einer DI-Baugruppe. Da unsere Hardware (u.a. IM 153-4 PN) erst in ein Paar Wochen kommen wird, kann ich nun die (Verbindungs-)Störung/den Ausfall eines PN-Teilnehmers (per SFC 51, SZL_ID 0x0294) schwer testen.

Allerdings hätte ich noch eine 319-3 PN/DP vor mir liegen..

FRAGE: Kann man die 319er als PN-Teilnehmer des PN-Systems der 317er projektieren ?
 
Sie hat FW 2.4.0 (6es7318-3EL00-0ab0), die neueste Version ist 2.8.6. Woher hast du die Info Harald?
 
Zuletzt bearbeitet:
Woher hast du die Info Harald?
Aus dem Siemens Industry Online Support :cool:

6ES7318-3EL00-0AB0 CPU319-3 PN/DP - Technische Daten
6ES7318-3EL01-0AB0 CPU319-3 PN/DP - Technische Daten
jeweils die Angabe: 3. Schnittstelle (PROFINET) > Funktionalität: "PROFINET IO-Device" Ja/Nein

Welche Kommunikationsdienste unterstützen die CPUs mit integrierter PROFINET-Schnittstelle und die WinAC RTX über Industrial Ethernet?
13) Die Funktion bzw. der Dienst wird ab Firmware V3.2 unterstützt.

Als erste Anlaufstelle lohnt sich auch immer wieder ein Blick in dieses Standardwerk:
CPU-CPU Kommunikation mit SIMATIC Controllern (Kompendium)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Laut den Technischen Daten der 3EL00 kann sie nicht als IO-Device benutzt werden.

Kann ich sie also nicht verwenden, um den Ausfall eines Teilnehmers am PNIO-System zu testen?

Teilnehmer heisst ja nicht gleich IO-Device, sondern auch andere IO-Controller?? Wobei, das mach ich dann eh über Lebensbit-Überwachung
 
Zuletzt bearbeitet:
FYI:

Die Siemens-Hotline hat mir mitgeteilt, dass alle nicht-diagnosefähigen Signalbaugruppen (in meinem Fall die 300er Serie) auch keine generelle Diagnose (gestört/ok, Spannungswegfall an der Baugruppe, etc.) erlauben (da sie keinen Datensatz 0 (DS0) besitzen würden).

Gruß
Flux
 
Zusammenfassend (Diagnose per SFC 51 "RDSYSST"):

Ich kann die CPU-LEDs auslesen per SZL_ID 19_Hex

Die Profinet-TN-Liste (darunter fallen auch die IMs) per SZL_ID 694_Hex und INDEX 64_Hex (==100_Dez)

CPU<->CPU und CPU<->Panel über (gegenseitige) Lebensbitüberwachung

F-Baugruppen-(Kanal-)Diagnose über den zugehörigen DB


FRAGE: Kann ich auch die LEDs der IMs oder auch den Zustand von CPs auslesen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Siemens-Hotline hat mir mitgeteilt, dass alle nicht-diagnosefähigen Signalbaugruppen (in meinem Fall die 300er Serie) auch keine generelle Diagnose (gestört/ok, Spannungswegfall an der Baugruppe, etc.)

Jo, damit hab ich auch ständig zu kämpfen. Bei DI32 Baugruppen, versuche ich immer den letzten DI auf Dauer-1 legen zu lassen. Das vereinfacht die Sache ungemein... Für alle anderen Baugruppen nehme ich dann auch SFC 51.

Jedenfalls, um im Büro vorab irgendwas zu testen, brauchst Du die identischen IO-Baugruppen. Da irgendwas mit ner anderen CPU als Dummy zu testen macht wenig Sinn, da die sich ganz anders verhält...

Gruß.
 
Bei DI32 Baugruppen, versuche ich immer den letzten DI auf Dauer-1 legen zu lassen.

Interessanter "Trick" :) Werde mal eroieren, ob wir uns das ressourcenmäßig leisten können oder wollen..
 
Hallo Alle!

Ich wurde gern wissen was der aktuelle Stand der Dinge ist mit den verschiedenen Programmen. Ich habe wieder ein Projekt (für Leute mit langem Gedächtnis, ein kleiner Bruder für das Hochfeld-Magnetlabor Dresden - siehe unter www.hzdr.de) wo ich (diesmal Profinet) Teilnehmer habe, die je nach Bedarf ein- oder ausgeschaltet werden können. Wenn sie ausgeschaltet werden will ich dies erkennen und mit SFC12 diese Teilnehmer deaktivieren. Im alten Projekt hatte ich dies mit FC125 gemacht aber jetzt interessiere ich mich für Euer FB126 Varianten.

Sind die Programme im Thread noch aktuell oder gibt es neuere Varianten die hier nicht erschienen sind. Wenn es irgend welche Dokumentation gibt, wäre ich auch dafür dankbar!

Gruß

Roy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

anbei die Version die ich seit diesem Thema erfolgreich in etwa 20 Anlagen am Laufen habe.

Code:
FUNCTION_BLOCK FB126   
TITLE   = 'BUS_DIAG'
AUTHOR  : 'Matze001'
VERSION : '1.0'   

// ==========================================================================
// = Baustein:                                               FB126 BUS_DIAG =
// = Autor:                                                        Matze001 =
// ==========================================================================

// ==========================================================================
// = Versionshistorie                                                       =
// =                                                                        =
// = V0.1 09.07.2012 Matze001                                               =
// = -----------------------                                                =
// = Baustein erstellt, ungetestet                                          =
// =                                                                        =
// = V1.0 09.07.2012 Matze001                                               =
// = -----------------------                                                =
// = Baustein getestet                                                      =
// ==========================================================================

// ==========================================================================
// = Bausteinbeschreibung                                                   =
// =                                                                        =
// = Erfassung von Busteilnehmerausfällen                                   =
// =                                                                        =
// = Benötigte Bausteine                                                    =
// =                                                                        =
// = Keine                                                                  =
// ========================================================================== 

VAR_INPUT
    ENABLE                  : BOOL;
    PROFIBUS                : BOOL;
    PROFINET                : BOOL;
END_VAR

VAR_OUTPUT 
 
END_VAR

VAR      
    Teilnehmer_Busfehler    : ARRAY[1..256] OF BOOL ; 
    SK1_NR                  : INT;
    REQ1                    : BOOL ;
    REQ2                    : BOOL ;
    REQ3                    : BOOL ;
    REQ4                    : BOOL ;
    BUSY1                   : BOOL ; 
    BUSY2                   : BOOL ; 
    BUSY3                   : BOOL ; 
    BUSY4                   : BOOL ; 

   
    SZL_Header              : STRUCT
        LenthDR             : WORD ;
        n_DR                : WORD ;
    END_STRUCT ;
  
  
    Abfrage_PB_Slaves       : STRUCT 
        projektiert         : ARRAY[0..255] OF BOOL ; 
        in_Funktion         : ARRAY[0..255] OF BOOL ; 
    END_STRUCT ;
    
    Abfrage_PN_Slaves : STRUCT 
        projektiert_Status  : WORD ;
        projektiert         : ARRAY[0..2047] OF BOOL ;
        in_Funktion_Status  : WORD ;
        in_Funktion         : ARRAY[0..2047] OF BOOL ; 
        mit_Stoerung_Status : WORD ;
        mit_Stoerung        : ARRAY[0..2047] OF BOOL ; 
    END_STRUCT ;
    at_Abfrage_PN_Slaves AT Abfrage_PN_Slaves : STRUCT 
        projektiert         : ARRAY[0..128] OF WORD ; 
        in_Funktion         : ARRAY[0..128] OF WORD ;  
        mit_Stoerung        : ARRAY[0..128] OF WORD ;  
    END_STRUCT ;
   

END_VAR

VAR_TEMP
    Fehler                  : INT ; 
    i                       : INT;   
END_VAR


BEGIN

// Profibusauswertung


IF ENABLE AND PROFIBUS AND NOT PROFINET AND SK1_NR = 0 THEN
    REQ1:=TRUE;
    SK1_NR:=1;
END_IF;



Fehler := RDSYSST (REQ := REQ1
                  ,SZL_ID := w#16#0092               // Abfrage der projektierten ProfiBus-Stationen
                  ,INDEX := 1                        // Mastersystem-ID
                  ,BUSY := BUSY1
                  ,SZL_HEADER := SZL_Header
                  ,DR := Abfrage_PB_Slaves.projektiert       // Ziel-Datenbereich für die abgefragten Daten
                  ) ;

IF SK1_NR = 1 AND NOT BUSY1 AND FEHLER = 0 THEN
    REQ1:=FALSE;
    REQ2:=TRUE;
    SK1_NR:=2;
END_IF;


Fehler := RDSYSST (REQ := REQ2
                  ,SZL_ID := w#16#0292               // Abfrage der nicht ausgefallenen ProfiBus-Stationen
                  ,INDEX := 1                        // Mastersystem-ID
                  ,BUSY := BUSY2
                  ,SZL_HEADER := SZL_Header
                  ,DR := Abfrage_PB_Slaves.in_Funktion       // Ziel-Datenbereich für die abgefragten Daten
                  ) ;

IF SK1_NR = 2 AND NOT BUSY2 AND FEHLER = 0 THEN
    REQ2:=FALSE;
    SK1_NR:=3;
END_IF;

IF SK1_NR = 3 THEN
    
    FOR i:= 0 TO 255 DO
       
        Teilnehmer_Busfehler[i+1] := Abfrage_PB_Slaves.projektiert[i] AND NOT Abfrage_PB_Slaves.in_Funktion[i];
        
    END_FOR;
    
    SK1_NR:= 0;
END_IF;


// Profinetauswertung

IF ENABLE AND NOT PROFIBUS AND PROFINET AND SK1_NR = 0 THEN
    REQ3:=TRUE;
    SK1_NR:=11;
END_IF;


Fehler := RDSYSST (REQ := REQ3
                  ,SZL_ID := w#16#0094               // Abfrage der projektierten ProfiNet-Stationen
                  ,INDEX := 100                        // Mastersystem-ID
                  ,BUSY := BUSY3
                  ,SZL_HEADER := SZL_Header
                  ,DR := at_Abfrage_PN_Slaves.projektiert       // Ziel-Datenbereich für die abgefragten Daten
                  ) ;


IF SK1_NR = 11 AND NOT BUSY3 AND FEHLER = 0 THEN
    REQ3:=FALSE;
    REQ4:=TRUE;
    SK1_NR:=12;
END_IF;

Fehler := RDSYSST (REQ := REQ4
                  ,SZL_ID := w#16#0294               // Abfrage der nicht ausgefallenen ProfiNet-Stationen
                  ,INDEX := 100                        // Mastersystem-ID
                  ,BUSY := BUSY4
                  ,SZL_HEADER := SZL_Header
                  ,DR := at_Abfrage_PN_Slaves.in_Funktion       // Ziel-Datenbereich für die abgefragten Daten
                  ) ;
                  
IF SK1_NR = 12 AND NOT BUSY4 AND FEHLER = 0 THEN
    REQ4:=FALSE;
    SK1_NR:=13;
END_IF;



IF SK1_NR = 13 THEN
    
    FOR i:= 1 TO 255 DO
        
        Teilnehmer_Busfehler[i] := Abfrage_PN_Slaves.projektiert[i] AND NOT Abfrage_PN_Slaves.in_Funktion[i];
        
    END_FOR;
    
    SK1_NR:= 0;
END_IF;    
  



END_FUNCTION_BLOCK


Grüße

Marcel
 
Vielen Dank, werde ich mich morgen angucken.

Gruß

Roy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zitat Zitat von RMA Beitrag anzeigen
.. werde ich mich morgen angucken...
Das tue ich auch jeden Morgen .

Deutsche Sprache schwere Sprache! :)

Da ist einiges zu lesen aber auf den ersten Blick sieht es so aus als würde es das tun was ich brauche. Ob es einfacher und schneller geht bin ich noch nicht ganz sicher - die Lernkurve für FC125 habe ich schon hinter mir.
 
Zurück
Oben