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

Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 35

Thema: IEC Timer in Multiinstanz läuft nicht

  1. #21
    Registriert seit
    15.12.2007
    Beiträge
    720
    Danke
    84
    Erhielt 106 Danke für 95 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von matziane Beitrag anzeigen
    Versuchen wirs mal mit den AWL Quellen, bin gespannt. Sollten im Zip File im Anhang sein.

    Und wie schon ganz am Anfang gesagt, das mit dem Timer funktioniert ja, nur nicht in der Steuerung.
    Im PLCSIM funktioniert das alles tadellos.
    Also gerade was die IEC-Timer angeht habe ich in einem Projekt vor ca. 5 Jahren mal große Schwierigkeiten mit PLCSIM gehabt.
    Da bin ich mit der T#0ms Initialisierungs-Geschichte komplett auf die Fresse gefallen, weil nämlich in PLCSIM ein IEC-Timer mit T#0ms direkt beim Aufruf mit TRUE durchgeschaltet hat und in einer realen Steuerung nicht.
    War halt blöd, wenn in meinem Fall ein Bediener eine Schrittzeit von 0 Sekunden in den Parametern eingetragen hat und damit eine Schrittkette quasi verriegelt hat.
    Dadurch durfte ich dann auch das Programm anpassen.

    Also verlasse dich nicht zu sehr auf PLCSIM.

  2. #22
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    So.....
    Hab das ganze jetzt mal an der Steuerung getestet.
    Das ganze mit dem T#0ms hat gar nichts gebracht.
    Im aufrufenden Baustein müssen die Instanzen eventuell initalisiert werden.Also dort mal mit Pt=0ms einmal initialisieren?Komisch.
    So stehts in der Anleitung.
    Auch dieses mit dem wegnehmen der Festen 1 vorm Timer hat nichts geändert.

    Hab dieses genze IEC Timerkram jetzt rausgenommen und es über die TIM_TCK (SFC64) Funktion gelöst.
    Nur der Zeitwert macht mich etwas stutzig, der Wert bei Zeit_aktuell ist weit größer als Zeit_Ziel ist, funktioniert aber trotzdem. Die Funktion TIM_TCK gibt ja das Datum auch mit aus oder ?!?!
    Hab jetzt nicht geschaut, vermute aber mal dass dem so ist....oder ?!?!

    Angehängte Grafiken Angehängte Grafiken
    Geändert von matziane (24.07.2015 um 12:24 Uhr)

  3. #23
    Registriert seit
    06.10.2003
    Beiträge
    3.445
    Danke
    453
    Erhielt 509 Danke für 411 Beiträge

    Standard

    So einfach ist es mit der SFC64 nicht. Sie liest die Systemzeit aus, siehe <F1>. Und dann müsstest du unbedingt auch noch den Überlauf der Systemzeit beachten!
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  4. #24
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.416 Danke für 2.012 Beiträge

    Standard

    Was willst du eigentlich überhaupt erreichen ?
    Möchtest du ein Array_of_Timer bauen ?

  5. #25
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Rechnerisch wäre das ca. alle 25 Tage....
    Gut ist nun nicht so oft aber außer acht lassen sollte ich es nicht, da hast du vollkommen recht.
    Habe keinen Bock, dass plötzlich jemand auf der Matte steht, weil es zu nem Überlauf gekommen ist. Da Programmier ich da lieber noch etwas Code rein

    Schon eine Idee, wie ?!?!

  6. #26
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Was willst du eigentlich überhaupt erreichen ?
    Möchtest du ein Array_of_Timer bauen ?
    In dem ganzen geht es darum, dass ein Ofen mit 45 Strahlern zu steuern ist. So weit nicht schlimm, Problem ist nur die entstehende Last wenn alle 45 Strahler angehen.
    Da fliegt da schon mal die Sicherung.
    Und um dies zu verhindern habe ich etwas eingebaut in dem ich festlege wieviel Strahler zeitgleich angehen dürfen und wie lang gewartet werden soll bis die nächsten angehen dürfen.
    Also sperre ich ein Freigabebit, zähle parrallel je nach dem ob zu oder abgeschaltet wird einen Wert hoch und runter und gebe frei bzw. sperre die restlichen Strahler.

    Hoffe das ganze war verständlich.

  7. #27
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.642
    Danke
    787
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Zitat Zitat von matziane Beitrag anzeigen
    Auch dieses mit dem wegnehmen der Festen 1 vorm Timer hat nichts geändert.
    Da wird sich auch nix ändern Festen 1 führt schon immer 1. Aber wenn der Baustein im ganzen nicht aufgerufen wird, wird auch der Timer keine eingangsänderung in der Zeit erkennen.

    Hab dieses genze IEC Timerkram jetzt rausgenommen und es über die TIM_TCK (SFC64) Funktion gelöst.
    Nur der Zeitwert macht mich etwas stutzig, der Wert bei Zeit_aktuell ist weit größer als Zeit_Ziel ist, funktioniert aber trotzdem. Die Funktion TIM_TCK gibt ja das Datum auch mit aus oder ?!?!
    Nein Tim_TCK gibt einfach nur Milisekunden hoch bis 2147483647ms aus. Diese werden durch die Systemuhr gezählt unabhängig von Zyklus etc und beginnen bei überlauf wieder bei 0. Ist also nicht einfach so als Timer zu gebrauchen (überlauf erkennen und berechnen).

    mfg René

  8. #28
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.642
    Danke
    787
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Eine Staffelung könnte man z.B. so machen Bausteinintern ohne den ganzen Baustein zu überspringen.
    Code:
          U(
          L     #staffelung          // inout wird extern zurückgezählt
          L     #maxgleichzeitig     // wieiviele dürfen maximal zuschalten
          <=I
          )
          =     #einschaltenerlauben
    
    
    // hier programm welches mit einschaltenerlauben einschaltet
    
    xxxxx
    
    // nach dem Programme
          U(
          L     #out_stufen          // stufe hat sich erhöht
          L     #out_stufen_save
          >I
          )
          =     #Trigger
    
    
          L     #out_stufen          // neue stufe sichern
          T     #out_stufen_save
    
    
    
    
          U     #Trigger             // da gerade zuschaltet staffelung erhöhen. Somit nächster baustein ggf nicht dazuschaltet
          SPBN  staffelungplus
          L     #staffelung
          L     1
          +I
          T     #staffelung
    staffelungplus : NOP 0
    #staffelung zählst du dann am ende der Bausteinaufrufe im entsprechenden Takt zurück. z.B. wenn Staffelung 2 enthält wartest du 5 Sekunden und subtrahierst dann 1 oder halt auch 3 wenn immer drei gleichzeitig einschalten dürften.

    Dann sind die Bausteine an und fürsich gekapselt aber trotzdem im Zyklus und werden durch einen verbindungsmerker (#staffelung) in Synchronität gebracht.

    mfG René

  9. #29
    Registriert seit
    06.10.2003
    Beiträge
    3.445
    Danke
    453
    Erhielt 509 Danke für 411 Beiträge

    Standard

    Zitat Zitat von matziane Beitrag anzeigen
    In dem ganzen geht es darum, dass ein Ofen mit 45 Strahlern zu steuern ist. So weit nicht schlimm, Problem ist nur die entstehende Last wenn alle 45 Strahler angehen.
    Da fliegt da schon mal die Sicherung...
    Zu diesem Thema gibt es unter "Programmierwettbewerb, 4. Aufgabe" eine wirkungsvolle Lösung. Diese würde ich sicherheitshalber am Ende des OB1 mit einbauen, zusätzlich und unabhängig von deinen Freigaben im Programm.

    Falls Bedarf besteht und du kein SCL zur Verfügung hast, könnte ich auch einen entsprechenden Baustein für dich hochladen.
    Geändert von Onkel Dagobert (24.07.2015 um 14:30 Uhr)
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  10. #30
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Einen schönen Tag auch.

    Hatte in meinem Ablauf noch ein Abfangen des Überlaufs mit eingebaut, hat auch funktioniert....also in der Simulation und theoretisch.
    War mir dann am Ende doch zu kompliziert.
    Da das ganze ja nicht zeitkritisch ist und letztlich noch einfach und nachvollziehbar sein soll, bin ich von dieser TIM_TCK auch weggegangen.
    Aktuell schleife ich mir ein 1s Taktsignal durch und zähle dann einfach einen Wert hoch bzw. runter der dann den Sekunden entspricht.
    Funktion ist gegeben und Timer sind keine mehr drin.

    Am Ende frag ich mich trotzdem bzw. hab ich nicht verstanden warum es im PLCSIM funktioniert hat und in der CPU nicht.

Ähnliche Themen

  1. TIA IEC Timer kaskadieren funktioniert nicht
    Von kiar im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 18.12.2013, 17:55
  2. Timer läuft nicht, TIA-Portal
    Von pinolino im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 12.07.2011, 14:51
  3. S7 IEC-Timer, Multiinstanz, Instanz-DB
    Von Mark4you im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 11.07.2011, 14:31
  4. IEC-TIMER aus Multiinstanz heraus verwenden?
    Von MSR-Techniker im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.01.2009, 21:05
  5. Timer läuft einfach nicht...
    Von slma im Forum Simatic
    Antworten: 42
    Letzter Beitrag: 16.07.2007, 08:21

Lesezeichen

Berechtigungen

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