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

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

Thema: Per SCL ein Bit in einen DBD schreiben

  1. #11
    SEAL ist offline Benutzer
    Themenstarter
    Registriert seit
    05.09.2008
    Ort
    Bern
    Beiträge
    80
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Paule,
    Danke für den Code aber das ist auch noch nicht das was ich suche.

    Wie gesagt ich möchte sobald der fc(SCL) aufgerufen wird das er mittels integer variable in das Bit von einem DBW eine 1 Schreibt, dasganze brauche ich dann nochmal nur das er ein null schreibt.
    Aber ich glaube dein Vorschlag ist der Lösung schon ganz nahe.

  2. #12
    SEAL ist offline Benutzer
    Themenstarter
    Registriert seit
    05.09.2008
    Ort
    Bern
    Beiträge
    80
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Paule Beitrag anzeigen
    Probiere mal das Byte und das Bit zu übergeben:

    Code:
    VAR_INPUT
       i_Byte : INT;
       i_Bit  : INT;
    END_VAR
    
    VAR_TEMP
       FreiBelegt : BOOL;
    END_VAR
    
    FreiBelegt := DB200.DX[i_Byte, i_Bit];
    // i_Byte := 146
    // i_Bit := 0-7
    Wäre es mgl. mittels wenn dann funktion in 2 Bytes zu schreiben wenn zb. das Bit kleiner ist als 7 dann nutze 147 wenn grösser dann 146 und eine freigabe anliegt und das ich 2 freigabe eingänge hätte, einer der das gewählte bit auf 0 setz und einer der es auf 1 setzt. Leider bin ich in scl nicht so fit

  3. #13
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.569
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard

    Nur mal als Anregung: Ließe sich das nicht auch elegant mit dem "AT" - Befehl erschlagen?
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  4. #14
    SEAL ist offline Benutzer
    Themenstarter
    Registriert seit
    05.09.2008
    Ort
    Bern
    Beiträge
    80
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    An die Mgl hatte ich auch schon gedacht

    nach viel rumprieren konnte ich es nun Lösen.
    In dem DB habe ich ein Array angelegt. und mittel SFC kann ich dort nun belibig viele Bits schreiben
    Für Leute die auch sowas gebrauchen können hier mal der Code.
    Als erstes im DB1 ein Array[1..x] mit Dekl. BOOL anlegen und anschl. den FC erstellen.

    Code:
    Funktion FC1 :Void
    
         VAR_INPUT
           
           Fach_Frei :BOOL ;
           Fach_Belegt : BOOL;
           Fach_Nr : INT;
    
         END_VAR
    
         IF Fach_Frei = true THEN
         db1.Status_Fach[Fach_Nr] := true ;
         END_IF
    
         IF Fach_Fach_Belegt = true THEN
         db1.Status_Fach[Fach_Nr] := false ;
         END_IF
    
    
    END_Function
    Danke an alle die mir Geantwortet haben.
    Geändert von SEAL (11.01.2012 um 15:41 Uhr) Grund: 2.te If Anweisung falsche Variable Verwendet

  5. #15
    Registriert seit
    27.04.2006
    Ort
    Sauerland
    Beiträge
    624
    Danke
    183
    Erhielt 88 Danke für 81 Beiträge

    Standard

    Zitat Zitat von SEAL Beitrag anzeigen
    An die Mgl hatte ich auch schon gedacht

    nach viel rumprieren konnte ich es nun Lösen.
    In dem DB habe ich ein Array angelegt. und mittel SFC kann ich dort nun belibig viele Bits schreiben
    Für Leute die auch sowas gebrauchen können hier mal der Code.
    Als erstes im DB1 ein Array[1..x] mit Dekl. BOOL anlegen und anschl. den FC erstellen.

    Code:
    Funktion FC1 :Void
    
         VAR_INPUT
           
           Fach_Frei :BOOL ;
           Fach_Belegt : BOOL;
           Fach_Nr : INT;
    
         END_VAR
    
         IF Fach_Frei = true THEN
         db1.Status_Fach[Fach_Nr] := true ;
         END_IF
    
         IF Fach_Frei = false THEN
         db1.Status_Fach[Fach_Nr] := false ;
         END_IF
    
    
    END_Function
    Danke an alle die mir Geantwortet haben.
    ich hab da mal eine frage :
    geht das in scl nicht so ?


    Code:
    Funktion FC1 :Void
    
         VAR_INPUT
           
           Fach_Frei :BOOL ;
           Fach_Belegt : BOOL;
           Fach_Nr : INT;
    
         END_VAR
    
         db1.Status_Fach[Fach_Nr] := Fach_Frei ;
    
    
    END_Function
    ich mag das scl jetzt nicht so, aber die if's kann man sich wohl sparen oder nicht?
    Die Kunst in der Personalführung ist es
    die Mitarbeiter so über den Tisch zu ziehen,
    dass sie die Reibungshitze als Nestwärme empfinden.

  6. #16
    SEAL ist offline Benutzer
    Themenstarter
    Registriert seit
    05.09.2008
    Ort
    Bern
    Beiträge
    80
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ein kleinen Fheler hatte ich noch entdeckt, bei der 2 IF Anweisung hatte ich die Falsche Variable gewählt ist geändert worden
    Naja es kommt immer darauf an was man machen will.

    Ich brauchte eine Funktion die mir Ein Bit einer DB Variable auf 0 und 1 setzen kann.

    Hintergrund: ich habe ein lagerregal dort fahre ich mit einem Drei_Achsenmodel die einzelnen Fächer an. Ich gebe das Fach an wo ich holen will und das fach wo ich absetzten möchte.
    Wenn der schritt zum Holen vollständig abgeschlossen ist soll er mir das Bit für das fach auf 0 setzten und somit anzeigen das es frei ist. Das heist ich gebe ein Signal auf die "Fach_Frei" Variable
    das Gleich wenn der schritt ablegen ageschlossen ist dann gebe ich ein Signal auf "Fach_Belegt"
    Bei deiner Variante würde das Bit zwar gesetzte werden aber nicht wieder zurückgesetzt.

    Gruss
    Geändert von SEAL (11.01.2012 um 15:40 Uhr)

  7. #17
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.569
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard

    Da hier eine Zuweisung gemacht wird, nimmt die Variable

    db1.Status_Fach[Fach_Nr]

    den Status von "Fach_frei" an. Wenn der FALSE ist, wird auch "zurückgesetzt".
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  8. #18
    SEAL ist offline Benutzer
    Themenstarter
    Registriert seit
    05.09.2008
    Ort
    Bern
    Beiträge
    80
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Stimmt auch wieder danke für den hinweis

  9. #19
    Registriert seit
    27.04.2006
    Ort
    Sauerland
    Beiträge
    624
    Danke
    183
    Erhielt 88 Danke für 81 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ok, ich hatte mir nach deinem beitrag schon sowas gedacht. ich hatte nur angst das man im SCL die zuweisung nicht so machen könnte wie ich das getan hab. Ich programmiere schon länger in ST. da geht das auf jeden fall so. SCL habe ich mir nur mal kurz angeschaut und wegen des editors wieder vergessen.
    Die Kunst in der Personalführung ist es
    die Mitarbeiter so über den Tisch zu ziehen,
    dass sie die Reibungshitze als Nestwärme empfinden.

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 15.07.2008, 16:38
  2. Werte in DBD schreiben
    Von nuss im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 19.09.2007, 16:01
  3. Antworten: 3
    Letzter Beitrag: 11.07.2007, 22:52
  4. Ein Bit im Doppelwort ändern (SCL)
    Von M-Arens im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 14.03.2007, 15:29
  5. Antworten: 10
    Letzter Beitrag: 04.08.2006, 19:28

Lesezeichen

Berechtigungen

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