Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 3 von 8 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 79

Thema: Profibus/Profinet-Teilnehmer Diagnose

  1. #21
    Matze001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2009
    Beiträge
    2.115
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du verstehst mich nicht

    Der Merker den ich da dran mache ist im Programm NIRGENDS verwendet, er ist IMMER FALSE! Der Trigger wird NIE von mir oder dem Programm gesetzt!
    Mir ist schon klar das ich den Trigger nicht sehen würde, aber die o.g. Fakten sprechen für sich!

    Grüße

    Marcel

  2. #22
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Sorry ... ich hatte dich wirklich nicht verstanden - ich denke aber, jetzt schon ...
    Das genannte Ergebnis halte ich dann trotzdem für einen Zufall, da die Ablaufkette, die die Diag-Info aktualisiert ja nur auf das Ereignis des externen Triggers oder das des Timers angestossen wird.

    Wegen deiner weiteren Diag-Info-Anfrage :
    Ich hatte das jetzt mal nachgesehen. Diese (und auch noch viele andere) Info's erhält man nur, wenn man Station für Station einzeln abfragt. Das geht natürlich zu machen, würde aber meinem ursprünglichen Wunsch nach einem "schmalen" FB (der eben nicht so aufgebläht und unüberschaubar ist, wie der Siemens-FB mit seinem Visu-Anhang) komplett entgegen stehen. Da werde ich also im Augenblick keine Zeit drauf verwenden ... Sorry ...

    Gruß
    Larry

  3. #23
    Matze001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2009
    Beiträge
    2.115
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Hallo Larry, und natürlich alle anderen,

    ich hätte nicht gedacht das aus einer solchen "Anfängerfrage" so etwas wird. Wie mir scheint ist es also doch keine Anfängerfrage!
    Ohne dir nahe treten zu wollen finde ich das dein Baustein schon recht aufgebläht ist. Er liefert drei Wichtige Infos, ganz klar, aber der Weg dahin ist recht unübersichtlich wie ich finde.

    Das soll keine böse Kritik sein, und ich denke du verstehst das auch. Ich bin dir sehr dankbar dafür das du den Baustein hier rein gestellt hast. Ich werde ihn für meine Bedürfnisse anpassen und dann ebenfalls hier hochladen.

    Was ich mir vorstelle:

    Nur PN-Diagnose (wir haben heute Entschieden in Zukunft 100% auf PN zu setzen)
    Und dann nur noch 2 Signale pro Teilnehmer abzubilden
    1. Teilnehmer hat eine Störung (Nicht näher Spezifiziert)
    2. Teilnehmer ist nicht erreichbar (aber Projektiert)

    Damit habe ich für mich erstmal alle relevanten Funktionen abgebildet.
    Ich bin am Überlegen ob ich mir die Detaildiagnose mal anschaue, aber erstmal ist das kein Hauptziel.


    Jetzt werfe ich noch einmal etwas in den Raum, was hier auch entfernt reinpasst.

    Ich baue eine Profinet-Kommunikation zwischen zwei CPU auf und übertrage Daten zwischen zwei CPU mittels PUT und GET.
    Zur Zeit überwache ich diese Verbindung über ein Lebensbit, welches ich über diese Verbindung jage und invertiere und auswerte.
    Gibt es hier auch eine ähnliche Diagnose die mir sagt "Verbindung aufgebaut, abgebaut, irgendwas". Die Zustände der Bausteine PUT und GET werte ich schon aus. Leider funktionieren die auch wenn die entfernte CPU in STOP ist, daher noch das Lebensbit.

    Grüße

    Marcel

  4. #24
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Zitat Zitat von Matze001 Beitrag anzeigen
    Ohne dir nahe treten zu wollen finde ich das dein Baustein schon recht aufgebläht ist. Er liefert drei Wichtige Infos, ganz klar, aber der Weg dahin ist recht unübersichtlich wie ich finde.
    Hallo Marcel,
    das tust du nicht.
    Ich würde den Baustein auch gerne etwas übersichtlicher machen - allerdings läßt mir da die von Siemens vorgegebene Funktionalität betreffs des SFC51 nicht so schrecklich viel Spielraum. Den SFC51 muss man halt so oder so ähnlich benutzen - sorry.
    Oder ... was findest du sonst unübersichtlich ?

    Der Baustein scannt PB und PN weil wir bei uns beides und auch gemischt haben. Wenn du allerdings den PB nicht haben willst dann ist das ja kein Problem, die Zeilen zu entfernen - der I-DB wird dadurch allerdings nicht sehrviel kleiner.
    Allerdings - stellt der FB fest, dass es keinen PB (oder PN) gibt dann wird der ja auch in der Folge nicht mehr untersucht.

    Was die Diagnose angeht : mehr wie die von dir genannten Signale bilde ich ja aktuell auch nicht ab ... (weil der SFC ja auf einfachen Weg nicht mehr hergibt )

    Gruß
    Larry

  5. #25
    Matze001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2009
    Beiträge
    2.115
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Ich stelle meinen Baustein nachher mal online, wenn er fertig ist.

    den IDB habe ich recht klein bekommen, da ich die Arrays die am SFC51 hängen in den TEMP-Bereich geschmissen habe. Nach der Auswertung und Verschiebung in das Array sind die Werte da drin eh egal!
    Außerdem habe ich darauf verzichtet das der Baustein scannt ob PB oder PN vorhanden ist, und lasse das den Programmierer per Eingang vorgeben. Nur die Funktion wird dann abgearbeitet.

    Genaue Beschreibungen gibt es dann aber mit dem Baustein!

    Grüße

    Marcel

  6. #26
    Matze001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2009
    Beiträge
    2.115
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    So Anbei "mein" Baustein...

    Folgende Funktionen hat er:

    Der Baustein wird nur abgearbeitet wenn der Eingang ENABLE aktiv ist.
    Über die Eingänge PROFIBUS oder PROFINET wählt man das Bussystem, es kann nur eines Aktiv sein.
    Im Stat-Bereich liegt das Array Teilnehmer_Busfehler of BOOL. Hier werden bis zu 256 Busteilnehmerstörungen angezeigt, jeweils für das ausgewählte Bussystem.
    Das es mehr PN-Teilnehmer geben kann ist mir klar, für mich ist aber mehr nicht nötig. Wer mag kann den Baustein gerne aufbohren.

    PB habe ich getestet, die Zykluszeit bei einem IPC477C mit WinLC RTX wird nicht beeinflusst.
    PN kann ich erst im laufe der Tage testen, gebe dann Feedback!
    Eine Fehlerauswertung des SFC51 findet nicht statt.

    Code:
    FUNCTION_BLOCK FB126   
    TITLE   = 'BUS_DIAG'
    AUTHOR  : 'Matze001'
    VERSION : '1.0'    
    
    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 ; 
    
    END_VAR
    
    VAR_TEMP
        Fehler                  : INT ; 
        i                       : INT;
       
        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
    
    
    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
    Kritik sehr willkommen!

    Grüße

    Marcel

    Edit: So hab mir doch noch die Zeit genommen PN zu testen! Hatte da nen haufen Fehler drin, da ich einfach den Profibusteil kopiert hab
    Nun funktioniert auch PN einwandfrei!

    Edit2: Also ich habe den Baustein noch einmal nach dem Vorbild von LL angepasst.

    Ich versuche mal eine grobe Beschreibung abzuliefern, um auch oxidierenden Nägeln etwas gutes zu tun

    Der Baustein wird immer aufgerufen. Mit dem Enable Eingang wird die Abfrage angestossen. Wird er auf Dauer TRUE gesetzt, wird nach jeder fertigen Abfrage eine neue gestartet.
    Ich habe es so zur Zeit im Einsatz, und sehe keine Einbußen bei Zykluszeit o.ä.! Hier können natürlich Trigger aus den entsprechenden Fehler OBs, Timer, Zufallsgeneratoren oder what ever als Trigger genutzt werden.

    Durch die Eingänge Profibus und Profinet wird das Bussystem vorgewählt. Sind beide auf TRUE wird keine Abfrage gestartet. Wenn ich Lust habe lösche ich alle Daten noch ab, das ist bisher nicht der Fall!

    Der Zustand eines Teilnehmers kann dann dem Array Teilnehmer_Busfehler entnommen werden. Es wird nur Diagnostiziert ob der Teilnehmer am Bus ist.
    Geändert von Matze001 (05.07.2012 um 08:46 Uhr)

  7. Folgende 2 Benutzer sagen Danke zu Matze001 für den nützlichen Beitrag:

    Onkel Dagobert (02.07.2012),rostiger Nagel (02.07.2012)

  8. #27
    Registriert seit
    13.10.2007
    Beiträge
    12.038
    Danke
    2.790
    Erhielt 3.273 Danke für 2.159 Beiträge

    Standard

    Hallo LL, hallo Matze,
    könnt ihr mir mal erzählen wie sich das mit den Index verhält,
    aus den Handbuch werde ich noch nicht ganz schlau.

    Gruß RN

  9. #28
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Baugruppenträger- / Stationszustandsinformation
    0092 Sollzustand der Baugruppenträger im zentralen Aufbau / der Stationen eines DP-Mastersystems 0 / DP-Mastersystem-ID
    4092 Sollzustand der Stationen eines DP-Mastersystems, das über eine externe DP-Anschaltung angeschlossen ist DP-Mastersystem-ID
    0192 Aktivierungsstatus der Stationen eines DP-Mastersystems, das über eine integrierte DP-Anschaltung angeschlossen ist DP-Mastersystem-ID
    Das ist die Profibus Mastersystem-Nummer, wie sie in der Hardwareconfig eingetragen ist. (1)

  10. #29
    Registriert seit
    13.10.2007
    Beiträge
    12.038
    Danke
    2.790
    Erhielt 3.273 Danke für 2.159 Beiträge

    Standard

    Und bei der PN Diagnose, da ist 100 eingetragen?

  11. #30
    Matze001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2009
    Beiträge
    2.115
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mach mal ein Projekt mit Profibus und Profinet auf (z.B. den IPC)

    Da steht am profibus die (1) und beim PN die (100).
    Hättest du jetzt ein zweites PB Netz wäre es (2) und ein zweites PN halt (101).

    Grüße

    Marcel

  12. Folgender Benutzer sagt Danke zu Matze001 für den nützlichen Beitrag:

    rostiger Nagel (02.07.2012)

Ähnliche Themen

  1. ProfiNet/ProfiBus Diagnose einfach
    Von kliebisch.m im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.12.2011, 10:13
  2. Profinet Teilnehmer Diagnose
    Von GobotheHero im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 11.08.2010, 17:31
  3. Diagnose Profinet-Teilnehmer anhand der IP
    Von Hawkster im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 08.02.2010, 16:39
  4. Auswertung Profinet Teilnehmer
    Von Ensiferum im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 27.05.2009, 22:51
  5. Hilfe; ProfiNet/ profiBus- Diagnose....
    Von Cliff im Forum Feldbusse
    Antworten: 12
    Letzter Beitrag: 19.02.2009, 18:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •