Startimpuls

mf2000

Level-1
Beiträge
146
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte gerne einen Impuls erzeugen beim starten des SPS.

Siehe bitte Anhang.

Was mache ich das falsch?

Danke.

Gruß
Maik
 

Anhänge

  • 2014-12-08 18_22_49-CoDeSys - HomeControl_Haus.pro_ - [initialization (PRG-ST)].png
    2014-12-08 18_22_49-CoDeSys - HomeControl_Haus.pro_ - [initialization (PRG-ST)].png
    20,6 KB · Aufrufe: 63
  • 2014-12-08 18_23_22-CoDeSys - HomeControl_Haus.pro_ - [Taskkonfiguration].jpg
    2014-12-08 18_23_22-CoDeSys - HomeControl_Haus.pro_ - [Taskkonfiguration].jpg
    27,2 KB · Aufrufe: 33
Servus,
Dein TON.Q ist nach dem Start für eine Sekunde aus und nach Ablauf der einen Sekunde immer an, da der Eingang ja auch immer True ist.
Entweder nimmst Du einen Timer, der einen Impuls erzeugt, oder wenn Dir der erste Zyklus als Impulslänge reicht:
Code:
VAR
Start, Imuls : bool;
END_VAR

Start:=TRUE;
Impuls:=Start;
Start:=FALSE;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit Deiner Zeit entsprechend:
Code:
VAR
Start, Impuls : bool;
TONInst: TON;
END_VAR

Start:=TRUE;
Impuls:=Start;
Start:=FALSE;
TONInst(IN:=Start,PT:=T#1s);

Dann macht TONInst.Q einen Impuls beim Hochlaufen für eine Sekunde.
Timer die einen Impuls erzeugen ( so wie bei der S7 ) gibt es nur mit extra Bibliotheken...

Grüße Tom
 
Code:
Start:=TRUE;
Impuls:=Start;
Start:=FALSE;
:confused:
Impuls ist immer TRUE, da Start ja in jedem Zyklus wieder neu auf TRUE gesetzt wird! Und selbst wenn der Baustein nur einmalig aufgerufen wird, braucht's immer noch einen Stelle, an der "Impuls" wieder zurückgesetzt wird, damit er nur einen Startimpuls und nicht ein Dauersignal erhält.
Start ist nur die wenigen µs zwischen den beiden Befehlszeilen TRUE. Das wird den Rest des Zyklus auch nichts nutzen.


Code:
Start:=TRUE;
Impuls:=Start;
Start:=FALSE;
TONInst(IN:=Start,PT:=T#1s);

Dann macht TONInst.Q einen Impuls beim Hochlaufen für eine Sekunde.
Timer die einen Impuls erzeugen ( so wie bei der S7 ) gibt es nur mit extra Bibliotheken...
:confused: :confused:
Warum sollte TONInst einen Impuls erzeugen, wenn Start immer FALSE ist (direkt in der Zeile davor!)?



Dein TON.Q ist nach dem Start für eine Sekunde aus und nach Ablauf der einen Sekunde immer an, da der Eingang ja auch immer True ist.
Ist doch das, was der TE wollte! Nur den Startimpuls hat er daraus falsch erzeugt:
ich möchte gerne einen Impuls erzeugen beim starten des SPS.
Was mache ich das falsch?
Du erzeugst ein Signal ab dem Einschalten der Einschaltverzögerung. Du möchtest aber ein Signal bis die Einschaltverzögerung sich einschaltet. Das bedeutet, Du mußt TONInst.Q nicht auf gesetzt sondern auf NICHT gesetzt abfragen:
Code:
TONInst(IN:=TRUE,PT:=T#1s);
Start:= NOT TONInst.Q;
Somit ist Start solange aktiv, bis der TON aktiviert wird.


Der Code muss aber so oder so in jedem Zyklus ausgeführt werden.
Die Einstellung im ersten Bild (bin da nicht so firm) sieht aber aus, als ob er nur einmalig beim Start ausgeführt wird. Wenn dem so ist, wird der Timer wahrscheinlich nie auf TRUE gehen, da ja das Programm nicht mehr an die Stelle kommt, wo das abgefragt wird. Demzufolge würde bei einem einmaligen Ausführens des Bausteins auch der Startimpuls nicht mehr aus gehen.

Wenn dies ein solcher Start-Baustein ist, kannst Du z.B. auch einfach in den Baustein
Code:
Start:= True;
schreiben und dies dann im normalen Programmablauf an der gewünschten Stelle auf FALSE zurück setzen.
Da der Baustein nur bei Neustart aufgerufen wird, wird das START-Flag auch dann erst wieder TRUE.
 
Hallo und Danke für die Hilfen an alle.

Ich mache es jetzt wie im Anhang.
Den Start_Impuls_1s kann ich dann überall verwenden wo ich ihn brauche.

@SPS-freak1
Du hast in allen Punkten recht :)

Gruß
Maik
 

Anhänge

  • dfdfdf.png
    dfdfdf.png
    2,8 KB · Aufrufe: 30
Ich hab es so verstanden, das meine Variante funktioniert, er es nur nicht mehr so machen wollte.

Andere Variante ist, das ich es zu schlampig beschrieben hab [emoji2]
 
Zurück
Oben