TIA CRC-Summe/ Prüfsumme DB

ProgWolf

Level-2
Beiträge
11
Reaktionspunkte
1
Hallo Zusammen,

wie berechne ich die CRC-Summe eines nicht optimierten DBs ?
CPU 1513-1 PN
Tia V16

Ich bekomme über einen PC ein Rezept geschickt.
Hin und wieder kommt es vor, dass das Rezept nur Teilweise "angekommen" ist.
Der "PC" und ich wollen jetzt die CRC-Summe bzw. Prüfsumme berechnen/ bilden und vergleichen.
Wenn die CRC-Summe ungleich ist, können wir dadurch einen Fehler melden.

Ich starte beim Byte 14.0 und Ende bei 2111.0
 
@TheQuest danke für das PDF. Vorher weis ich denn welchen CalcCRC 8, 16, 32 ich verwenden muss ?
In dem Rezept befinden sich bool, int, Real, und String Formate.


@TP-Inc es steht nichts drin oder alte Werte vom letzten Rezept.
 
@TheQuest... Vorher weis ich denn welchen CalcCRC 8, 16, 32 ich verwenden muss ?

Ich bekomme über einen PC ein Rezept geschickt.
Von wem denn? Handel mit dem Sender des Rezepts aus, worauf ihr euch einigen wollt.
Der "PC" und ich wollen jetzt die CRC-Summe bzw. Prüfsumme berechnen/ bilden und vergleichen.
Ja genau, der "PC" und Du! Ihr beide seid gefordert und müsst euch zusammenraufen!
 
Ich gehe mal davon aus, dass du die Daten als Array of Byte erhälst, dann kannst du die CRC funktionen direkt verwenden unabhängig von der daraus erstellten Datenstruktur.

Wie @Heinileini bereits schrieb, welcher Typ verwendet werden soll muss du mit dem "PC" aushandeln.

Aber viel wichtiger ist eigentlich, was machst du wenn die CRC zeigt das deine Daten ungültig sind. Das muss dem "PC" ja auch mitgeteilt werden und entsprechend reagieren.
 
Ich bekomme über einen PC ein Rezept geschickt.
Hin und wieder kommt es vor, dass das Rezept nur Teilweise "angekommen" ist.
Was ist "ein PC"? Eine Fremdanwendung oder eine Siemens WinCC Runtime (HMI, Visu)?
Siemens: da gab es ein paar mal Bugs
Fremdanwendung: Da ist das Werte senden anscheinend nicht richtig implementiert. Der Entwickler soll sein Programm ent-buggen oder Ihr einigt euch auf andere/leichtere Übertragungsprotokolle mit Handshake.

Harald
 
Wir haben es am laufen bekommen.
Das Rezept schiebe ich Byteweise in ein DB mit einem Array of Byte.
Das Array lege ich an den CRC16 Baustein an.
Startwert ist die Null und die Maske 16#8005.
Der andere Softwareentwickler und ich haben uns auf CRC-16 geeinigt.

Algorithm Result Check Poly Init RefIn RefOut XorOut
CRC-16/BUYPASS0x9B140xFEE80x80050x0000falsefalse0x0000

Sobald die CRC-Summe nicht übereinstimmt wird eine Fehlermeldung generiert.
Der Bediener der Anlage kann dann die Rezeptanfrage neu anstoßen.

Danke für eure schnelle Hilfe!
 
Wir haben es am laufen bekommen.
Das Rezept schiebe ich Byteweise in ein DB mit einem Array of Byte.
Das Array lege ich an den CRC16 Baustein an.
Startwert ist die Null und die Maske 16#8005.
Der andere Softwareentwickler und ich haben uns auf CRC-16 geeinigt.

Algorithm Result Check Poly Init RefIn RefOut XorOut
CRC-16/BUYPASS0x9B140xFEE80x80050x0000falsefalse0x0000

Sobald die CRC-Summe nicht übereinstimmt wird eine Fehlermeldung generiert.
Der Bediener der Anlage kann dann die Rezeptanfrage neu anstoßen.

Danke für eure schnelle Hilfe!
Gut dass es funktioniert, aber warum muss der Bediener das machen? 2-3 versuchen bevor Störung wär wohl einfacher und besser für die Verfügbarkeit der Anlage
 
Zurück
Oben