Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: KL6301 EIB - TwinCat programmierung

  1. #1
    Registriert seit
    28.09.2010
    Beiträge
    3
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Unglücklich


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    seit kurzem bin ich Besitzer eine KL6301 EIB-Klemme. Nun werde ich leider aus den Informationen von der Beckhoffseite nicht schlau.

    Mein Ziel ist in naher Zukunt EIB-Tastsensoren einzusetzten. Um die ganze Sache näher kennen zu lernen, habe ich folgenden Testaufbau:
    PC mit Twincat -> BK9000+KL1104+KL2114+KL6301+KL9010 und ein 4-fach Tastsensor von Jung (2094NABS). Mit der Phys.Adresse: 1.1.1 und alle Taster in der GA 0.0.1

    Zu nächst möchte ich ein die Ausgänge der KL2114 mit An- und Ausschalten.
    Leider scheitere ich beim Einbinden der KL6301 in ein PLC-Projekt. Ich weiß z.B. nicht wie ich das Array für den Group_Filter erstellen soll.

    Ich hoffe mir kann jetzt jemand erklären wie ich vorzugehen habe?

    Vielen Dank schon mal!

    Gruß MadMag
    Zitieren Zitieren KL6301 EIB - TwinCat programmierung  

  2. #2
    Registriert seit
    23.06.2008
    Ort
    Friesoythe
    Beiträge
    116
    Danke
    9
    Erhielt 17 Danke für 16 Beiträge

    Standard

    Hallo madmag!

    Ich habe das bei mir wiefolgt in ST gelöst:

    Code:
    PROGRAM MAIN
    VAR
        fb_KL6301_0 : KL6301;    (* EIB functonblock *)
        iStatus: INT;
        bRun_KL6301: BOOL;
        bError_KL6301: BOOL;
    END_VAR
    
    (*KL6301*)
    
    fb_KL6301_0    ( idx:=2, KL6301_IN:=KL6301_IN_0, KL6301_OUT:=KL6301_OUT_0 );
    CASE iStatus OF
    
    0:
    
    
    
    (* EIB Address 0.0.100 [Physikalische Adresse]*)
        fb_KL6301_0.EIB_PHYS_ADDR.Area:=0;
        fb_KL6301_0.EIB_PHYS_ADDR.Line:=0;
        fb_KL6301_0.EIB_PHYS_ADDR.Device:=100;
    
    (* Filter [1] 1/0/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/1/0 LEN 63*)
        fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_ADDR.MAIN:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_ADDR.SUB_MAIN:=1;
        fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_ADDR.NUMBER:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_LEN:=63;
    
    (* Filter [3] 1/2/0 LEN 63*)
        fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_ADDR.MAIN:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_ADDR.SUB_MAIN:=2;
        fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_ADDR.NUMBER:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_LEN:=63;
    
    (* Filter [4] 1/3/0 LEN 63*)
        fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_ADDR.MAIN:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_ADDR.SUB_MAIN:=3;
        fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_ADDR.NUMBER:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_LEN:=63;
    
    (*Start EIB Functionblock*)
        fb_KL6301_0.bActivate :=TRUE;
    
        IF fb_KL6301_0.bReady AND NOT fb_KL6301_0.bError
        THEN
        iStatus:=1;
        END_IF
        IF
        fb_KL6301_0.bError
        THEN
        iStatus:=100;
        END_IF
    
    1:
    
        bRun_KL6301:=TRUE;
        bError_KL6301:=FALSE;
    
    100:
        bError_KL6301:=TRUE;
        bRun_KL6301:=FALSE;
    END_CASE
    Die Physikalische Adresse würde ich in den 0.0.xxx Bereich legen.

    In dem Informationssystem von Beckhoff, gibt es eine Hilfedatei für die KL6301. Dort ist auch ein Beispielprojekt hinterlegt.


    MFG
    Ch. Tiedeken

  3. #3
    madmag ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.09.2010
    Beiträge
    3
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Commander_Titte,

    viele Dank für die Informationen. Ich habe das Beispiel-Projekt gefunden.
    Leider kann ich aber die Variablen immer noch nicht im Systemmanager verknüpfen. Ich habe es nach der Beschreibung im Infosys probiert.
    Es tauchen aber keine Aus und Eingänge zum Verknüpfen auf!
    Irgendwas mach ich da wohl noch falsch

    Gruß madmag

  4. #4
    Registriert seit
    23.06.2008
    Ort
    Friesoythe
    Beiträge
    116
    Danke
    9
    Erhielt 17 Danke für 16 Beiträge

    Standard

    Also,
    ich hab die beiden Variablen (KL6301_IN und KL6301_OUT des FB´s) in den Globalen Variablen mit einer Adresse hinterlegt:

    Code:
    VAR_GLOBAL
        (* EIB terminal KL6301 process data 24 Byte input and 24 Byte output data K-Bus*)
        KL6301_IN_0        AT %IB0: ARRAY[1..24] OF BYTE;
        KL6301_OUT_0     AT %QB0: ARRAY[1..24] OF BYTE;
    END_VAR
    Dann das SPS Programm übersetzten und im System Manager anfügen.

    Schau dir mal die Bilder an, dort kannst du dann sehen wie die Variablen verknüpft werden.
    Ich hab das mal mit deiner Hardware umgesetzt.

    Du musst dann wie im zweiten Bild zu sehen ist, von der KL6301 alle Eingänge markieren, dann mit rechts Klick Multiverknüpfung anwählen. Dann wie im ersten Bild zu sehen ist, wählst du das Eingangs Array KL6301_IN_0 aus und klickst auf OK. Damit hast du dann die Eingänge der Klemme verknüpft. Das selbige machst du dann auch mit den Ausgängen.

    Ich hoffe das hilft dir weiter.

    MFG
    Tiedeken
    Angehängte Grafiken Angehängte Grafiken

  5. Folgender Benutzer sagt Danke zu Commander_Titte für den nützlichen Beitrag:

    madmag (30.09.2010)

  6. #5
    madmag ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.09.2010
    Beiträge
    3
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Commander,

    hab vor leuter Bäume den Wald nicht gesehen.
    Hab doch glatt vergessen die Variablen zu deklarieren.
    Bin mal gespannt ob es jetzt tut.
    Vielen Dank!
    Gruß madmag
    Geändert von madmag (30.09.2010 um 17:22 Uhr)

  7. #6
    Registriert seit
    05.12.2009
    Beiträge
    27
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    ich bin auch gerade dabei die Klemme einzubinden, allerdings bekomme ich immer ein Timeout Fehler. Ich gebe die Adresse vor undd ie wird auch beim aktivieren übernommen, aber dann geht kurz danach das Timeout an. Ich habe allerdings bisher nur das KL6301 Basic Programm aufgerufen, also ich sende oder empfange noch nichts, kann das daran liegen?

    das ist mein Code(ist ein wenig abgeguckt von dem Commander_Titte
    Code:
    *KL6301*)
    
    fb_KL6301_0    ( idx:=2, KL6301_IN:=KL6301_IN_0, KL6301_OUT:=KL6301_OUT_0,  );
    CASE iStatus OF
    
    0:
    
    fehlerm_eib:=fb_KL6301_0.ierrorid;
    
    (* EIB Address 0.0.100 [Physikalische Adresse]*)
        fb_KL6301_0.EIB_PHYS_ADDR.Area:=5;
        fb_KL6301_0.EIB_PHYS_ADDR.Line:=5;
        fb_KL6301_0.EIB_PHYS_ADDR.Device:=5;
    
    (* Filter [1] 1/0/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/1/0 LEN 63*)
        fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_ADDR.MAIN:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_ADDR.SUB_MAIN:=1;
        fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_ADDR.NUMBER:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[2].GROUP_LEN:=63;
    
    (* Filter [3] 1/2/0 LEN 63*)
        fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_ADDR.MAIN:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_ADDR.SUB_MAIN:=2;
        fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_ADDR.NUMBER:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[3].GROUP_LEN:=63;
    
    (* Filter [4] 1/3/0 LEN 63*)
        fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_ADDR.MAIN:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_ADDR.SUB_MAIN:=3;
        fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_ADDR.NUMBER:=0;
        fb_KL6301_0.EIB_GROUP_FILTER[4].GROUP_LEN:=63;
    
    
    (*Start EIB Functionblock*)
        fb_KL6301_0.bActivate :=togglebit;
    
        IF fb_KL6301_0.bReady AND NOT fb_KL6301_0.bError
        THEN
        iStatus:=1;
        END_IF
        IF
        fb_KL6301_0.bError
        THEN
        iStatus:=100;
        END_IF
    
    1:
    
        bRun_KL6301:=TRUE;
        bError_KL6301:=FALSE;
    
    100:
        bError_KL6301:=TRUE;
        bRun_KL6301:=FALSE;
    
    
    
    
    
    
    END_CASE


    Hat vielleich teiner einen Tip für mich?
    Ich habe die Klemme eingefügt und im System manager auch mit der KL6301 Klemme verbunden.

    Gruss Marco

  8. #7
    Registriert seit
    23.06.2008
    Ort
    Friesoythe
    Beiträge
    116
    Danke
    9
    Erhielt 17 Danke für 16 Beiträge

    Standard

    Hallo,
    sind die In und Output Variablen der KL6301 richtig im Systemmanger verknüpft? Würde die Konfiguration im Systemmanger aktiviert?

    MFG
    Christoph

  9. #8
    Registriert seit
    05.12.2009
    Beiträge
    27
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ja ist beides gemacht, teste das aber nochmal.
    ich habe in den globalen variablen folgendes eingetragen

    KL6301_IN_0 AT %IB170: ARRAY[1..24] OF BYTE;
    KL6301_OUT_0 AT %QB170: ARRAY[1..24] OF BYTE;

    dann taucht das im systemmanager auf und ich markiere alle und klicke auf kontinuirlich und verknüpfe das mit der klemme, ich muss aber in auch mit in verknüpfen???
    Oder muss ich in der globalen variablen mit out der klemme verbinden?

  10. #9
    Registriert seit
    05.12.2009
    Beiträge
    27
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hmm jetzt habe ich die zuordnung nochmal neu estellt, und jetzt kommt schonmal ready, lag dann wohl doch an mir.
    Danke schonmal, falls ich noch Fragen hab schreib ich nochmal

    Schönen Abend noch

Ähnliche Themen

  1. Beckhoff - KL6301 - EIB Sensorik - ???
    Von ohm200x im Forum CODESYS und IEC61131
    Antworten: 19
    Letzter Beitrag: 01.08.2013, 22:21
  2. Programmierung TwinCat PLC
    Von dirknico im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 06.09.2010, 10:14
  3. Problem mit KL6301
    Von Encinasola im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 02.02.2010, 16:03
  4. Antworten: 4
    Letzter Beitrag: 03.11.2009, 14:05
  5. Antworten: 15
    Letzter Beitrag: 08.04.2009, 17:19

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •