Step 7 Zusammenspiel Weckalarm-OB und Ablauf(OB1)?

OP
G

Geisterkarle

Well-known member
Beiträge
99
Punkte Reaktionen
7
Zuviel Werbung?
->Hier kostenlos registrieren
Ich sehe schon, verdammt viele Wege führen nach Rom! Welchen nehmt ihr ;)

Nur so, weil "gefragt wurde", das sieht so aus:
OB34 (inzwischen)
Code:
SET   
S     "HelpFlag"
Auswertung:
Code:
  U     "HelpFlag"
  =     "Ticker0_1s"
  SET   
  R     "HelpFlag"
Und dann an den "7000 Stellen":
Code:
 UN    "Ticker0_1s"
 SPB   tim5
L     #Prozess.Help_Real_1[2]     //Waiting time
L     0.000000e+000
>R    
SPBN  tim5

 L     #Prozess.Help_Real_1[2]     //Waiting time
 L     2.000000e-001
 -R    
 T     #Prozess.Help_Real_1[2]     //Waiting time
tim5: NOP   0

Nicht so schön und ich hätte es anders gelöst und löse es in aktuellen Programmen von mir auch anders! Ich benutze aktuell Zeit-FCs (in Codesys FBs) und normalerweise nehme ich die Zykluszeit.
 

Heinileini

Well-known member
Beiträge
4.909
Punkte Reaktionen
1.037
Der Befehl SET in der zweiten CodeBox kann weg.

Code:
      L     #Prozess.Help_Real_1[2]     //Waiting time
      L     2.000000e-001
      >=R
      =     timeRunning   // diesen HilfsMerker noch für die Funktion des Timers auswerten
      ON    timeRunning
      ON    "Ticker0_1s"
      SPB   tim5
      -R
      T     #Prozess.Help_Real_1[2]     //Waiting time
tim5: NOP   0
... sollte es auch tun.
Warum denn den DatenTyp REAL für die Zeitwerte?
DINT in ms sollte es auch tun.
 
Zuletzt bearbeitet:

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
18.292
Punkte Reaktionen
5.429
Zuviel Werbung?
->Hier kostenlos registrieren
Auswertung:
Code:
  U     "HelpFlag"
  =     "Ticker0_1s"
  SET  
  R     "HelpFlag"
Das SET darf hier nicht stehen. Es muss weg! Siehe meinen Code-Vorschlag in #3. Die Codefolge muß exakt so sein: "U... =... R..." oder "U... R... =..."

"HelpFlag" darf nur zurückgesetzt werden, wenn es beim U "HelpFlag" schon gesetzt war. Sonst könnte der OB3x den OB1 zwischen dem U und dem R unterbrechen und dann würde dieses Setzen vom OB3x verloren gehen.

Harald
 
OP
G

Geisterkarle

Well-known member
Beiträge
99
Punkte Reaktionen
7
Warum denn den DatenTyp REAL für die Zeitwerte?
DINT in ms sollte es auch tun.
Nein DINT geht nicht! Also hier ja, aber im Allgemeinen nicht. bzw. wenn dann nur wenn die ms mit "imaginärer" Kommazahl sind!
Warum? Bin da selber mal reingefallen bei einem Projekt! Und zwar hatte ich da eine Soft-SPS. Die sind rasend schnell! Ich hatte Zykluszeit zwischen 1-2ms. Glaub mir, wenn du in REAL 1,4ms Zykluszeit hast und im DINT das auf 1ms weg-kürzt, dann passt keine Zeit mehr! 40% der Zykluszeit "wegschmeißen" ist ungünstig! Daher aufgepasst mit Ganzzahlen!

@PN/DP:
Da hast du recht! Hatte ich nicht bedacht!
Das SET hatte ich reingemacht, weil ich komisches Problem mit dem Merker hatte... Die Chancen sind zum Glück nicht sehr hoch, daher kann ich das erstmal bis zum nächsten Einsatz da so lassen, ohne dass was groß passiert *hoff*
 
Oben