Betreibst du die beiden AG_Send-Aufrufe unabhängig voneinander - oder ist der Aufruf des Einen verriegelt solange der Andere noch läuft ?
OK ... triggerst du den Einen oder Anderen eventuell schon wieder obwohl er noch nicht durchgelaufen ist ...?
... das meinte ich nicht ... aber du hast mir meine Frage schon beantwortet ... 8)
Du solltest kontrollieren, on der SEND seinen Auftrag WIRKLICH abgearbeitet hat ...
Ich vermute, dass du dem Baustein einen erneuten Start gibst obwohl er seinen letzten (davorliegenden) Sende-Auftrag noch nicht abgeschlossen hat.
Darauf deutet auch dein Status hin : 8181 heißt "Auftrag läuft" und 8183 heißt "Auftrag konnte nicht angenommen werden"
Ich denke, du solltest hier auf den Status warten, der sagt, dass der Baustein (wieder) bereit ist ...
Gruß
Larry
IF SEND_STATUS = W#16#8181 AND CONNECT THEN SEND_BUSY := TRUE;
ELSE IF CONNECT AND SEND_BUSY AND SEND_BUSY_EXT AND SEND_STATUS = W#16#0000 THEN SEND_BUSY := FALSE;
END_IF;
END_IF;
IF (SEND_STATUS = W#16#0000 OR SEND_STATUS = W#16#8183) AND CONNECT AND SEND_BUSY THEN SEND_REPEAT := TRUE;
ELSE SEND_REPEAT := FALSE;
END_IF;
AG_SEND(ACT := CONNECT AND (NOT SEND_BUSY OR SEND_REPEAT) AND NOT SEND_BUSY_EXT // IN: BOOL
,ID := WORD_TO_INT(ID) // IN: INT
,LADDR := LADDR // IN: WORD
,SEND := TempPointerSend // IN: ANY
,LEN := LEN (SENDE_STRING) // IN: INT
,DONE := SEND_DONE // OUT: BOOL
,ERROR := SEND_ERROR // OUT: BOOL
,STATUS := SEND_STATUS // OUT: WORD
); // VOID
IF SEND_DONE THEN
CONNECT := FALSE;
SEND_BUSY := FALSE;
END_IF;
Vieeel zu kompliziert/umständlich gedacht. Den AG_SEND-STATUS-Ausgang braucht man nicht für die Ablaufsteuerung (sondern nur für Fehleranalyse). Für den Ablauf brauchen nur DONE und ERROR (und ACT) ausgewertet (bzw. gesteuert) zu werden.Ich poste hier mal den Code-Auszug.
Code:IF SEND_STATUS = W#16#8181 AND CONNECT THEN SEND_BUSY := TRUE; ELSE IF CONNECT AND SEND_BUSY AND SEND_BUSY_EXT AND SEND_STATUS = W#16#0000 THEN SEND_BUSY := FALSE; END_IF; END_IF;
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?