oscat.lib > oscat.lib fuer Step 7
Parameter für CRC_GEN
Schmiegel:
Hallo,
ich soll eine Schnittstelle zu einem Bezahlterminal über das ZVT-Kassenprotokoll in STEP7 erstellen.
Dieses Protokoll verlangt eine CRC-Berechnung. Die CRC-Prüfsumme wird nach CRC-XModem mit dem Polynom x16+ x15+ x10+ x3 gebildet.
Hier ist ein Beispiel eines zu sendenden Codes das laut Bedienungsanleitung richtig ist:
Anmeldung:
Send: 10 02 06 00 06 12 34 56 BA 09 78 10 03 24 C3
Die unterstrichenen Zeichen sind der CRC-Code der über das Polynom berechnet werden soll. Die durchgestrichenen werden nicht in die CRC-Berechnung einbezogen.
Ich verwende den FB CRC_GEN aus der Oscat Library 3.03
Das Polynom müsste demnach heissen
"IDB_TEST".CRC_GEN.Polynom_L = DW#16#00018408
Die Daten 06 00 06 12 34 56 BA 09 78 03 habe ich in einen DB geschrieben und als Pointer an "pt" übergeben
"size" habe ich mit 10 angegeben
Alle anderen Parameter habe ich auf den Defaultwerten gelassen. Am Ausgang CRC_GEN bekomme ich DW#16#00000900
statt der erwarteten DW#16#00002403.
Habe ich was falsch gemacht? In der Liste der gebräuchlichen Polynome ist dieses Polynom leider nicht zu finden.
Deshalb weiss ich auch nicht, wie die anderen Parameter zu belegen sind.
Kann mir jemand einen Tipp geben?
Vielen Dank für Eure Hilfe
dalbi:
Hi,
das Polynom dazu muss lauten Binär "1100001000000100" Hexadezimal "C204".
Ergibt sich aus:
x16 + x15 + x10 + x3 =
+ 1000000000000000
+ 0100000000000000
+ 0000001000000000
+ 0000000000000100
--------------------
= 1100001000000100
Gruss Daniel
Schmiegel:
Hallo Daniel,
vielen Dank für Deine schnelle Hilfe.
das LSB ist doch X0, so steht's bei Wikipedia http://de.wikipedia.org/wiki/Zyklische_Redundanzpr%C3%BCfung
x16 + x15 + x10 + x3 =
+ 1 0000 0000 0000 0000
+ 0 1000 0000 0000 0000
+ 0 0000 0100 0000 0000
+ 0 0000 0000 0000 1000
--------------------
= 1 1000 0100 0000 1000 = Hex 18408
oder hab ich da was übersehen. Ich werde das trotzdem morgen testen.
Vielen Dank
Schmiegel
Schmiegel:
Ich habe es gerade noch mal getestet.
Mit Hex C204 kommt Hex 0480 raus!
Danke für eure Hilfe
dalbi:
Hi,
hab im Baustein noch einen Fehler entdeckt. Anbei ein Testprojekt mit der funktionierenden CRC-Prüfung.
Dein Polynom ist vom Prinzip her ein CRC-CCITT (Kermit).
Gruss Daniel
[gelöscht durch Administrator]
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln