Opened 12 years ago

Closed 12 years ago

#34 closed Aufgabe (fixed)

Messwerk-Timeout

Reported by: Melanie Hermann Owned by: Melanie Hermann
Priority: mittelfristig Milestone:
Component: Protokolle Version:
Severity: Zu prüfen Keywords:
Cc:

Description (last modified by Melanie Hermann)

GC läuft mit Simulation und bringt dann Messwerk-Timeout.
Der Controller sendet folgende Befehle: H, SMB, J und C.
Es sieht so aus, als würden die Anfragen gar nicht bei der Simulation ankommen.
Läuft dann irgendwann von alleine wieder los.

TODO:

  • Kommunikation prüfen.
  • Service-Log befüllen

Attachments (4)

CP4002_Trans_Recv_SetEvent.txt (5.2 KB ) - added by Melanie Hermann 12 years ago.
CP4002_Trans_Recv_MyTimer.txt (3.1 KB ) - added by Melanie Hermann 12 years ago.
CP4002_Trans_Recv_MyTimer_20140304.txt (5.5 KB ) - added by Melanie Hermann 12 years ago.
CP4002_Trans_Recv_SetEvent_20140305.txt (6.4 KB ) - added by Melanie Hermann 12 years ago.

Download all attachments as: .zip

Change History (27)

comment:1 by Melanie Hermann, 12 years ago

Description: modified (diff)

comment:2 by Melanie Hermann, 12 years ago

Änderungen:

  • CP4002Prot.cpp:
    • Trans(): DT_CP4002PROT_CAN_WRITE_FAILED
    • Recv(): DT_CP4002PROT_RECEIVE_FAILED

comment:3 by Melanie Hermann, 12 years ago

TODO:
Mit echtem Messwerk testen.

comment:4 by Melanie Hermann, 12 years ago

Hinweis:
Mögliches Kommunikationsproblem könnte an dem Recv-Event liegen, das beim Empfangen von Daten per CAN gesetzt wird.
Vielleicht ist es besser kein Event zu setzen, sondern die Daten direkt in RecvFomCAN() weiterzuverarbeiten. (Wie bei ERZChrom, RecvDataFromCP().)

comment:5 by Melanie Hermann, 12 years ago

Priority: kurzfristigmittelfristig

by Melanie Hermann, 12 years ago

by Melanie Hermann, 12 years ago

comment:6 by Melanie Hermann, 12 years ago

Änderungen:

  • CCP4002-Klasse: Neue Membervariable CMyTimer *m_myTimer
  • CCP4002Prot(): Erstellen des Timers
  • ~CCP4002Prot(): Aufräumen des Timers
  • Transmit(): Setzen der Timergrenze
  • Trans(): Setzen der Timergrenze und Starten des Timers
  • Recv(): Empfangen der Daten / Prüfen auf Timeout jetzt mit Timer realisiert
  • RecvFomCAN(): Setzen des Receive-Events entfernt

comment:7 by Melanie Hermann, 12 years ago

TODO:

  • Mit Simulation testen, ob weiterhin unerklärliche Timeouts auftreten.
  • Mit realem Messwerk testen.
Last edited 12 years ago by Melanie Hermann (previous) (diff)

comment:8 by Melanie Hermann, 12 years ago

Priority: mittelfristigsofort

comment:9 by Melanie Hermann, 12 years ago

Änderungen:

  • Transmit(): Set_MaxSecs() setzt Limit jetzt wirklich in Sekunden und nicht mehr in Millisekunden.
  • Trans(): Set_MaxSecs() setzt Limit jetzt wirklich in Sekunden und nicht mehr in Millisekunden.
  • Recv(): Wenn Timer abgelaufen ist, wird ret = -1; gesetzt. Timer wird nach jedem Receive gestoppt.

comment:10 by Melanie Hermann, 12 years ago

TODO:

  • Mit Simulation testen, ob weiterhin unerklärliche Timeouts auftreten.
  • Mit realem Messwerk testen.

by Melanie Hermann, 12 years ago

comment:11 by Melanie Hermann, 12 years ago

