Seite 1 von 1

Messung zwischen 2 Aufrufen mit Stoppuhr

Verfasst: Sa Nov 30, 2019 11:51 am
von Robert_Mini
Hallo @S. Kolbinger!

Ich tüftle gerade an einer Logik, in der ich die (genaue) Zeit zwischen 2 Aufrufen brauche.
Ich habe zwar eine funktionierende Lösung mit 2 Stoppuhren, die alternierend gestartet werden, ich denke das sollte aber auch mit einer Stoppuhr gehen.
Leider klappt irgendwas mit dem Rücksetzen der Zeit nicht, wie ich das erwarten würde.
Ausgang Debug_Time1 ($Time1) zeigt 0, was auf ein korrektes Rücksetzen hinweist
Ausgang Zeitdifferenz ($Time) und zählt immer weiter hoch, obwohl $Time1 beim Verlassen der Logik auf 0 war???

Meine Vermutung ist, dass der 2-malige Aufruf der gleichen Stoppuhr innerhalb eines Aufrufes der Logikzelle nicht vorgesehen ist?

Danke
Robert

Code: Alles auswählen

{
  "Level": [
    ["$Input","float",0.0],
    ["$Output","bool",false],
    ["$Time1","float",0.0],
    ["$Time","float",0.0],
    ["$KonstTrue","bool",true]
  ],
  "Input": [
    ["Messwert","Eingang Messsignal","$Input","a"]
  ],
  "Output": [
    ["Output","Schaltausgang","$Output","c"],
    ["Zeitdifferenz","Zeit seit letztem Wert","$Time","c"],
    ["Debug_Time1","Timer1","$Time1","a"]
  ],
  "Module": [   
	["Stopwatch","$KonstTrue","$Time1"],
	["Multiplexer",["$Time1"],"$Time","-$KonstTrue"],
	["Stopwatch","-$KonstTrue","$Time1"]
  ]
}

Re: Messung zwischen 2 Aufrufen mit Stoppuhr

Verfasst: Sa Nov 30, 2019 3:06 pm
von S. Kolbinger
Hallo Robert,
Robert_Mini hat geschrieben: Sa Nov 30, 2019 11:51 am Ich habe zwar eine funktionierende Lösung mit 2 Stoppuhren, die alternierend gestartet werden, ich denke das sollte aber auch mit einer Stoppuhr gehen.
Mit einer Stoppuhr könnte es vermutlich auch lösbar sein. Aber bisher ist mir nur eine umständliche Lösung mit fortlaufendem Zähler und Differenzbildung eingefallen.
Dein Ansatz mit zwei Stoppuhren gefällt mir viel besser.

Es muss nur noch das Start-Signal dauernd wechseln, damit die Zähler abwechselnd zurückgesetzt werden:

Code: Alles auswählen

{
  "Level": [
    ["$Input","float",0.0],
    ["$Output","bool",false],
    ["$Time1","float",0.0],
    ["$Time2","float",0.0],
    ["$Time","float",0.0],
    ["$Toggle","bool",true]
  ],
  "Input": [
    ["Messwert","Eingang Messsignal","$Input","a"]
  ],
  "Output": [
    ["Output","Schaltausgang","$Output","c"],
    ["Zeitdifferenz","Zeit seit letztem Wert","$Time","c"]
  ],
  "Module": [   
	["Stopwatch","-$Toggle","$Time1"],
	["Stopwatch","$Toggle","$Time2"],
	["Multiplexer",["$Time1","$Time2"],"$Time","$Toggle"],
	["Multiplexer",["-$Toggle"],"$Toggle",0]    
  ]
}

Re: Messung zwischen 2 Aufrufen mit Stoppuhr

Verfasst: Sa Nov 30, 2019 3:18 pm
von Robert_Mini
Danke Stefan!

Genau diese Lösung habe ich schon (viewtopic.php?f=24&t=1712).
Ich wollte nur verstehen, warum das mit einer Stoppuhr nicht klappt, denn offensichtlich gibt es Einschränkungen beim gleichen Aufruf.

Robert

Re: Messung zwischen 2 Aufrufen mit Stoppuhr

Verfasst: Sa Nov 30, 2019 3:44 pm
von S. Kolbinger
... ah, jetzt verstehe ich die Frage. :idea:
Robert_Mini hat geschrieben: Sa Nov 30, 2019 11:51 am Meine Vermutung ist, dass der 2-malige Aufruf der gleichen Stoppuhr innerhalb eines Aufrufes der Logikzelle nicht vorgesehen ist?
Es handelt sich hier auch nicht umeineStoppuhr die duzweimalpro Durchlauf aufrufen kannst.
Tatsächlich ist jedes Modul "Stoppwatch" eine eigene unabhängige Stoppuhr (mit unabhängigen interen Zählern).
Jedes Modul in der Modulliste ist eine eigene Instanz.

Wie du bereits vermutet hast:
Ein mehrfacher Aufruf ein und desselben Moduls pro Durchlauf ist nicht vorgesehen.

Re: Messung zwischen 2 Aufrufen mit Stoppuhr

Verfasst: Di Dez 17, 2019 1:55 pm
von StefanW
Ist das Problem hier gelöst oder als BUG einzustufen?

lg

Stefan

Re: Messung zwischen 2 Aufrufen mit Stoppuhr

Verfasst: Di Dez 17, 2019 7:16 pm
von Robert_Mini
Ich sehe das als Einschränkung, für die es einen Workaround gibt.
Daher gelöst.

Robert