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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Profibus ausstecken, SPS-Slave-Eingänge gehen alle aus?

  1. #1
    Registriert seit
    19.02.2005
    Beiträge
    199
    Danke
    12
    Erhielt 8 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich habe hier ein Projekt angepasst.
    Es sind 6 x S7 315 2DP vernetzt über Profibus.
    Eine davon ist der Master (klar). Bei den Slaves war jeweils ein Byte als Master Ausgang zu Slave Eingang und umgekehrt projektiert.
    Ich sollte nun weitere Daten übertragen und nahm an, ich könnte die üblichen Übertragungsbausteine verwenden. Als ich meine DBs fertig hatte erklärte mir der Siemens Support, das ginge nicht. Ich müsse die Bausteine über dieses Ausgang->Eingang Gedöns übertragen.
    Na gut, dann tat ich das eben. Da ich keine Konsistenz der Daten brauche (sind nur Lampen, die geschaltet werden) habe ich die Bits einfach mit einer Schleife auf die Ausgänge ab A20.0 kopiert. Dann auf dem Slave von den Eingängen wieder in den DB.
    Klappt auch super.
    Aber!
    Wenn ich an einer SPS das Profibuskabel abziehe werden alle Eingänge die vom Master kommen auf false gesetzt.
    Alle Lampen werden somit dunkel. Ich dachte ich sehe nicht richtig.
    Sprich, wenn einer mal aus versehen das Kabel durchschneidet ist das ganze Haus stockduster!
    Oder: wenn ich dezentrale Peripherie in einer Industrieanlage benutze und jemand kappt das Kabel fallen sofort alle tonnenschweren Materialien an den Unterdruck oder Magnetkränen herunter. Das gibt's doch gar nicht, oder?
    Kann man bei Profibus keine Remanenz bei Ausfall projektieren (habe nichts in den Einstellungen gefunden)?

    Ehrlich gesagt bin ich schwer am überlegen, ob ich die Kabel nicht einfach auf den MPI-Anschluss umstecke und meine gewohnten Übertragungsbausteine nehme. Das eine Byte meines Vorgängers krieg ich da auch noch drüber.
    Wenn dann die Kommunikation ausfällt, dann bleiben meine Daten in den DBs wenigstens stehen.

    MPI müsste doch genauso weit reichen wie Profibus (hat ein Supportmitarbeiter mal gemeint)?
    Also wenn ich das Kabel mit Profibus getestet habe, dann funktioniert es mit MPI auch?
    Linux is like a Wigwam: no Windows, no Gates and Apache inside.
    Zitieren Zitieren Profibus ausstecken, SPS-Slave-Eingänge gehen alle aus?  

  2. #2
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard

    Das alle Eingänge wegfallen ist aus meiner Sicht korrekt und muss zwingend so funktioneren. In deinem Fall würde ich eine einfache Kommunikationsüberwachung realisieren und die Eingänge nur auf DB kopieren wenn Kommunikation in Ordnung, so bleiben die Eingänge remanent im DB. Dazu würde ich zwingen den Alarm nach aussen führen, denn der Bediener hat unter Umständen keine Kontrolle mehr über seine Anlage, in deinem Fall natürlich nur Beleuchtung.

  3. #3
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.752
    Danke
    323
    Erhielt 1.526 Danke für 1.286 Beiträge

    Standard

    Im überwiegenden Fall der Fälle ist das verhalten so korrekt und auch absolut so gewünscht.

    Für den Rest der Fälle kann man pro Slave die Ansprechüberwachung deaktivieren,
    somit behalten sämtliche Ausgänge ihren letzten Wert.

    Da du einen Intelligenten Slave hast kannst du im Prinzip aber sowieso programmieren was du lustig bist ...

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    Daß die Eingänge von DP-I-Slaves bei Ausfall der Verbindung zum DP-Master alle auf 0 gesetzt werden ist so gewollt, weil das normalerweise der "sichere" Zustand ist. Bei Vakuumsaugern und Magnetkränen wird das Abschalten der Haltekraft dadurch verhindert, daß externe Elektrik das SPS-Ausgangssignal invertiert: Ausgang=0 -> Halten Ein / Ausgang=1 -> Halten Aus

    Abschalten kann man dieses Verhalten durch Deaktivieren der "Ansprechüberwachung" in HW-Konfig des DP-Slave. Dann bleiben bei Verbindungsausfall alle DP-Eingangswerte auf den zuletzt empfangenen Werten. Das macht aber normalerweise niemand.
    Zitat aus der Hilfe in HW-Konfig:
    Ansprechüberwachung
    Mit der Ansprechüberwachung haben Sie die Möglichkeit, daß der DP-Slave auf einen Fehler vom DP-Master oder auf eine Unterbrechung des Datenverkehrs auf dem Bus reagieren kann.
    Wenn der DP-Slave innerhalb der projektierten Ansprechüberwachungszeit nicht angesprochen wird, dann geht der DP-Slave in den sicheren Zustand (alle Ausgänge auf "0" gesetzt oder Ersatzwertausgabe).

    Gefahr
    Wenn Sie die Ansprechüberwachung ausschalten, dann werden unter Umständen im Fehlerfall die Ausgänge des entsprechenden DP-Slaves auf nicht "0" gesetzt.
    Wir empfehlen Ihnen deswegen dringend, die Ansprechüberwachung nur für die Inbetriebnahme auszuschalten.
    (bei I-Slaves betrifft dieses Verhalten die DP-Eingänge statt wie hier beschrieben die Ausgänge)

    Ist der DP-Slave ein I-Slave (eine CPU), dann ist es einfach, im Programm des Slave für jeden einzelnen Ausgang eine besondere Reaktion auf den DP-Verbindungsausfall zu programmieren. Die Verbindung muß dann natürlich überwacht werden.

    In Deinem Fall mit den Lampen könntest Du auch mit der SFC73 "I_PUT" vom Master direkt in DB der Slave-CPUs schreiben und im Slave die DB-Bits den Lampenausgängen zuweisen. Dann bleiben die Lampenausgänge ohne viel Aufwand "remanent".

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    elektro_mensch (07.06.2011)

  6. #5
    Aksels ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.02.2005
    Beiträge
    199
    Danke
    12
    Erhielt 8 Danke für 6 Beiträge

    Standard

    wie man über 10 Umwege doch zum Ziel findet.
    Ich hatte ursprünglich DBs im Master und in den Slaves, habe dann festgestellt, daß meine MPI-Übertragungsbausteine für Profibus nicht gehen.
    Ich habe den Siemens Support angerufen, der rif dann zurück und meinte einen Baustein zum Übertragen von DBs gibt es bei Profibus nicht. Das einzige was ich machen könnte wäre den Baustein SFC 14 "DPRD_DAT" und SFC 15 zu verwenden. Mit denen kam ich aber irgendwie nicht zurecht.
    Da ich die Konsistenz nicht brauche habe ich selber Bausteine geschrieben, die meine DBs in Ausgänge auf dem Master kopiert, diese werden über Profibus auf EIngänge der Slaves gelegt, von wo ich sie dann wieder in DBs auf den Slaves kopiere.

    Und jetzt kommt PN/DP daher und sagt man könne ganz einfach mit einem Baustein einen DB auf den Slave kopieren.
    Ein herzliches Dankeschön ersteinmal an PN/DP.
    Da meine hin und her Kopiererei sehr fehleranfällig ist werde ich das gleich mal versuchen.
    Allerdings frage ich mich, was für Leute Siemens beim Support beschäftigt.

    Ich glaube in Zukunft frage ich ersteinmal hier nach.
    Linux is like a Wigwam: no Windows, no Gates and Apache inside.
    Zitieren Zitieren Schon witzig...  

  7. #6
    Aksels ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.02.2005
    Beiträge
    199
    Danke
    12
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Was ist im Baustein SFC73 "I_PUT" die "IOID" und die "LADDR"?
    "LADDR" könnte ich mit vorstellen ist die Profibusadresse ("Logische Adresse der Partnerbaugruppe").
    Aber was mache ich mit der "IOID"? Was für eine "Kennung des Adressbereich der Partnerbaugruppe" soll das sein? Muss ich da trotzdem noch einen E/A Bereich im Profibus Slave konfigurieren? Wie groß muss der sein? Welche Adresse gebe ich an, die auf der Master A-Seite oder der Slave E-Seite, oder beide? Ist eine S7-315 DB eine Mischbaugruppe weil man E und A Projektieren kann? Ich liebe Siemens Hilfe! Und das tolle nicht vorhandene Beispielprogramm!

    Ich bin drauf und dran die ganzen Stecker auf den MPI-Bus umzustecken und meine Standard-DB-Übertragungsbausteine zu benutzen.
    Mein Vorgänger benutzt nur ein einziges Byte bei der Übertragung über Profibus. Die acht Bits bekomme ich auch über MPI drüber.

    Was ist den Profibus für ein dummer Bus, das man da nicht einfach einen DB übertragen bekommt *ärger*.
    Linux is like a Wigwam: no Windows, no Gates and Apache inside.
    Zitieren Zitieren Erste Probleme:  

  8. #7
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Aksels Beitrag anzeigen
    Oder: wenn ich dezentrale Peripherie in einer Industrieanlage benutze und jemand kappt das Kabel fallen sofort alle tonnenschweren Materialien an den Unterdruck oder Magnetkränen herunter.
    Also wenn da deine einzige Sicherheit das nichts runterfällt die Funktionierende Kommunikation ist, will Ich nicht drunter stehen!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  9. #8
    Aksels ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.02.2005
    Beiträge
    199
    Danke
    12
    Erhielt 8 Danke für 6 Beiträge

    Standard

    ... in diesem Projekt doch nur Licht. Photonen die herunterfallen tun nicht so arg weh.
    Linux is like a Wigwam: no Windows, no Gates and Apache inside.
    Zitieren Zitieren Ich mach....  

  10. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    Zitat Zitat von Aksels Beitrag anzeigen
    Was ist im Baustein SFC73 "I_PUT" die "IOID" und die "LADDR"?
    Bei IOID ist fast immer B#16#54 einzutragen, bei LADDR wird die in HW-Konfig vergebene Diagnoseadresse des Partners angegeben. Siehe Step7-Hilfe zu SFC72/SFC73.

    * Wie können Sie von einem DP-Master mit SFC72 "I_GET" und SFC73 "I_PUT" über PROFIBUS DP auf eine andere CPU zugreifen, die als Slave am PROFIBUS DP betrieben wird?

    * Beispiel, wenn beide Stationen im selben Step7-Projekt sind

    * Beispiel, wenn beide Stationen in verschiedenen Step7-Projekten sind ...
    ... dann muß die zur Partner-CPU exakt passende GSD-Datei installiert sein (sonst geht die BF-LED nicht aus **):
    * PROFIBUS GSD-Dateien : SIMATIC
    Nach der Installation der GSD-Datei sind die im Hardware-Katalog hier zu finden:
    PROFIBUS-DP > Weitere Feldgeräte > SPS > SIMATIC

    * Beispiel Applikation: Client/-Server Kommunikation zu (I)-Slaves über S7-Basiskommunikation (I_PUT/ I_GET)

    **
    Wird nicht die richtige GSD-Datei benutzt, dann leuchtet die Profibus-BF-LED rot,
    weil der DP-Master die zyklische DP-Kommunikation mit dem Slave nicht aufnimmt.
    (weil der reale DP-Slave eine andere Profibus-Ident-Nummer hat als in der GSD-Datei angegeben,
    Diagnose: "Profibus-Slave ist nicht vorhanden")
    Die Kommunikation per I_PUT/I_GET läuft aber, weil sie den Partner nicht als DP-Slave sondern als "andere Station" über die Profibus-Adresse anspricht.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  11. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Aksels Beitrag anzeigen
    Was ist den Profibus für ein dummer Bus, das man da nicht einfach einen DB übertragen bekommt *ärger*.
    Bekommt man doch, wenn man weiß wie.

    Das "kleine" Problem ist nur, daß bei den S7-300-CPU bei der S7-Basiskommunikation über Profibus nur Master Client sein können und nur Slaves Server sein können.
    CPU-CPU Kommunikation mit SIMATIC Controllern (Kompendium)
    Deshalb muß die Partner-CPU DP-Slave der Client-CPU sein, wofür mindestens 1 Byte E/A-Daten zu projektieren ist. Dieses Byte muß keine Informationen enthalten, es muß nicht im Programm gelesen/geschrieben werden, die zyklische Master-Slave-DP-Kommunikation muß noch nicht einmal aufgebaut sein (z.B. wegen falscher GSD-Datei).

    I_PUT/I_GET sind eigentlich für den azyklischen Datenaustausch gedacht, man kann aber auch seine gesamte zyklische Kommunikation mit I_PUT/I_GET abwickeln. Ist wegen dem Protokoll-Overhead allerdings langsamer als DP-Kommunikation. Bei 1,5MBit/s zwischen zwei 315-2DP dauert ein kompletter Schreib/Lesezyklus von jeweils 50 Byte ca. 50..60ms.
    Bei I_PUT/I_GET kann die Partner-CPU nicht beeinflussen, auf welche Adressen die Client-CPU zugreift, dafür muß sie aber auch keine Kommunikationsbausteine aufrufen.

    Ich benutze die Kommunikation per I_PUT/I_GET gerne zum Datenaustausch mit SPS anderer Lieferanten, weil man da sehr leicht die Konfiguration ändern/erweitern kann, ohne eine neue HW-Konfig in die CPU laden zu müssen.
    Bei Verbindungsausfall entstehen keine Peripheriezugriffsfehler, wenn man das/die E/A-Byte nicht nutzt.
    Wenn die Partner-CPU eine CPU mit integrierter DP-Schnittstelle ist, und die Partner-CPU wird gegen eine neuere CPU ausgetauscht, dann muß die DP-Konfiguration des Masters (zunächst) nicht angepasst werden, I_PUT/I_GET funktionieren weiterhin, nur die DP-Master-Slave-Kommunikation wird nicht mehr aufgebaut und die BF-LED leuchtet. I_PUT/I_GET kann notfalls auch noch nachträglich eingerichtet werden, ohne in der Partner-CPU am Programm was ändern zu müssen.

    Weil man den Partner als DP-Slave anbinden muß, hat man automatisch die Diagnosepuffer-Einträge und OB8x-Aufrufe bei Änderung des Verbindungsstatus zur Verfügung. I_PUT/I_GET funktionieren auch dann, wenn der Partner in STOP ist. Die Verbindung sollte durch Übertragen eines Lifebits überwacht werden, das reicht völlig aus.

    Hier mal ein Beispiel aus einem meiner Projekte
    Master DB166.DBB0..DBB49 <--- I_GET <--- Partner DB182.DBB0..DBB49
    Master DB167.DBB0..DBB49 ---> I_PUT ---> Partner DB181.DBB0..DBB49
    Code:
    FUNCTION_BLOCK FB 1
    TITLE =Profibus-Communication CC28-CS110 CoolingSystem
    //DP-Master/Slave-Communication via I_PUT/I_GET
    AUTHOR : PN_DP
    VERSION : 0.1
    
    VAR
      REQ_get : BOOL ;
      REQ_put : BOOL ;
      BUSY_get : BOOL ;
      BUSY_put : BOOL ;
      STAT_spare_04 : BOOL ;
      STAT_spare_05 : BOOL ;
      STAT_spare_06 : BOOL ;
      STAT_spare_07 : BOOL ;
      STAT_spare_B1 : BYTE ;
      RET_VAL_get : INT ;
      RET_VAL_put : INT ;
      ComTime_Counter : INT ;
      ComTime_Last : INT ;
    END_VAR
    VAR_TEMP
      LADDR_CS110 : WORD ;         //Logical Address of the DP slave station
    END_VAR
    BEGIN
    NETWORK
    TITLE =Assign Slave-Diagnostic-Address to logical Partner-Address
    //The Logical Address of the DP slave station is the Diagnostic Address
    //(see HW Config DP-Slave 10).
          L     2042 ;             //Diagnostic Address DP-Slave 10 Cooling System
          T     #LADDR_CS110 ;     //Logical Address of the DP slave station
    
    NETWORK
    TITLE =Get Data from CS110 Cooling System
    //We use Get + Put in maximum speed, this is the only productive Communication
    //(the CPU can also read 1 PEB via cyclic DP-Read, but without information from slave)
          UN    #BUSY_get ;        //Get-job not in work
          UN    #BUSY_put ;        //Put-job not in work
          =     #REQ_get ;         //start Get-job
    
          CALL "I_GET" (                             //Call SFC72
               REQ      := #REQ_get,                 //True -> start get-job
               CONT     := TRUE,                     //Connection remains existing 
               IOID     := B#16#54,                  //Identifier of the partner address
               LADDR    := #LADDR_CS110,             //Logical address of the partner 
               VAR_ADDR := P#DB182.DBX 0.0 BYTE 50,  //Source in partner
               RET_VAL  := #RET_VAL_get,             //Error code (return value)
               BUSY     := #BUSY_get,                //High, if a job is in work
               RD       := P#DB166.DBX 0.0 BYTE 50); //Destination here 
    
    NETWORK
    TITLE =Put Data into CS110 Cooling System
    
          UN    #BUSY_get ;        //Get-job not in work
          UN    #BUSY_put ;        //Put-job not in work
          =     #REQ_put ;         //start Put-job
    
          CALL "I_PUT" (                             //Call SFC73
               REQ      := #REQ_put,                 //True -> start put-job
               CONT     := TRUE,                     //Connection remains existing
               IOID     := B#16#54,                  //Identifier of the partner address
               LADDR    := #LADDR_CS110,             //Logical address of the partner 
               VAR_ADDR := P#DB181.DBX 0.0 BYTE 50,  //Destination in partner
               SD       := P#DB167.DBX 0.0 BYTE 50,  //Source here
               RET_VAL  := #RET_VAL_put,             //Error code (return value)
               BUSY     := #BUSY_put);               //High, if a job is in work
    
    NETWORK
    TITLE =Info: Calculate time duration of 1 communication cycle
    
          L     #ComTime_Counter ;
    
          U     #REQ_get ;
          SPBN  CNT ;
          T     #ComTime_Last ;
          L     0 ;
          T     #ComTime_Counter ;
    
    CNT:  L     "OB1_PREV_CYCLE" ; //MW8: Copy of #OB1_PREV_CYCLE
          +I    ;
          T     #ComTime_Counter ;
    
    //watch ComTime_Last (ms)
          L     #ComTime_Last ;
    
    END_FUNCTION_BLOCK
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  12. Folgende 5 Benutzer sagen Danke zu PN/DP für den nützlichen Beitrag:

    derwestermann (31.10.2016),gordon (29.10.2015),IBFS (05.05.2011),Larry Laffer (05.05.2011),vollmi (05.05.2011)

Ähnliche Themen

  1. CP 342-5 als Profibus Slave
    Von eYe im Forum Feldbusse
    Antworten: 2
    Letzter Beitrag: 09.07.2010, 17:11
  2. Sporadische Aussezter einiger Eingänge am Slave
    Von TemPoMat im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 25.12.2009, 20:04
  3. Antworten: 7
    Letzter Beitrag: 03.04.2008, 21:32
  4. Leuchtmelder mit LED gehen kurzzeitig alle an. Warum?
    Von Anonymous im Forum Schaltschrankbau
    Antworten: 4
    Letzter Beitrag: 30.01.2005, 23:53
  5. Aktualisierungzeit Eingänge von DP-Slave
    Von Markus im Forum Feldbusse
    Antworten: 2
    Letzter Beitrag: 11.11.2004, 09:50

Lesezeichen

Berechtigungen

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