Baustein mit Zeitglied mehrmals aufrufen

mathias007

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

habe mit der Suche nicht das gewünschte gefunden, deshalb stelle ich mal hier meine frage rein.

Habe eine FC erstellt, und IN und OUT Variablen deklariert.

Diesen FC rufe ich in einem FB mehrmals auf und weise über einen direkte DB-Adressierung die Ein- und Ausgänge zu.

Das hat soweit alles funktioniert, bis ich ein Zeitglied in den FC einbauen mußte.

Die Startzeiten habe ich über einen zweiten DB zugewiesen, aber irgendwie startet die zeit nicht mit ablaufen.

Wenn ich im FB den FC nur einmal aufrufe, dann klappt es auch mit dem ablaufen der zeit.

ich denke mal dass ich irgendwie einen fehler in der parametrierung habe, bzw dass ich ggf das zeitglied im FC falsch parametriert habe.

cu mathias
 
hast du die Timer-Nummer über die Schnittstelle in den FC übergeben, oder nutzt jeder Aufruf des FC's den gleichen Timer?
 
Hallo zusammen, danke für die schnelle hilfe.

"Zeitwert als IN-Variable vom Datentyp S5TIME an Deinem FC "
hatte ich. Habe einen Db mit allen zeiten, aus dem ich dann die gewünschten zeiten heraushole

"musst Dein Zeitglied als IN-Variable vom Datentyp TIMER "zugehörigen
das war mein fehler, hatte den Timer als "Temp" deklariert und nicht als "IN"-Variable. War der meinung, dass der nur intern im FC benötigt wird.

Nochmals danke

cu Mathias
 
das sieht man immer wieder... bei mindestens 30% unserer Anlagen im Werk ist es auch so, dass ein FB die FC's aufruft
 
Auch wenn ich einen Globalen-DB erstelle meckert mir das Programm

Aber das probier ich mal nächste Woche noch aus.

trotzdem Danke für die Hilfe

Gruß mathias
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Mathias007,

ich gebe ja zu, das ich der Einfachheit halber in der Regel auch die von dir gefundene Lösung verwende. Der zuletzt vorgeschlagene Ansatz hat aber auch definitiv einige Vorteile.

Erstens: Man kann beliebig viele Instanzen des Bausteins verwenden, ohne an die Grenzen der Anzahl der S5-Timer zu stossen.

Zum zweiten muss man nicht darauf achten welche Timer schon verbraucht wurden. S5-Timer dürfen nämlich immer nur einmal im Programm verwendet werden. Deshalb hat dein erster Versuch auch nicht funktioniert.

Er stellt nach Meinung einiger Experten in diesem Forum auch die einzige "richtige" Programmierweise dar. Auf jeden Fall ist sie die zeitgemässere. Während die andere ein Überbleibsel aus S5-Tagen darstellt. Ich wollte aber eigentlich keine Diskussion zu diesem Thema lostreten. Entschuldige mich also auch schon im voraus, sollte ich jemandem auf den Schlips getreten sein.:icon_redface:

Eine Multiinstanz erstellt man, in dem man in deinem konkreten Fall einen FBx erzeugt und im STATIC-Bereich einen IEC-Timer deklariert. Anschliessend deklariert man in einem zweiten FBy wieder im STATIC-Bereich soviele "Variablen" vom Datentyp FBx wie du für dein Programm benötigst. Im FBy rufst du die Variablen jeweils einmal auf. Den FBy rufst du dann mit nur einem Instanz-DB auf. In dem sind dann alle Daten abgelegt.

Einziger mir bekannter Haken ist, dass wenn man dies ausgiebig nutzt, gerade Siemens-CPUs mit magerer Speicherausstattung irgendwann an ihre Kapazitätsgrenzen stossen.

Gruss Hagen
 
Zurück
Oben