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

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 38

Thema: Flankenmerker aus DB-Baustein funktionieren nicht

  1. #11
    Registriert seit
    15.02.2006
    Ort
    S-H
    Beiträge
    189
    Danke
    11
    Erhielt 46 Danke für 18 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ich habe für sowas mal den Begriff "fliegende Bits" geprägt.

    Funktionen, die mit Merker wunderbar funktionieren, aber mit DB-Variablen nicht.

    Soweit ich das damals nachverfolgen konnte war aber eine etwas unsaubere Programmierung schuld, oder wenn man es anders ausdrücken möchte "unglückliche Konstellationen".
    In meinem Fall hatte ich - glaube ich - einen FB gebaut und darin eine eigentlich funktionierende FC aufgerufen - aber da lief dann was mit der Adressierung falsch.

    den Code der FC direkt im FB funktionierte dann mit DB-Variablen - die Adressübergabe zwischen FB/FC entfällt ja auch. Hätte man sicher auch anders lösen können...
    mit bestem Gruß Pjoddi
    -----------------------------------
    Gott- gib mir Gelassenheit, Dinge hinzunehmen, die ich nicht ändern kann, den Mut, Dinge zu ändern, die ich ändern kann, und die Weisheit, das eine vom anderen zu unterscheiden. (J.C. Oetinger)

  2. #12
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    Das muss so funktionieren. Da spielt offenbar was anderes rein. Kopier den DB mal und mach die Flankenverweise auf den neuen DB.
    Leider keine Änderung!
    LG
    spirit

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.190
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Code:
     U     "Sicherheit_Ein"
     FP    "DB_Merker".M10[0]
     S      "Ausgang"

    Dieser Code funktioniert nicht (Ausgang wird nicht gesetzt).
    Der Code selber ist völlig in Ordnung und muß funktionieren.
    Wenn nicht:
    - was steht vor dem U ? Fehlt vielleicht eine VKE-Abgrenzung?
    - ist der DB online vorhanden und groß genug?
    - wird die Flankenmerker-Variable woanders überschrieben? indirekt/per Pointer oder per Adress-Überlappung (z.B. schreiben auf DBx.DBW10 überschreibt auch DBx.DBX11.0)
    - wird "Ausgang" irgendwo rückgesetzt oder überschrieben?

    Erzeuge mal einen völlig neuen DB und schreibe direkt in den OB1:
    Code:
    SET   //vorsichtshalber VKE-Abgrenzung
    
    U     "Sicherheit_Ein"
    FP    "DB_Neu".boolvar
    S     M30.1
    
    U     "Sicherheit_Ein"
    FP    "DB_Neu".M10[0]
    S     M30.2
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #14
    Registriert seit
    16.04.2014
    Ort
    Hamburg
    Beiträge
    49
    Danke
    3
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Hi Harald,

    gibt es eine logische Erklärung warum es bei einem Merker ohne VKE-Abgrenzung geht und bei dem DB nicht.
    Habe es im Simulator getestet und mit Abgrenzung kann der Ausgang gesetzt werden und ohne passiert nichts.

    Wenn ein Merker genutzt wird spielt es keine Rolle ob VKE da ist oder nicht. (Bausteinoptimierung ist auch egal)

    Eine Interessante Variante gibt es noch wenn vor dem Flankenmerker Netzwerk ein weiteres Netzwerk ist in dem ein Eingang auf 1 abgefragt wird geht es mit dem Merker DB auch wieder.

    Gruß Thomas

    Geht nicht.pngGeht1.jpgGeht2.jpg

  5. #15
    Registriert seit
    12.04.2006
    Ort
    Bayern/Oberpfalz
    Beiträge
    135
    Danke
    3
    Erhielt 15 Danke für 11 Beiträge

    Standard

    Servus,

    ich würde mal das ganze Programm deaktivieren und nur den 3 Zeiler laufen lassen.

  6. #16
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.190
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von IckeSI Beitrag anzeigen
    gibt es eine logische Erklärung warum es bei einem Merker ohne VKE-Abgrenzung geht und bei dem DB nicht.
    Gibt es nicht, denn es macht keinen Unterschied. Es darf keinen Unterschied machen, ob ein Merker oder ein DB-Bit benutzt wird.

    Zitat Zitat von IckeSI Beitrag anzeigen
    Wenn ein Merker genutzt wird spielt es keine Rolle ob VKE da ist oder nicht. (Bausteinoptimierung ist auch egal)
    Das glaube ich nicht. Teste nochmal richtig. Oder kannst Du uns das irgendwie zeigen?
    Oder missverstehst Du das was? Ein VKE ist immer vorhanden, es hat immer den Wert 0 oder 1. Eine VKE-Abgrenzung ist eine Anweisung, nach der eine komplett neue Verknüpfung begonnen wird ohne Rücksicht auf das bisher vorhandene VKE und eventuell offene Klammer-Ebenen. (daher "Abgrenzung" oder "Begrenzung")

    Dein erstes Beispiel geht nicht, weil das nicht abgegrenzte VKE vom Netzwerk davor (vom "Tag_3") gerade 0 ist. Wenn es 1 ist dann funktioniert das FP (Dein zweites Bild). Dein drittes Beispiel funktioniert, weil Du nach dem nicht abgerenzten Netzwerk davor ein SET hast. (CLR würde genauso gehen)

    VKE-Abgrenzung erreicht man normalerweise automatisch durch ein =/S/R oder durch einen VKE-abhängigen Sprung SPB/SPBN/SPBB/SPBNB. Man kann auch an beliebiger Stelle ein SET oder CLR einfügen. (ganz genau: alle Anweisungen welche das Statusbit /ER auf 0 setzen, siehe Step7 Hilfe)
    Fehlerhafte VKE-Abgrenzung erhält man meistens, wenn in einem vorhandenen Programm "zum Test" VKE-begrenzende Anweisungen auskommentiert werden. Oder wenn man mit einem nicht VKE-abhängigen Sprung (SPA/SPZ/SPM/SPP/...) in eine Verknüpfung springt.
    Code:
    U "Tag_1"
    U "Tag_2"
    //= %Q0.0  //(zum Test) auskommentiert, damit Q0.0 nicht schaltet :-)
               //dadurch geht jetzt die Verknüpfung in die nächste Verknüpfung mit ein! =:(
    U "Tag_3"
    U "Tag_4"
    = %Q0.1
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    IckeSI (24.06.2016)

  8. #17
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Zitat Zitat von IckeSI Beitrag anzeigen
    Hi Harald,

    gibt es eine logische Erklärung warum es bei einem Merker ohne VKE-Abgrenzung geht und bei dem DB nicht.
    Das A tag_3 ist aber auch unterschiedlich und gehört zum nächsten Netzwerk da nicht beendet.



    Sent from my iPhone using Tapatalk

  9. #18
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Es kommt ja noch besser:

    Wenn ich bei folgendem Code

    Code:
          LAR1  P#0.0
    
          AUF   "DB_Meldung"
    
          L DBD [ AR1 , P#0.0 ]
          L DBD [ AR1 , P#4.0 ]
          OD
          L DBD [ AR1 , P#8.0 ]
          OD
          L DBD [ AR1 , P#12.0 ]
          OD
          U <>0
          =     "Störung"
    
          U     "Anlage_Ein"
          FP   "DB_Merker".M10[5]
          O
          U     "Quittierung"
          SPBN  Ende
    
          L     0
          T DBD [ AR1 , P#0.0 ]
          T DBD [ AR1 , P#4.0 ]
          T DBD [ AR1 , P#8.0 ]
          T DBD [ AR1 , P#12.0 ]
    
    Ende: NOP 0
    einen Flankenmerker aus dem DB benütze, dann geht die CPU auf Störung und meldet einen Bereichslängenfehler.

    Weitere Hinweise zum Ereignis: Prüfen Sie, ob der DB außerhalb der Operandengrenzen der verwendeten CPU liegt ...
    LG
    spirit

  10. #19
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Es kommt ja noch besser:

    Wenn ich bei folgendem Code

    Code:
          LAR1  P#0.0
    
          AUF   "DB_Meldung" // Hier öffnest du den DB für die AR bearbeitung
    
          L DBD [ AR1 , P#0.0 ]
          L DBD [ AR1 , P#4.0 ]
          OD
          L DBD [ AR1 , P#8.0 ]
          OD
          L DBD [ AR1 , P#12.0 ]
          OD
          U <>0
          =     "Störung"
    
          U     "Anlage_Ein"
          FP   "DB_Merker".M10[5] // hier öffnest du einen weiteren DB. Der geöffnete wird ersetzt
          O
          U     "Quittierung"
          SPBN  Ende
    
          L     0
          T DBD [ AR1 , P#0.0 ] // Jetzt wird auf den DB "DB_Merker" geschrieben. Ist dieser so lang?
          T DBD [ AR1 , P#4.0 ]
          T DBD [ AR1 , P#8.0 ]
          T DBD [ AR1 , P#12.0 ]
    
    
    Ende: NOP 0
    einen Flankenmerker aus dem DB benütze, dann geht die CPU auf Störung und meldet einen Bereichslängenfehler.

    Weitere Hinweise zum Ereignis: Prüfen Sie, ob der DB außerhalb der Operandengrenzen der verwendeten CPU liegt ...
    In AWL musst du gut aufpassen was du tust wenn du mit Pointern arbeitest, Du bist alleine für Adressregister und Adressräume verantwortlich (Wann du welchen DB offen hast). Da nimmt dir SCL einiges an Arbeit ab.

    mfG René

  11. #20
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von spirit Beitrag anzeigen
    ... einen Flankenmerker aus dem DB benütze, dann geht die CPU auf Störung und meldet einen Bereichslängenfehler.
    Funktioniert das ganze mit einem Merker? Scheint auf den ersten Blick, als wäre der DB_Meldung zu kurz.

    EDIT: Unsinn geschrieben. Es ist langsam zu warm zum denken.
    Gruß
    Michael

Ähnliche Themen

  1. Step 7 Flankenmerker funktionieren nicht mehr
    Von Adrian26 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 17.07.2013, 17:18
  2. DI funktionieren nicht
    Von Power_Pete im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 06.01.2010, 12:22
  3. Antworten: 4
    Letzter Beitrag: 26.11.2007, 15:27
  4. Flankenmerker funktioniert nicht
    Von ogstyle im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 23.07.2007, 13:36
  5. Multiinstanzen funktionieren nicht!
    Von slma im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 17.07.2007, 02:09

Lesezeichen

Berechtigungen

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