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

Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 38

Thema: Flankenmerker aus DB-Baustein funktionieren nicht

  1. #21
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von vollmi Beitrag anzeigen
    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é
    Also mit einem herkömmlichen Merker funktioniert alles einwandfrei!!!

    Sobald ich diesen aber durch einen Merker aus einem DB ersetze geht die CPU auf Error ...


    Also dann ist hier das Problem, dass beim Laden von Null mit dem Merker-DB weitergearbeitet wird?

    Der ist nicht so lang wie der Melde-DB ... wie müsste das dann umgeschrieben werden, dass hier wieder der Melde-DB herangezogen wird?


    - einfach wieder den Melde-DB aufmachen - ???
    Geändert von spirit (24.06.2016 um 07:37 Uhr)
    LG
    spirit

  2. #22
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.648
    Danke
    789
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Ja du fügst einen Vollqualifizierten Zugriff ein. Dieser ist eigentlich ein
    AUF "DBirgendwas"
    FP AR1 irgendwas

    Alles was danach kommt solange es kein weiterer vollqualifizierter Zugriff oder ein AUF DB ist. Greift auf DBirgendwas zu.

    Du erinnerst dich, dass ich am anfang nach der Fehlermeldung der CPU gefragt habe? Das ist sowas typisches wenns mit DB nicht geht aber mit Merkern schon. Dann ist es oft das nächste, dass irgendwo ein Adressregister versaut wird.

    mfG René

  3. Folgender Benutzer sagt Danke zu vollmi für den nützlichen Beitrag:

    spirit (24.06.2016)

  4. #23
    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
    Ja du fügst einen Vollqualifizierten Zugriff ein. Dieser ist eigentlich ein
    AUF "DBirgendwas"
    FP AR1 irgendwas

    Alles was danach kommt solange es kein weiterer vollqualifizierter Zugriff oder ein AUF DB ist. Greift auf DBirgendwas zu.

    Du erinnerst dich, dass ich am anfang nach der Fehlermeldung der CPU gefragt habe? Das ist sowas typisches wenns mit DB nicht geht aber mit Merkern schon. Dann ist es oft das nächste, dass irgendwo ein Adressregister versaut wird.

    mfG René
    Hm, also das Einfügen eines Flankenoperanden hätte ich jetzt wirklich nicht als einen Befehl AUF "DBirgendwas" gedeutet!

    Müsste ich dann am Ende - also vor dem Laden mit Null - wieder den Melde-DB aufschlagen?


    PS: Ja ich erinnere mich nach der Eingangsfrage mit dem Fehler der CPU - da hatte sie aber noch keinen, weil ich diesen Merker noch nicht ersetzt hatte!
    Geändert von spirit (24.06.2016 um 07:45 Uhr)
    LG
    spirit

  5. #24
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.648
    Danke
    789
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Hm, also das Einfügen eines Flankenoperanden hätte ich jetzt wirklich nicht als einen Befehl AUF "DBirgendwas" gedeutet!

    Müsste ich dann am Ende - also vor dem Laden mit Null - wieder den Melde-DB aufschlagen?
    Genau das. Vollqualifizierte Zugriffe machen nix anderes. Man kann auch das AR1 auch ins Temp retten und wiederherstellen. Machts aber IMHO unleserlich.

    Hier wäre vielleicht Umstellen des Codes auch eine Alternative.
    Oder das mit den Pointern gleich seinlassen (wäre mein Vorschlag).
    Denn das was du da machst, geht auch vollqualifiziert, dann tauchts auch in der Referenz auf.

    Man muss nicht alles Pointern. Im gegenteil.
    Heute sollte das Hauptgewicht in der Lesbarkeit und in einer vollständigen Referenzliste liegen.

    mfG René

  6. #25
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.367
    Danke
    457
    Erhielt 696 Danke für 521 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Code:
          LAR1  P#0.0
          AUF   "DB_Meldung"
          L DBD [ AR1 , P#0.0 ]      //DB_Meldung.DBDx
          L DBD [ AR1 , P#4.0 ]      //DB_Meldung.DBDx+4   
    ....
          U     "Anlage_Ein"
          FP   "DB_Merker".M10[5]
          T DBD [ AR1 , P#0.0 ]      //DB_Merker.DBDy
    Du würdest deinen Code ja auch nicht so schreiben und erwarten dass er funktioniert, oder?
    Code:
          LAR1  P#0.0
          AUF   "DB_Meldung"
          L DBD [ AR1 , P#0.0 ]      //DB_Meldung.DBDx 
    ....
          U     "Anlage_Ein"
          FP  M10.0
    ....
          AUF   "DB_Merker"
          T DBD [ AR1 , P#0.0 ]      //Hier bekommst du dann auch den selben CPU-Fehler
    Für die Funktion der Flanke ist es irrelevant ob hier ein Merker oder DB-Verwendet wird.
    Durch den DB baust du jedoch selbst einen Fehler in deine Adressregister-Zugriffe ein.

    Zitat Zitat von spirit Beitrag anzeigen
    Also dann ist hier das Problem, dass beim Laden von Null mit dem Merker-DB weitergearbeitet wird?
    - einfach wieder den Melde-DB aufmachen - ???
    Ja. Gewöhn dir das generell an die AUF-Befehle so möglichst nah an die indirekten Zugriffe zu legen.
    Gibt nichts schöneres als AWL-Code der über DB-Register zugreift welche vor 10 Seiten Code gesetzt wurden....
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  7. Folgender Benutzer sagt Danke zu RONIN für den nützlichen Beitrag:

    spirit (24.06.2016)

  8. #26
    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
    Genau das. Vollqualifizierte Zugriffe machen nix anderes. Man kann auch das AR1 auch ins Temp retten und wiederherstellen. Machts aber IMHO unleserlich.

    Hier wäre vielleicht Umstellen des Codes auch eine Alternative.
    Oder das mit den Pointern gleich seinlassen (wäre mein Vorschlag).
    Denn das was du da machst, geht auch vollqualifiziert, dann tauchts auch in der Referenz auf.

    Man muss nicht alles Pointern. Im gegenteil.
    Heute sollte das Hauptgewicht in der Lesbarkeit und in einer vollständigen Referenzliste liegen.

    mfG René
    Lieben Dank René,

    jetzt muss ich "nur" noch klären, warum der Setzbefehl oder auch dieser Code mit einem Merker aus dem DB nicht funktioniert ...


    Code:
    //*** Referenzfahrt
          U     "Taste_StrgEin"
          FP    "DB_Merker".M10[7]
          UN    "iDB85".HomingValid
          S     "iDB85".EnableDrive
    
          U     "iDB85".DriveEnabled
          UN    "OP_Modus_Einrichten"
          S     "iDB85".Stop
    
          U     "iDB85".Ready
          UN    "OP_Modus_Einrichten"
          S     "iDB85".Halt
    
          U     "iDB85".HaltNotActive
          FP    "DB_Merker".M10[8]
          UN    "OP_Modus_Einrichten"
          S     "iDB85".StartHoming
    
          U     "iDB85".HomingValid
          UN    "OP_Modus_Einrichten"
          R     "iDB85".StartHoming
    LG
    spirit

  9. #27
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.648
    Danke
    789
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Lieben Dank René,

    jetzt muss ich "nur" noch klären, warum der Setzbefehl oder auch dieser Code mit einem Merker aus dem DB nicht funktioniert ...
    Dasselbe Programm? Den anderen Baustein korrigiert? Da überschreibst du ja DB_Merker komplett mit 0 über Bereichsgrenzen hinweg. Dann tut in diesem Baustein hier natürlich kein Flankenmerker mehr. Zumindest nicht so wie er sollte.
    Das sind dann die Coolen Sachen. Man ändern in einem Baustein was und in einem anderen der schon funktioniert hat funktioniert auf einmal was anderes nichtmehr.
    Hab ich schon erwähnt das ich ein Freund von in sich geschlossenen Instanzen bin?


    mfG René

  10. Folgender Benutzer sagt Danke zu vollmi für den nützlichen Beitrag:

    spirit (24.06.2016)

  11. #28
    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
    Dasselbe Programm? Den anderen Baustein korrigiert? Da überschreibst du ja DB_Merker komplett mit 0 über Bereichsgrenzen hinweg. Dann tut in diesem Baustein hier natürlich kein Flankenmerker mehr. Zumindest nicht so wie er sollte.
    Das sind dann die Coolen Sachen. Man ändern in einem Baustein was und in einem anderen der schon funktioniert hat funktioniert auf einmal was anderes nichtmehr.
    Hab ich schon erwähnt das ich ein Freund von in sich geschlossenen Instanzen bin?


    mfG René
    Ja, dasselbe Programm!

    Allerdings funktioniert der dargestellte Code in Thread #26 nur sporadisch mit einem DB-Merker; auch, wenn ich in dem anderen Baustein (mit Pointern) einen herkömmlichen Merker verwende!

    Will heißen, einmal wird die Referenzfahrt nach dem Einschalten ausgeführt und beim nächsten Mal nicht mehr ...


    Aber ich suche mal, ob hier an anderer Stelle noch so ein ählich gelagertes Problem vorliegt.
    LG
    spirit

  12. #29
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.367
    Danke
    457
    Erhielt 696 Danke für 521 Beiträge

    Standard

    @Spirit: Da muss klar irgendwas faul sein bei dir.
    Mach uns doch ein abgespecktes Beispielprogramm (nur der Flanken-DB und ein Stückchen Code) das bei dir auf einer CPU nicht läuft und poste das mal hier.
    Dann kommen wir dem Problem denke ich schneller auf die Spur.

    Nebenbei...
    Programmierst du das gerade einen FC der irgendeinen Antrieb steuern soll?
    Wenn ich mir den Code (mit den direkten Zugriffen auf dein Steuer-IDB und die festen DB-Merker, welche keinen Deut besser sind als Standard-Merker) der nicht toll wiederverwendbar sein wird, anschaue... frage ich mich schon.

    A) Darfst du keine FBs verwenden? (Instanz des Motion-Bausteins in den DB und auch die Flanken-Hilfswerte in FB rein....)
    B) Welche Verbesserung erhoffst du dir vom Umbau von M10.0 auf DbMerker.M10[0]?
    Geändert von RONIN (24.06.2016 um 08:10 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  13. #30
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von RONIN Beitrag anzeigen
    @Spirit: Da muss klar irgendwas faul sein bei dir.
    Mach uns doch ein abgespecktes Beispielprogramm (nur der Flanken-DB und ein Stückchen Code) das bei dir auf einer CPU nicht läuft und poste das mal hier.
    Dann kommen wir dem Problem denke ich schneller auf die Spur.

    Nebenbei...
    Programmierst du das gerade einen FC der irgendeinen Antrieb steuern soll?
    Wenn ich mir den Code (mit den direkten Zugriffen auf dein Steuer-IDB und die festen DB-Merker, welche keinen Deut besser sind als Standard-Merker) der nicht toll wiederverwendbar sein wird, anschaue... frage ich mich schon.

    A) Darfst du keine FBs verwenden? (Instanz des Motion-Bausteins in den DB und auch die Flanken-Hilfswerte in FB rein....)
    B) Welche Verbesserung erhoffst du dir vom Umbau von M10.0 auf DbMerker.M10[0]?
    ALSO, ich habe noch so eine Stelle gefunden, in der der Merkerbereich des DBs verunglimpflicht wurde ... jetzt funktioniert alles auch mit den DB-Merkern!

    Ja RONIN, du hast Recht mit den FB's - aber der FC mit dem Antrieb ist nur ein "Probeaufbau" für ein späteres Projekt, um auszuloten, ob dieser in dieser Form eingesetzt werden kann. Normalerweise mache ich die Antriebe schon in einem FB.


    Bezüglich deiner B) Frage:

    Ich dachte, bzw. meine, mal irgendwo gelesen zu haben, dass die Verwendung von Merkern aus einem DB einen gewissen Geschwindigkeitsvorteil (bezüglich Zugriff) gegenüber Merkern aus der Standard-Variablentabelle haben; ist das Unsinn?
    LG
    spirit

Ä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
  •