# CoDeSys Impulsgeber mit Impuls = 1 SPS-Zyklus in FUP



## SPS_Bananen (16 März 2014)

Liebe Community,

wir haben ein Problem bei der Bearbeitung einer Studienarbeit. Evtl. wurde das Problem in einem vorherigen Beitrag schon beschrieben, falls dem so ist, haben wir die Lösung allerdings nicht verstanden. Wir sind übrigens CoDeSys-Anfänger. 

Wir suchen einen Impulsgeber der alle x-Sekunden einen Impuls (Bool) ausgibt, welcher genau einen SPS-Zyklus andauert. Dieser sollte in FUP programmiert sein. Neben den Standard-Bausteinen von CoDeSys steht uns zusätzlich die Oscat-Bibliothek zur Verfügung. 

Vielen Dank für eure Hilfe


----------



## weißnix_ (16 März 2014)

Diese Aufgabenstellung assoziiert irgendwie das Stichwort Flankenerfassung, mit dem Ihr Euch mal befassen solltet.


----------



## SRossmann (16 März 2014)

Vielleicht hilft euch der Anhang weiter; Eingang: tCycletime_IN; Flanke am Ausgang xTrigger_OUT


----------



## SPS_Bananen (16 März 2014)

Hallo und vielen Dank für die schnelle Antwort, aber woher bekommen wir die tCycletimeIN?


----------



## weißnix_ (16 März 2014)

Also, stefan hat Euch eine komplette Lösung präsentiert. tcycletime_IN ist eine Eingangsvariable dieses Funktionsblocks und entspricht x-sekunden Eurer Aufgabenstellung.
Das ganze liesse sich auch noch auf die Hälfte kürzen.
Habt Ihr eine Runtime zur Simulation zur Verfügung? Unbedingt besorgen, und stefan's Tip mal ausprobieren.


----------



## SPS_Bananen (16 März 2014)

Hallo!

Ja uns ist schon klar, dass tCycletimeIN eine Eingangsvariable dieses Blockes ist, aber wie rufen wir den Wert der Zykluszeit ab? Wir wissen ja nicht genau wie lange die Zykluszeit ist und können daher ja nichts eintragen. Gibt es eine Funktion zum Abruf dieser Zeit?


----------



## SRossmann (16 März 2014)

Es handelt sich dabei um einen Funktionsblock.Am Eingang tCycletime_IN könntet ihr den Abstand des Taktsignals vorgeben. Aufrufen könnt Ihr den FB dann in eurem Hauptprogramm.


----------



## weißnix_ (16 März 2014)

Also langsam:

Eure Aufgabenstellung lautet: Alle x-sekunden einen Impuls für einen Zyklus.

Alle x-sekunden bedeutet in der praktischen Anwendung die Realisierung einer extern vorgegebenen Zeit.
Für einen Zyklus bedeutet, die Kenntnis über die zyklische Arbeitsweise einer SPS vorausgesetzt, Den kürzestmöglichen programmgesteuerten Impuls zu erzeugen.

x-sekunden entspricht tCycletime_IN zum testen mal beliebig zum Beispiel t#1s
xTrigger_OUT entspricht dem Ausgangsimpuls. Hier braucht Ihr keine weiteren absoluten Zeitangaben. 1 ZYKLUS ist als relative Zeitangabe absolut perfekt.


----------



## SRossmann (16 März 2014)

Weißnix hat übrigens absolut recht. Ihr braucht nur einen TON Baustein. Mit dem Ausgang des TON den Ausgang xTrigger_OUT beschalten, und den TON  mit dem negierten Ausgang wieder triggern. Den Zeitwert braucht Ihr dann auch nicht zu halbieren.


----------



## SPS_Bananen (16 März 2014)

Ok, vielen Dank für eure Hilfe. Ihr habt uns sehr geholfen


----------

