VisualHMI Rotation Encoder: EC11 Knopf-Drehung und Tastenerkennung (LUA-Initialisierung)

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

Der Knopf-Coder istphysikalische HardwareSteuerung: Durch Drehung (A / B-Phasen - Orthogonal-Impuls) und Drücken (Bestätigung / Schalter) Betrieb, für die stufenlose Feinabstimmung, schnelle Parameter-Einstellung (Temperatur, Frequenz, Verschiebung). Standardprodukte wie der DC40400DB016 unterstützen die Rotations-Encoder - Schnittstelle, Encoder-Modell EC11.

1. Präsentation von Attributen

EigenschaftBeschreibung
EncoderCodierungssequenznummer 0 bis 3, derzeit nur unterstützt 0
SchreibadresseEncoderwert Automatische Akkumulation Ausgabe an diese Adresse
DatentypUINT16 / INT16 / UINT32 / INT32
Obergrenze / Untere GrenzeEncoderwertbereich

VisualHMI Rotation Encoder: EC11 Knopf-Drehung und Tastenerkennung (LUA-Initialisierung)Abbildung

2. Schlüsselverhalten

  • Rotation AktionDas System konvertiert seit der Initialisierung automatisch den A / B-Orthogonalimpuls in einen numerischen Wert - zunehmend gegen den Uhrzeigersinn (Schritt 1), zunehmend im Uhrzeigersinn;bis zu der oberen und unteren Grenze der Klamme, ohne Rücksetzen des Zyklus(Industrial Safety Design)
  • Drücken Sie: Vollständig durch das Lua-Skript auf Benutzerebene verarbeitet (keine eingebaute Rückrufe im System), über die GPIO-Schnittstelle erkannt - - zum Beispiel DC40400DB016 TasteLow-Level - gültig(drücken = 0, loslassen = 1)

VisualHMI Rotation Encoder: EC11 Knopf-Drehung und Tastenerkennung (LUA-Initialisierung)Abbildung1

3. LUA-Skript (muss initialisiert werden)

Die Verwendung des Knopf-Encoders muss in on_init initialisiert werden:

function on_init()
  dofile("bspButtonV2.lua")              -- 加载按键库
  btn_manager = ButtonManager:new()
  btn_manager:add("key1", Knob.pinKey, {
    active_level = Knob.pinKeyActive,     -- 0=低电平有效
    long_press_time = Knob.pinKeyLongTime,-- 300ms 长按阈值
    enable_repeat = true,                 -- 长按连续触发
    enable_double_click = true,           -- 双击检测
    debug = false })
  btn_manager:get("key1")
    :on(Button.EVENT.SHORT_PRESS, KnobKey_Press)
    :on(Button.EVENT.SHORT_RELEASE, KnobKey_Release)
    :on(Button.EVENT.LONG_PRESS, KnobKey_LongPress)
    :on(Button.EVENT.LONG_RELEASE, KnobKey_LongRelease)
    :on(Button.EVENT.CLICK, KnobKey_Click)
    :on(Button.EVENT.DOUBLE_CLICK, KnobKey_Double)
    :on(Button.EVENT.REPEAT, KnobKey_Repeat)
  set_rotate_decoder(0, Knob.pinA, Knob.pinB, Knob.ktype) -- 编码器初始化
  start_rotate_decoder()                  -- 启动编码器
  set_run_cycle(10)                       -- 主循环 10ms
end

Pin-Definition: GPIO Hexadezimal hohe 8 - Bit = IO-Gruppe, niedrige 8 - Bit = Pin, PD0 = 0x0300, PD2 = 0x0302, PD3 = 0x0303. Die Rotation Aktion wird vom Kernel asynchron aktualisiert, um das Bindungsregister (z. B. LW1000) nach dem Start zu aktualisieren, ohne dass ein Skript abgefragt wird; die Drückung wird durch btn _ manager: update _ all () in on _ run alle 10 ms erkannt.

VisualHMI Rotation Encoder: EC11 Knopf-Drehung und Tastenerkennung (LUA-Initialisierung)Abbildung2

Knopf-Codermuss auf dem physischen Bildschirm getestet werden(virtueller Bildschirm hat keinen echten Eingang). Es wird empfohlen, einen einmaligen Timer beim Einschalten hinzuzufügen, um die Bindungsadresse 0 zu löschen - um zu vermeiden, dass der Encoder-Jitter den ursprünglichen Wert nicht 0 verursacht. Beachten Sie auch: Der Knopf bis zum oberen und unteren Limit istDie Klemmer sind keine Schleifeund die Schleife der Steuerung im Bildschirm ist eine andere Sache.

Aus dem VisualHMI-Entwicklungsdokument von Guangzhou Dacai Technology (hmi-doc.gz-dc.com) Konfigurationssteuerungstutorial "Rotation Encoder", das Urheberrecht im Besitz von Dacai Technology.

Relevante Etiketten
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.