Taster mit zwei Funktionen

Szenario

Ein Taster ist mit dem digitalen Eingang 1 eines IOZER basic verbunden. Über denselben Taster sollen zwei Leuchten an den digitalen Ausgängen 1 und 2 unabhängig voneinander umgeschaltet werden.

Das Beispiel zeigt zwei alternative Varianten: die Auswertung der Klickanzahl über die Button-Funktion und die Auswertung der Betätigungsdauer beim Loslassen des Tasters.

Ziel

Variante Bedienung Aktion
Button-Funktion Einfachklick Leuchte 1 umschalten
Button-Funktion Doppelklick Leuchte 2 umschalten
Betätigungsdauer Kurzer Tastendruck, weniger als 500 ms Leuchte 1 umschalten
Betätigungsdauer Langer Tastendruck, mindestens 500 ms Leuchte 2 umschalten

Umschalten (Toggle) bedeutet: Ein ausgeschalteter Ausgang wird eingeschaltet, ein eingeschalteter Ausgang wird ausgeschaltet. Die jeweils andere Leuchte behält ihren Zustand.

Eingesetzte Hardware

  • IOZER basic (IOZ-B-10) mit geeigneter Spannungsversorgung
  • Taster als Schließer am digitalen Eingang 1
  • zwei für die Ausgänge geeignete Leuchten an den digitalen Ausgängen 1 und 2
  • Rechner mit Zugriff auf die Weboberfläche

Voraussetzungen

  • Der IOZER basic und die angeschlossenen Komponenten sind gemäß den Sicherheitshinweisen und dem elektrischen Anschluss installiert.
  • Der Eingang ist bei losgelassenem Taster logisch 0 und bei gedrücktem Taster logisch 1.
  • Für die Variante mit Betätigungsdauer stellt die verwendete Firmware im Ereigniskontext previous_duration_ms bereit.

Die Schritte 1 und 2 bereiten Eingang, Ausgänge und Datenpunkte vor. Wählen Sie anschließend entweder Schritt 3.1 oder Schritt 3.2. Beim Wechsel der Variante ändern Sie den Eingangsdatenpunkt entsprechend und deaktivieren oder entfernen das Ereignis der bisherigen Variante.

Umsetzung

1. Eingang und Datenpunkt konfigurieren

Öffnen Sie I/O & Schnittstellen → Digitale Eingänge und bearbeiten Sie Eingang 1 über das Stiftsymbol.

Digitaler Eingang 1 mit der Bezeichnung Taster 1 und Aktionen zum Anlegen eines Datenpunkts und Bearbeiten des Eingangs
Digitaler Eingang 1 mit der Bezeichnung Taster 1 und Aktionen zum Anlegen eines Datenpunkts und Bearbeiten des Eingangs
Einstellung Wert
Bezeichnung Taster 1
Aktiviert Ein
Name taster_1
Invertiert Aus
Filterzeit (Entprellzeit) 50 ms
Pausezeit (für Button-Funktion) 500 ms
Konfiguration von Taster 1 mit 50 ms Filterzeit, 500 ms Pausezeit und deaktivierter Invertierung
Konfiguration von Taster 1 mit 50 ms Filterzeit, 500 ms Pausezeit und deaktivierter Invertierung

Die Filterzeit unterdrückt kurze Signalwechsel durch prellende Kontakte. Die Pausezeit bestimmt das Zeitfenster für die Zusammenfassung mehrerer Klicks zu einer Button-Auswertung. Sie ist unabhängig von der später in der Logik festgelegten Grenze zwischen kurzem und langem Tastendruck.

Bestätigen Sie den Dialog mit Übernehmen, speichern Sie die Konfiguration und übernehmen Sie sie in den laufenden Betrieb.

Legen Sie anschließend unter Datenpunkte einen Datenpunkt für den Eingang an. Alternativ können Sie das Plus-Symbol in der Zeile des Eingangs verwenden.

Einstellung Variante 3.1: Klickanzahl Variante 3.2: Betätigungsdauer
Bezeichnung Taster 1 Taster 1
Name taster_1 taster_1
Datentyp Integer Boolean (Bool)
Datenquelle → Datenbindung Digitaler Eingang Digitaler Eingang
Datenquelle → Digitaler Eingang Taster 1 Taster 1
Datenquelle → Wert Button-Klickzahl Zustand
Datenziel keines keines

Die Datenbindung wird im Reiter Datenquelle & Ziel eingestellt. Die Klickanzahl benötigt einen ganzzahligen Datenpunkt, damit die Werte 1 und 2 unterschieden werden können. Für die Betätigungsdauer wird der boolesche Zustand des Eingangs verwendet.

