- Beiträge
- 6.376
- Reaktionspunkte
- 1.475
-> Hier kostenlos registrieren
Hallo,
das Folgende läuft unter dem Motto "Denn er weiß nicht was er tut".
Ich erstelle, unter anderem, ein Programm zur Berechnung einer CRC. Als Vorlage habe ich ein C++ Programm bekommen das ich in CODESYS wie folgt umgesetzt habe:
CRC ist ein INT und XModemBuffer, wie geschrieben, ein Byte-Array.
Was ich nicht wusste ist, dass es verschiedene CRCs gibt und der Code der Vorlage wohl für Words gedacht war, dass Array das ich jetzt bearbeite jedoch ein Byte-Array ist.
Hat einer eine Idee wo ich was ändern muss? Ich habe natürlich schon nach der CRC-Berechnung gegoogelt und wurde mit Ergebnissen erschlagen, aber durchgestiegen bin ich leider nicht.
das Folgende läuft unter dem Motto "Denn er weiß nicht was er tut".
Ich erstelle, unter anderem, ein Programm zur Berechnung einer CRC. Als Vorlage habe ich ein C++ Programm bekommen das ich in CODESYS wie folgt umgesetzt habe:
Code:
CRC := 0;
FOR Counter1 := 4 TO XMod_BuffSize - 2 DO
CRC := SHL(CRC XOR XModemBuffer[Counter1], 8);
FOR Counter2 := 1 TO 8 DO
IF CRC.15 THEN
CRC := SHL(CRC, 1) XOR 16#1021;
ELSE
CRC := SHL(CRC, 1);
END_IF
END_FOR
END_FOR
CRC ist ein INT und XModemBuffer, wie geschrieben, ein Byte-Array.
Was ich nicht wusste ist, dass es verschiedene CRCs gibt und der Code der Vorlage wohl für Words gedacht war, dass Array das ich jetzt bearbeite jedoch ein Byte-Array ist.
Hat einer eine Idee wo ich was ändern muss? Ich habe natürlich schon nach der CRC-Berechnung gegoogelt und wurde mit Ergebnissen erschlagen, aber durchgestiegen bin ich leider nicht.