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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: mit any pointer ein bit schreiben

  1. #1
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich würde gern Bit 10.3 auf TRUE setzen. Funktioniert aber nicht so wie gedacht. Habt ihr mir Rat ?

    Any Pointer
    Code:
          LAR1  P##any_bit         // load pointer on target
     
          L     B#16#10
          T     B [AR1,P#0.0]               //  Syntax-ID
     
          L     B#16#1
          T     B [AR1,P#1.0]               //  Data Type ( 1 = BOOL)
     
          L     1
          T     W [AR1,P#2.0]               //  Repeat Factor(Count)
     
          L     #DBNummer
          T     W [AR1,P#4.0]               / DB number
     
          L     10
          SLD   3
          L     3
          +D    
          T     D [AR1,P#6.0]               // write Offset (HIER 10.3)
     
          L     B#16#84                     //Speicherbereich (hier DB)
          T     LB [AR1,P#6.0]

    blkmov ( one(byte) = 1 )



    Code:
    U(    
          L     1
          T     #one
          SET   
          SAVE  
          CLR   
          U     BIE
          )     
          SPBNB _003
          CALL  "BLKMOV"
           SRCBLK :=#one
           RET_VAL:=#_ret_val
           DSTBLK :=#any_bit
    _003: NOP   0
    Zitieren Zitieren mit any pointer ein bit schreiben  

  2. #2
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Auszug aus S7 Hilfe zum SFC20:

    Ist der ANY-Pointer (Quelle oder Ziel) vom Typ BOOL, so muß die angegebene Länge durch 8 teilbar sein, da sonst der Kopiervorgang nicht ausgeführt wird.
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  3. #3
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    danke. so richtig weiß ich aber nicht was du mir damit sagen wolltest. dass ich immer nur 8 bit, also byte auf einmal mit einem any schreiben kann ?

  4. #4
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Ja, aber der SFC20 ist damit gemeint.

    Mögliche Alternative:
    Vielleicht solltest du mit dem ANY-Pointer das Byte/Wort adressieren, das dein Bit enthält.
    Dann mit SFC20 holen (kopieren) und gezielt dein Bit schreiben.
    Anschliessend schreibst du das Byte/Wort mit dem ANY-Pointer wieder an seinen Ursprungsort zurück.
    kind regards
    SoftMachine

  5. #5
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    tut mir leid, verstehe ich im moment nicht. vllt sollte ich dazu sagen dass ich grundsätzlich schon flexibel sein will, also nicht nur fest 10.3 sonder auch andere bits zu schreiben.

  6. #6
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    der ANY adressiert auch Bits, aber der SFC20 überträgt Wort/Byte oder auch Bools (deren Anzahl aber durch 8 teilbar sein muss )
    wenn du nur 1 Bool-Variable mittels SFC 20 schreiben willst, musst du also mind. 8 bools (=1 Byte) als Länge angeben.
    damit beschreibst du aber auch die anderen 7 Bits in dem betreffenden Byte
    also holst du dir die gesamten 8 Bits (1 Byte), änderst nur das eine (10.3)
    dann schreibst du alle 8 Bits ( = 1 Byte, davon 7 ungeänderte und 1 geändertes Bit) wieder zurück
    kind regards
    SoftMachine

  7. #7
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Oder du freundest dich mit folgendem Konstrukt an:

    LAR1 p#A 10.0 //Pointer auf A 10.0
    S [AR1,P#0.3] //dein Bit A 10.3 zuweisen (10.0 + Offset 0.3)

    dann brauchst du auch keinen SFC20
    kind regards
    SoftMachine

  8. #8
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von SoftMachine Beitrag anzeigen
    der ANY adressiert auch Bits, aber der SFC20 überträgt Wort/Byte oder auch Bools (deren Anzahl aber durch 8 teilbar sein muss )
    wenn du nur 1 Bool-Variable mittels SFC 20 schreiben willst, musst du also mind. 8 bools (=1 Byte) als Länge angeben.
    damit beschreibst du aber auch die anderen 7 Bits in dem betreffenden Byte
    also holst du dir die gesamten 8 Bits (1 Byte), änderst nur das eine (10.3)
    dann schreibst du alle 8 Bits ( = 1 Byte, davon 7 ungeänderte und 1 geändertes Bit) wieder zurück
    vllt liegt es am fussballspiel welches nebenher läuft. aber ich verstehs leider nicht wirklich. das mit den "zurückholen" und nur eines ändern. wie soll ich denn nur eines ändern können, wenn ich immer 8 schreiben muss.

  9. #9
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von SoftMachine Beitrag anzeigen
    Oder du freundest dich mit folgendem Konstrukt an:

    LAR1 p#A 10.0 //Pointer auf A 10.0
    S [AR1,P#0.3] //dein Bit A 10.3 zuweisen (10.0 + Offset 0.3)

    dann brauchst du auch keinen SFC20
    danke, aber das scheint mir ein wenig unflexibel zu sein.

  10. #10
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    naja, irgendwie muss es ja gehen, kann ja nicht sein dass ich der erste bin, der auf solch ein "problem" stößt.

Ähnliche Themen

  1. Per SCL ein Bit in einen DBD schreiben
    Von SEAL im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 11.01.2012, 16:07
  2. Antworten: 6
    Letzter Beitrag: 30.09.2011, 13:35
  3. Antworten: 1
    Letzter Beitrag: 28.10.2008, 21:57
  4. Antworten: 10
    Letzter Beitrag: 04.08.2006, 19:28
  5. Mit Button Bit in Byte schreiben?
    Von apachler im Forum HMI
    Antworten: 2
    Letzter Beitrag: 31.03.2006, 09:00

Lesezeichen

Berechtigungen

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