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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Beckhoff KL3202 Register

  1. #1
    Registriert seit
    04.10.2004
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich hab hier so eine niedliche kleine Beckhoff BC9000 liegen (die ist wirklich winzig), mit ein paar digitalen I/O´s und einem analogen KL3202 Modul zum Anschluss von PT-x Sensoren. Hab da nun einen PT-100 Dreileiter (eigentlich sinds ja vier, aber wurscht) angeschlossen und hatte vor mit einem SPS Programm die einfach mal Daten zu sammeln.

    Vor hatte ich das mit der Funktion ReadWriteTerminalReg in der TcPLCUtilities Bibliothek. Funktiniert nicht, und Beckhoff verkündete mir, dass diese Bibliothek mit Version 2.9 von TwinCAT auch nicht mehr funzt.

    Nun meine Frage: Wie komme ich mit einem SPS Programm an die Register des KL3202 Moduls ran. Kann mir nicht vorstellen, dass das sonderlich schwer ist, aber ich steh voll auf der Leitung. Wenn jemand nen Tip hat wäre ich dankbar dafür.

    cu
    rgeber
    Zitieren Zitieren Beckhoff KL3202 Register  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Die folgende Möglichkeit ist ziemlich umständlich und fehlerträchtig, bis ich es zum Laufen bekommen habe, aber ich benutze es um eine Thermoklemme auf Platin-Rhodium umzukonfigurieren und zwar bei jedem Neustart. Der Sinn ist, daß eine Elektriker eine fabrikneue Klemme einbauen kann, ohne sich um die Konfiguration zu kümmern:

    Die Klemme muß "komplex gemappt" sein, so daß das Status/Kommandoregister erreichbar ist.

    In einer Schrittkette wird:
    1. 16#A0 in das Kommandorgister (%QB0) geschrieben
    %IB0 zurückgelesen. Wenn es gleich 16#A0 ist, weiter mit Schritt 2
    2. 16#1235 in das Datenregister (%QW2) geschrieben (Inhalt für das Klemmenregister), dann 223 in Kommandorgister (%QB0) geschrieben. Die 223 enthält die Adresse des Klemmenregisters und das Befehlsbit "Klemmenregister schreiben".
    Durch diesen Schritt wird das Paßwort gesetzt, um die Konfiguration ändern zu können.
    3. 16#9009 in das Datenregister (%QW2) geschrieben (Inhalt für das Klemmenregister), dann 224 in Kommandorgister (%QB0) geschrieben. Die 224 enthält die Adresse des Klemmenregisters und das Befehlsbit "Klemmenregister schreiben".
    Durch diesen Schritt wird das zu konfigurierende Register auf 16#9006 (Platin-Rhodium) gesetzt.
    4. 0 in das Kommandorgister (%QB0) geschrieben. Dadurch gibt das Datenregister wieder den Meßwert aus.

    Pro Zyklus wird höchstens ein Wert geschrieben. Durch Rücklesen wird sichergestellt, daß der Wert auch im Register steht, bevor es zum nächsten Schritt geht. Es scheint so, daß die interne Kommunikation wesentlich langsamer als die Zykluszeit ist.

  3. #3
    Anonymous Gast

    Standard

    Hallo
    Genau das selbe wollte ich auch machen. Nur es funktioniert irgendwie nicht, muß ja in ein bestimmtes register was reinschreiben. wenn ich dein Programm ausführe, dann hängt sich mein Modul auf und alle register sind auf null.
    Hast du vielleicht eine Lösung für mich? Ich wäre dir sehr dankbar
    Gruß Serge

  4. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von Anonymous
    Hallo
    Genau das selbe wollte ich auch machen. Nur es funktioniert irgendwie nicht, muß ja in ein bestimmtes register was reinschreiben. wenn ich dein Programm ausführe, dann hängt sich mein Modul auf und alle register sind auf null.
    Hast du vielleicht eine Lösung für mich? Ich wäre dir sehr dankbar
    Gruß Serge
    Na ja, ich hatte die private Nachricht so verstanden, daß du von hier ein fertiges Programm runtergeladen hast. Mein Beitrag war ja eher ein "Kochrezept".
    Wichtig ist, daß du nicht hintereinander weg in die Register schreibst, sondern immer erst, wenn du das Ergebnis des vorigen Schritts durch Rücklesen bestätigt bekommst. Natürlich müssen die Adressen angepaßt werden.
    Ich hatte eine Klemme 3311 (1 Thermoeingang) verwendet. Andere Klemmmen mögen wesentlich andere Registerbelegungen bzw. ein anderes Default-Passwort haben.
    Ich muß mal schauen, wo ich es habe, dann poste ich das Programm.

  5. #5
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Hier mal das Programm aus TwinCat mit Copy&Paste kopiert
    Code:
     PROGRAM MAIN
    VAR
    
     
     reg1: WORD;
     st1: WORD;
     reg2: WORD;
     st2: WORD;
     Anltimer: TON;
     schritt: WORD;
     regnachher: WORD;
     regnachher2: WORD;
     avr: REAL;
     erg: REAL;
    END_VAR
    
    
    
    
    
    
     LD  %IW0
     ST  reg1
    
     LD  %IW2
     ST  st1
     
     LD  avr
     MUL  0.9
     ST  avr
     LD  %IW2
     MUL  0.1
     ADD  avr
     ST  avr
     MUL  0.1
     ST  erg
    
     LD  Anltimer.Q
     (*
     JMPC NICHT
    *)
     LD  st1
     ADD  1
     ST  st1
     LD  TRUE
     ST  Anltimer.IN
     LD  T#2s
     ST  Anltimer.pt
    NICHT:
     LD  Anltimer.Q
     JMPC NICHTNULL
    
     LD  0
     ST  schritt
    NICHTNULL:
    
     CAL  anltimer
     LD  schritt
     EQ  0
     JMPCN ns0
     LD  1
     ST  schritt
     JMP  ende
    ns0:
     LD  schritt
     EQ  1
     JMPCN ns1
     LD  160
     ST  %QB0
     LD  %IB0
     EQ  160
     JMPCN ns1
     
     LD  16#1235
     ST  %QW2
     LD  223
     ST  %QB0
     LD  %IW2
     ST  regnachher
     LD  2
     ST  schritt
     JMP  ende
    ns1:
     LD  schritt
     EQ  2
     JMPCN ns2
     
     LD  224
     ST  %QB0
     LD  16#9006
     ST  %QW2
     LD  %IW2
     ST  regnachher2
     LD  3
     ST  schritt
     JMP  ende
    ns2:
     LD  schritt
     EQ  3
     JMPCN ns3
    
     LD  0
     ST  %QB0
     LD  %QB0
     EQ  0
     JMPCN ns3
     
     LD  16#F006
     ST  %QW2
     LD  4
     ST  schritt
    ns3:
    ende:
    [/code]

  6. #6
    Anonymous Gast

    Standard

    Hi.
    danke fü deine antwort und fürs programm
    und wie komme ich an die daten dran. habe nämlich eine KL3202, will diese auf PT100 umprogrammieren.

    Gruß Serge
    Zitieren Zitieren danke  

  7. #7
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von serge
    Hi.
    und wie komme ich an die daten dran. habe nämlich eine KL3202, will diese auf PT100 umprogrammieren.
    Welche Daten? Datenblääter der Klemmen gibt's bei BeCKHOFF zum runterladen.
    Zitieren Zitieren Re: danke  

  8. #8
    Anonymous Gast

    Standard

    kannst du mir vielleicht auch sagen was bei mir am programm nicht stimmt.
    PROGRAM INITIALISIERUNG
    VAR CONSTANT
    KL3202_0: WORD := 0; (* STATUS 0 => status-Maschine INIT KL3202 *)
    KL3202_1: WORD := 1; (* STATUS 1 => status-Maschine INIT KL3202 *)
    KL3202_2: WORD := 2; (* STATUS 2 => status-Maschine INIT KL3202 *)
    KL3202_3: WORD := 3; (* STATUS 3 => status-Maschine INIT KL3202 *)

    KL1501_0: WORD := 4; (* STATUS 0 => status-Maschine INIT KL1501 *)
    KL1501_1: WORD := 5; (* STATUS 1 => status-Maschine INIT KL1501 *)
    KL1501_2: WORD := 6; (* STATUS 2 => status-Maschine INIT KL1501 *)
    KL1501_3: WORD := 7; (* STATUS 3 => status-Maschine INIT KL1501 *)
    END_VAR
    VAR
    STAT_KL3202_1: WORD;
    STAT_KL3202_2: WORD;
    STAT_KL1501_1: WORD;
    STAT_KL1501_2: WORD;
    STAT_KL1501_3: WORD;
    END_VAR


    CASE STAT_KL3202_1 OF (* Temperatutsmessung 1*)
    (******************************************************************************* ********************)
    KL3202_0:
    TMPFUEHL1_CTRL:=16#A0;
    STAT_KL3202_1:=KL3202_1;
    (******************************************************************************* ********************)
    KL3202_1:
    IF TMPFUEHL1_CTRL=16#A0 THEN
    STAT_KL3202_1:=KL3202_2;
    END_IF
    (******************************************************************************* ********************)
    KL3202_2:
    TMPFUEHL1_OUT:=16#1235;
    TMPFUEHL1_CTRL:=223;
    STAT_KL3202_1:=KL3202_3;
    (******************************************************************************* ********************)
    KL3202_3:
    TMPFUEHL1_OUT:=16#0106;
    TMPFUEHL1_CTRL:=224;
    (******************************************************************************* ********************)

    END_CASE;

    CASE STAT_KL3202_2 OF (* Temperatutsmessung 2 *)
    (******************************************************************************* ********************)
    KL3202_0:
    TMPFUEHL2_CTRL:=16#A0;
    STAT_KL3202_1:=KL3202_1;
    (******************************************************************************* ********************)
    KL3202_1:
    IF TMPFUEHL2_CTRL=16#A0 THEN
    STAT_KL3202_1:=KL3202_2;
    END_IF
    (******************************************************************************* ********************)
    KL3202_2:
    TMPFUEHL2_OUT:=16#1235;
    TMPFUEHL2_CTRL:=223;
    STAT_KL3202_1:=KL3202_3;
    (******************************************************************************* ********************)
    KL3202_3:
    TMPFUEHL2_OUT:=16#0106;
    TMPFUEHL2_CTRL:=224;
    (******************************************************************************* ********************)

    END_CASE;

    CASE STAT_KL1501_1 OF (* Mengenzähler Prozesspumpe *)
    (******************************************************************************* ********************)
    KL1501_0:
    MENGPRZPMP_CTR:=16#A0;
    STAT_KL1501_1:=KL1501_1;
    (******************************************************************************* ********************)
    KL1501_1:
    IF MENGPRZPMP_CTR=16#A0 THEN
    STAT_KL1501_1:=KL1501_2;
    END_IF
    (******************************************************************************* ********************)
    KL1501_2:
    MENGPRZPMP_OUT:=16#1235;
    MENGPRZPMP_CTR:=223;
    STAT_KL1501_1:=KL1501_3;
    (******************************************************************************* ********************)
    KL1501_3:
    MENGPRZPMP_OUT:=16#0100;
    MENGPRZPMP_CTR:=224;
    (******************************************************************************* ********************)
    END_CASE;

    CASE STAT_KL1501_2 OF (* Mengenzähler Filtersystem *)
    (******************************************************************************* ********************)
    KL1501_0:
    MENGFLTSYS_CTR:=16#A0;
    STAT_KL1501_1:=KL1501_1;
    (******************************************************************************* ********************)
    KL1501_1:
    IF MENGFLTSYS_CTR=16#A0 THEN
    STAT_KL1501_1:=KL1501_2;
    END_IF
    (******************************************************************************* ********************)
    KL1501_2:
    MENGFLTSYS_OUT:=16#1235;
    MENGFLTSYS_CTR:=223;
    STAT_KL1501_1:=KL1501_3;
    (******************************************************************************* ********************)
    KL1501_3:
    MENGFLTSYS_OUT:=16#0100;
    MENGFLTSYS_CTR:=224;
    (******************************************************************************* ********************)
    END_CASE;

    CASE STAT_KL1501_3 OF (* Mengenzähler Entsorgungsmenge *)
    (******************************************************************************* ********************)
    KL1501_0:
    ENTSOGMENG_CTR:=16#A0;
    STAT_KL1501_1:=KL1501_1;
    (******************************************************************************* ********************)
    KL1501_1:
    IF ENTSOGMENG_CTR=16#A0 THEN
    STAT_KL1501_1:=KL1501_2;
    END_IF
    (******************************************************************************* ********************)
    KL1501_2:
    ENTSOGMENG_OUT:=16#1235;
    ENTSOGMENG_CTR:=223;
    STAT_KL1501_1:=KL1501_3;
    (******************************************************************************* ********************)
    KL1501_3:
    ENTSOGMENG_OUT:=16#0100;
    ENTSOGMENG_CTR:=224;
    (******************************************************************************* ********************)
    END_CASE;


    wäre dir sehr dankbar. habe dieses nach deiner anleitung geschrieben
    Zitieren Zitieren programm  

  9. #9
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Sorry, ich glaube ich bin ziemlich hilfsbereit. Aber für mich ist das ein "altes Programm", ich habe keinen BC9000 und keine solche Klemme auf dem Tisch liegen und du schreibst in einer anderen Sprache, so daß ich mich erst reindenken muß. Das ist dauert mir ehrlich gesagt zu lange.

  10. #10
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ich danke dir trotzdem, probiere mal dein Programm aus. vielleicht kann ich das so umbauen, dass es auf meiner klemme funktioniert.
    gruß Serge
    Zitieren Zitieren danke  

Ähnliche Themen

  1. DB-Register 2 in FC verwenden
    Von ErwinLSE im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 01.04.2011, 00:03
  2. DB Register
    Von Airpower im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.02.2010, 23:17
  3. Beckhoff- dig.Eingang negieren per Register
    Von cas im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 30.01.2010, 07:44
  4. Beckhoff Analog KL3202 an Simatic CPU315
    Von frankuc45 im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 06.11.2006, 16:43
  5. Beckhoff AI KL3202 Para über BK3150
    Von HaSchi im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 22.08.2006, 08:06

Lesezeichen

Berechtigungen

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