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

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

Thema: auf bestimmtes Bit zugreifen

  1. #1
    Registriert seit
    27.04.2006
    Beiträge
    93
    Danke
    14
    Erhielt 2 Danke für 2 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich bin`s mal wieder!

    Folgendes Problem:

    Ist es möglich, von einem eingelesenen Byte ein bestimmtes Bit abzufragen?

    Ich möchte beispielsweise diese Abfrage:
    Code:
    X     E [AR1,P#3.0]
    X     A [AR2,P#3.0]       
    =     #STATUS
    mit diesen zwei Bytes machen
    Code:
    PEB [AR1,P#3.0]
    PAB [AR2,P#3.0]
    Gibt es eine Möglichkeit mit Pointern auf ein bestimmtes Bit eines Bytes zeigen zu lassen und dieses Bit dann mit den "normalen" Binäroperationen (U, X, O etc.) weiterzuverarbeiten?

    Danke für die Hilfe!
    - Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. -
    Zitieren Zitieren auf bestimmtes Bit zugreifen  

  2. #2
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    Sieht ganz gut aus.

    Mit dem AR2 musst du aber bei FB´s mit Multiinstanzen aufpassen, am besten den Inhalt von AR2 speichern und hinterher direkt wieder zurückschreiben.

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  3. #3
    Registriert seit
    27.04.2006
    Beiträge
    93
    Danke
    14
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo plc_tippser,

    ich glaube wir missverstehen uns.

    Ich möchte diesen Code
    Code:
    X E [AR1,P#3.0] X A [AR2,P#3.0] = #STATUS
    so schreiben (funktioniert natürlich nicht)
    Code:
    X PEB [AR1,P#3.0] X PAB [AR2,P#3.0] = #STATUS
    Ich lese quasi ein Byte X mit PEB ein und möchte nun ein bestimmtes Bit von Byte X abfragen. Diese Bit möchte ich nun mit einem anderen Bit von dem Byte Y von PAB vergleichen. Über den Peripheriebereich sind ja, so viel ich weiß, keine Binäroperationen möglich. Es gibt doch nur PEB, PEW und PED bzw. PAB, PAW und PAD.
    - Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. -
    Zitieren Zitieren Missverständnis?  

  4. #4
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    machst du in dem oberen codesegment doch
    im ar steht die byteadresse.

    nehmen wir an du hast eb124 und ab125

    Code:
    L 124 SLD3 LAR1 //ar1 verweist nun auf adresse 124 L P#125.0 LAR2 //ar2 verweist nun auf adresse 125 X E [AR1,P#0.2] //das wäre jetzt e124.2
    X A [AR2,P#0.2] //a125.2 X A [AR1,P#1.2] //a125.2 so gehts auch
    was plc_tippser schreibt solltest du bedenken. da kann zu bösen überaschungen führen.
    Geändert von volker (18.07.2006 um 10:28 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  5. #5
    Registriert seit
    27.04.2006
    Beiträge
    93
    Danke
    14
    Erhielt 2 Danke für 2 Beiträge

    Unglücklich

    Das ist ja alles richtig, was ihr da schreibt. Und dafür bin ich auch sehr dankbar, aber ich will (muss) den Peripheriebereich direkt ansprechen.
    Wenn ich das so mache:
    Code:
    L 124
    SLD3
    LAR1 //ar1 verweist nun auf adresse 124
     
    
    L 125 SLD3 LAR2 //ar2 verweist nun auf adresse 125
    X E [AR1,P#0.2] //das wäre jetzt e124.2
    X A [AR2,P#0.2] //a125.2
    X A [AR1,P#1.2] //a125.2 so gehts auch
    dann greif ich doch auf das Prozessabbild zu, oder?
    Das Problem ist aber, das die Daten über diesen Weg nicht schnell genug aktualisiert werden. Deswegen will ich die Daten über PEB einlesen!
    - Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. -
    Zitieren Zitieren Ihr habt recht und ich bin verwirrt!  

  6. #6
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    ahh das ist der hintergrund.

    machs doch so
    l peb124
    t mb124
    und dann die merker indirekt ansprechen.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  7. #7
    Registriert seit
    27.04.2006
    Beiträge
    93
    Danke
    14
    Erhielt 2 Danke für 2 Beiträge

    Standard

    An so was hatte ich auch schon gedacht, aber da hätten wir das nächste Problem: Ich darf keine Merker benutzen und L PAB xy ist nicht erlaubt!

    Ich dachte an so etwas:
    Code:
    L PEB 124
    DW#16#1   //nicht gewünschte Bits ausmaskieren
    UD
    T #Merker_PEB
     
    L PAB 125
    DW#16#1
    UD
    T #_Merker_PAB
     
    L #Merker_PEB
    XOD
    SPZ Sprungmarke
    Momentan bin ich völlig ratlos?!
    - Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. -
    Zitieren Zitieren Probleme über Probleme!  

  8. #8
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    Ist das für die Uni oder wieso keine Merker?

    Ich denke, du wirst nicht ohne Hilfsvariablen zum Ziel kommen.

    PEB ist ja Lade Byte, deshalb klappt das mit der Bitoperation nicht.

    Natürlich könntest du über eine Maske das Bit auskodieren, hast dann aber erst einmal wieder nur das Byte, hmm, so kompliziert musste ich in den letzten Jahren nicht mehr denken.

    Grübel, pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  9. #9
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    natürlich geht l pad nicht. t pad geht.
    die ausgänge kannst du ganz normal nutzen. die werden entweder durch t pad ausgegebn oder am ende des zyklus.

    wieso darfst du keine merker nehmen? dann nimm ein datenwort

    temp variablen würde ich nicht nehmen sonst musst du über das lokaldatum das ar beschreiben..
    Geändert von volker (18.07.2006 um 11:20 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  10. #10
    Registriert seit
    28.06.2006
    Ort
    Königreich Neuseeland
    Beiträge
    2.027
    Danke
    133
    Erhielt 96 Danke für 76 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von volker
    wieso darfst du keine merker nehmen? dann nimm ein datenwort
    temp variablen würde ich nicht nehmen sonst musst du über das lokaldatum das ar beschreiben..
    Ich nehm an, die Funktion soll ohne Schmiermerker / Schmierdatenbereich auskommen.
    Da wäre es schon Sinnvoll, dar PE/PA Byte im Lokaldatenbereich - Array zu kopieren und mittesl P## auf die Bits zuzugreifen.

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 09.09.2011, 08:02
  2. Mit C# auf SPS zugreifen
    Von Red-Sh4nks im Forum Hochsprachen - OPC
    Antworten: 22
    Letzter Beitrag: 04.06.2010, 18:10
  3. Antworten: 2
    Letzter Beitrag: 16.09.2009, 12:56
  4. CPU ab bestimmtes Datum stoppen
    Von Deuerling im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 15.12.2008, 15:25
  5. Antworten: 5
    Letzter Beitrag: 04.08.2008, 11:04

Lesezeichen

Berechtigungen

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