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

Ergebnis 1 bis 8 von 8

Thema: Parität aus einem DW ermitteln

  1. #1
    spunky Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich möchte die Parität aus einem DW ermitteln. D.h. 8 bit Zahl von 1..255 -> wieviel Bits sind gesetzt.

    1 -> 00000001 -> Parität 1
    2 -> 00000010 -> Parität 1
    3 -> 00000011 -> Parität 0
    4 -> 00000100 -> Parität 1
    5 -> 00000101 -> Parität 0
    6 -> 00000110 -> Parität 0
    7 -> 00000111 -> Parität 1

    d.h. wenn gerade Anzahl Bits gesetzt sind -> Parität 0, ansonsten 1.

    Habe bis jetzt noch nichts in der Siemens Bibo gefunden aber vielleicht bin ich ja blind.
    Mein Ansatz wäre dann, ich schiebe mir ein Bit durchs Wort und zähle dann mit UW wieviel mal ich ein positives Ergebnis habe, naja aber vielleicht gibts ja noch eine elegantere Möglichkeit.

    CPU: 315 2DP
    Zitieren Zitieren Gelöst: Parität aus einem DW ermitteln  

  2. "Hallo spunky,

    siehe Siemens - Ermittlung der Parität

    Gruss, Onkel"


  3. #2
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    Code:
    L      MB 8	// in MB8 steht die Zahl
    L      2	// Teile die Zahl durch zwei und ermittle
    MOD		// mit modulo den divisionsrest
    L      0	// vergleiche den divisionsrest mit 0
    <>I		// wenn dieser ungleich 0 ist, dann schreibe das
    = Parität_0	// Bit auf 1
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  4. #3
    Anonymous Gast

    Standard

    Mit Modulo ist schon klar, funktioniert aber leider dabei nicht.

    1 : 2 = 0,5 -> Rest -> Parität 1 o.k.
    2 : 2 = 0 -> kein Rest -> Parität 0 -- falsch !!! --- ist ja nur 1 Bit gesetzt.
    3 : 2 = 1,5 -> Rest -> Parität 1 --- falsch !!! -- es sind 2 Bits gesetzt

    -> ungerade Anzahl von gesetzten Bits = Parität 1
    -> gerade Anzahl von gesetzten Bits = Parität 0

  5. #4
    Registriert seit
    06.10.2003
    Beiträge
    3.411
    Danke
    451
    Erhielt 504 Danke für 407 Beiträge

    Standard

    Hallo spunky,

    siehe Siemens - Ermittlung der Parität

    Gruss, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  6. #5
    Registriert seit
    14.01.2004
    Ort
    Hattorf
    Beiträge
    3.201
    Danke
    297
    Erhielt 311 Danke für 266 Beiträge

    Standard

    Hallo,
    schau Dir mal in TI_S7_Converting_Blocks den FC 99 an, hier mal die Beschreibung dazu:
    Beschreibung

    Die Funktion Anzahl der gesetzten Bits zählen (BITSUM) zählt die Anzahl der Bits, die am Eingang IN auf "1" gesetzt werden, und gibt diesen Wert als Funktionswert aus.

    Parameter von FC99


    Parameter Deklaration Datentyp Speicherbereich Beschreibung
    EN Eingang BOOL E, A, M, D, L Der Signalzustand "1" am Freigabeeingang aktiviert die Box.
    ENO Ausgang BOOL E, A, M, D, L Der Freigabeausgang hat den Signalzustand "1", wenn die Funktion fehlerfrei ausgeführt wird.
    IN Eingang DWORD E, M, D, L, P, Konstante Variable, in der die Bits gezählt werden sollen.
    RET_VAL Ausgang INT A, M, D, L, P Ausgegebener Wert.
    Fehlerinformation

    Diese Funktion erkennt keine Fehlerbedingungen.

    Beispiel

    Ist der Signalzustand am Eingang E 0.0 = 1 (aktiviert), dann wird die Funktion BITSUM ausgeführt. In diesem Beispiel ist der ausgegebene Wert in MW0 = 13 (”D” in hexadezimaler Schreibweise). Hierbei handelt es sich um die Summe der auf "1" gesetzten Bits in dem Doppelwort des eingegebenen Hexadezimalwerts DW#16#12345678.

    Wird die Funktion fehlerfrei ausgeführt, dann werden die Signalzustände von ENO und A 0.0 auf "1" gesetzt.


    mfg

    dietmar

  7. #6
    Anonymous Gast

    Standard

    Danke erstmal,
    wird dann gleich getestet.

    Habt mir ein paar graue Zellen erspart !!!!


  8. #7
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Parität von MW14 = XOR-Verknüfung aller Bits:
    U M14.0
    X M14.1
    X M14.2
    X M14.3
    X M14.4
    X M14.5
    X M14.6
    X M14.7
    X M15.0
    X M15.1
    X M15.2
    X M15.3
    X M15.4
    X M15.5
    X M15.6
    X M15.7
    gesetztes VKE = ungerade Parität

  9. #8
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Anonymous
    Mit Modulo ist schon klar, funktioniert aber leider dabei nicht.

    1 : 2 = 0,5 -> Rest -> Parität 1 o.k.
    2 : 2 = 0 -> kein Rest -> Parität 0 -- falsch !!! --- ist ja nur 1 Bit gesetzt.
    3 : 2 = 1,5 -> Rest -> Parität 1 --- falsch !!! -- es sind 2 Bits gesetzt

    -> ungerade Anzahl von gesetzten Bits = Parität 1
    -> gerade Anzahl von gesetzten Bits = Parität 0
    oh sorry, ich standauf der leitung, habe das so verstanden das ungerade
    zahlen erkannt werden sollen...
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

Ähnliche Themen

  1. Ermitteln der U/min mit einem Inkrementalgeber
    Von AnMenzel im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 11.05.2009, 12:34
  2. Ausgang von einem BK9100 aus einem BC9050 steuern
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 28.09.2008, 10:51
  3. Antworten: 5
    Letzter Beitrag: 21.04.2008, 19:57
  4. Antworten: 5
    Letzter Beitrag: 07.03.2008, 13:36
  5. Antworten: 1
    Letzter Beitrag: 14.12.2005, 21:42

Lesezeichen

Berechtigungen

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