CRC 16 Prüfsumme

Thompsen

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich brauche eine CRC 16 Prüfsumme für ein Projekt (Modbuskommunikation), leider bekomme ich das nicht ganz hin, vielleicht hat schon jemand einmal einen Code geschrieben (SCL).


Ich hoffe es kann mir jemand weiterhelfen.

mfg
Thompsen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, hab ich schon gesehn aber danke.
So habe ich das jetzt programmiert, aber ich bekomme immer das falsche ergebniss.

Polynom := 2#1100000000000101;
Daten := 2#1101001100001011;

FOR i := 1 TO 16 DO
temp := crc & 2#1000000000000000; // überprüfen ob vorderstes 0 ist

IF(temp = 2#1000000000000000 )THEN
temp2:= true;
ELSE
temp2:= false;
END_IF;


IF temp2 = True THEN
Daten:= (Daten XOR Polynom );
IF(i <> 16)THEN
Daten:= SHL(in:=Daten, n:=1);
END_IF;

ELSE
Daten:= SHL(in:=Daten, n:=1);
END_IF;

END_FOR;


temp:= Daten;

lg
thompsen
 
Prüfsumme CRC16

Hallo, soweit ich weiß, arbeitet CRC16 mit einer Datentabelle, welche mittels XOR jeweils die einzelnen Bytes des Telegrammframes verknüpft.
Wir haben hierfür einen FC mit DB geschrieben, welcher wie folgt aufgerufen wird:

CALL FC 92 // FC für CRC-Berechnung
CRC_Tabelle:=DB92 // DB mit den Daten zum Berechnen
Datenfach :=DB90 // DB, für welchen CRC berechnet wird
Offset :=1 // Angabe, ab welchem Byte begonnen wird
Anzahl :=MW100 // Anzahl der involvierten Byte
CRC :=MW102 // Rückgabe des CRC

Wir ermitteln wie üblicherweise vorgesehen das CRC byteweise. Außerdem ist der FC in AWL geschrieben. Dateien siehe im Anhang.

Ich hoffe geholfen zu haben.
Georg
 

Anhänge

  • Crc.zip
    24,6 KB · Aufrufe: 466
Zurück
Oben