Autor Thema: Wie macht man Stromstoßrelais mit strukturiertem Text (ST)?  (Gelesen 3652 mal)

Offline Andrus Saar

  • Jr. Member
  • **
  • Beiträge: 21
Wie macht man Stromstoßrelais mit strukturiertem Text (ST)?
« am: Februar 27, 2024, 04:52:20 Vormittag »
Hello

Wie kann ich Stromstoßrelais in strukturiertem Text (ST) implementieren?

Wenn ich zum Beispiel die RECHTS-Taste P03 einmal drücke, wird der Ausgang Q1 eingeschaltet, beim zweiten Drücken wird der Ausgang ausgeschaltet, beim dritten Drücken wird der Ausgang wieder eingeschaltet usw.

Andrus

(übersetzt von DeepL Translate)




Offline weiss_nix

  • Sr. Member
  • ****
  • Beiträge: 608
  • it has to be easy, it's a easy!
Antw:Wie macht man Stromstoßrelais mit strukturiertem Text (ST)?
« Antwort #1 am: Februar 27, 2024, 07:27:57 Vormittag »
hi Andrus,
it's very simple ;)
// rising edge
M100 := I01 and not M101;
M101 := I01;

// impulse switch
Q01 := Q01 xor M100;

weiss_nix
« Letzte Änderung: Februar 27, 2024, 08:01:06 Vormittag von weiss_nix »
Sollte ich (gefährliches) Halbwissen verbreiten, beuge ich demütig mein Haupt mit der Gewissheit versagt zu haben!
WICHTIG: Sämtliche Programme dienen lediglich der Veranschaulichung von Funktionen und sind nicht für den Produktiveinsatz geeignet!

Offline Andrus Saar

  • Jr. Member
  • **
  • Beiträge: 21
Antw:Wie macht man Stromstoßrelais mit strukturiertem Text (ST)?
« Antwort #2 am: Februar 27, 2024, 11:48:39 Vormittag »
Hello

Oh, das ist eine wirklich gute und einfache Lösung. Meine ist ein bisschen komplizierter, aber sie funktioniert, wie sie sollte.

(* 2. Impulse relay logic. The RIGHT button turns output Q2 on or off *)

IF P03 AND NOT M02 THEN  // Initiate impulse relay function - RIGHT button switches memory M3.
    M03 := NOT M03;  // Memory, which is switched on the first time, off the second time, on the third time, etc.
END_IF;

M02 := P03;

Q2 := M03;  // Output Q2 is assigned a value from memory M3

Andrus

(übersetzt von DeepL Translate)

Offline weiss_nix

  • Sr. Member
  • ****
  • Beiträge: 608
  • it has to be easy, it's a easy!
Antw:Wie macht man Stromstoßrelais mit strukturiertem Text (ST)?
« Antwort #3 am: Februar 29, 2024, 16:00:14 Nachmittag »
Hi Andrus, if you like very short and crisp ST programming, you can try this code snippet.

// impulse switch
Q01 := Q01 xor (I01 and not M101);
M101 := I01;

weiss_nix
Sollte ich (gefährliches) Halbwissen verbreiten, beuge ich demütig mein Haupt mit der Gewissheit versagt zu haben!
WICHTIG: Sämtliche Programme dienen lediglich der Veranschaulichung von Funktionen und sind nicht für den Produktiveinsatz geeignet!

Offline ssyn

  • Jr. Member
  • **
  • Beiträge: 51
Antw:Wie macht man Stromstoßrelais mit strukturiertem Text (ST)?
« Antwort #4 am: März 01, 2024, 10:46:49 Vormittag »
 weiss_nix, ;) toll
Can anybody to make it else shorter - in one line?  ;)

Offline Andrus Saar

  • Jr. Member
  • **
  • Beiträge: 21
Antw:Wie macht man Stromstoßrelais mit strukturiertem Text (ST)?
« Antwort #5 am: März 02, 2024, 05:52:08 Vormittag »
Hallo

Oh, diese Option ist noch besser.

Ein kleines Codebeispiel für einen UF-Block, der zwei Impulsrelais mit einem einzigen Eingang ansteuert. Ein kurzer Druck (weniger als 1 Sekunde) schaltet Ausgang 1, und ein langer Druck (mehr als 1 Sekunde) schaltet Ausgang 2.

(* 2-channel impulse relay with trigger (push button) and reset input *)

// Impulse relay 1 -  push button falling edge before timer is on (short press).
Q01 := NOT I02 AND ( Q01 XOR ( NOT I01 AND M1 AND NOT T01Q1 ) ) ; 
M1 := I01 ;

// Impulse relay 2 - timer rising edge (push button long press).
Q02 := NOT I02 AND ( Q02 XOR (T01Q1 AND NOT M2 ) ) ;
M2 := T01Q1 ;

// On-delayed timer to distinguish between short or long press.
T01 (
  EN := I01,  // Push button input (trigger).
  RE := I02,  // Reset input.
  ST := ,
  I1 := T#1000ms,  // 1 sec on-delay.
  I2 := ,
  Q1 => ,
  QV =>
 );

Andrus

(übersetzt von DeepL Translate)
« Letzte Änderung: März 02, 2024, 08:53:34 Vormittag von Andrus Saar »