TIA Baustein funktioniert nicht unter TIA Simulation

SPS_Step

Level-2
Beiträge
101
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich habe aus einer S7-300 folgenden Baustein, der in der TIA Simulation keine Funktion mehr bringt:

Code:
Input

Taste : BOOL;
Reset : BOOL;

Output

Ausg_T : BOOL;

InOut

HM1T : BOOL;

      A     #Taste               // Abfrage Taster
      FP    #HM1T                // Flankenauswertung (Hilfsmerker)           
      X     #Ausg_T              // Exklusiv-Oder: Imp.merker m.Ausgang
      =     #Ausg_T

      A     #Reset
      R     #Ausg_T

Weiß jemand warum das so ist?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Simulation welche CPU?
Wie ist der Baustein beim Aufruf beschaltet?

War #Ausg_T bei der S7-300 auch Output? Das ist unsauber und müsste InOut sein, weil X #Ausg_T liest die Variable.

PS: Das A #Reset / R #Ausg_T ist auch stupider Mist, weil da ggf. mehrmals auf #Ausg_T geschrieben wird. Das #Reset sollte besser sauber mit verknüpft werden, siehe FAQ:
In AWL sieht das Ganze dann wie folgt aus (Rücksetzen dominant):
Code:
U  #Eingang
FP #Flankenmerker
X  #Ausgang
O  #Setzen
UN #Rücksetzen
=  #Ausgang
 
Zuletzt bearbeitet:
Hallo, der Baustein ist von einem Kollegen der leider nicht mehr erreichbar ist. In Step7 Classic wurde dieser Baustein genauso genutzt. Anhand der Verschaltung im alten Programm gehe ich davon aus das es ein T-Kippglied/ Toggle FlipFlop sein sollte.

Wenn ich das mit der S7-1500 PLC-SIM unter TIA V18 Simuliere, ändert sich der Ausgang nicht, wenn ich den Taster drücke.
 
Hallo,

Ja genau, so ähnlich :D

Sollte so doch die gleiche Funktion nachbilden, oder habe ich etwas übersehen?

Code:
/// Deklaration ///

Input

Taste : BOOL;
Reset : BOOL;

InOut

Ausg_T : BOOL;

Static

R_TRIG_1 : R_TRIG;

/// Code ///

#R_TRIG_1(CLK:=#Taste);

#Ausg_T := #R_TRIG_1.Q XOR #Ausg_T AND NOT #Reset;
 
Ich weiß jetzt nicht, ob TIA da eine Warnung gibt.
Als FB würde ich das so schreiben:
Code:
/// Deklaration ///

Input

Taste : BOOL;
Reset : BOOL;

Output

Ausg_T : BOOL;

Static

R_TRIG_1 : R_TRIG;
Ausg_1 : BOOL;

/// Code ///

#R_TRIG_1(CLK:=#Taste);

#Ausg_1 := #R_TRIG_1.Q XOR #Ausg_1 AND NOT #Reset;
#Ausg_T := #Ausg_1;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß jetzt nicht, ob TIA da eine Warnung gibt.
Als FB würde ich das so schreiben:
Code:
/// Deklaration ///

Input

Taste : BOOL;
Reset : BOOL;

Output

Ausg_T : BOOL;

Static

R_TRIG_1 : R_TRIG;
Ausg_1 : BOOL;

/// Code ///

#R_TRIG_1(CLK:=#Taste);

#Ausg_1 := #R_TRIG_1.Q XOR #Ausg_1 AND NOT #Reset;
#Ausg_T := #Ausg_1;

Ja, das sieht gut aus.

TIA hatte bei meinem Vorschlag tatsächlich auch nicht gemeckert, deiner ist aber sauber. Habe den neuen Baustein auch ausprobiert und es funktioniert nun einwandfrei.

Vielen Dank, das Problem ist gelöst.
 
Zurück
Oben