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

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

Thema: Maskierung PED PAD

  1. #1
    Registriert seit
    17.01.2006
    Ort
    Nürnberg
    Beiträge
    39
    Danke
    16
    Erhielt 9 Danke für 7 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich darf mich in letzter Zeit vermehrt in die SPS Programmierung einarbeiten und stoße doch des öfteren auf Probleme, deren Lösung ich zwar in den Griff bekomme, diese für mich aber immer wieder recht umständlich erscheinen.

    Ich habe ein aktuelles Beispiel für euch und wäre um jeden weiteren Ratschlag dankbar.


    Ein SSI Absolutwertgeber hängt auf einer VIPA SSI Baugruppe, die Karte liefert ein PED und besitzt ein PAD. E und A Bereich haben bei mir die Adresse 310.

    Das PED ist so aufgeteilt

    PEB 310 Statusbits der Karte
    PEB 311 PEB 312 PEB 313 Hier steht der Absolutwert dualcodiert
    Um den Absolutwert in Reinform zu bekommen benutze ich
    L PEB 310
    SLD
    SRD
    T MD 300

    Die nicht benötigten Statusbits sind somit erledigt.

    Über das PAD kann man der Karte einen Sollwert schicken, bei erreichen des Wertes setzt die Karte einen parametrierbaren Ausgang.

    Hier fängt mein Problem an, den Sollwert lege ich im PAB 311 bis PAB 313 ab
    das funktioniert auch, nun muss ich die parametrierung des Ausgangs auch auf das PAD schreiben.

    In der Anleitung wird verlangt das 25. Bit auf 1 zu setzen um den Ausgang anzuwählen.

    Meine Lösung:

    L MD 400 // Hier steht der Sollwert drin
    L 2#10000000000000000000000000 / Bit 25 ...
    OD
    T PAD 310

    geht das nicht irgendwie "besser" ?


    Gruß wee
    Zitieren Zitieren Maskierung PED PAD  

  2. #2
    Registriert seit
    05.06.2006
    Ort
    PLZ 97xxx
    Beiträge
    276
    Danke
    31
    Erhielt 44 Danke für 36 Beiträge

    Standard

    setze das BIT direkt

    z.B. so:

    Code:
     
    SET
    S M 400.1          // Bit 25 (Doppelwort Bits 0..31)
     
    L MD 400
    T PAD ....

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

    wee (20.12.2010)

  4. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    ich würde bei solchen Sachen ganz grundsätzlich immer so vorgehen, dass ich mir einen Baustein bauen würde, der innen die Hantierung übernimmt uns mir nach aussen die von mir benötigten Informationen in Reinform liefert (Stichwort Kapselung). Das könnte in deinem Fall z.B. ein FB sein, dem du auf der Schnittstelle die Perepherie-Adresse des Gebers übergibst, der innen dann das PED zerlegt und/oder das PAD aufbereitet und der dir über die Schnittstelle die Status-Bits (im Klartext) und die Ist-Position ausgibt. Wenn du ihn noch irgendwie parametrieren willst dann geht das genauso ...

    Das wäre dann elegant ...

    Gruß
    Larry

  5. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    wee (20.12.2010)

  6. #4
    wee ist offline Benutzer
    Themenstarter
    Registriert seit
    17.01.2006
    Ort
    Nürnberg
    Beiträge
    39
    Danke
    16
    Erhielt 9 Danke für 7 Beiträge

    Standard

    Danke, manchmal sieht man den Wald vor lauter Bäumen nicht

  7. #5
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard

    Zitat Zitat von wee Beitrag anzeigen
    Hallo,


    Das PED ist so aufgeteilt

    PEB 310 Statusbits der Karte
    PEB 311 PEB 312 PEB 313 Hier steht der Absolutwert dualcodiert
    Um den Absolutwert in Reinform zu bekommen benutze ich
    L PEB 310
    SLD
    SRD
    T MD 300

    Die nicht benötigten Statusbits sind somit erledigt.

    Gruß wee
    Hallo!

    Für den Absolutwert hast du die Möglichkeit das du es direkt machst:
    Code:
    L PEB 311
    T MB 300
    L PEW 312
    T MW 301
    Oder über eine Maske:
    Code:
    L PED 310
    L 0xFFFFFF00
    UD
    SRD 8
    T MD 300
    Natürlich solltest du das in einem FB machen so wie es Larry schon vorgeschlagen hat. Als keine direkten Adressen verwenden.
    Im FB würde ich die Methode mit der Maske verwenden weil da ersparst du dir eine indirekte Adressierung.

    Für das 25igste Bit setzten kannst du das ruhig so machen wie du es vorgeschlagen hast.
    Oder so wie es Sarek gemacht hat jedoch wenn du einen FB verwendest solltest du da auch nicht mit Absoluter Adressierung auf die Speicherbereiche zugreifen. Nur symbolisch! Dadurch müsstest du auch wieder indirekte Adressierung anwenden und darauf Achten das dein FB Multiinstanzfähig bleibt falls du ihn Multiinstanzfähig haben willst.

    godi

  8. Folgender Benutzer sagt Danke zu godi für den nützlichen Beitrag:

    wee (20.12.2010)

  9. #6
    Registriert seit
    14.11.2008
    Beiträge
    66
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Weniger umständlich als die genannten Beispiele geht es nicht. Deine Version war noch die einfachste. Im Gegenteil, ich wundere mich nicht, wenn noch umständlicher als nötig programmiert wird.

    Außerdem scheint mir eher, dass es heißen müsste:
    L PED 310;
    SLD 8;
    SRD 8;

    Ich würde auf den ersten Blick ein UD 00FFFFFF oder ähnliches bevorzugen, aber deine Idee führt weiter: mit "SSD 8" statt "SRD 8" wird auch noch das Vorzeichen korrekt auf 32bit gebracht.

    Selbstverständlich programmiere ich auch mit Variablennamen, nicht mit Adressen. Das schließt einige Varianten aus (M400.1 oder MB300).

  10. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    @Drutbluck:
    was wolltest du uns mit deinem Beitrag sagen ? Ich kann da leider den Zusammenhang nicht so recht herstellen ...

  11. #8
    Registriert seit
    14.11.2008
    Beiträge
    66
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    @Drutbluck:
    was wolltest du uns mit deinem Beitrag sagen ? Ich kann da leider den Zusammenhang nicht so recht herstellen ...
    Genau das, was drinsteht. Mit besonderem Bezug auf die Aussage, dass es umständlich erscheint.

    Übrigens halte ich hier einen FB aus verschiedenen möglichen Grunden auch für sinnvoll und benutze selbst einen. Der "umständliche" Code steht dann an genau einer Stelle 1x, und ich kann eine Schnittstelle realisieren, die für verschiedenartige Zähler gleich ist (na gut, das geht auch ohne FB).

  12. #9
    Registriert seit
    24.09.2009
    Beiträge
    70
    Danke
    0
    Erhielt 8 Danke für 8 Beiträge

    Standard

    Wie wär's mit:

    L PED311
    SRD 8
    T --> Ziel

    Markus
    Alle Menschen sind klug; die einen vorher, die anderen nachher!

  13. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.329 Danke für 2.688 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von MarkusP210 Beitrag anzeigen
    Wie wär's mit:

    L PED311
    SRD 8
    T --> Ziel
    Ich habe sowas noch nicht ausprobiert, doch ich meine, wenn die Baugruppe nicht auch PEB314 enthält, dann funzt das lesen von PED311 nicht.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Lesezeichen

Berechtigungen

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