Hallo,
meine Aufgabe besteht darin, zwischen einem Linux-PC und 2 VIPA-CPU's (314 SC und 214) Daten auszutauschen. Ich verwende einen MPI-Adapter für RS232.
Der Datenaustausch mit jeweils einer CPU funktioniert fehlerfrei.
Die zwei Verbindung zu den CPU's kann ich auch gleichzeitig fehlerfrei herstellen.

Der Fehler tritt beim Wechsel der Verbindung auf, z.B.

errorMPI = daveReadBytes(dc[0], daveDB, db, 0, NUM_DATA, datenDB);
...
errorMPI = daveReadBytes(dc[1], daveDB, db, 0, NUM_DATA, datenDB);

Im Forum habe ich Hinweise gefunden, das libnodave prinzipiel mehrere offene Verbindungen verwalten kann. Gibt es dazu evtl. ein Beispiel, wie sich das Problem lösen lässt?

Vielleicht kann jemand aus dem Fehlerprotokoll erkennen, was ich falsch mache:
...
daveAreaName(n:132)
daveReadBytes(dc:0x233a8 area: DB area number:201 start address:0 byte count:82 b
uffer:0x21dd4)
davePrepareReadRequest(dc:0x233a8 PDU:0xbed65ae4)
daveAreaName(n:132)
daveAddVarToReadRequest(PDU:0xbed65ae4 area: DB area number:201 start address:0 b
yte count:82)
PDU header:
0:0x32,0x01,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,
plen: 14 dlen: 0
Parameter:
0:0x04,0x01,0x12,0x0A,0x10,0x02,0x00,0x52,0x00,0xC9,0x84,0x00,0x00,0x00,
_daveExchange PDU number: 65536
IF1 enter _daveSendMessageMPI
I send:
0:0x02,
readSingle 1 chars. 1st 10
I send:
0:0x00,0x0C,0x03,0x03,0xF1,0x01,0x32,0x01,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x0
0,
10:0x04,0x01,0x12,0x0A,0x10,0x10,0x02,0x00,0x52,0x00,0xC9,0x84,0x00,0x00,0x00,0x
10,
20:0x03,0xD2,
_daveSendWithCRC:
0:0x00,0x0C,0x03,0x03,0xF1,0x01,0x32,0x01,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x0
0,
10:0x04,0x01,0x12,0x0A,0x10,0x10,0x02,0x00,0x52,0x00,0xC9,0x84,0x00,0x00,0x00,0x
10,
20:0x03,0xD2,
readSingle 1 chars. 1st 10
IF1 _daveSendMessageMPI send done. needAck 1
readSingle 1 chars. 1st 02
I send:
0:0x10,
IF1 enter getAck ack
readMPI: DLE ETX,packet end.
readMPI: packet end, got BCC: 9f. I calc: 9f
answer:
0:0x00,0x0C,0x03,0x03,0x80,0x10,0x03,0x9F,
IF1 *** getAck wrong length 8 for ack. Waiting for 1
dump:wrong ack::
0:0x00,0x0C,0x03,0x03,0x80,0x10,0x03,0x9F,
I send:
0:0x10,
readSingle 0 chars. 1st 00
IF1 *** _daveGetResponseMPI no STX before answer data.
readSingle 0 chars. 1st 00
I send:
0:0x10,
IF1 _daveGetResponseMPI receive message.
IF1 *** _daveGetResponseMPI no answer data.
result of exchange: -3

Danke.