Anmerkung:

  • Seit mit MyTimer gearbeitet wird, läuft der GC stellenweise etwas langsam / ruckelig.

TODO:

  • Verbesserung überlegen
  • Doch wieder auf SetEvent-Variante umsteigen und nochmals nach den Timeouts schauen.

by Melanie Hermann, 12 years ago

comment:12 by Melanie Hermann, 12 years ago

Änderungen:

  • Wieder auf SetEvent-Variante umgestiegen
    • Applikation läuft nun wieder viel flüssiger
  • Nach Kommunikationsfehlern wird eine Pause von 200 ms eingelegt
  • Nach drei Kommunikationsfehlern wird Messwerk-Timeout gemeldet und der normale Ablauf wird unterbrochen und der Ident vom Messwerk wird angefordert
Last edited 12 years ago by Melanie Hermann (previous) (diff)

comment:13 by Melanie Hermann, 12 years ago

Hinweis:

  • Während dem Spülen wird kein Timeout erkannt. Denn in dieser Zeit sendet das Messwerk keine Daten.

comment:14 by Melanie Hermann, 12 years ago

ES IST WIEDER EIN TIMEOUT AUFGETRETEN!

comment:15 by Melanie Hermann, 12 years ago

  • CCP4002Prot::Trans(): wird ausgeführt
  • WriteCanQueue(): wird ebenfalls ausgeführt und ruft CanWrite() auf
  • CCanOut::ThreadFunc(): hier kommt Befehl nicht an! Kein Befehl mit diesem Identifier!
  • CCanOut::cnt wächst über 150 an. Problem? Größere Pausen zwischen Senden?
Last edited 12 years ago by Melanie Hermann (previous) (diff)

comment:16 by Melanie Hermann, 12 years ago

TODO:

  • Prüfen wo Sendebefehl hängen bleibt.

comment:17 by Melanie Hermann, 12 years ago

FEHLER KANN NICHT NACHGESTELLT WERDEN!
...

comment:18 by Melanie Hermann, 12 years ago

Test: Alle Traces wieder entfernt und auf AUTORUN gestellt.

Diagnose-Log:
12:58:45 12.03.2014 CP4002Prot (COM2): CP4002Prot an COM2 geöffnet
13:25:11 12.03.2014 CAN-OUT: Write-Queue: 151 Overload
14:48:04 12.03.2014 CAN-OUT: Write-Queue: 151 Overload

NEUSTART

16:09:17 12.03.2014 CP4002Prot (COM2): CP4002Prot an COM2 geöffnet
16:10:09 12.03.2014 CAN-OUT: Write-Queue: 152 Overload

Last edited 12 years ago by Melanie Hermann (previous) (diff)

comment:19 by Melanie Hermann, 12 years ago

Diagnose-Log:
08:04:25 13.03.2014 CP4002Prot (COM2): CP4002Prot an COM2 geöffnet
10:08:58 13.03.2014 CAN-OUT: Write-Queue: 151 Overload

Version 0, edited 12 years ago by Melanie Hermann (next)

comment:20 by Melanie Hermann, 12 years ago

Test: PGC9000VC in Betrieb genommen und angeschlossen!

  • Nach einer Weile wieder Timeout.
  • cmIdentifier von Hand angepasst, Befehl wird auf COM3 rausgesendet.
  • Receive funktioniert auf COM2, nur Transmit geht schief.
  • Vermutung: Problem liegt an BIOS. Stephan schaut nach.

comment:21 by Melanie Hermann, 12 years ago

Priority: sofortkurzfristig

comment:22 by Melanie Hermann, 12 years ago

Stephan hat eine BIOS-Testversion erstellt. Diese zeigt das Empfangen einer CP4002-CAN-Nachricht von der GC-Applikation und das Senden einer CP4002-CAN-Nachricht an das Messwerk per LEDs an.

Diese Version wird momentan nicht verwendet, da die Kommunikation momentan fehlerfrei läuft.

comment:23 by Melanie Hermann, 12 years ago

Priority: kurzfristigmittelfristig
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.