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

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 34

Thema: In einem byte schauen ob ein Bit für ca. 1M lang 0 ist

  1. #11
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    mir schwebt ja eine lösung mit einem array[0..7] of int als timer-puffer für alle bits vor, getriggert vom plc-puls 1hz und dann über das ganze byte in geguckt, ob sich ein bit geändert hat und wenn 0, läuft die zeit für das bit los ... das ganze in einem FB und fertsch
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  2. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    Backdoor (21.10.2010)

  3. #12
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Ich glaube ich habe die Frage auch nicht richtig verstanden aber es ist das selbe wie die 8x oder es kommen ja durch das XOR eh nur noch die die er haben will raus.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  4. #13
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Vielleicht reicht schon die folgende Lösung aus:

    Code:
          L     MB   200                  // Byte
          L     2#10011001                // Bits ausmaskieren (Bits = log 1 setzen)
          OW    
          L     2#11111111                // Abfrage, ob ein Bit = log 0  
          <>I   
          L     S5T#1M                    // Zeitverzögerung
          SE    T    445
    Gruß Kai

  5. #14
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Da hab ich mich wohl verlesen, du hast geschrieben, wenns "0" ist ...

    Dann halt so (im Prinzip die Kurzvariante der XOW Maskierung):
    Code:
    L MB...
    INVI
    L 0
    <>I
    L S5T#1m
    SE T0
    Wobei die Varianten den Nachteil hat, wenn Bit0 jetzt 0 wird, nach 30s wird Bit1 0, einen Zyklus später Bit0 wieder 1,
    dann läuft dein Timer trotzdem ab...

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  6. #15
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Zitat Zitat von Backdoor Beitrag anzeigen
    Hallo an alle,

    Hab da mal ne frage, steh heute auch total auf dem Schlauch.

    Folgendes

    Möchte In einem byte(word) schauen ob ein Bit für ca. 1min lang 0 ist, egal welches, aber wie realisier ich das??


    Die Bits die ich nicht brauche in dem byte (word) würd ich mir ausmaskieren
    in dem ich sie einfach auf 1 setze.

    Lg Chris
    Meinst Du
    a) genau EIN Bit
    b) genau dasselbe Bit

    zu a)
    wenn Du 1111 0011 für 60s lang anstehen hast, ist dann Deine Bedingung auch erfüllt?

    zu b) wenn Du 1111 0111 für 30 Sekunden und dann 1111 1011 für 30 Sekunden hast, ist dann Deine Bedingung erfüllt?

    lG
    Karl

  7. #16
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Zitat Zitat von Kai Beitrag anzeigen
    Vielleicht reicht schon die folgende Lösung aus:

    Code:
          L     MB   200                  // Byte
          L     2#10011001                // Bits ausmaskieren (Bits = log 1 setzen)
          OW    
          L     2#11111111                // Abfrage, ob ein Bit = log 0  
          <>I   
          L     S5T#1M                    // Zeitverzögerung
          SE    T    445
    Gruß Kai
    Siehe b) Beitrag 15

  8. #17
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von MSB Beitrag anzeigen
    Dann halt so (im Prinzip die Kurzvariante der XOW Maskierung):
    Code:
    L MB...
    INVI
    L 0
    <>I
    L S5T#1m
    SE T0
    Der Programmcode mit einem INVI-Befehl (Einerkomplement eines 16-Bit-Wertes) funktioniert leider nur mit einem MW (16-Bit-Wert) und nicht mit einem MB (8-Bit-Wert).

    Wenn man ein MB (8-Bit-Wert) lädt und dann den INVI-Befehl (Einerkomplement eines 16-Bit-Wertes) anwendet, werden im AKKU die Bits 8 - 15 auf log = 1 gesetzt. Der nachfolgende Vergleich auf <> 0 funktioniert dann nicht mehr.

    Gruß Kai

  9. #18
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von Backdoor Beitrag anzeigen
    Möchte In einem byte(word) schauen ob ein Bit für ca. 1min lang 0 ist, egal welches, aber wie realisier ich das??
    Geht es jetzt um Byte oder ein Wort?
    Musst du auch erkennen, wenn nach dem 1. Wechsel nach null ein weiteres Bit sich ändert?

    Mit den bisher vorgestellten Lösungen ist folgendes Problem:
    Bit 0 wird null
    Zeit startet
    Nach ca 58 sec
    Bit 1 wird Null
    Zeit läuft ja schon, also geschieht nix.
    Nach 59sec
    Bit 0 wird eins
    Jetzt lässt Bit 1 die Zeit weiter ablaufen,
    aber das Bit 1 war nicht 1 Minute eins.

    Kannst du uns das genauer bitter erklären was du willst?


    Danke

    bike

  10. #19
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Ich habe jetzt eine halbe Stunde nachgedacht und bin der Meinung, dass wenn es sich um ein spezielles Bit handelt - also nicht so wie Beitrag 15 b) dann ist es mit einem Timer nicht lösbar.

    Es geht einfach die Information der zeitlichen Reihenfolge verloren.
    Bit 2 geht
    15s später geht Bit6
    7s später geht Bit3
    12s später kommt Bit2 wieder... jetzt müsste ich wissen wie spät es bei Bit6 ist


    Wenn ich so ein Problem hätte, würde ich dies in einem FB mit zB 16 IEC-Timern lösen.

    lG
    Karl

  11. #20
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von borromeus Beitrag anzeigen
    Wenn ich so ein Problem hätte, würde ich dies in einem FB mit zB 16 IEC-Timern lösen.
    da find ich meine lösung aus #11 aber schöner
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. Auslesen eines Byte aus einem DWORD (SCL)
    Von tahren im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 18.06.2010, 12:01
  2. Befehle aus einem Byte Bts zuordnen
    Von mitchih im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 02.10.2008, 13:40
  3. Antworten: 5
    Letzter Beitrag: 15.07.2008, 16:38
  4. Anzahl der 1sen iin einem Byte.
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 01.09.2005, 14:29
  5. Struct Größe von einem Byte
    Von Jochen Kühner im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 02.09.2004, 10:36

Lesezeichen

Berechtigungen

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