-> Hier kostenlos registrieren
@Thruser
Hier hab ich ein paar Änderungen gemacht (IF Abfragen + Arraygrenzen). sobald ich mit der Programmierung der Unterfunktion Nachrichten_Auswerten fertig werde, werde ich die hier posten.
Gruß
Hier hab ich ein paar Änderungen gemacht (IF Abfragen + Arraygrenzen). sobald ich mit der Programmierung der Unterfunktion Nachrichten_Auswerten fertig werde, werde ich die hier posten.
Code:
GVL.SUC.Read(pRxBuffer := ADR(uC_READ),udiRxBufferSize:=SIZEOF(uC_READ));
For i:=0 TO (SIZEOF (uC_READ)-7) BY 1 DO
IF uC_READ[i]= 10 AND uC_READ[i+1]= 13 AND uC_READ[i+2]= 10 AND uC_READ[i+3]=13 THEN
i:=i+4;
IF uC_Read[i+1]=10 AND uC_Read[i+2]=13 THEN
Anzahl_der_Antworten:=uC_Read[i];
Nachrichten_Auswerten(); // in diesem Baustein/Aktion werden die Nachrichtet ausgewertet
ELSIF uC_READ[i+4]= 10 AND uC_READ[i+5]= 13 AND uC_READ[i+6]= 10 AND uC_READ[i+7]=13 THEN
Auswerten_Errorcode(); // in diesem Baustein/Aktion wird der Errorcodes ausgewertet
END_IF
END_IF
END_FOR
-----Ausweten_Errorcode()----
i:=i+4;
A := ((uC_READ[i] AND 2#00000001) <> 0) OR A ; // UKNOWN_Error
B := ((uC_READ[i] AND 2#00000010) <> 0) OR B ; // CAN_Error
C := ((uC_READ[i] AND 2#00000100) <> 0) OR C ; //Adressee_unkown
D := ((uC_READ[i] AND 2#00001000) <> 0) OR D ; //Parameter_unknow
E := ((uC_READ[i] AND 2#00010000) <> 0) OR E ; //Parameter_is_setable_only
F := ((uC_READ[i] AND 2#00100000) <> 0) OR F ; //Parameter_is_getable_only
G := ((uC_READ[i] AND 2#01000000) <> 0) OR G ; //Value_to_low
H := ((uC_READ[i] AND 2#10000000) <> 0) OR H ; //Value_to_high
I := ((uC_READ[i+1] AND 2#00000001) <> 0) OR I ; //Instruction_not_allowed
K := ((uC_READ[i+1] AND 2#00000010) <> 0) OR K ; //Instruction_unkown
L := ((uC_READ[i+1] AND 2#00000100) <> 0) OR L ; //Ask_priority_unkown
M := ((uC_READ[i+1] AND 2#00001000) <> 0) OR M ; //Answer_priority_unkown
Gruß
Zuletzt bearbeitet: