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

Ergebnis 1 bis 7 von 7

Thema: Phoenix Contact Motorsteuerung

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich arbeite an einem Projekt mit der SPS ILC150ETH von Phoenix Contact und komme mit der ansteuerung eines Motors nicht weiter.

    Vorhaben:
    Es soll über einen Schalter E1 ein Motor über den anlogen Ausgang angesteuert werden. Dabei soll der Motor kontinuierlich anlaufen und beim ausschalten von E1 auch wieder auslaufen.
    Dabei soll aber darauf geachtet werden das der Motor auch während des Einschaltvorgangs wieder abgeschaltet werden kann und kontinuierlich an Spannung / Drehzahl verringert.

    E1=0 => AQ=0
    E1=1 => AQ= soll nun innerhalb Zeit (t) bis auf Wert(x) ansteigen z.B. (X= FFFF in Word)
    wenn dann
    E1=0 => AQ= soll nun wieder bis auf den Wert0 herunterzählen


    Das große Problem ist dabei das wenn AQ nicht den Maximal Wert (x) erreicht und vorher schon wieder abgeschaltet wird!!!!!! Es sollte dann ab dem erreichten Wert heruntergezählt werden und nicht ab dem Maximal Wert!!!!!


    Es wäre super wenn mir jemand helfen könnte! Wenn dieses Problem in FBS bewältigbar ist wäre dies am besten! Antworten in anderen Sprachen würden mir aber auch schon sehr helfen!
    Vielen Dank!!!

    Geändert von fabwil (08.04.2009 um 10:46 Uhr)
    Zitieren Zitieren Phoenix Contact Motorsteuerung  

  2. #2
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Zitat Zitat von fabwil Beitrag anzeigen
    ...
    ich arbeite an einem Projekt mit der SPS ILC150ETH von Phoenix Contact...
    Sag mal Bist Du ein Klassenkamerad von cthome? Der hat heute auch schon eine Aufgabe (die nach Hausaufgabe roch) zu dieser Steuerung hier ins Forum gestellt.

    Wenn sich meine Vermutung bestätigt haben wir wohl bald euere ganze Klasse hier im Forum ;o)

    Ich kenn die Steuerung ja nicht aber da die ja IEC-kompatibel sein soll, sollte folgendes auch da funktionieren.

    Wenn die Rampenzeit nicht beliebig ist sollte man die aktuelle Zykluszeit des Tasks ermitteln (wie das geht? RTFM!) Wenn die Rampenzeit nur Phi*Daumen sein darf kannst Du im Aufruf des FBs für CycleTime einfach einen festen Wert angeben.

    Variablen Deklaration:
    Code:
    FUNCTION_BLOCK FB_RAMP
    VAR_INPUT
      IN          : BOOL;
      CycleTime   : TIME;
      PresetTime  : TIME;
      MaxValue    : REAL;
    END_VAR
    VAR_OUTPUT
      OUT         : REAL;
    END_VAR
    VAR
      RampTime    : TIME;
    END_VAR
    Code:
    IF IN THEN
      IF RampTime + CycleTime < PresetTime THEN
        RampTime := RampTime + CycleTime;
      ELSE
        RampTime := PresetTime;
      END_IF;
    ELSE
      IF RampTime > CycleTime THEN
        RampTime := RampTime - CycleTime;
      ELSE
        RampTime := t#0ms;
      END_IF;
    END_IF;
    
    OUT := TIME_TO_REAL(RampTime) / TIME_TO_REAL(PresetTime) * MaxValue;
    Das Bild zeigt das Ergebnis der Funktion.

    PS: Klar kann man sowas auch in FBS Programmieren aber ich finde ST hierfür besser.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von zotos (08.04.2009 um 18:47 Uhr) Grund: Letzte Zeile im Code nicht rein kopiert ;o(
    If you open your Mind too much, your Brain will fall out.

  3. #3
    fabwil ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.04.2009
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Daumen hoch

    Hallo Zotos,

    Erst mal vielen Dank für die mühevolle und gute Antwort!!!!

    ja ich kenne den CThome Wir arbeiten gemeinsam an einem Projekt aber in unterschiedliche Richtungen!


    Aber ich habe weiterhin noch ein Problem und zwar bekomme ich den Quelltext nicht so ausgerichtet das die Variablen MaxValue und OUT vom Typ WORD sein können!
    Ich habe nun mehrere Stunden herum probiert, bin aber kläglich gescheitert!
    Könntes du mir dabei nochmals helfen?


    Achso, noch eine Frage ist diese Steuerung auch in FBS realisierbar mit der SPS von Phoenix? Ich würde dies ganz gerne in FBS schreiben, bin dabei aber immer wieder, auch mit unterschiedlichen Ansätzen auf das Problem gestoßen, dass beim abschalten des Motors immer der Maximalwert übernommen wurde und von diesem aus heruntergezählt!

    VIELEN DANK!!!!!

  4. #4
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Wenn Du die OUT Variable im WORD Format haben willst sind das nur zwei weitere Typecast.

    Code:
    FUNCTION_BLOCK FB_RAMP
    VAR_INPUT
      IN          : BOOL;
      CycleTime   : TIME;
      PresetTime  : TIME;
      MaxValue    : WORD;
    END_VAR
    VAR_OUTPUT
      OUT         : WORD;
    END_VAR
    VAR
      RampTime    : TIME;
    END_VAR
    Code:
    IF IN THEN
      IF RampTime + CycleTime < PresetTime THEN
        RampTime := RampTime + CycleTime;
      ELSE
        RampTime := PresetTime;
      END_IF;
    ELSE
      IF RampTime > CycleTime THEN
        RampTime := RampTime - CycleTime;
      ELSE
        RampTime := t#0ms;
      END_IF;
    END_IF;
    
    OUT := REAL_TO_WORD(TIME_TO_REAL(RampTime) / TIME_TO_REAL(PresetTime) * WORD_TO_REAL(MaxValue));
    If you open your Mind too much, your Brain will fall out.

  5. #5
    fabwil ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.04.2009
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    genau das habe ich auch schon versucht und habe glaube ich jetzt herausgefunden warum dies nicht funktioniert:

    die funktion TIME_TO_REAL gibt es bei Phoenix nicht!

    Daher habe ich TIME_TO_DINT und dann von DINT_TO_WORD gemacht und das funktioniert nicht!!!
    Wahrscheinlich ist der Fehler, das DINT keine komma Zahlen aufnehmen kann???!

    Vielen Dank für die schnelle Antwort!!!!!!

  6. #6
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Für das Programm habe ich CoDeSys verwendet. Da sich Phoenix angeblich an die IEC61131-3 hält hatte ich erwartet das so ziemlich alle Konvertierungen (Typecast) vorhanden sind die man so gebrauchen kann.

    Am einfachsten kommst Du aus der Situation wohl wenn Du alle Time durch DINT ersetzt und da wo ich z.B. T#0ms stehen habe einfach eine 0 reinschreibst. Die ganzen Typcast musst Du dann auch noch anpacken. Bitte versuch es erstmal selbst zu lösen. Um meine Zeitrechnerrei zu rechtfertigen möchte ich anmerken das ich davon ausgegangen bin das man emen von Null aus Max eine Zeit angeben will.

    Jetzt habe ich mir extra die Mühe gemacht und das ganze in FBS gemalt und erfahre nun das dies bei Phoenix nicht funktonieren wird ;o(

    Am besten versuchst Du das folgende Bild auf Phoenix umszusetzten und dabei die Typanpassungen vorzunehmen.
    Angehängte Grafiken Angehängte Grafiken
    If you open your Mind too much, your Brain will fall out.

  7. #7
    Registriert seit
    29.07.2008
    Beiträge
    143
    Danke
    4
    Erhielt 27 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    bei PCWORX gibt es die funktion time_to_dint, aber eine Rampenfunktion gibt es auch bei OSCAT und die wiederum gibt es auch für PCWORX.
    Allerdings ebenfalls in ST geschrieben.

    ine Rampe kann man ebenfalls in Stufe realsieren, einfach in jedem Zyklus eine den Ausgangswert um x addieren. Um bei Abschalten den Ausgangswert umx subtrahieren.

Ähnliche Themen

  1. PC Worx / Phoenix Contact / Mac OS X
    Von delta.pi im Forum PHOENIX CONTACT
    Antworten: 1
    Letzter Beitrag: 08.06.2011, 16:09
  2. Phoenix Contact ILC 350 PN
    Von snowbda im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 17.04.2011, 22:32
  3. Phoenix Contact ILC 170 ETH 2TX
    Von plangner im Forum PHOENIX CONTACT
    Antworten: 2
    Letzter Beitrag: 24.03.2011, 10:55
  4. Phoenix Contact ILC 130
    Von Haytech im Forum PHOENIX CONTACT
    Antworten: 2
    Letzter Beitrag: 22.02.2011, 16:14
  5. Feldmultiplexer Phoenix Contact
    Von wm-webservice im Forum PHOENIX CONTACT
    Antworten: 1
    Letzter Beitrag: 08.04.2007, 21:01

Stichworte

Lesezeichen

Berechtigungen

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