Speichern und übernehmen Sie die Datenpunktkonfiguration. Weitere Informationen finden Sie unter Digitale Eingänge und Datenpunkte.

2. Ausgänge und Datenpunkte konfigurieren

Wechseln Sie zu I/O & Schnittstellen → Digitale Ausgänge und bearbeiten Sie die Ausgänge 1 und 2.

Digitale Ausgänge 1 und 2 mit den Bezeichnungen Leuchte 1 und Leuchte 2
Digitale Ausgänge 1 und 2 mit den Bezeichnungen Leuchte 1 und Leuchte 2
Einstellung Ausgang 1 Ausgang 2
Bezeichnung Leuchte 1 Leuchte 2
Aktiviert Ein Ein
Name leuchte_1 leuchte_2
Invertiert Aus Aus
Anfangszustand Aus Aus
Auto-Aus Deaktiviert Deaktiviert
Blinken Deaktiviert Deaktiviert

Speichern und übernehmen Sie die Ausgangskonfiguration. Legen Sie anschließend für jeden Ausgang einen Datenpunkt an, entweder unter Datenpunkte oder über das Plus-Symbol in der jeweiligen Ausgangszeile.

Einstellung Datenpunkt Leuchte 1 Datenpunkt Leuchte 2
Bezeichnung Leuchte 1 Leuchte 2
Name leuchte_1 leuchte_2
Datentyp Boolean (Bool) Boolean (Bool)
Datenquelle → Datenbindung Digitaler Ausgang Digitaler Ausgang
Datenquelle → Digitaler Ausgang Leuchte 1 Leuchte 2
Datenquelle → Wert Zustand Zustand
Datenziel → Datenbindung Digitaler Ausgang Digitaler Ausgang
Datenziel → Digitaler Ausgang Leuchte 1 Leuchte 2
Datenziel → Wert Zustand Zustand

Die Datenquelle liest den aktuellen Ausgangszustand zurück; das Datenziel gibt den von der Logik gesetzten Wert an den Ausgang weiter. dp.toggle arbeitet anschließend mit dem jeweiligen Datenpunkt.

Speichern und übernehmen Sie die Datenpunkte. Kontrollieren Sie in der Übersicht, dass alle drei Datenpunkte den Status OK besitzen und die Ausgangsdatenpunkte den Zustand Aus anzeigen. Datenpunkt-IDs werden automatisch vergeben und können von den IDs in den Screenshots abweichen. Die JavaScript-Beispiele verwenden deshalb die technischen Namen.

Die folgende Übersicht zeigt den Eingangsdatenpunkt für Variante 3.2 mit dem Quellenwert Zustand und dem Datentyp Bool. Für Variante 3.1 stellen Sie ihn gemäß Schritt 1 auf Button-Klickzahl und Integer um.

Datenpunktübersicht mit Taster 1 als booleschem Eingangszustand sowie Leuchte 1 und Leuchte 2 mit digitalen Ausgängen als Quelle und Ziel
Datenpunktübersicht mit Taster 1 als booleschem Eingangszustand sowie Leuchte 1 und Leuchte 2 mit digitalen Ausgängen als Quelle und Ziel

Details zur Ausgangskonfiguration finden Sie unter Digitale Ausgänge.

3.1 Ereignis für die Button-Funktion erstellen

Für diese Variante muss taster_1 als Integer mit dem Quellenwert Button-Klickzahl konfiguriert sein.

Datenquelle des Tasters für die Button-Funktion: Digitaler Eingang, Taster 1, Button-Klickzahl
Datenquelle des Tasters für die Button-Funktion: Digitaler Eingang, Taster 1, Button-Klickzahl

Öffnen Sie Programm → Ereignis hinzufügen und wählen Sie Datenpunkt → Wert aktualisiert. Fügen Sie das Ereignis hinzu und konfigurieren Sie es:

Einstellung Wert
Datenpunkt Taster 1
Aktiviert Ein
Beschreibung beispielsweise Einfachklick: Leuchte 1; Doppelklick: Leuchte 2
Ereignis hinzufügen mit ausgewähltem Auslöser Datenpunkt – Wert aktualisiert
Ereignis hinzufügen mit ausgewähltem Auslöser Datenpunkt – Wert aktualisiert
Aktiviertes Ereignis Wert aktualisiert mit Taster 1 als Datenpunkt
Aktiviertes Ereignis Wert aktualisiert mit Taster 1 als Datenpunkt

