-> Hier kostenlos registrieren
Hallo zusammen,
Wer könnte mit helfen, die folgende Aufgabe in Scl zu lösen?
Wer könnte mit helfen, die folgende Aufgabe in Scl zu lösen?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Wie sieht dein Lösungsansatz aus?Wer könnte mit helfen, die folgende Aufgabe in Scl zu lösen?
Dann zeig doch mal die KOP Lösung.In Kop habe ich es mit Timern gelöst
Schaue dir das Bild doch einmal ganz genau an....soll oder worum geht es?
Du hast dein Merkbit 0 im Byte 0 "M1.0" genannt, korrekt wäre "M0.0", oder du änderst eben deine Variable zu Merkerbit 0 Byte 1Das ist eine Vorgabe, dass ich Merker nutzen soll oder worum geht es?
Kann jedoch jemand helfen oder nicht?
Korrekt wäre ein aussagekräftig(er)es Symbol und noch besser die Nichtverwendung von Merkern.Du hast dein Merkbit 0 im Byte 0 "M1.0" genannt, korrekt wäre "M0.0", oder du änderst eben deine Variable zu Merkerbit 0 Byte 1
Wir haben 2024 und in den S7-Schulen werden immer noch (PS: zuerst) diese veralteten Merker gelehrt.Das ist eine Vorgabe, dass ich Merker nutzen soll oder worum geht es?
Wir haben 2024 und in den S7-Schulen werden immer noch diese veralteten Merker gelehrt.
Wenn Hänschen nicht lernt was Hans nie gelernt hat....
VAR_INPUT
ibHalbSec : BOOL ; // Edit (Danke, funkey!): 2Hz-Takt, woher auch immer ...
END_VAR
VAR_OUTPUT
obLampe : BOOL ; // BlinkLampe
END_VAR
VAR_TEMP
tbAktiv : BOOL ; // BlinkSequenz ist aktiv
END_VAR
VAR_STATIC
sdRest : DINT ; // Rest der BlinkSequenz
sbHalbSecPrev : BOOL ; // Flanken"Merker"
END_VAR
IF ibHalbSec AND NOT sbHalbSecPrev THEN
sdRest := sdRest / 2 ;
END_IF ;
sbHalbSecPrev := ibHalbSec ;
tbAktiv := sdRest <> 0 ;
IF tbAktiv THEN
; // NOP
ELSIF MerkerAuswahl THEN // M 1.0 !?
sdRest := 16#1C039C ; // BlinkMuster 1
ELSE
sdRest := 13#FF7BDE ; // BlinkMuster 2
END_IF ;
obLampe := tbAktiv AND sdRest MOD 2 = 0 ;
IF #tbAktiv THEN
; // NOP
ELSIF #ibSwitch
THEN
#sdRest := 2#000111000000001110011100;
ELSE
#sdRest := 2#111111110111101111011110;
END_IF;
Doch! Du hast es verstanden!Nur versteht das keiner...
Sorry, stimmt, das hatte ich doch auch gemeint, als ich ihn "HalbSec" getauft habe. Das habe ich dann aber leider kurz danach wieder verdrängt.... der Takt sollte 2Hz haben ...
Nicht ganz bzw. nicht jede 0, denn wenn alle Bits 0 geworden sind, wird die Ausgabe inaktiv.und ich würde das Bit-Muster besser leserlich angeben. Jede 0 schaltet eine halbe Sekunde den Ausgang auf TRUE (von rechts nach links).
Ja, kann man so machen. Die Umwandlung Binär in Hex bzw. Hex in Binär ist ja zum Glück nicht so geheimnisvoll oder kompliziert, wie uns manche glauben machen wollen.Code:IF #tbAktiv THEN ; // NOP ELSIF #ibSwitch THEN #sdRest := 2#000111000000001110011100; ELSE #sdRest := 2#111111110111101111011110; END_IF;
FUNCTION_BLOCK "BlinkSeq_FB"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
Select : Bool;
END_VAR
VAR_OUTPUT
Lampe : Bool;
END_VAR
VAR
Seq : Array[0..9] of Time;
SeqMax : Int;
TP_Pulse : TP_TIME;
Pulse : Bool;
Step : Int;
END_VAR
BEGIN
IF #Step = 0 THEN //Werte nur übernehmen, wenn die Sequenz neu startet
IF #Select THEN //Ablauf bei Eingang True
#Seq[0] := t#1s;
#Seq[1] := t#1s500ms;
#Seq[2] := t#1s;
#Seq[3] := t#1s500ms;
#Seq[4] := t#4s;
#Seq[5] := t#1s500ms;
#SeqMax := 5;
ELSE //Anlauf bei Eingang False
#Seq[0] := t#500ms;
#Seq[1] := t#2s;
#Seq[2] := t#500ms;
#Seq[3] := t#2s;
#Seq[4] := t#500ms;
#Seq[5] := t#2s;
#Seq[6] := t#500ms;
#Seq[7] := t#4s;
#SeqMax := 7;
END_IF;
END_IF;
//Pulse erzeugen
#TP_Pulse(IN := NOT #Pulse,
PT := #Seq[#Step],
Q => #Pulse);
//Wenn Puls zu Ende gehe in den nächsten Schritt
IF (NOT #Pulse) THEN
#Step += 1;
END_IF;
//Wenn Maximum erreicht, dann von vorne
IF #Step > #SeqMax THEN
#Step := 0;
END_IF;
//Lampe nur in den geraden Schritten einschalten, daher Modulo mit 2 auf 0 abgefragt.
#Lampe := #Pulse AND #Step MOD 2 = 0;
END_FUNCTION_BLOCK
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen