Autor Thema: Frage zu vielen Timern in Structured Text  (Gelesen 3826 mal)

Offline RSMemphis

  • Newbie
  • *
  • Beiträge: 2
Frage zu vielen Timern in Structured Text
« am: Dezember 26, 2023, 11:25:03 Vormittag »
Hallo zusammen,

Ich versuche gerade mein eigenes ST Programm für die Eaton Easy E4 zu schreiben, wo es um die Schaltung von Rollläden geht.
Im Prinzip möchte ich unter bestimmten Umständen die Ausgänge für die Jalousien auf AN zu schalten, idealerweise mit dem impulsformenden Timer.
Allerdings bin ich mir bei Timern in ST noch etwas unsicher.
1. Werden diese jedes Mal wieder beim Durchlaufen der "Main Schleife" neu beschrieben? Ich sehe im Gegensatz zu anderen ST Systemen keinen VAR Bereich, wo man diese definiert?
2. Kann man so wie bei den Merker-Bits und Bytes die Timer auch per Array-Klammer ansteuern? []

3. Und schließlich muss ich beim Beenden des Impulses einige Variablen abändern. Gibt es dazu Möglichkeiten, oder muss ich das in eine Variable ausgeben und diese dann durch sinnvolle Bit-Verknüpfungen an diverse andere Variablen und Ausgänge weitergeben?

4. Und noch eine Frage: Kann ich die Zeit für einen Timer so definieren: MB21 := T#20s0ms;

Offline RSMemphis

  • Newbie
  • *
  • Beiträge: 2
Antw:Frage zu vielen Timern in Structured Text
« Antwort #1 am: Dezember 26, 2023, 13:34:38 Nachmittag »
So, habe gerade die Plausibilitätsanalyse gefunden, die hilft stark weiter.

Timer als Array mit T[] geht nicht.

Timer kommen in das Hauptprogramm, aber werden die dann immer wieder neu instanziert?

Zeiten von 30s brauchen mindestens ein MW, dann geht es aber.

An den Timer Ausgang Q1 kann ich über T01Q1 mehrere Zustände in Variablen abspeichern, damit kann ich hoffentlich meine anderen Themen in den Griff bekommen.

Ich werde wohl später noch weitere Fragen haben


Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 712
  • Think easy!
    • mollgruppe
Antw:Frage zu vielen Timern in Structured Text
« Antwort #2 am: Januar 19, 2024, 15:35:03 Nachmittag »
Zitat
Timer kommen in das Hauptprogramm, aber werden die dann immer wieder neu instanziert?
Du kannst bis zu 32 Instanzen des Timerbausteins im Programm haben, also 32 Timer.

Zitat
Zeiten von 30s brauchen mindestens ein MW, dann geht es aber.
Das stimmt so nicht. Es kommt immer auf den eingestellten Zeitbereich des Timers an. Da kann der max Zeitwert mit einem Byte am Eingang 255ms, 255s oder 4h15m sein.

Ich würde gerade in ST, wenn der Bausteinausgang mehrfach verwendet wird, immer den Ausgang freilassen. Stattdessen den Ausgang an der jeweiligen Stelle zuweisen.
zB:
T01 (
  EN := I01,
  RE := ,
  ST := ,
  I1 := T#10s,
  I2 := ,
  Q1 => ,
  QV =>  );
 
 M15:= T01Q1;
 .
 .
 .
 Q04:=  T01Q1 AND M14;

IF T01QV >= T#8s THEN
       M12:= TRUE;
END_IF;
Zitat
Und schließlich muss ich beim Beenden des Impulses einige Variablen abändern. Gibt es dazu Möglichkeiten, oder muss ich das in eine Variable ausgeben und diese dann durch sinnvolle Bit-Verknüpfungen an diverse andere Variablen und Ausgänge weitergeben?
Hier würde ich eine fallende Flanke verwenden, d.h. Wenn der T1Q1 weg geht ist der Flankenmerker im nächsten Zyklus einmal TRUE.

Zitat
Und noch eine Frage: Kann ich die Zeit für einen Timer so definieren: MB21 := T#20s0ms;
Das geht so nicht. Du kannst den Zeitbereich auf min:sek einstellen und dem Byte eine 20 zuweisen.
MB21 := 20;
T01 (
    EN := I01,
    RE := ,
    ST := ,
    I1 := MB21,
    I2 := ,
    Q1 => ,
    QV =>  );

wäre korrekt.

Gruß Thomas
Weil Einfach einfach Einfach ist!

Offline CiesleRa

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 323
  • easyE4 for President
Antw:Frage zu vielen Timern in Structured Text
« Antwort #3 am: Januar 20, 2024, 12:18:08 Nachmittag »
Hallo Thomas,

Zitat
Das geht so nicht. Du kannst den Zeitbereich auf min:sek einstellen und dem Byte eine 20 zuweisen.
MB21 := 20;
T01 (
    EN := I01,
    RE := ,
    ST := ,
    I1 := MB21,
    I2 := ,
    Q1 => ,
    QV =>  );

wäre korrekt.

Das geht nicht, weil der Wertebereich eines MB's bei T#20s0ms überschritten wird. Der T Wert ist ja bei dieser Formatierung 20000.
Nimmst Du ein MW geht das schon.
Will man ohne Millisekunden arbeiten ist auch MB21 :=T#20s. Allerdings muß man das Zeitrelais dann auf den Zeitbereich m:s einstellen. Sonst werden
die 20s als 20ms interpretiert. Ob da ein Fehler vorliegt, muß ich mal nachfragen.

Gruß Ralf
Alle von mir bereitgestellten Programme sind reine Beispielprojekte. Die Verwendung erfolgt auf eigene Gefahr. Jegliche Haftung ist ausgeschlossen.

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 712
  • Think easy!
    • mollgruppe
Antw:Frage zu vielen Timern in Structured Text
« Antwort #4 am: Januar 20, 2024, 12:36:03 Nachmittag »
Hallo Ralf,
ich denke das war nicht die Frage.
Ich hatte doch geschrieben den Zeitbereich auf Sekunden zu stellen.
Dann passen halt keine ms in das Byte.

Gruß Thomas
Weil Einfach einfach Einfach ist!

Offline CiesleRa

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 323
  • easyE4 for President
Antw:Frage zu vielen Timern in Structured Text
« Antwort #5 am: Januar 21, 2024, 12:29:18 Nachmittag »
Hallo Thomas,

ich hatte die Frage so verstanden, ob ich einen Wert im Format Time wie T#20s5ms direkt in ein MB / MW schreiben kann.
Ich wollte nur beschreiben, dass das durchaus möglich ist.  ;)

Gruß Ralf
Alle von mir bereitgestellten Programme sind reine Beispielprojekte. Die Verwendung erfolgt auf eigene Gefahr. Jegliche Haftung ist ausgeschlossen.