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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 25 von 25

Thema: mit any pointer ein bit schreiben

  1. #21
    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
    Zitat Zitat von Gebs Beitrag anzeigen
    Limette hat doch eigentlich schon alles, um das entsprechende Bit zu schreiben,
    ohne den SFC 20 zu benötigen:
    Code:
    AUF DB [#DB_Nummer]
    
    L #Byte_Nummer
    SLD 3
    L #Bit_Nummer
    +D
    LAR1
    
    U Bedingung
    = DBX [AR1,P#0.0]
    flexibler geht's doch kaum. Und kürzer ist es auch noch.

    Grüße
    Gebs
    hab deine antwort erst gerade gesehen. werde deins gleich probieren. hab mich heute morgen mal in scl probiert:

    Code:
    FUNCTION FC1 : VOID
    VAR_INPUT
    
    
    BitNummer: INT;
    ByteNummer: INT;
    DBNummer: INT;
    
    
    
    
    End_var
    
    VAR_IN_OUT
    
    Start: BOOL; 
    
    End_var
    
    
    
    IF Start THEN 
    
    WORD_TO_BLOCK_DB(INT_TO_WORD(DBNummer)).DX[Bytenummer, Bitnummer] := TRUE; 
    
    
    
    
    End_if;
    
    Start := False; 
    
    
    END_FUNCTION
    Leider klappt es nicht so wie gewollt. es werden bei z.b. byte 10 immer mehrere bools gesetzt, obwohl ich bitnummer nur auf 3 gestetzt habe. nur wenn ich bitnummer auf 0 gestellt habe funktionert es. HELP.

  2. #22
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Hallo,
    ein FC hat kein Gedächtnis.
    Das solltest du bei der "IF Start then ..."-Geschichte berücksichtigen und da immer sicher stellen, dass in den verwendeten Adressierungs-Variablen dann auch sinnvolle Zahlenwerte drin stehen. Ansonsten ist der Code an sich korrekt ... Der Fehler kann also nur in der Verwendung des FC1 oder drum herum stecken ...

    Gruß
    Larry

  3. #23
    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

    Ok danke, dann muss ich wohl noch mal gucken.

    noch mal zu Gebs:

    AUF DB [#DB_Nummer]
    Das funktioniert nur wenn die DBNummer ein BLOCK_DB ist, richtig ?!... würde es irgendwie gehen wenn ich die DBNummer nur als INT vorliegen haben ?

  4. #24
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    In dem Beispiel von Gebs ist DB_Nummer ein INT. Wenn du das mit einem BLOCK_DB machen willst so wäre die Syntax dafür : AUF #DB_Nummer

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

    Limette (01.03.2012)

  6. #25
    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
    ok, danke. es geht auch. meine DBnummer war nur ein Eingang, muss es erst zwischenspeichern.

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