4 Sensoren

Falke
2008-11-03
2008-11-04
  • Falke - 2008-11-03

    Hallo,

    ich habe 4 Sensoren. Wenn die Taste 1 betätigt worden ist, bekomme ich Eingangsignal vom Sensor 1, wenn Taste 2 - vom Sensor 2 usw. Wie kann ich diese Aufgabe in FUP oder ST realisieren?

    Danke schön im Voraus!

     
  • Matze001 - 2008-11-03

    Was genau willst du? Formuliere das mal genauer!

    Sind die Taster deine Sensoren? Oder hast du 4 Sensoren und 4 Taster, je nachdem welcher Taster gedrückt wird wird der Wert von nur einem Sensor benutzt?

    Fragen über Fragen!

    MfG

    Marcel

     
  • Rolf-Geisler - 2008-11-03

    Hallo,

    ist in ST relativ einfach. Angenommen, Du packst das ganze in einen FB, dann braucht der einen Eingang für den Taster und je einen Eingang für die Sensoren. Dann braucht er noch einen Ausgang für das aktuell ausgewählte Sensorsignal.

    Vom Taster musst Du die Flanke auswerten und damit einen Zähler hochzählen. Der Zählerstand wählt den betreffenden Sensor aus.

    Beispiel:

    FUNCTION_BLOCK Sensor
    VAR_INPUT
      ixTaster : boolean;
      iwSensor1 : WORD;
      iwSensor2 : WORD;
      iwSensor3 : WORD;
      iwSensor4 : WORD;
    END_VAR
    VAR_OUTPUT
      qwAktuellerSensor : WORD;
      qiGewaehlterSensor : INT;
    END_VAR
    VAR
      Flanke : R_TRIG;  (* ansteigende Flanke *)
      SensorWahl : INT := 1;  (* wählt den ersten Sensor aus *)
    END_VAR
    (* Jetzt geht's los: Taster auswerten *)
    Flanke (CLK := ixTaster);
    (* dann den Zähler hochzählen, am Ende zurückstellen *)
    IF Flanke.Q
    THEN SensorWahl := SensorWahl + 1;
         IF (SensorWahl > 4)
         THEN (* die Sensorliste ist am Ende, beginne von vorn *)
              SensorWahl := 1;
         END_IF;
    END_IF;
    (* jetzt den ausgewählten Sensor auf den Ausgang durchschalten *)
    CASE SensorWahl OF
      1 : (* ersten Sensor durchreichen *)
          qwSensor := iwSensor1;
      2 : (* zweiten Sensor durchreichen *)
          qwSensor := iwSensor2;
      3 : (* dritten Sensor durchreichen *)
          qwSensor := iwSensor3;
      4 : (* vierten Sensor durchreichen *)
          qwSensor := iwSensor4;
    END_CASE;
    (* Jetzt noch zur Information melden, welcher Sensor ausgewählt ist *)
    qiGewaehlterSensor := SensorWahl;
    

    Ist nur ein Beispiel auf die Schnelle, geht vielleicht noch eleganter.

    Gruss Rolf

     
  • Falke - 2008-11-03

    Vielen Dank für die Hilfe!

     
  • Falke - 2008-11-04

    Matze001 hat geschrieben:
    Oder hast du 4 Sensoren und 4 Taster, je nachdem welcher Taster gedrückt wird wird der Wert von nur einem Sensor benutzt?
    Marcel

    Das ist genau, dass ich will!

     
  • Matze001 - 2008-11-04

    Dann mach es folgendermaßen:

    Den Taster auf eine Positive Flanke geben (R_Trig).

    Mit dieser Flanke eine "vergewaltigte" Schrittkette weiterschalten.

    Schritt 1 -> Sensor 1

    Flanke und Schritt 1 -> Schritt 2 -> Sensor 2

    Flanke und Schritt 2 -> Schritt 3 -> Sensor 3

    Flanke und Schritt 3 -> Schritt 4 -> Sensor 4

    Flanke und Schritt 4 -> Schritt 1 -> Sensor 1

    MfG

    Marcel

     

Log in to post a comment.