Aufgabe Structured Text

tobi92

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

ich bin gerade dabei das im Anhang beschriebene Aufgabe zu lösen.

Es geht um Structured Text (pc worx). Da ich anfänger mit dieser Sprache, würde ich mich darauf freuen, wenn ich Hilfe mit dieser Aufgabe erhalte.

Vielen Dank im Voraus.
 

Anhänge

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,
vielen dank für deine Antwort.
Ich habe so angefangen und ich weiß es nicht, ob ich richtig angefangen habe.

blink:=not blink;
if blinker_freigabe=true then
led1:=flase;
end_if;


if sensor1=true then
if count<Word#16#FE00 then
count:=count+Word#500;
blinker_freigabe:=true;
aktor1:=true;
else
blinker_freigabe:=false;
end_if;
end_if;

Ist die Lösung bis jetzt richtig ?

Ich freue mich auf deine Antwort.
Danke im Voraus.
 
Also rein von der Aufgabenstellung fehlt bei dir noch einiges. Oder ist das nur ein Ausschnitt?

Es gibt z.B. den Teil, dass nur nach dem Erkennen eines Werkstücks an Sensor1 dieses ausgeblasen werden soll. Das Werkstück ist aber erst 5 Sekunden später vor der Düse, und dann soll für 0,6 Sekunden ein Druckluftimpuls gegeben werden. Somit benötigst du mindestens einen Timer und dieses zu realisieren, den ich bei dir aber nicht sehe.

Das ist zwar schon eine kleine Aufgabe, aber diese kannst du immer noch in Teilaufgaben zerlegen. Ein Teil ist eben das Werkstück an Sensor zu erkennen und es dann mit den angegebenen Zeiten auszuschleusen.
 
Vielen Dank für deine Antwort.

Das war nur ein Ausschnitt.

Mit Lichtschranke 1 können Sie feststellen, ob sich ein Werkstück vor der Weiche befindet (Werkstück vorhanden bedeutet 'kein Licht' ).
blink:=not blink;
if blinker_freigabe=true then
led1:=flase;
end_if;

Von Sensor1 bis Aktor1 bewegt sich das Werkstück in 5 Sekunden.

if sensor1=true then
if count<Word#16#FE00 then
count:=count+Word#500;
blinker_freigabe:=true;
aktor1:=true;
else
blinker_freigabe:=false;
end_if;
end_if;

Ist das Richtig ?

Der Druckluftimpuls soll 0,6 Sekunden dauern (true: Druckluft an,false: Druckluft aus)
Nun weiß ich nicht, wie ich die Aufgabe weiter lösen kann !

Du hast genau Recht, dass es eine kleine Aufgabe ist. Aber leider bin ich ganz Anfänger.
Danke für dein Verständins.

Danke im Voraus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In welchem Rahmen machst du denn die Aufgabe? Bist du in einer Ausbildung, oder machst du das im Selbststudium?

Ich frage nur, weil solche Aufgaben meistens aufeinander aufbauen. Und wenn in der Aufgabe ein Zeitglied gefordert wird, dann sollte zumindest auch vorher mal erwähnt werden welche Funktionen eine SPS dafür bietet. Bei IEC-Steuerungen wie der von Phoenix gibt es dazu Timer wie TON als Einschaltverzögerung und TOF als Ausschaltverzögerung. Kennst du diese Funktionen?
 
Nochmal vielen Dank für deine Rückmeldug.
Ich entschuldige mich bei dir, dass ich so viel geschrieben habe.

Ich mache nun eine Ausbildung. Was du über Timer geshrieben hast, habe ich keine Ahnung.
Normalerweise lösen wir die Aufgaben, ohne einen Timmer-Baustein zu verwenden.

Danke im Voraus.
 
Ok, theoretisch hast du da eine Art Zeitverzögerung drin, wenn dein Programm in einem festen Zeitraster von 100ms aufgerufen wird.

Aber wenn das der Stil der Ausbildung ist, mit dem völlig unnötigen Rechnen mit Hexadezimalkonstanten, dann ist das nicht gerade schön. So sollte meiner Meinung nach heute nicht mehr programmiert werden.

Aber um dir doch weiterzuhelfen solltest du mal den kompletten Code zeigen. Wird die Variable "count" an anderer Stelle nochmal beschrieben? Falls nicht dann läuft die Zeit nur einmal ab.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... blink:=not blink; ...
Dieses Bit wird abwechselnd einen Zyklus lang ein und einen Zyklus lang aus sein.
Das ist natürlich ein Blinken, dürfte aber bei ZyklusZeiten im (hoffentlich!) ms-Bereich für uns Menschen bestenfalls als Dimmen wahrnehmbar sein.

Nicht in ST, sondern als "Aufsatz" formuliert:
Zähler 1 zählt die Impulse von Lichtschranke 1.
Zähler 2 zählt die Impulse von Lichtschranke 2.
Jeder zweite Impuls von Lichtschranke 1 (z.B. immer wenn Zähler 1 gerade):
- startet Zeit 1 von 5 s und löscht Status Stau, wenn Lichtschranke 2 nicht unterbrochen ist
- setzt Status Stau, wenn Lichtschranke 2 unterbrochen ist
Ablaufen von Zeit 1 startet Zeit 2 von 600 ms
Ablaufen von Zeit 2 startet Zeit 3 von 2 s und setzt Hilfsmerker.
Ablaufen von Zeit 3 UND HilfsMerker ist gesetzt : rücksetzt HilfsMerker und setzt Warnung
Blasrohr = Zeit 2 läuft​
Lampe = Blinktakt UND Warnung ODER Stau // "StauEnde" wird automatisch erkannt, "Warnung" muss quittiert werden.

Wer kann mir die folgenden Sätze aus der Aufgabenstellung interpretieren?

Staumelder.jpg
Das ist doch der Widerspruch höchstselbst! Unabhängig vom Füllstand (=Stau)? Wie soll denn dann ein Stau erkannt werden können? Dass die Lichtschranke 2 bei Stau "ununterbrochen unterbrochen" bleibt, ist doch eigentlich klar - sie kann dann doch nicht mehr durch jedes ausgeschleuste Teil erneut unterbrochen werden???

Gruss, Heinileini
 
Zuletzt bearbeitet:
Zurück
Oben