easy-forum
Deutsch - Hardware => easyE4 => Thema gestartet von: Kahmui am Juli 11, 2024, 07:54:07 Vormittag
-
Guten Morgen zusammen
Meine letzten Tätigkieten mit der easysoft sind leider schon echt lange her und ich tappse ein wenig auf der Stelle.
Daher würde ich michs ehr darüber freuen wenn mir jemand helfen könnte.
Im Prinzip benötige ich eine Abfolge von 3 Zeiten zur Betätigung von zwei Aktoren.
Die Abfolge besteht aus:
•Zeit 1: Schalte Aktor 1
•Zeit 2: Schalte Aktor 1 und Aktor 2
•Zeit 3: Schalte Aktor 1
Beispiel:
•200 ms Aktor 1, anschließend
•500 ms Aktor 1 und Aktor 2 gleichzeitig, anschließend
•300 ms Aktor 1
Die Gesamtzeit beträgt also 1000 ms.
Diese Zeiten (Timerkonstanten) möchte ich später über das Display einstellen können. Habt ihr zufällig ein Beispielprogramm zur Hand? Ich bin nach der langen Zeit leider nicht mehr so vertraut mit der Thematik. Ich denke das wird über T-Glieder mit Timerkonstatnten auf I1 realisiert. Mit fällt es nur etwas schwer die Verkettung auf die Reihe zu bekommen.
Ich priorisiere FUP!
Ich bedanke mich schonmal vorab und wünsche einen guten Start in den Tag!
Grüße
-
Hi Kahmui,
bleibt noch die Frage in welcher easySoft Version?
Gruß
-
Guten Morgen
Ich habe gerade eben auf easysoft 8.11 aktualisiert. Als Firmware nutze ich 1.10
Grüße
-
Ich habe es jetzt aktuell über einen Merker mit negativer Flanke nach dem Zeitrelais gelöst (siehe Anhang). Gibt es auch eine etwas "charmantere" Lösung?
Ist es jetzt ohne großen Aufwand möglich die 3 eingestellten Zeiten zu addieren und somit den Gesamttakt auszugeben? Ich bekomme es nur über Umwege hin.
-
Hi Kahumi, ich hätte es so gelöst, mit einer UF in der folgendes steht:
//Gesamtzeit ermitteln
MW2:= IA1 + IA2 + IA3;
//Timeransteuerung, wird resettet wenn Timer abgelaufen
M01 := M01 OR I01;
IF T01Q1 THEN M01:= false; END_IF;
T01 (
EN := M01,
RE := ,
ST := ,
I1 := MW2,
I2 := ,
Q1 => ,
QV => );
//Q01 ein Wenn Timer läuft
Q01:= T01QV > 0;
//Q02 dazuschalten wenn Zeit2 läuft
Q02:= Q1 and (T01QV > IA1) and (T01QV < (IA1 + IA2));
UF mit einem Digitaleingang und 3 analogen für die Zeit
Gruß Thomas
-
Hi Kahumi, ich hätte es so gelöst, mit einer UF in der folgendes steht:
//Gesamtzeit ermitteln
MW2:= IA1 + IA2 + IA3;
//Timeransteuerung, wird resettet wenn Timer abgelaufen
M01 := M01 OR I01;
IF T01Q1 THEN M01:= false; END_IF;
T01 (
EN := M01,
RE := ,
ST := ,
I1 := MW2,
I2 := ,
Q1 => ,
QV => );
//Q01 ein Wenn Timer läuft
Q01:= T01QV > 0;
//Q02 dazuschalten wenn Zeit2 läuft
Q02:= Q1 and (T01QV > IA1) and (T01QV < (IA1 + IA2));
UF mit einem Digitaleingang und 3 analogen für die Zeit
Gruß Thomas
Okay, danke für den Lösungsansatz. Da muss ich gestehen es nicht wirklich zu verstehen. Gibt es keine Lösung mittels FUP?
-
Du solltest den Code in einer UF verwenden. Leg dir doch einfach einen eigenen Baustein an und füge den Code ein.
Diese UF kannst du wie einen Herstellerbaustein in deinem FUP Hauptprogramm einfügen.
Aber OK, ich versuche es mal in FUP.
Wenn du Keine UF verwendest, musst du die entsprechenden Merker/TimerNr anpassen.
-
Ich habe nun denke ich verstanden was du meinst.
UF mit einem Digitaleingang und 3 analogen für die Zeit
Den Teil hatte ich nicht nachvollziehen können. Um den UF zu verwenden müssen ja Ein-/Ausgänge deklariert werden. Die gedankliche Brücke hatte mir gefehlt :)
Ich habe allerdings noch irgendwo einen Fehler. Wie kann ich den Gesatmwert nun abgreifen?
Edit: Hab es mal selbst versucht.
MW2:= IA1 + IA2 + IA3; geändert in QA1:= IA1 + IA2 + IA3;
-
Nein, es braucht keinen Analogausgang. Das MW2 wird nur innerhalb der UF verwendet.
Wenn du Keine UF verwendest, musst du die entsprechenden Merker/TimerNr anpassen.
Hab dir mal eine FUP Schrittkette gebastelt.
-
Wenn du die Gesamtzeit nach außen geben willst schon. Lege am UF noch einen QA an.
Dann ergänze einfach:
//Gesamtzeit ermitteln
MW2:= IA1 + IA2 + IA3;
QA1:= MW2;
...
-
Vielen Dank für die Hilfe. Es klappt nun alles wie es soll. Siehe Anhang!
-
Das ist doch doppelt gemoppelt. probier es mal so:
-
Wow. das ist natürlich sehr übersichtlich. Vielen Dank Radar :)
Habe noch einen Merker als Initiator ergänzt der dafür sorgt, dass der Vorgang nur bei negativer Flanke von I1 oder Taste-Del startet.
I1 oder DEL ----> N M01
Abschließend noch eine Frage. Bei deinem Beispiel ist ja kein Wert vorgegeben. Wie kann ich einen Defaultwert von z.B. 200 / 500 / 200 ms in die MW setzen?
-
Die Merkerworte sind remanent eingestellt. Du musst nur einmal die Werte in der E4 einstellen. Dazu ist die Textanzeige da, oder du machst es online direkt in die MW 510-512.
Gruß Thomas
-
Alles klar und besten Dank! Dann mache ich mich jetzt mal an die Hardware ;)