Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

I2CCOM verlorene Bytes Kategorie: I²C-Bus (von Guido O. - 14.10.2009 18:19)
Ich nutze:
C-Control II Station, OSOPT V3.0
Ich benutze die CC2 zur Steuerung meines Hauses und bin derzeit dabei ein Toucpanel (HMI) mit in
dieses System zu Integrieren.
Das HMI wird mit der CC2 über RS232 verbunden. Das verwendete Kommuniaktaionsprotokoll ist
Modbus RTU.
In diesem Protokoll werden variable Datenblocks gesendet, die mit 2 CRC Bytes enden.
Zur Kommunikation verwende ich das I2CCOM Modul von CC-Tools. Dessen Interruptausgang liegt auf
P1H3.

Nun mein Problem:
Der Modbus Master (das HMI) sendet kontinuierlich Statuspakete die ich in der CC2 verarbeite. Es wird
ein Interrupt ausgelöst und anschlie�end lese ich den Datenblock aus.
Zur Unterscheidung, welcher Interrupt durch den FIFO erzeugt wurde hatte ich vor, dass IIR Register
auszulesen. Sobald ich aber nach Auftreten des Interrupts das IIR Register auslese bekomme ich im
Empfangspuffer genau ein Byte weniger zurück, wodurch ich CRC Fehler bekomme.

Hier beispielhaft der Code:

  loop{
    wait (ports.get(11)==0);
    receiveCnt=i2ccom.receive(1,received,types.MAX_RTU_MESSAGE_LENGTH+1,types.FRAME_SEPARATOR_TIME);
  }

In diesem Fall erhalte ich z.B. 17 Byte für eine Modbus Frame.

  loop{
    wait (ports.get(11)==0);
    iir = i2ccom.getIIR(1);
    receiveCnt=i2ccom.receive(1,received,types.MAX_RTU_MESSAGE_LENGTH+1,types.FRAME_SEPARATOR_TIME);
  }

Verwende ich diesen Code bekomme ich für den gleichen Frame noch 16 Byte. Woduch in der
weitern Verarbeitung CRC Fehler entstehen.

Hat jemand eine Idee, was ich falsch mache?

Viele Grü�e

Guido


    Antwort schreiben


Antworten:

Re: I2CCOM verlorene Bytes (von Guido O. - 30.10.2009 18:57)