TIA Schleife in AWL

Yassine_97

Level-2
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
"Hallo, ich benötige eure Hilfe. Ich möchte ein Programm erstellen, bei dem der Wert dosiermenge_kg_s jede Sekunde zu der Variable 'Tank'.Ist_Dosiermenge hinzugefügt wird. Das Programm soll enden, wenn der aktuelle Wert dem Sollwert SP Dosiermenge entspricht. Wie kann ich das erreichen?Vielen Dank für eure Hilfe.

// Soll Dosiermenge von Kg/Std in Kg/s umrechnen

L "Tank"."SP Dosiermenge"
L 3600.0
/R
T "Tank".Dosiermenge_kg_s"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich würde sagen muss nicht in AWL sein. Aber besser wäre in FUP und nicht KOP, da ich mich nicht mit KOP umgehen kann.

Können Sie bitte dann Ihre Antwort mehr detaillieren? danke
 
bei dem der Wert dosiermenge_kg_s jede Sekunde zu der Variable 'Tank'.Ist_Dosiermenge hinzugefügt wird. Das Programm soll enden, wenn der aktuelle Wert dem Sollwert SP Dosiermenge entspricht. Wie kann ich das erreichen?Vielen Dank für eure Hilfe.
falls es nicht in awl sein muss machs in kop:

Taktmerker, Vergleich auf Sollwert (<), Addition
Beim Taktmerker aber die Flankenerkennung nicht vergessen, sonst wird eine halbe Sekunde lang in jedem Zyklus hinzuaddiert.

Hier steht alles was du brauchst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe das so programmiert, sieht aber nicht ganz aus, wie ich mir das vorgestellt habe.
Also z.B wenn ich einen Massendurchfluss von 100kg/Std habe, soll meine Dosiermenge 0,0277 kg/s sein, danach kommt die Addition, dann sollte schon eine lange Weile dauern bis ich meine Dosiermenge erreiche. hier dauert es aber nicht mal 10s. habe ich was falsch gemacht? 1706103309483.png1706103329662.png
 
Da würde ich erstmal die typischen Stolperfallen abtesten.

- Ist deine Flankenmerker-Variable noch anderweitig (#AU_Ptrig_Dosieren) verwendet?
- Setzt du die "Tank".Ist_Dosiermenge vor dem Start auch zurück? Wird anderswo noch schreibend (oder Lesend und Schreibend) auf diesen Wert zugegriffen?
 
-Die Flankenmerker-Variable ist nicht wo anders verwendet
-ist Dosiermenge soll vor dem Start auch zurückgesetzt, aber ich greife den Wert jetzt direkt, da ich noch in Testphase bin. ich setze den manuell direkt zurück bevor ich auf Start drücke. der Wert wird allerdings nur einmal schreibend zugegriffen. 1706104205916.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist mit "Tank"."DO Start Dosierbetrieb"? Wenn dieses Bit flackert kommt es zu mehr als einer positiven Flanke pro Sekunde an deinem Baustein. Das könnte ebenfalls zu dem beschriebenen Verhalten führen.
 
mit dem Befehl DO Start Dosierbetrieb soll nu der Betrieb gestartet werden, mehr nicht. Ist das nicht so weil ich Cyclic interrupt benutzen soll?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich auf Start drücken soll dann die Dosierung anfangen, erst wenn die soll Dosiermenge gleich die ist Menge ist, wir der Start Befehl automatisch zurückgesetzt. also JA das Bit ist über den gesamten Dosierprozess gesetzt
 
Woher kommt den Wert 0.0277 kg/s ?
Wenn es einfach ein fest eingestellte Wert ist, wie sicher bist du dass es tatsächlich fliesst 0.0277 kg/s ?

Für Dosier oder Wiege Aufgaben verwendet man typisch entweder direkte Messung von den verwogene Wert (kg) oder für Flussigkeiten eine Durchflussmessung mit Zählerausgang (Liter pro Impuls).
Wenn direkten Messung muss man nichts summieren.
Wenn Durchflussmessung zählt man die Impulse.
Damit werden Durchflussschwankungen auch berüchsigtigt.

Du hast keine Kompensation für den Nachlauf ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Woher kommt den Wert 0.0277 kg/s ?
Wenn es einfach ein fest eingestellte Wert ist, wie sicher bist du dass es tatsächlich fliesst 0.0277 kg/s ?

Für Dosier oder Wiege Aufgaben verwendet man typisch entweder direkte Messung von den verwogene Wert (kg) oder für Flussigkeiten eine Durchflussmessung mit Zählerausgang (Liter pro Impuls).
Wenn direkten Messung muss man nichts summieren.
Wenn Durchflussmessung zählt man die Impulse.
Damit werden Durchflussschwankungen auch berüchsigtigt.

Du hast keine Kompensation für den Nachlauf ?
Das ist alles aktuell bei ihm in einer Simulation soweit ich das verstehe
 
Woher kommt den Wert 0.0277 kg/s ?
Wenn es einfach ein fest eingestellte Wert ist, wie sicher bist du dass es tatsächlich fliesst 0.0277 kg/s ?

Für Dosier oder Wiege Aufgaben verwendet man typisch entweder direkte Messung von den verwogene Wert (kg) oder für Flussigkeiten eine Durchflussmessung mit Zählerausgang (Liter pro Impuls).
Wenn direkten Messung muss man nichts summieren.
Wenn Durchflussmessung zählt man die Impulse.
Damit werden Durchflussschwankungen auch berüchsigtigt.

Du hast keine Kompensation für den Nachlauf ?
Also das ist erstmal nur eine Konzeption für ein Projekt für meine Bachelorarbeit. Und es geht hier erstmal nur um die Simulation, so dass man wie der Prozess in Real life aussehen könnte.
 
Dann ist das Verhalten erwartbar. Die temporäre Variable wird jeden Zyklus mit "0" initialisiert, daher wird jeden Zyklus, in dem dein Takt-Merker & Start-Befehl ein 1-Signal liefert, eine steigende Flanke erkannt.

Merker für Flankenerkennung dürfen nicht im Temporären Bereich liegen!
 
Dann ist das Verhalten erwartbar. Die temporäre Variable wird jeden Zyklus mit "0" initialisiert, daher wird jeden Zyklus, in dem dein Takt-Merker & Start-Befehl ein 1-Signal liefert, eine steigende Flanke erkannt.

Merker für Flankenerkennung dürfen nicht im Temporären Bereich liegen!
Ist es nicht so, das temporäre Variablen mit einem rein zufälligen Wert initialisiert werden?
Zumindest kann man der temporären Variable keinen default-Wert zuweisen, und ich initialisiere temporäre Variablen auch immer nochmal im Programm selbst mit einem Wert meiner Wahl.
 
Zurück
Oben