Wert aktualisiert ist hier entscheidend: Zwei aufeinanderfolgende Einfachklicks liefern jeweils den Wert 1. Ein Ereignis vom Typ Wert geändert würde bei erneut gleicher Klickanzahl nicht reagieren.

Blockly-Logik

Erstellen Sie zwei aufeinanderfolgende falls-Blöcke aus der Kategorie Logik:

  1. Vergleichen Sie Ereignis → Neuer Wert mit der Zahl 1. Fügen Sie im mache-Bereich Datenpunkte → Datenpunkt umschalten ein und wählen Sie Leuchte 1.
  2. Vergleichen Sie im zweiten Block Neuer Wert mit der Zahl 2. Schalten Sie in dessen mache-Bereich Leuchte 2 um.

Andere Klickanzahlen führen in diesem Beispiel zu keiner Aktion.

Blockly-Logik: Neuer Wert gleich 1 schaltet Leuchte 1 um, neuer Wert gleich 2 schaltet Leuchte 2 um
Blockly-Logik: Neuer Wert gleich 1 schaltet Leuchte 1 um, neuer Wert gleich 2 schaltet Leuchte 2 um

Alternativ: JavaScript

Die gleiche Logik lässt sich im JavaScript-Editor des Ereignisses wie folgt hinterlegen:

if (ioz_event.value == 1) {
  dp.toggle("leuchte_1");
}
if (ioz_event.value == 2) {
  dp.toggle("leuchte_2");
}
JavaScript-Ansicht des Ereignisses Wert aktualisiert mit der Auswertung für Einfach- und Doppelklick
JavaScript-Ansicht des Ereignisses Wert aktualisiert mit der Auswertung für Einfach- und Doppelklick

Verwenden Sie pro Ereignis entweder Blockly oder die JavaScript-Alternative. Speichern Sie das Programm und übernehmen Sie es in den laufenden Betrieb.

Funktion prüfen

  • Drücken Sie den Taster einmal kurz und lassen Sie ihn los. Warten Sie die eingestellte Klickpause ab: Leuchte 1 muss ihren Zustand wechseln.
  • Wiederholen Sie den Einfachklick nach abgeschlossener Auswertung. Leuchte 1 muss erneut umschalten, obwohl die Klickanzahl wieder 1 ist.
  • Drücken Sie zweimal kurz hintereinander innerhalb der eingestellten Klickpause. Nach Abschluss der Klickfolge muss Leuchte 2 einmal umschalten; Leuchte 1 behält ihren Zustand.
  • Prüfen Sie die Zustände in der Datenpunktübersicht und den Ausführungsstatus des Ereignisses im Programmbereich.

3.2 Ereignis für die fallende Flanke erstellen

Für diese Variante muss taster_1 als Boolean mit dem Quellenwert Zustand konfiguriert sein. Deaktivieren oder entfernen Sie zuvor das Ereignis aus Schritt 3.1, falls es bereits angelegt wurde.

Datenquelle des Tasters für die Betätigungsdauer: Digitaler Eingang, Taster 1, Zustand
Datenquelle des Tasters für die Betätigungsdauer: Digitaler Eingang, Taster 1, Zustand

Öffnen Sie Programm → Ereignis hinzufügen und wählen Sie Datenpunkt → Wert geändert. Konfigurieren Sie das Ereignis:

Einstellung Wert
Datenpunkt Taster 1
Aktiviert Ein
Beschreibung beispielsweise Beim Loslassen: kurz Leuchte 1, lang Leuchte 2

Das Ereignis reagiert auf Zustandsänderungen beim Drücken und Loslassen. Die Bedingung Neuer Wert = 0 wählt die fallende Flanke beim Loslassen aus. Erst dann wird die Betätigungsdauer ausgewertet. Auch ein langer Tastendruck schaltet die Leuchte somit erst beim Loslassen um.

Blockly-Logik

  1. Erstellen Sie einen falls-Block mit der Bedingung Ereignis → Neuer Wert = 0.
  2. Fügen Sie in dessen mache-Bereich einen weiteren falls-Block mit einem sonst-Zweig ein.
  3. Vergleichen Sie Ereignis → Dauer des vorherigen Werts mit < 500.
  4. Schalten Sie im inneren mache-Bereich Leuchte 1 um und im sonst-Bereich Leuchte 2.
