Enocean: Eltako Minihandsender FMH1W-sz auswerten

dast

Level-1
Beiträge
146
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin gerade dabei den Eltako Minihandsender FMH1W-sz (https://www.enocean-alliance.org/de/produkte/eltako_waterproof_handheld_fmh1w-sz/) an meiner WAGO 750-881 anzubinden.
Ich möchte eigentlich nur den Tastendruck auf den Handsender auswerten ...

Die ID des Minihandsender konnte ich schon mittels dem FB FbShow_ID_By_Click ermitteln.
Jedoch fehlt mir irgendwie in der Enocean_05.lib ein FB zum Auswerten eines "einzelnen" Clicks?!

Ich hab jetzt mal einfach den FB FbEnocean_1BYTE_Receive verwendet, der mir auch bei einem Click auf den Handsender eine 16 am Ausgang bDataByte liefert.

Jedoch scheint mir das jetzt nicht wirklich die sauberste Lösung zu sein!
Hat hier vielleicht jemand eine bessere Lösung?
Bzw. was soll ich in dem Fall verwenden? Die anderen FB für Taster sind für 2 oder mehr Kanäle gemacht ...

@WagoSupport: Irgendwie wäre es oft recht hilfreich, wenn man die Source zu den FB aus den Gebäude-Libs (wie z.B. der Enocean_05.lib) einsehen könnte!
 
Hallo

Wago bietet dir einige, auf bestehende Produkte, vorgefertigte „Funktionsbausteine“.
Das Produktportfolio der Hersteller, welche EnOcean Produkte anbieten, wächst von Jahr zu Jahr.
Daher bitten wir um Verständnis, dass wir nicht zu jedem Hersteller und Produkttypen einen separaten Funktionsbaustein erstellen können.

Die Wago Bibliothek „EnOcean_05.lib“ stellt dir unter dem Kapitel Rohdaten, den von dir bereits angesprochenen Funktionsbaustein, „FbEnOcean_1Byte_Recieve“ zur Verfügung.
Dieser Baustein gibt dir die Nutzdaten aus dem „Databyte 3“ eines „1BS“- oder „RPS“ Telegramm aus.

Leider liegen uns keine genaueren Produktinformationen vor. Daher könnte man nur die Informationen direkt von „Eltako“ anfordern.

Oder du wertest das Schaltverhalten anhand der Informationen aus dem „Databyte 3“, im Schaltmoment, direkt aus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Wago bietet dir einige, auf bestehende Produkte, vorgefertigte „Funktionsbausteine“.
Das Produktportfolio der Hersteller, welche EnOcean Produkte anbieten, wächst von Jahr zu Jahr.
Daher bitten wir um Verständnis, dass wir nicht zu jedem Hersteller und Produkttypen einen separaten Funktionsbaustein erstellen können.

Die Wago Bibliothek „EnOcean_05.lib“ stellt dir unter dem Kapitel Rohdaten, den von dir bereits angesprochenen Funktionsbaustein, „FbEnOcean_1Byte_Recieve“ zur Verfügung.
Dieser Baustein gibt dir die Nutzdaten aus dem „Databyte 3“ eines „1BS“- oder „RPS“ Telegramm aus.

Leider liegen uns keine genaueren Produktinformationen vor. Daher könnte man nur die Informationen direkt von „Eltako“ anfordern.

Oder du wertest das Schaltverhalten anhand der Informationen aus dem „Databyte 3“, im Schaltmoment, direkt aus.

Vielen Dank! Ich habe mir inzwischen auch schon die Struktur typEnocean etwas näher angesehen, das vom FB FbEnoceanReceive zurückgegeben wird.
Hier sehe ich z.B. im Schaltmoment im Databyte 3 den Wert 16 (0x10), was vermutlich "Energie Bow Pressed" bedeutet.
Was ich weiter sehen konnte ist, dass der Member .NU von FALSE auf TRUE wechselt und das .ToggelBit von TRUE auf FALSE.
Was das .NU bedeutet habe ich aus der Enocean Spezifikation entnommen.

Jedoch fehlt mir noch die Information was das .ToggelBit bedeutet!

Bzw. zu: "Oder du wertest das Schaltverhalten anhand der Informationen aus dem „Databyte 3“, im Schaltmoment, direkt aus."
Wann ist der Schaltmoment? Ist dazu vielleicht das .ToggelBit?

EDIT: Entspricht das .ToggelBit vielleicht dem bReceive in der Enocean-Lib von Beckhoff (http://infosys.beckhoff.com/content...l/tcplclibenocean_fb_rec_generic.htm?id=25377)?
...
bReceive: Bei empfangenem EnOcean Telegramm wird dieser Wert für einen Zyklus auf FALSE gesetzt.
 
Zuletzt bearbeitet:
...
Jedoch fehlt mir noch die Information was das .ToggelBit bedeutet!

Bzw. zu: "Oder du wertest das Schaltverhalten anhand der Informationen aus dem „Databyte 3“, im Schaltmoment, direkt aus."
Wann ist der Schaltmoment? Ist dazu vielleicht das .ToggelBit?

EDIT: Entspricht das .ToggelBit vielleicht dem bReceive in der Enocean-Lib von Beckhoff (http://infosys.beckhoff.com/content...l/tcplclibenocean_fb_rec_generic.htm?id=25377)?
...
bReceive: Bei empfangenem EnOcean Telegramm wird dieser Wert für einen Zyklus auf FALSE gesetzt.

Jetzt hab ichs selber herausgefunden ...
Das .ToggelBit ist initial auf FALSE gesetzt und wechselt bei jedem empfangenem Enoceam-Telegramm seinen Zustand. Heißt also, der Schaltmoment entspricht genau einem Zustandswechsel von .ToggelBit.

Ist auch in den Kommentaren der typEnocean Struktur in der Enocean_05.lib zu finden:

STRUCT
MSG_Type : BYTE:=0; (* ORG: 5-> RPS; 6->1BS; 7-> 4BS; 8-> HRC *)
ID : DWORD:=0; (* Transmitter ID *)
Data_Byte_0 : BYTE:=0; (* DATA_BYTE0*)
Data_Byte_1 : BYTE:=0; (* DATA_BYTE1*)
Data_Byte_2 : BYTE:=0; (* DATA_BYTE2*)
Data_Byte_3 : BYTE:=0; (* DATA_BYTE3*)
T21 : BOOL:=FALSE; (* PTM switch module of type 1 / 2 *)
NU : BOOL:=FALSE; (* U-message / N-message *)
RP_Counter : BYTE:=0; (* Repeater level *)
ToggelBit : BOOL:=FALSE; (* Flag for telegram updates*)
Status : BYTE:=0; (* Status byte*)
xBusy : BOOL:=FALSE; (* Sendeauftrag aktiv*)
xStartSend : BOOL:=FALSE; (* Flag for send activation*)
bAddress : BYTE:=0; (* Slave Adress for multiple receiver *)
END_STRUCT
 
So, hab das ganze jetzt mal in einen FB gepackt:

Code:
FUNCTION_BLOCK FbEltakoFMH1Wsz

VAR_INPUT
    typEnocean : typEnocean;                (* Input data from FbEnoceanReceive *)
    dwID : DWORD := 0;                        (* ID of the switch *)
END_VAR

VAR_OUTPUT
    xButton : BOOL := FALSE;
END_VAR

(* Internal use only *)
VAR
    xOldMsgToggelBit : BOOL := FALSE;        (* save current telegram update flag *)
END_VAR

xButton := FALSE;

IF (typEnocean.ToggelBit <> xOldMsgToggelBit) THEN

    (* ORG = 5 -> RPS, T21 = 1 -> PTM switch module of type 2 *)
    IF ((typEnocean.ID = dwID) AND (typEnocean.MSG_Type = 5) AND typEnocean.T21) THEN

        (* N-message and Energie Bow pressed (Data_Byte_3 = 0x10) *)
        IF (typEnocean.NU AND (typEnocean.Data_Byte_3 = 16#10)) THEN
            xButton := TRUE;
        END_IF;

    END_IF;

    xOldMsgToggelBit := typEnocean.ToggelBit;
END_IF;

Empfängt der FB ein Enocean-Telegramm mit der entsprechenden ID, wird nachgesehn,
ob der "Energie Bow" gedrückt wurde. Falls ja, wird für einen Zyklus am Ausgang xButton
ein Impuls erzeugt, welcher dann weiter ausgewertet werden kann.

Der Handsender sendet sowohl ein Telegramm beim Drücken, als auch beim Loslassen.
Zuerst wollte ich diesen "gedrückt gehalten" Zustand auf den Ausgang xButton abbilden.
Also solange der "Energie Bow" gedrückt, solange ist xButton auf TRUE.
Kleines Problem hierbei ist, dass es sein kann dass man beim Loslassen des Handsenders
außerhalb des Empfangsbereiches kommt und dieses Telegramm dann verloren geht.
D.h. man bekommt das "Loslassen" Kommando nicht mehr mit :-(.

Da ich aber eh nur auf einen Klick reagieren muss, hab ich das eben wie oben beschrieben
gemacht ...
 
Zuletzt bearbeitet:
Zurück
Oben