Herunterladen Inhalt Inhalt Diese Seite drucken

Berechnung Der Prüfsumme Crc - ABB Protronic 100 Bedienungsanleitung

Vorschau ausblenden Andere Handbücher für Protronic 100:
Inhaltsverzeichnis

Werbung

9.1.4
'Basic-Programm zur Ermittlung der Prüfsumme CRC für MODBUS-
'RTU Telegramme
'Quickbasic 4.5
'-----------------------------------------------------------
DECLARE FUNCTION HEX2$ (x!)
CLS
MaxI = 2
PRINT "Eingabe der Telegrammbytes in Hex 05H oder dezimal 5"
PRINT "getrennt einheitlich durch Leerzeichen oder Kommata"
DO
INPUT Tel$
i = 1
L = LEN(Tel$)
Tel$ = UCASE$(Tel$)
LOOP
MaxI = i - 1
x& = 65535
FOR i = 1 TO MaxI
NEXT
PRINT "CRC ="; HEX$(y&); " Hex"
PRINT " muss in der Reihenfolge "; HEX2$(y& MOD 256); " "; HEX2$(y& \ 256);
PRINT " in das Telegramm aufgenommen werden !"
FUNCTION HEX2$ (x)
HEX2$ = RIGHT$("00" + HEX$(x), 2)
END FUNCTION
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
Berechnung der Prüfsumme CRC
DO UNTIL Tel$ = ""
Tel$ = LTRIM$(Tel$)
x = INSTR(Tel$, " ") + INSTR(Tel$, ",")
IF x > 4 THEN Fehler = 1: EXIT DO
IF x > 0 THEN
Byte$(i) = LEFT$(Tel$, x)
TEl$ = RIGHT$(Tel$, LEN(Tel$) - x + 1)
ELSE
Byte$(i) = Tel$
Tel$ = ""
END IF
Byte$(i) = RTRIM$(Byte$(i))
IF RIGHT$(Byte$(i), 1) <> "H" THEN
Byte$(i) = HEX2$(VAL(Byte$(i)))
ELSE
Byte$(i) = LEFT$(Byte$(i), 2)
END IF
IF HEX2$(VAL("&H" + Byte$(i))) <> Byte$(i) THEN Fehler = 1: EXIT DO
i = i + 1
LOOP
IF Fehler = 0 THEN EXIT DO
SOUND 1000, .03
y& = (VAL("&H" + Byte$(i)) XOR x&)
n = 1
DO
DO
r = y& MOD 2
y& = y& - r
y& = y& / 2
IF ABS(r) = 1 THEN EXIT DO
n = n + 1
IF (n = 9) AND (i = MaxI) THEN EXIT FOR
IF n = 9 THEN EXIT DO
LOOP
IF n < 9 THEN
y& = y& XOR 40961
n = n + 1
END IF
IF n = 9 THEN
IF (i = MaxI) THEN EXIT FOR
EXIT DO
END IF
LOOP
x& = y&
Version 1.0
Anhang 3
43

Werbung

Inhaltsverzeichnis
loading

Diese Anleitung auch für:

Digitric 500Protronic 500Protronic 550

Inhaltsverzeichnis