Blockly-Logik für die fallende Flanke: Bei neuem Wert 0 schaltet eine vorherige Dauer unter 500 ms Leuchte 1 um, andernfalls Leuchte 2
Blockly-Logik für die fallende Flanke: Bei neuem Wert 0 schaltet eine vorherige Dauer unter 500 ms Leuchte 1 um, andernfalls Leuchte 2

Die Dauer des vorherigen Werts wird in Millisekunden geliefert. Bei der fallenden Flanke ist der vorherige Wert der gedrückte Zustand des Tasters. Eine Dauer von genau 500 ms gehört bereits zum langen Tastendruck.

Alternativ: JavaScript

if (ioz_event.value == 0) {
  if (ioz_event.previous_duration_ms < 500) {
    dp.toggle("leuchte_1");
  } else {
    dp.toggle("leuchte_2");
  }
}

ioz_event.previous_duration_ms entspricht dem Blockly-Block Dauer des vorherigen Werts. Der Vergleich ioz_event.value == 0 erkennt sowohl den booleschen Wert false als auch die numerische Darstellung 0 als losgelassenen Zustand.

JavaScript-Ansicht des Ereignisses Wert geändert mit der Auswertung von previous_duration_ms bei fallender Flanke
JavaScript-Ansicht des Ereignisses Wert geändert mit der Auswertung von previous_duration_ms bei fallender Flanke

Verwenden Sie entweder Blockly oder die JavaScript-Alternative. Speichern und übernehmen Sie das Programm.

Funktion prüfen

  • Drücken Sie den Taster deutlich kürzer als 500 ms, beispielsweise etwa 200 ms, und lassen Sie ihn los. Leuchte 1 muss einmal umschalten.
  • Halten Sie den Taster deutlich länger als 500 ms, beispielsweise etwa eine Sekunde. Während des Haltens darf noch keine Umschaltung erfolgen. Beim Loslassen muss Leuchte 2 einmal umschalten.
  • Wiederholen Sie beide Bedienungen. Die jeweils zugeordnete Leuchte muss bei jedem Loslassen erneut umschalten; die andere behält ihren Zustand.
  • Prüfen Sie die Zustände in der Datenpunktübersicht und den Ausführungsstatus des Ereignisses.

Fehlerbehebung

Fehlerbild Mögliche Ursache und Prüfung
Eingang reagiert nicht Aktivierung, Verdrahtung und logischen Eingangswert unter Digitale Eingänge prüfen.
Doppelklick schaltet die falsche Leuchte Für Variante 3.1 Datentyp Integer und Quellenwert Button-Klickzahl prüfen. Ein boolescher Datenpunkt kann die Klickanzahlen 1 und 2 nicht unterscheiden.
Ein weiterer Einfachklick bewirkt nichts In Variante 3.1 den Auslöser Wert aktualisiert verwenden.
Zwei Klicks werden als getrennte Einfachklicks erkannt Abstand zwischen den Klicks und die konfigurierte Pausezeit von 500 ms prüfen.
Umschaltung erfolgt beim Drücken statt beim Loslassen Für Variante 3.2 den logischen Eingangszustand, die Invertierung und die Bedingung Neuer Wert = 0 prüfen.
Kurz und lang werden nicht richtig unterschieden Quellenwert Zustand, Auslöser Wert geändert und den Vergleich von previous_duration_ms mit 500 prüfen. Die Einheit ist Millisekunden.
Leuchte schaltet unerwartet oder zweimal Nur das Ereignis der gewählten Variante aktivieren; weitere Logik sowie Auto-Aus- und Blinkfunktionen der Ausgänge prüfen.
Datenpunkt ändert sich, Ausgang aber nicht Datenziel und Zuordnung zum richtigen digitalen Ausgang kontrollieren.

Ergebnis und Erweiterung

Ein einzelner Taster steuert zwei Ausgänge unabhängig voneinander. Die Button-Funktion unterscheidet die Anzahl der Klicks; die zweite Variante unterscheidet die Dauer des gedrückten Zustands beim Loslassen.

Für weitere Funktionen lässt sich die Klickauswertung um zusätzliche Klickanzahlen erweitern. Die Grenze für einen langen Tastendruck kann über den Vergleichswert in Blockly oder JavaScript angepasst werden. Die Pausezeit der Button-Funktion bleibt eine separate Eingangseinstellung.

IOZER basic
IOZER
Innovative Steuerung für vielseitige Anwendungen.
AnmeldenRegistrieren
DE Deutsch EN English
Produkte
Shop
Docs
Connect
Kontakt
Sprache: DE
DE Deutsch EN English
Warenkorb
AnmeldenRegistrieren