Step 7 SCL-Ausschaltverzögerung

gfkk

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Gemeinde,

ich habe gerade in der Schule mit SCL angefangen und sollten eine Ausschaltverzögerung für das Band nach drei Sekunden programmieren.
Leider finde ich keine Informationen wie man das mit SCL erledigen kann.
Würde mich sehr freuen, wenn ihr ein paar Tipps aus den Weg mitgeben könntet.

Ohne Ausschaltverzögerung sieht das Programm so aus:

FUNCTION_BLOCK FB20

VAR_input
band_start: BOOL;
band_stop: BOOL;
band_voll: BOOL;

END_VAR
VAR_output
band_vor: BOOL;
band_zurueck: BOOL;

END_VAR

// Anweisungsteil
BEGIN

IF
(band_start=true AND band_stop=false AND band_voll=false)THEN
band_vor:=true;
END_IF

;
END_FUNCTION_BLOCK

Gruß
gfkk
 
Hallo,

Informationen zu den Timern findest Du in SCL: Hilfe > Hilfethemen > Timer

Deine Aufgabenstellung ist sehr unvollständig. Deshalb hier nur ein Beispiel für den Aufruf der Ausschaltverzögerung S_OFFDT.
Wann die Ausschaltverzögerung wirken soll und was "band_voll" bewirken soll mußt Du selber anpassen.
Tip: Falls "band_stop" bei Dir ein Hardware-Taster ist: dafür benutzt man üblicherweise einen Öffner (Drahtbruchsichere Funktion).
Code:
VAR
    M_band_vor : BOOL;
    M_TOFF_vor : BOOL;
    curr_time : S5TIME;
END_VAR

BEGIN

    M_band_vor := (M_band_vor OR band_start) AND NOT band_stop AND NOT band_voll;
    curr_time := S_OFFDT (T_NO:=T10, S:=M_band_vor, TV:=T#3s, R:=band_voll, Q:=M_TOFF_vor);
    band_vor := M_TOFF_vor AND NOT band_zurueck;

Harald
 
Oder du schaust dir mal die IEC-Timer an, genauer den SFB 5 "TOF" (Ausschaltverzögerung). Eine Einschaltverzögerung gibt es mit dem SFB 4 "TON" ebenfalls.
Den SFB rufst du dann als Multiinstanz in deinem FB auf. In SCL machen die sich meiner Meinung nach besser als die S5-Timer.

Wenn das eine Schulaufgabe ist, solltet ihr aber zumindest schonmal eine von beiden Varianten (S5-Timer oder IEC-Timer) besprochen haben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die Infos

ich habe gerade in den Unterlagen folgendes Beispiel gefunden

Code:
FUNKTION_LOCK FBXXX
VAR_INPUT
set:bool;
zeitwert:time;
END_VAR
VAR
Zeit:bool;
TON:SFB4;
END_VAR

BEGIN
TON(IN:=set, PT:=zeitwert);
Zeit:=TON.Q
END_FUNKTION_BLOCK

Leider akzeptiert das Programm TON:SFB4; nicht, warum auch immer.
 
Nein, leider bleibt nach wie vor an der Stelle mit SFB4 der Compiler stehen.

Code:
FUNCTION_BLOCK FB20

VAR_input
    band_start: BOOL;
    band_stop: BOOL;
    band_voll: BOOL;
    
END_VAR

VAR_OUTPUT
    band_vor: BOOL;
    band_zurueck: BOOL;
        
END_VAR

VAR
    zeit: bool;// Die Zeitfunktion TP als Multiinstanz 
--   fbton: SFB4;
    
END_VAR

// Anweisungsteil
BEGIN

//Zeit wird defeniert
IF(IN:=true, PT:=T#3s)THEN
zeit:=TON.Q;

END_IF;

IF
(band_start=true AND band_stop=false AND band_voll=false)THEN
 band_vor:=true;
END_IF

;
END_FUNCTION_BLOCK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... es müßte bei deinem Code dann auch heißen :
Code:
zeit:=fbton.Q;
Der Aufruf des Timers selbst ist innerhalb einer IF-Abfrage sowieso ein No-Go und sieht auch vollkommen anders aus. Leider habe ich aktuell die 100%tig genaue Syntax nicht im Kopf - SCL würde dir das aber als Baustein-Vorlage einfügen. Ich meine aber so :
Code:
fbton (IN:= myStart , PT:=t#3s) ;
auf gar keine Fall solltest du den Timer mit einem festen TRUE beschalten. Damit würde der Timer, wenn überhaupt, dann nur einmal starten ... deine Bedingung für den Start ist aber eigentlich IMMER das Ergebnis einer Verknüpfung ... und das solltest du dann auf den IN legen ...

Gruß
Larry
 
Den SFB4 musst du dir auch in SCL erstmal in dein SPS Programm laden.

Am einfachsten indem du ihn aus der Bibliothek in den Editor ziehst (Bei SCL unter Einfügen -> Bausteinaufruf -> SystemFunctionBlocks). Dann wird er automatisch im Programm plaziert.
Obwohl die SFBs immer auf der CPU zu finden sind möchte Step7 diese gerne in deinem Programm sehen.

Deklarieren tust du ihn dann wie du es gerade gemacht hast.

mfG René
 
Zuletzt bearbeitet:
Zurück
Oben