KNX Bus lesen (KL6301)

Darkghost

Level-1
Beiträge
210
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

leider habe ich in dem Forum nur eher allgemeine Infos zu dem Thema KNX und SPS gefunden.
Ich bin gerade dabei meine ersten Schritte auf diesem Gebiet zu machen.

Dazu habe ich das Beispiel von Beckhoff genutzt (https://infosys.beckhoff.com/index....1/tcplclib_tc2_eib/27021598344078219.html&id=)
Leider gibt es zu dem Beispiel keine Doku aber eine Erklärung der Konfiguration schon. -> https://infosys.beckhoff.com/index....1/tcplclib_tc2_eib/27021598344078219.html&id=

Von der Reihenfolge her muss wohl erst der Filter auf die Gruppenadressen eingestellt werden und dann kann ich die einzelnen Daten vom Bus lesen.

Mein Ziel ist es eigentlich das Projekt so umzuschreiben, dass ich als erstes die Daten von dem KNX ABB Präsenzmelder (EIB Adresse: 1.1.7) vom Bus lesen kann.

Hier würde ich gern mit dem Helligkeitswert (Helligkeiterfasung0) beginnen.


Eigenschaften.PNG

Beckhoff stellt für das Lesen von Daten hierfür entsprechende Funktionen zur Verfügung. (https://infosys.beckhoff.com/index..../54043195716167947.html&id=276423591346395809)

Nur welche muss ich von nutzen, um die Helligkeiterfasung0 auszulesen. In der Doku von dem Präsenzmelder habe ich leider keine Infos bzgl. Länge z.B. gefunden.

Ich würde mich freuen, wenn jemand der sich mit dem Thema auskennt mir evtl. den Einstieg in das Thema etwas unterstützen könnte.

Grüße
 
Das ist mein aktueller Stand:

Main (PRG)

PROGRAM MAIN
VAR
(* CX Controller *)
(* KL6301 *)
(* KL9010 *)
fb_KL6301_0 : KL6301; (* EIB functonblock *)
i: INT; (* CASE *)
EIB_DATA_SEND_0: EIB_SEND_DATA;
fbTimer_0: TON;
END_VAR



fbTimer_0(PT:=t#4s,in:=NOT fbTimer_0.Q);
IF fbTimer_0.Q THEN
ToggleBit:=NOT toggleBit;
END_IF
CASE i OF
0: fb_KL6301_0.EIB_PHYS_ADDR.Area:=1; (* EIB Address 2.3.4 *)
fb_KL6301_0.EIB_PHYS_ADDR.Line:=1;
fb_KL6301_0.EIB_PHYS_ADDR.Device:=5;
(* Filter 1 1/1/0 LEN 63*)
fb_KL6301_0.EIB_GROUP_FILTER[1].GROUP_ADDR.MAIN:=0;
fb_KL6301_0.EIB_GROUP_FILTER[1].GROUP_ADDR.SUB_MAIN:=0;
fb_KL6301_0.EIB_GROUP_FILTER[1].GROUP_ADDR.NUMBER:=0;
fb_KL6301_0.EIB_GROUP_FILTER[1].GROUP_LEN:=63;
(* Filter 2 1/2/0 LEN 63*)
fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_ADDR.MAIN:=1;
fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_ADDR.SUB_MAIN:=2;
fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_ADDR.NUMBER:=0;
fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_LEN:=63;
(* Filter 3 1/4/0 LEN 63*)
fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_ADDR.MAIN:=1;
fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_ADDR.SUB_MAIN:=4;
fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_ADDR.NUMBER:=0;
fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_LEN:=63;

fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_ADDR.MAIN:=3;
fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_ADDR.SUB_MAIN:=1;
fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_ADDR.NUMBER:=0;
fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_LEN:=63;

fb_KL6301_0.bActivate :=TRUE; (*Start EIB Functionblock*)
IF fb_KL6301_0.bReady THEN
IF NOT fb_KL6301_0.bError THEN
i:=1; (* EIB functionblock is now ready to send and receive *)
ELSE
i:=100; (* EIB ERROR*)
END_IF
END_IF
1: ;
100: ;(*ERROR EIB*)
END_CASE
fb_KL6301_0(
idx:=20,
KL6301_IN:=KL6301_IN_0, (* Terminal variable - address IN *)
KL6301_OUT:=KL6301_OUT_0 ); (* Terminal variable - address OUT *)

Main_EIB_REC();
//Switch_with_Lux();
//Main_Send_EIB();


Main_EIB_REC(PRG)
PROGRAM Main_EIB_REC
VAR
EIB_BIT_REC_0: EIB_BIT_REC;
EIB_BIT_REC_1: EIB_BIT_REC;
EIB_REAL_REC_0:EIB_2OCTET_FLOAT_REC;
EIB_REAL_REC_Temp:EIB_2OCTET_FLOAT_REC;
EIB_8Bit:EIB_8BIT_SIGN_REC;
EIB_3Bit:EIB_3BIT_CONTROL_REC;
EIB_3Bit_1:EIB_3BIT_CONTROL_REC;
EIB_2BYTE_UINT:EIB_2OCTET_UNSIGN_REC;
EIB_4UDINT:EIB_4OCTET_SIGN_REC;
EIB_4Float:EIB_4OCTET_FLOAT_REC;

Group_0_0_11: EIB_GROUP_ADDR := (MAIN:=0,SUB_MAIN:=0,NUMBER:=11);

Lux_Value: REAL;
UDINT_VAR: DINT;
EIB_TEMP: REAL;
EIB4Float: REAL;
EIB_BIT_REC_2: EIB_BIT_REC;
AllTypes: EIB_ALL_DATA_TYPES_REC;
Helligkeit_Value: REAL;
EIB_2OCTET_SIGN_REC_0: EIB_2OCTET_SIGN_REC;
Helligkeit_Value2: INT;
Helligkeit_Value3: UINT;
EIB_2OCTET_UNSIGN_REC_0: EIB_2OCTET_UNSIGN_REC;
EIB_Data_Len_V: USINT;
EIB_Data_rec: ARRAY [1..14] OF BYTE;
DataRec: BOOL;
END_VAR


EIB_All.PNG
Var_Werte.PNG
2Byte.PNG

Daten auf dem Bus:
ETS.jpg
 
Zuletzt bearbeitet:
Zurück
Oben