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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 37

Thema: CPU (4xx) geht in "Stop", nachdem ich 2 DI + 1 DO hinzugefügt habe...

  1. #1
    Registriert seit
    02.11.2006
    Beiträge
    496
    Danke
    217
    Erhielt 25 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Sehr geehrte helfende Fachleute,

    ich wollte folgende Aufgabe lösen:
    - 1 Öffner ( "Stopp" ) ( DI )
    - 1 Schließer ( "Start" ) ( DI )
    - 1 LED ( Start- Taster beleuchtet ) => Meldung "ist gestartet" ( DO )

    _______________________________________________________________
    Das ganze Progi bekomme ich nicht zu mir nach Hause... deswegen habe ich mal versucht, das Progi nachzubilden !

    Code:
    DATA_BLOCK DB 1
    TITLE =
    
      STRUCT        
       M_Stop : BOOL ; //Merker für "Masch_Stopp"
       M_Start : BOOL ; //Merker für "Masch_Start"
      END_STRUCT ;  
    BEGIN
       M_Stop := TRUE; 
       M_Start := FALSE; 
    END_DATA_BLOCK
    FUNCTION FC 192 : VOID
    TITLE =
    BEGIN
    NETWORK
    TITLE =Ausgang setzen
          U     DB1.DBX    0.1; 
          U     DB1.DBX    0.0; 
          U(    ; 
          U(    ; 
          O     A      0.6; 
          O     A    108.3; 
          )     ; 
          NOT   ; 
          )     ; 
          S     M      0.0; 
          U(    ; 
          ON    DB1.DBX    0.0; 
          ON    M      0.1; 
          )     ; 
          R     M      0.0; 
          U     M      0.0; 
          =     A      0.6; 
          =     A    108.3; 
    END_FUNCTION
    FUNCTION_BLOCK FB 10
    TITLE =
    
    VAR
      D_0 : DWORD ; //ED 0 sichern
      D_1 : DWORD ; //ED 4 sichern
      D_2 : DWORD ; //ED 8 sichern
      D_3 : DWORD ; //AD 0 sichern
      D_4 : DWORD ; //AD 4 sichern
      D_5 : DWORD ; //AD 8 sichern
    END_VAR
    BEGIN
    NETWORK
    TITLE = 
    // Eingangs- Peripherie lesen      
          L     PED    0; 
          T     ED     0; 
    //      
          L     PED    4; 
          T     ED     4; 
    //      
          L     PED    8; 
          T     ED     8; 
    //      
    //             
    //      
    // ********************************* PROCEDURE  begin  **************************************************************     
    // **       Jetzt kommt natürlich die ganze Mimik, die ein Programm tuen muß, um ein Programm sein zu dürfen       **
    // ********************************** PROCEDURE end  ****************************************************************     
    //      
    //      
    // Ausgangs- Peripherie schreiben      
          L     AD     0; 
          T     PAD    0; 
    //      
          L     AD     4; 
          T     PAD    4; 
    //      
          L     AD     8; 
          T     PAD    8; 
    //      
          CALL FC   192 ;
    END_FUNCTION_BLOCK
    DATA_BLOCK DB 10
    TITLE =
     FB 10
    BEGIN
       D_0 := DW#16#0; 
       D_1 := DW#16#0; 
       D_2 := DW#16#0; 
       D_3 := DW#16#0; 
       D_4 := DW#16#0; 
       D_5 := DW#16#0; 
    END_DATA_BLOCK
    ORGANIZATION_BLOCK OB 1
    //
    
    VAR_TEMP
      OB1_EV_CLASS : BYTE ; 
      OB1_SCAN_1 : BYTE ; 
      OB1_PRIORITY : BYTE ; 
      OB1_OB_NUMBR : BYTE ; 
      OB1_RESERVED_1 : BYTE ; 
      OB1_RESERVED_2 : BYTE ; 
      OB1_PREV_CYCLE : INT ; 
      OB1_MIN_CYCLE : INT ; 
      OB1_MAX_CYCLE : INT ; 
      OB1_DATE_TIME : DATE_AND_TIME ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE = 
          CALL FB    10 , DB    10 ;
          NOP   0; 
    NETWORK
    TITLE ="Stopp" setzen
          U     E    108.3; 
          U     E      2.3; 
          =     DB1.DBX    0.0; 
    NETWORK
    TITLE ="Start" setzen
          O     E    108.2; 
          O     E      2.4; 
          =     DB1.DBX    0.1; 
    END_ORGANIZATION_BLOCK
    Ich hab' mir extra einen DB1 gebastelt, um eben KEINE Merker- Bereiche zu überschreiben...

    DI- bzw. DO- Adresse 0 ... 80 sind auf der 4xx- CPU.
    Diese Adressen werden von / auf Peripherie geladen / transferiert.

    DI- bzw. DO- Adresse 108 ist auf einer ET200 über Profibus angebunden.

    Meine Änderungen ( die der 4xxCPU für die "rote" LED gereicht haben ):
    - E2.3 ( Öffner = Taster )
    - E2.4 ( Schließer = Taster )
    - A0.6 ( LED für die Meldung )

    Nachdem ich diese ( ich fand bis vor wenigen Stunden... es wäre eine einfache Aufgabe ! ) Änderung auf die Maschine übertragen hatte, konnte ich die Maschine mit "meinem" <neuen> Taster noch starten... und die Maschine
    fing auch an, zu arbeiten !

    Theoretisch hätte die LED am A0.6 leuchten müssen... so wie die LED am A108.3 ( die hat definitiv geleuchtet ! ) <<< das funktionierte schon mal nicht, auch der A0.6 wurde nicht gesetzt !
    <<< Verdrahtungsfehler kann ich ausschließen ( z.b. + und - an der LED verwechselt, das hatte ich im Voraus schon geprüft )

    >>> Danach ( ca. 1/2 min später) [ !!! ]
    ... die Vormaterial-Maschine führte noch das nächste Vormaterial zu...
    , fuhr wieder in die Aufnahme- Position und begann, das nächste Vormaterial zu greifen...

    Die Weiterverarbeitungs- Maschine starb mit dem 3. Schritt....

    In der Diagnose (CPU) stand:
    - "Unerlaubter Aufruf"
    - "Fehler in FC 192"
    _______________________________________________________________

    Meine Fragen:
    - welchen Sinn macht es, DI- Word od. DWord AUF ein PEW bzw. PED zu schreiben ???

    Mir ist klar, daß diese Aussage heute niemand teilen kann... weil sie in meinem gelieferten Code nicht existiert.
    Die Simu "frißt" einen Transfer auf ein PEW nicht.
    Ich weiß aber, daß ich genau DAS heute gesehen habe.

    Kann mir vielleicht schon jetzt jemand sagen, warum die CPU in "Stop" ging ?
    Ich habe nix gemacht... Ich bin nicht schuld !
    oder doch ????

    Mfg
    Zitieren Zitieren CPU (4xx) geht in "Stop", nachdem ich 2 DI + 1 DO hinzugefügt habe...  

  2. #2
    Registriert seit
    05.01.2009
    Ort
    69198 Schriesheim
    Beiträge
    236
    Danke
    54
    Erhielt 34 Danke für 33 Beiträge

    Standard

    Hallo,

    für mich sieht es aus als hättest du hier einen "Schreibfehler",
    ich meine im Ursprung denke ich werden die PEW´s in den DB10 geschoben, und dann anstatt aus der Peripherie mit dem Datenbaustein
    weitergearbeitet ( konsistenz ).
    Sonst macht das ganze in meinen Augen wirklich keinen Sinn.

    gruß Thomas

  3. #3
    mega_ohm ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.11.2006
    Beiträge
    496
    Danke
    217
    Erhielt 25 Danke für 6 Beiträge

    Standard

    Zitat Zitat von thomas_1975 Beitrag anzeigen
    Hallo,

    für mich sieht es aus als hättest du hier einen "Schreibfehler",
    ich meine im Ursprung denke ich werden die PEW´s in den DB10 geschoben, und dann anstatt aus der Peripherie mit dem Datenbaustein
    weitergearbeitet ( konsistenz ).
    Sonst macht das ganze in meinen Augen wirklich keinen Sinn.

    gruß Thomas
    Genauso ist es eben nicht !

    Es wird ganz lustig mit den direkten Eingangs- bzw. Ausgangs- Adressen
    umher gesprungen... nachdem diese eben, wie angedeutet zyklisch auf PEW (PED) bzw. PAW (PAD) transferiert werden.
    Die Funktion des DB10 ( wo dieser Kram reingeschrieben wird) raffe ich gar nicht...

    Eingänge => DB1
    DB2 => Ausgänge... das kenne ich

    Die DI ( z.B. ED 0 ) werden auf PEW 0 transferiert...
    Diese Geschichte verstehe ich schon mal nicht.

    Grundsätzlich kann ich mir aber noch gar nicht erklären, warum die CPU eigentlich "gestoppt" wurde...
    Meine 2 neuen Eingänge ( E2.3 bzw. E2.4 ) und mein einer Ausgang A0.6 ... <<< ich verstehe einfach das Problem nicht !

    Mfg
    Geändert von mega_ohm (01.04.2011 um 05:44 Uhr)

  4. #4
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von mega_ohm Beitrag anzeigen

    Die DI ( z.B. ED 0 ) werden auf PEW 0 transferiert...
    Diese Geschichte verstehe ich schon mal nicht.

    Du kannst ein PEW laden und ein PAW transferieren.
    Wenn du im Programm die Eingänge überschreiben willst dann mit t EW.




    bike


    Edit: Wenn die PLC in Stopp geht, was steht im Puffer?
    Geändert von bike (01.04.2011 um 08:00 Uhr)

  5. #5
    Registriert seit
    30.08.2010
    Ort
    Östereich
    Beiträge
    1.458
    Danke
    503
    Erhielt 217 Danke für 192 Beiträge

    Standard

    kann es sein dass du den DB1 nicht aufs AG geladen hast?
    Elektrotechnik und Elektronik funktioniert mit Rauch (Beweis: Tritt Rauch aus, funktioniert auch das Bauteil nicht mehr)

  6. #6
    mega_ohm ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.11.2006
    Beiträge
    496
    Danke
    217
    Erhielt 25 Danke für 6 Beiträge

    Standard

    Zitat Zitat von winnman Beitrag anzeigen
    kann es sein dass du den DB1 nicht aufs AG geladen hast?
    Das ist völlig ausgeschlossen.

    1. weiß ich, daß man bei DB- Zugriffen den DB vor den Zuf´griffen laden muß
    2. habe ich mir den DB1 online in der Datenansicht ansehen können
    3. zig- andere FB's, FC's greifen auf diesen DB zu - ohne Probleme

    Mfg

  7. #7
    mega_ohm ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.11.2006
    Beiträge
    496
    Danke
    217
    Erhielt 25 Danke für 6 Beiträge

    Standard

    Zitat Zitat von bike Beitrag anzeigen
    Du kannst ein PEW laden und ein PAW transferieren.
    Wenn du im Programm die Eingänge überschreiben willst dann mit t EW.




    bike


    Edit: Wenn die PLC in Stopp geht, was steht im Puffer?
    Den kompletten Diagnose- Text habe ich heute gesichert, lade ihn heute nachmittag hoch.
    Definitiv steht da der FC 192 als "Problemkind".
    Die Aufrufe erfolgen aber auch im FB 10 ( dieser wird vom OB1 aufgerufen), der FB10 macht diese Mimik mit dem Transfer der ED auf PED bzw. AD auf PAD und sichert diese in DB10.
    Danach wird vom FB10 der FC19 aufgerufen.
    Dort hinein habe ich jetzt meine "Mimik" verfrachtet" ( Man sollte mich bitte nicht fragen, warum... das weiß ich selbst nicht so genau )

    Im FB90, FC90, FC91, FC92, FC93 und im FC 191 wird meine "Mimik" korrekt abgearbeitet => ohne Stopp

    Sobald ich aber meine Änderungen im FC192 mache... geht die CPU in Stop

    Ich raffe das nicht.
    Dort sind nur stinknormale AWL- Anweisungen zu finden... keine Pointer- Geschichten, kein Budenzauber...
    Mit dem normalen E108.2 ist alles i.O. => funktioniert.
    Sobald ich im FC192 mit "Suchen / Ersetzen" anstatt des E108.2 meinen DB1.DBX0.1 ersetze, stoppt die CPU und meckert mir den FC192, Bausteinnummer 5xx an.
    Den genauen Diagnose- Text lade ich heute mittag hoch.

    Den DB1 habe ich definitiv geladen, ich kann mir online ( Datenansicht) die Änderungen ansehen ( solange ich eben diesen versch***en FC192 mit meinen Änderungen noch nicht auf's AG übertragen habe ).


    Ich habe mal eine ganz "fiese" Frage....
    Wenn ich mit meinen 2 Eingängen ( E2.3 bzw. E2.4) im FB10 nach dem Transfer der ED auf PED einfach die Eingänge E108.2 bzw. E108.3 setze ?

    Code:
    U E2.3 // neuer Stopp- Taster
    = E108.2 // bestehender Stopp- Taster ( alt )
     
    U E2.4 // neuer Start- Taster
    = E108.3 // bestehender Start- Taster ( alt )

    Dann müßte doch zumindest für einen Zyklus die ganze Geschichte vom AG bearbeitet werden.
    Das sieht nicht schön aus, ich selbst habe mich schon darüber aufgeregt.... [ "Wer macht denn sowas ? ] , aber funktionieren muß die Maschine nach dem Willen desjenigen, der am PG sitzt.
    ______________________________________________________________

    Der derzeitige IST- Stand ist:
    Ich habe im FC192 den "! alten" Eingang belassen... den Rest geändert.
    Es funktioniert.... bis eben auf die Funktionen, die im FC192 programmiert sind.
    Die "kann" mein neuer Taster nicht !
    Diese wären aber eigentlich zu 20% entscheidend für die Rechtfertigung der Nachrüstung.

    Mfg
    Geändert von mega_ohm (02.04.2011 um 01:39 Uhr)

  8. #8
    mega_ohm ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.11.2006
    Beiträge
    496
    Danke
    217
    Erhielt 25 Danke für 6 Beiträge

    Standard

    Bei meiner Suche nach dem Fehler fand ich im OB1 Folgendes:
    Code:
     
    NW1 // Lampentest
    UN M0.0 // welche Merker es nun konkret sind, ist ja unerheblich
    UN M0.1
    UN M0.2
    SPB M003
    L 1
    T AW 0
    T AW 2
     // etc.    eben alle Ausgänge, wo LED's  "hängen"
    BEA // DAS heißt doch, der OB1 ist in diesem Fall nur noch mit dem "Lampentest" beschäftigt ??  mit sonst nix mehr ?
    M003: NOP 0
     
    NW2 // Mache dies
     
    NW3 // Mache das
    Ich interpretiere diesen Code so:
    - wenn Lampentest, dann geht nichts anderes mehr

    Oder habe ich da was Wichtiges übersehen ?

    Mfg

  9. #9
    mega_ohm ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.11.2006
    Beiträge
    496
    Danke
    217
    Erhielt 25 Danke für 6 Beiträge

    Standard

    Kann mir eigentlich mal jemand erklären, warum man überhaupt
    Code:
    L ED 0
    T PED 0
    ( mit den Ausgängen steht die gleiche Frage )
    macht ?

    Das man die Ein- bzw. Ausgänge auf DB's schreibt und dann im Programm nur noch die jeweiligen DB's verwendet... das sehe ich ein.

    Warum schreibt man aber z.B. einen Eingang auf einen Peripherie- Eingang ?
    Wo ist da der Vorteil ?

    Die s7- Hilfe hat mir nicht geholfen.
    Da stand was von "Verstecken" etc...
    Wenn ich Programmteile "verstecken" will, nehme ich "einfach nur" Pointer und einen FB.
    Diese Maßnahme ist sehr effizient.
    Daran scheitern viele.

    Mfg

  10. #10
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von mega_ohm Beitrag anzeigen
    Kann mir eigentlich mal jemand erklären, warum man überhaupt
    Code:
    L ED 0
    T PED 0
    ( mit den Ausgängen steht die gleiche Frage )
    macht ?

    Das man die Ein- bzw. Ausgänge auf DB's schreibt und dann im Programm nur noch die jeweiligen DB's verwendet... das sehe ich ein.

    Warum schreibt man aber z.B. einen Eingang auf einen Peripherie- Eingang ?
    Wo ist da der Vorteil ?

    Die s7- Hilfe hat mir nicht geholfen.
    Da stand was von "Verstecken" etc...
    Wenn ich Programmteile "verstecken" will, nehme ich "einfach nur" Pointer und einen FB.
    Diese Maßnahme ist sehr effizient.
    Daran scheitern viele.

    Mfg
    In dem ersten Posting steht L PED 0 T ED 0.
    Daher schreibt er nicht auf PED sondern läd zur Laufzeit exakt an dieser Position das PED. Kann sein, dass er sich sicher sein will / muss, dass die Eingänge aktuell sind.

    Du kannst schon deine Eingänge überschreiben.
    Doch warum dies tun?

    Schön wäre der Stack und auch der ungekürzte Programmteil, dann kann man suchen.
    Denn einmal schreibst du PED beschreiben, dann PEW usw.
    So erschließt sich mir dein Problem nicht.


    bike

  11. Folgender Benutzer sagt Danke zu bike für den nützlichen Beitrag:

    mega_ohm (02.04.2011)

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 16.03.2012, 18:20
  2. Antworten: 3
    Letzter Beitrag: 30.05.2011, 17:16
  3. Seminarereihe "Fernwartung mit eWON" geht in die 3. Runde
    Von WachMark im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 08.03.2011, 16:15
  4. Fehler "Stop durch Peripherieverwaltung"
    Von MSB im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.07.2008, 22:23
  5. Antworten: 18
    Letzter Beitrag: 05.07.2006, 23:19

Lesezeichen

Berechtigungen

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