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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Wertevergleich aus DB

  1. #11
    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
    Lieben Dank Harald,

    ui - es wird mal wieder kompliziert für mich ...

    Ich versuche mal deinen Vorschlag mit der Schleife aufzugreifen:

    Code:
            AUF  DB10
    
            L     P#0.0
            T     #pointer     
               
            L     4                                // 4 DWORDs abfragen
    Next:   T     #count
    
            L     DBD [#pointer]
            L     L#0
            <>D
            =     "Merker"
    
            L     #pointer
            L     P#4.0
            +D    
            T    #pointer
    
            L     #count
            LOOP  Next
    Der Schleifenteil soll halt feststellen, ob ein Bit ungleich Null ist ... denke aber mein Konstrukt ist so noch nicht lauffähig, oder?
    LG
    spirit

  2. #12
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Der Schleifenteil soll halt feststellen, ob ein Bit ungleich Null ist ... denke aber mein Konstrukt ist so noch nicht lauffähig, oder?
    Der Schleifenteil wird es feststellen - und gleich wieder vergessen.
    Wenn der Vergleich <> 0 feststellt (und TRUE an "Merker" zuweist), dann sollte die Schleife verlassen werden (SPB exit)

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #13
    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 PN/DP Beitrag anzeigen
    Der Schleifenteil wird es feststellen - und gleich wieder vergessen.

    Harald
    Och menno - blöder Schleifenteil ...

    Zitat Zitat von PN/DP Beitrag anzeigen
    Wenn der Vergleich <> 0 feststellt (und TRUE an "Merker" zuweist), dann sollte die Schleife verlassen werden (SPB exit)

    Harald
    Ok, dann vielleicht so:

    Code:
            AUF  DB10
    
            L     P#0.0
            T     #pointer     
               
            L     4                                // 4 DWORDs abfragen
    Next:   T     #count
    
            L     DBD [#pointer]
            L     L#0
            <>D
            =     "Merker"
            SPB   Exit
    
            L     #pointer
            L     P#4.0
            +D    
            T    #pointer
    
            L     #count
            LOOP  Next
    
    
    Exit:      NOP 0
    LG
    spirit

  4. #14
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Ich kann keinen Fehler an Deinem Code sehen. Das wird schon funktionieren.


    Bis ca. 16 DWORDs würde ich keine Schleife nehmen sondern linear runterprogrammieren.
    Nebeneffekt: Gerade wenn es Störmeldebits sind, habe ich hier eine prima Stelle zum schnellen Beobachten aller Bits ohne extra den DB öffnen zu müssen. Bei einer Schleife ginge das nicht.

    Und ich würde am Anfang des Codes einen "überflüssigen" Zugriff auf den ersten Member der Struktur nur für die Referenzdaten einbauen, damit man diesen Zugriff auf die Struktur finden kann. Und auch das dann eigentlich überflüssige "AUF DB10" würde ich auf jeden Fall für die Referenzdaten drinlassen.

    Code:
            U "Werte_DB".Werte.Wert_1   //DB10.DBX0.0 / nur für Referenzdaten
            CLR                         //VKE-Abgrenzung
    
            LAR1  P#0.0                 //P##myStruct
    
            AUF   DB10                  //DB nochmal öffnen für Referenzdaten
            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
            =     "Merker"
    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:

    spirit (14.07.2015)

  6. #15
    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 PN/DP Beitrag anzeigen

    Und ich würde am Anfang des Codes einen "überflüssigen" Zugriff auf den ersten Member der Struktur nur für die Referenzdaten einbauen, damit man diesen Zugriff auf die Struktur finden kann. Und auch das dann eigentlich überflüssige "AUF DB10" würde ich auf jeden Fall für die Referenzdaten drinlassen.

    Harald

    D.h.

    Code:
            U "Werte_DB".Werte.Wert_1   //DB10.DBX0.0 / nur für Referenzdaten
            CLR                         //VKE-Abgrenzung
    dieser Code dient rein zur "Orientierung" und hat nichts mit der eigentlichen Funktionalität zu tun?
    Geändert von spirit (14.07.2015 um 14:15 Uhr)
    LG
    spirit

  7. #16
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von spirit Beitrag anzeigen
    dieser Code dient rein zur "Orientierung" und hat nichts mit der eigentlichen Funktionalität zu tun?
    Ja

    Den Code kann man weglassen - nur dann findet man diesen Zugriff auf die Bitstruktur nicht mehr in den Referenzdaten. Nur noch ein einsames "AUF DB10" irgendwo in dem Baustein verrät, daß auf irgendwas in dem DB10 zugegriffen wird. Und selbst dieses "AUF DB10" findet man nur, wenn man nur nach DB10 oder nach überhaupt allen DB-Zugriffen sucht. Bei "überlappenden Zugriffen" auf irgendwas im DB10 erscheint AUF DB nicht. (in Step7 classic. TIA weiß ich jetzt nicht, vermutlich zeigt das noch weniger?)

    Nachtrag:
    Außerdem kann ich dann örtlich nahe anhand dieser Zeile die Absolutadressen der Struktur mit den Adressen vergleichen, welche die indirekten Zugriffe verwenden.

    Harald
    Geändert von PN/DP (14.07.2015 um 15:09 Uhr)
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    spirit (14.07.2015)

Ähnliche Themen

  1. Not-Aus Einzelrückmeldung! Verdrahtung auf SPS-Eingang? Not-Aus-Kreis=Rückmeldekr.!?
    Von Ralle79 im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 7
    Letzter Beitrag: 26.02.2013, 18:55
  2. Antworten: 11
    Letzter Beitrag: 20.10.2010, 17:28
  3. Not-Aus Relais mit Steuerung Ein/Aus verknüpfen
    Von mmr im Forum Schaltschrankbau
    Antworten: 2
    Letzter Beitrag: 09.10.2010, 09:56
  4. Not-Aus und Schutztür auf ein Not-Aus-Relais?
    Von Toddy80 im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 8
    Letzter Beitrag: 22.06.2008, 20:36

Lesezeichen

Berechtigungen

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