Opened 13 years ago

Closed 12 years ago

#171 closed Fehler (fixed)

Statemachine

Reported by: Melanie Hermann Owned by: Melanie Hermann
Priority: sofort Milestone:
Component: Gesamtsystem Version:
Severity: Fehler Keywords:
Cc:

Description (last modified by Melanie Hermann)

Es kann vorkommen, dass der GC unendlich in der Kalibrierung hängen bleibt und in keine andere Betriebsart wechselt.
Auch durch manuelles Verstellen der Betriebsart hängt der GC in einer Unendlichschleife.

TODO:

  • Prüfen woher Fehler kommt (vermutlich ChangeStream())
  • Fehler beheben

Change History (3)

comment:1 by Melanie Hermann, 13 years ago

Description: modified (diff)

comment:2 by Melanie Hermann, 12 years ago

Tatsächliches Problem:

  • GC macht undendlich SKIP-Messungen, berechnet aber keine Werte und archiviert auch nichts


Grund für Problem:

  • Es müssen zwei Bedingungen erfüllt sein, damit eine Analyse berechnet wird (DoMessungFertig()). Erstens muss das Messwerk das Flag CpDataAvailable setzen und zweitens muss der Analysenzähler, der vom Messwerk geliefert wird, höher sein der im GC gemerkte Analysenzähler. Die zweite Bedingung ist notwendig, da das Messwerk zu früh das CpDataAvailable-Flag setzt.

Bisher war es so, dass die beiden Analysenzähler gleich gesetzt wurden (um die Analysenberechnung zu verhindern) solange bis das Messwerk im Status READY ist und das Flag nicht gesetzt ist. Durch unterschiedliches Timing konnte es selten passieren, dass dieser Status nicht erkannt wurde (da die Funktion zu diesem kurzen Zeitpunkt nicht durchlaufen wurde) und somit für immer die beiden Analysenzähler gleichgesetzt wurden und somit nie eine Analysenberechnung durchgeführt wurde.
Nun werden die Analsyenzähler nur zu Beginn immer gleichgesetzt bis die erste Analyse gestartet wurde. Anschließend nicht mehr. Da diese Bedinung auf jedenfall erkannt wird tritt das Problem nicht mehr auf.

Änderungen:

  • Gc.cpp, DoStep1():
    Vorher:
    if (ConnectReady == false)                             
    { 
      NumberOfRunsOld = CpData.NumberOfRuns;  
      if (CpData.InstrumentState == InstrumentState_READY && CpData.DataAvailable == 0)
        ConnectReady = true;
    }             
    

Nachher:

  if (aValue(AnaStartCnt) == 0)					
    NumberOfRunsOld = CpData.NumberOfRuns;

comment:3 by Melanie Hermann, 12 years ago

Resolution: fixed
Status: newclosed

Ab V1.351-069.

Note: See TracTickets for help on using tickets.