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

Ergebnis 1 bis 10 von 10

Thema: SFC51 RDSYSST Zustandsinfo eines Profibus CPs auslesen

  1. #1
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.621
    Danke
    778
    Erhielt 649 Danke für 494 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi

    Ich habe in einem Zentralrack einer S7 CPU einen 342-5 CP für Profibus.
    Jetzt wollte ich dafür meinen Auswertebaustein für Zustandsinfos den ich für die Integrierte PB/DP und PB/PN Schnittstelle benutze erweitern. Dazu wollte ich denselben SFC51 Aufruf verwenden wie zuvor nur jetzt halt für die CP Infos.

    Für die Integrierte Schnittstelle rufe ich ihn ja so auf.
    Code:
          CALL  "RDSYSST"       REQ       :="Sekunden"
           SZL_ID    :=W#16#694             //ID Status PB-IO 
           INDEX     :=W#16#1               //Nr. PROFIBUS-IO System
           RET_VAL   :=#RetVal
           BUSY      :=#busy
           SZL_HEADER:=#SZL_HEADER
           DR        :=#PB_Status
    SZL_ID und Index hänge ich am Baustein normal von aussen an. Je nach Infos die ich haben will.
    SZL_Header ist ein Struct angehängt wo ab dem zweiten byte ein Array of Bool losgeht welches dann einfach meine Zustandsinfos der Profibusteilnehmer enthält.
    U #PB_Status.DEVICE_STATUS[10] // Profibusteilnehmer mit PB ID 10 OK/NOK
    Alles schön und gut.

    Nur für den CP krieg ich das nicht hin. Da müsste ich ja eigentlich nicht die Profibus-IO System abfragen (Hätte Nr180, die CP Adresse ist 1000) sondern eigentlich die Infos auswerten die man aus der Spezialdiagnose auch manuel sehen kann. Also ob die Projektierten Stationen auch vorhanden und ok sind.

    Aber wie macht man das da und wie muss die SCL ID die Structur vom SZL_Header ausehen etc. Das ich die Infos auch wieder in nem Array habe?

    Ich weiss dass das mit DP_Diag geht aber ich wollts gerne mit dem SFC15 hinkriegen und auch begreifen wie man solche Infos überhaupt erruiert.

    mfG René
    Zitieren Zitieren SFC51 RDSYSST Zustandsinfo eines Profibus CPs auslesen  

  2. #2
    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

    Hallo René,

    wenn es dir um ProfiBus geht dann sollte die SZL-ID 692 sein (und nicht 694 - das wäre für PN).
    Du schreibst aber von einem CP - also wäre dann die SZL-ID 4692.
    Probier das doch bitte mal aus ...
    Ansonsten nehme ich an, dass du ja auf Basis dessen arbeitest was hier mal als Pendant zum FB125/126 entstanden ist.

    Gruß
    Larry

  3. #3
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    ich hab mal grob in den fb125 reingeschaut.
    probier mal 4000hex zur szl_id zu addieren.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  4. #4
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.621
    Danke
    778
    Erhielt 649 Danke für 494 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    probier mal 4000hex zur szl_id zu addieren.
    DAs hab ich eben probiert, dann kriege ich status:
    8082 SZL_ID ist falsch oder in der CPU bzw. in der SFC unbekannt.

    Stimmt 692 ist profibus. ich hab eben beide drin, funktionieren beide für interne schnittstellen.

    mfG René

  5. #5
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.621
    Danke
    778
    Erhielt 649 Danke für 494 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Ansonsten nehme ich an, dass du ja auf Basis dessen arbeitest was hier mal als Pendant zum FB125/126 entstanden ist.
    Dieses Pendant von dir habe ich mir eben mal angeschaut. Allerdings ist der doch recht mächtig. Ich hatte mir erhofft das man mit dem SFC51 irgendwie an die CP Daten selber rankommt, der Hat ja die diagnoseinfos schon für die Spezialdiagnose. Wenn ich dadrauf mit einem SFC51 anstoss drankäme wäre das interessant.

    mfG René

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.207
    Danke
    927
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Beim CP342-5 wird in der CPU keine SZL über den Zustand des DP-Systems geführt (oder ist nicht abfragbar), es muß direkt der CP abgefragt werden. Dafür wird nicht der SFC51 RDSYSST verwendet sondern SFC59 RD_REC.

    Warum willst Du die FC DP_DIAG nicht benutzen? Die kapselt die Kommunikation mit dem CP und sorgt für die nötigen Handshakes beim Übertragen der Datensätze. Außerdem weiß ich nicht, wo die Diagnosedatensätze >= 128 für den CP342-5 dokumentiert sind.

    Ich benutze den FC3 DP_DIAG. Mit Diagnosetyp 0 (Stationsliste anfordern) und 2 (Einzelstatus anfordern).

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #7
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.621
    Danke
    778
    Erhielt 649 Danke für 494 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Beim CP342-5 wird in der CPU keine SZL über den Zustand des DP-Systems geführt (oder ist nicht abfragbar), es muß direkt der CP abgefragt werden. Dafür wird nicht der SFC51 RDSYSST verwendet sondern SFC59 RD_REC.

    Warum willst Du die FC DP_DIAG nicht benutzen? Die kapselt die Kommunikation mit dem CP und sorgt für die nötigen Handshakes beim Übertragen der Datensätze. Außerdem weiß ich nicht, wo die Diagnosedatensätze >= 128 für den CP342-5 dokumentiert sind.

    Ich benutze den FC3 DP_DIAG. Mit Diagnosetyp 0 (Stationsliste anfordern) und 2 (Einzelstatus anfordern).
    Weil ich das schonmal gemacht hab und ich damals den Baustein zusammengestellt habe.

    Code:
    DATA_BLOCK "IO Sensorik Diagnose"TITLE =
    AUTHOR : VoR
    VERSION : 0.1
    
    
    
    
      STRUCT 	
       slave_008_nicht_ok : BOOL ;	//Profibus-DP Slave 008 ausgefallen
       slave_007_nicht_ok : BOOL ;	//Profibus-DP Slave 007 ausgefallen
       slave_006_nicht_ok : BOOL ;	//Profibus-DP Slave 006 ausgefallen
       slave_005_nicht_ok : BOOL ;	//Profibus-DP Slave 005 ausgefallen
       slave_004_nicht_ok : BOOL ;	//Profibus-DP Slave 004 ausgefallen
       slave_003_nicht_ok : BOOL ;	//Profibus-DP Slave 003 ausgefallen
       slave_002_nicht_ok : BOOL ;	//Profibus-DP Slave 002 ausgefallen
       slave_001_nicht_ok : BOOL ;	//Profibus-DP Slave 001 ausgefallen
       slave_016_nicht_ok : BOOL ;	//Profibus-DP Slave 016 ausgefallen
       slave_015_nicht_ok : BOOL ;	//Profibus-DP Slave 015 ausgefallen
       slave_014_nicht_ok : BOOL ;	//Profibus-DP Slave 014 ausgefallen
       slave_013_nicht_ok : BOOL ;	//Profibus-DP Slave 013 ausgefallen
       slave_012_nicht_ok : BOOL ;	//Profibus-DP Slave 012 ausgefallen
       slave_011_nicht_ok : BOOL ;	//Profibus-DP Slave 011 ausgefallen
       slave_010_nicht_ok : BOOL ;	//Profibus-DP Slave 010 ausgefallen
       slave_009_nicht_ok : BOOL ;	//Profibus-DP Slave 009 ausgefallen
       slave_024_nicht_ok : BOOL ;	//Profibus-DP Slave 024 ausgefallen
       slave_023_nicht_ok : BOOL ;	//Profibus-DP Slave 023 ausgefallen
       slave_022_nicht_ok : BOOL ;	//Profibus-DP Slave 022 ausgefallen
       slave_021_nicht_ok : BOOL ;	//Profibus-DP Slave 021 ausgefallen
       slave_020_nicht_ok : BOOL ;	//Profibus-DP Slave 020 ausgefallen
    Ich hätte das gerne als Array abgelegt aber dazu muss ja erstmal pro byte die Bits umsortiert werden und dann noch ein Byteswap pro wort. Und das für jede Statusinfo die man haben will über die ganze Länge.

    Oder sehe ich da was falsch?
    SFC51 hat mir ja für die interne schnittstelle die slaves grad in einer reihe supereinfach präsentiert, grad schön in nem array.

    mfG René

  8. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.742
    Danke
    143
    Erhielt 1.688 Danke für 1.226 Beiträge

    Standard

    Wenn du eine Steuerung mit Ethernet hast, kannst du auch mit Wireshark mithören welche SZL-IDs Step7 so abfragt, wenn du die Diagnose des CPs aufrufst. Denn alle dort angezeigten Werte werden rein über SZL abgefragt.

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.207
    Danke
    927
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Ich könnte mir vorstellen, daß Step7 zur CP-Diagnose nicht mit der CPU sondern mit dem CP kommuniziert.


    @vollmi
    DP_DIAG:
    - die Stationsliste (DTYP 0) kommt als Bit-Array in 16 Bytes (LIST_SLAVES_NOT_PRESENT)
    - die Einzeldiagnose (DTYP 2) liefert 6 Byte (SLAVE_STATIONSTATUS), darin im ersten Byte .0: StationNonExistent / .1: StationNotReady

    Ich werte von DP_RECV den DPSTATUS aus:
    Bit .0 muß 0 sein = CP im Masterbetrieb
    Bit .1 = 0: alle Slaves vorhanden / = 1: irgendein Slave ist problematisch, Stationsliste lesen ist sinnvoll

    Meine Bit-Liste gestörter Slaves:
    Die Stationsliste liefert mir direkt die nicht vorhandenen Slaves als Bitfeld. Von der Einzeldiagnose nehme ich noch das Bit .1 StationNotReady und setze damit ggf. zusätzlich das Bit in der Liste der nicht vorhandenen Slaves. (mache ich per Maskierbit SRD(DW#16#80000000, #DpAdresse) und verodern)
    Ich meine, die Stationsliste entspricht dem Diagnosedatensatz 128 (SFC59). Die Liste entspricht Deinem Struct, allerdings um 1 Bit verschoben. Belegung des Bitfelds siehe:

    Programmbeispiel zur Stationsliste: PROFIBUS DP Diagnosebaustein für CP342-5 (Master)
    Programmbeispiel zur Einzeldiagnose: Welche Diagnosemeldungen des DP-Slaves können Sie an einem CP342-5 als DP-Master auslesen?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    vollmi (01.10.2015)

  11. #10
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.621
    Danke
    778
    Erhielt 649 Danke für 494 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo René,

    wenn es dir um ProfiBus geht dann sollte die SZL-ID 692 sein (und nicht 694 - das wäre für PN).
    Das finde ich jetzt interessant. Bei meiner 315PN/DP cpu (bei allen 20) funktioniert SZL-ID 692 für Profibus nicht. Meldet kein Fehler aber auch kein Ausfall einer Profibusstation.

    Mit SZL-ID 694 wird der Profibusstationsausfall einwandfrei gemeldet. Was soll jetzt der Scheiss?
    694 ist nach Deklaration ganz klar PN und 692 ganz klar PB.

    Mit 694 kann ich natürlich auch kein 0..128 Bit langes Ergebnisarray anhängen. sondern muss das nehmen wie für PN.

    mfG René

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 22.02.2016, 18:34
  2. Auslesen eines Projekts
    Von superbug im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 05.08.2011, 12:52
  3. B: Komplette CPU 416-2 Incl, CPs u.s.w.
    Von Unimog-HeizeR im Forum Suche - Biete
    Antworten: 6
    Letzter Beitrag: 25.01.2011, 17:55
  4. Antworten: 4
    Letzter Beitrag: 06.12.2007, 11:18
  5. Hardware Hilfe zu CPs
    Von MatMer im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 02.03.2006, 09:42

Stichworte

Lesezeichen

Berechtigungen

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