Bürstenloser Motorantrieb Modbus-Kommunikationsprotokoll und Registerbeschreibung

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

Bürstenloser Motorantrieb Modbus-Kommunikationsprotokoll und Registerbeschreibung
Bürstenloser Motorantrieb Modbus-Kommunikationsprotokoll und RegisterbeschreibungAbbildung

1. Kommunikationsabkommen

Dieses Laufwerk verwendet MODBUS-RTU (National Standard GB / T19582 - 2008) Kommunikationsprotokoll zur Kommunikation, unterstützt eine Master-Station, um mehrere Slave-Stationen (dh Laufwerke) zu steuern, unterstützt bis zu 255 Slave-Stationen, unterstützt die Kommunikationsübertragung (Slave-Station - Adresse ist 0 als Broadcast-Frame), Master-Station kann ein Chip-Computer, PLC oder PC sein.

1.1 Kommunikationsparameter

Standard-Kommunikationsparameter:

  • > Die Baudrate ist auf 9600 bps festgelegt.
  • >
  • > Überprüfen Sie auf "Keine +1 Stopp-Bits".
  • > Die Adresse von der Station ist auf 1 festgelegt. Benutzerdefinierte Kommunikationsparameter:
  • > Die Baudrate ist konfigurierbar im Bereich von 9600 - 115200bps.
  • >
  • > Die Prüfmethoden können als „G偶el + 1 Stoppbit", „Geldig + 1 Stoppbit" und „Kein + 2 Stoppbit" konfiguriert werden.
  • > Von der Station kann der Bereich 1 bis 255 festgelegt werden.

Wenn die Daten-Frame - Kommunikation unterbrochen ist mehr als 4 Byte Packing-Zeit als Frame-Empfang - Timeout entschieden. Wenn ein Frame-Timeout auftritt, werden die zuvor empfangenen Daten als ungültig angesehen.

1.2 MODBUS-RTU - Frame-Format

Dieses Treiber unterstützt die MODBUS-Funktionscodes 0x03 (Lese-Halt - Register), 0x06 (Schreiben eines einzelnen Registers) und 0x10 (Schreiben mehrerer Registers).

1.2.1 0x03 Lesen des Haltregisters

Hauptbahnhof übertragen:

Byte12345678
InhalteADR0x03Startregister Hohe ByteStartregister Niedrig ByteAnzahl der Register Hohe ByteAnzahl der Register Niedrig ByteCRC niedrige ByteCRC High Byte

1st Byte ADR: Adresscode der Slave Station (= 001 ~ 254).

Byte 2 0x03: Lesen Sie den Funktionscode des Registerwerts.

Byte 3 und 4: Die Anfangsadresse des zu lesen Registers.

Byte 5, 6: Anzahl der zu lesen Register.

Byte 7 und 8: CRC16 - Prüfcode von Byte 1 bis 6.

Zurück vom Bahnhof:

Bytes1234 56 7M - 1MM + 1M + 2
InhaltADR0x03Gesamtzahl der BytesRegisterdaten 1Datenregister 2Registerdaten MCRC Low ByteCRC High Byte

1st Byte ADR: Slave Station Adresscode (= 001 ~ 254).

Byte 2 0x03: Rückgabe des Lesen-Funktionscodes.

Byte 3: Die Gesamtzahl der Bytes von 4 bis M (einschließlich 4 und M).

4 bis M-Byte: Registerdaten.

M + 1 und M + 2 Bytes: CRC16 - Prüfcode von Bytes 1 bis M.

Rückschaltung von der Station, wenn ein Fehler von der Station empfangen wird:

Byte12345
InhaltADR0x83AusnahmecodeCRC Low ByteCRC High Byte

Byte 1 Byte 2 Byte 3

ADR: Adresscode der Slave-Station (= 001 ~ 254).

0x83: Fehler beim Lesen des Registerwertes.

Ausnahmecode: Siehe Tabelle1.1

Bytes 4 und 5: CRC16 - Prüfcode von Bytes 1 bis 3.

1.2.2 0x06 Schreiben eines einzelnen Registers

vom Master gesendet:

Byte12345678
InhaltADR0x06Register High Byte AdresseRegister Low Byte AdresseDaten High ByteDaten Low ByteCRC-Code Low ByteCRC-Code High Byte

Rückschaltung von der Station, wenn der Empfang von der Station korrekt ist:

Byte12345678
InhaltADR0x06Register Hohe Byte-AdresseRegister Low Byte-AdresseDaten Hohe ByteDaten Low ByteCRC-Code niedrigCRC-Code High Byte

Rückschaltung von der Station, wenn ein Fehler von der Station empfangen wird:

Byte12345
InhalteADR0x86AusnahmecodeCRC Low ByteCRC hohe Byte

1st Byte 2nd Byte 3rd Byte

ADR: Adresscode der Slave Station (= 001 ~ 254).

0x86: Fehler beim Schreiben von Registerwerten.

Ausnahmecode: Siehe Tabelle1.1

Bytes 4 und 5: CRC16 - Checkcode von Bytes 1 bis 3.

1.2.3 0x10 Schreiben von mehreren Registerwerten

Senden von Master:

Byte1234567
InhaltADR0x10Startregister Hohe Byte-AdresseStartregister Niedrig Byte-AdresseRegisteranzahl Hohe ByteRegisteranzahl Niedrig ByteGesamtzahl von Datenbytes
Byte8,910,11N, N + 1N + 2N + 3
InhaltRegisterdaten 1Datenregister 2Registerdaten MCRC-Code Low ByteCRC-Code High Byte

Rücksendung von der Station, wenn der Empfang von der Station korrekt ist:

Byte12345678
InhalteADR0x10Register hohe Byte-AdresseRegister Low Byte AdresseRegisteranzahl High ByteRegisteranzahl Low ByteCRC-Code Low ByteCRC-Code High Byte

Bei Erhalt eines Fehlers von der Station Rückschaltung von der Station:

Byte12345
InhaltADR0x90AusnahmecodeCRC Low ByteCRC High Byte

1st Byte 2nd Byte 3rd Byte

ADR: 0x90: Ausnahmecode:

Slave-Station - Adresscode (= 001 ~ 254).

Fehler beim Schreiben von Registerwerten.

Siehe Tabelle1.1

Byte 4 und 5: CRC16 - Prüfcode von Byte 1 bis 3.

1.2.4 Ausnahmefehler

MODBUS Ausnahmecode: wie in Tabelle1.1 

Tabelle 1. 1 MODBUS-Ausnahmecode - Tabelle

AusnahmecodeBedeutung
0x01Ungültiger Funktionscode
0x02Ungültiger Datenadresse
0x03Ungültiger Datenwert
0x04Ausfall aus der Station
0x05Die Anforderung wurde bestätigt, aber die Verarbeitung der Anforderung dauerte länger
0x06Das Gerät von der Station ist beschäftigt
0x08Speichern von Parity-Fehlern
0x0ANicht verfügbares Gateway
0x0BDas Gateway-Zielgerät hat keine Antwort gegeben

2. Standard-Register - Definitionen

2.1 Geräteschreibungsinformationsregister

Geräteschreibungsinformationsregister werden in Tabelle2.1 zeigen.

Tabelle 2. 1 Gerät Beschreibung Informationen Register

RegisteradresseBeschreibungWertebereichUnterstützt FunktionscodeAnmerkung
0x0000 (0)Gerätekennummer 0x03Jedes Modell hat eine entsprechende Geräte-Identifikationsnummer
0x0001 (1)Geräteversion 0x03Das hohe Byte ist die Hauptversionsnummer, das niedrigste Byte ist die Unterversionsnummer
0x0002 (2)Maximaler Strom 0x03Der Wert multipliziert mit 0,01 zum Stromwert, in Einheit A
 0x0003 ~ 0x0007 (3) ~ (7)Reservation 0x03  

2.2 Echtzeit-Zustandregister

Echtzeit-Zustandregister wie in der Tabelle2.2 gezeigt.

Tabelle 2.2 Echtzeit-Statusregister

Register-AdresseBeschreibungWertebereichUnterstützt FunktionscodeAnmerkung
0x0008 (8)Echtzeitstrom0 ~ 655350x03Der Wert multipliziert mit 0,01 für den Stromwert, in Einheit A
0x0009 (9)Echtzeitgeschwindigkeits-Halbwort-110000 ~ 1100000x03Echtzeitgeschwindigkeits-Wert, Einheit RPM
0x000A (10)Echtzeitgeschwindigkeits-Niedriges Halbwort
0x000B (11)Fehlerzustand0 - 130x030 Kein Fehler 1: Blockierung Ausfall 2: Phasenreihenfolge nicht gelernt 3: Phasenausfall 4: Phasenleitung Überstrom 5: Busbahnüberstrom 6: Überspannung 7: zu niedrige Spannung, 8: Phasenlernen Ausfall 9: Überlastung 10: 485 Kommunikationsunterbrechung 11: CAN-Kommunikationsunterbrechung 12: Busbahnspannung zu hoch 13: Temperatur zu hoch, 14: Induktionsstartsfehler 15: Phasenstrom-Anomalie
0x000C (12)interne Potentiometerspannung0~33000x03Einheit mV
0x000D (13)Externe Signalspannung0 ~ 100000x03Einheit mV
0x000E (14)Reservierung   
0x000F (15)Reservierung   
0x00010 (16)Aktivierungsniveau0,10x030: Niedriges Level 1: Hoches Level
0x0011 (17)Bremspegel0,10x030: Low Level 1: High Level
0x0012 (18)Richtungspegel 0,10x030: Niedrig 1: Hoch
0x0013 (19)0x07,0x09,0x19,0x01,0x11,0x0a,0x1a,0x02,0x12,0x0b,0x1b,0x03,0x0c,0x04,0x14,0x0d,0x1d,0x05,0x15,0x08,0x18,0x00,0x10, 0x07,0x09,0x01,00x030 - 4 Bits von niedrig bis hoch definiert: 1 4 - bit bedeutet induktiv 0 oder induktiv 1,2 3 - bit bedeutet offene Schleife 0 oder geschlossene Schleife 1,3 0 - 2 - bit bedeutet Modus: Phasenreihenfolge Lernen (111), Kommunikationssteuerung (000), internen Potentiometer (001), Analog-Menge (010), PWM (011), Flugmodell PWM (100), Rocker (101) 4 Wert Bedeutung: 0x07: Phasenreihenfolge Lernen, 0x09: induktiv / geschlossene Schleife / internen Potentiometer Steuerung, 0x19: Induktiv / geschlossene Schleife / interne Potentiometersteuerung, 0x01: Induktiv / offene Schleife / interne Potentiometersteuerung, 0x11: Induktiv / offene Schleife / interne Potentiometersteuerung, 0x0a: Induktiv / geschlossene Schleife / analoge Steuerung, 0x1a: Induktiv / geschlossene Schleife / analoge Steuerung, 0x02: Induktiv / offene Schleife / analoge Steuerung, 0x12: Induktiv / offene Schleife / analoge Steuerung, 0x0b: Induktiv / geschlossene Schleife / PWM-Steuerung, 0x1b: Induktiv / geschlossene Schleife / PWM-Steuerung, 0x03: Induktiv / offene Schleife / PWM-Steuerung, 0x13: Induktiv / offene Schleife / PWM-Steuerung, 0x0c: Induktiv / geschlossene Schleife / Flugmodell-PWM - Steuerung, 0x1c: Induktiv / geschlossene Schleife / Flugmodell-PWM - Steuerung, 0x04: Induktiv / offene Schleife / Flugmodell-PWM - Steuerung, 0x14: Induktiv / offene Schleife / Flugmodell-PWM - Steuerung, 0x0d: Induktiv / geschlossene Schleife / Rocker-Steuerung, 0x1d: Induktiv / geschlossene Schleife / Rocker-Steuerung, 0x05: Induktiv / offene Schleife / Rocker-Steuerung, 0x15: Induktiv / offene Schleife / Rockersteuerung, 0x08: Induktiv / geschlossene Schleife / Kommunikationssteuerung, 0x18: Induktiv / geschlossene Schleife / Kommunikationssteuerung, 0x00: Induktiv / offene Schleife / Kommunikationssteuerung, 0x10: Induktiv / offene Schleife / Kommunikationssteuerung,
0x0014 (20)Auslastung0 ~ 10000x03Multiplizieren Sie den Wert mit 0,1% für den PWM-Prozentsatz in ‰
0x0015 (21)Eingabe des PWM-Dastsatz0 ~ 10000x03Multiplikation mit 0,1% für den Eingangs-PWM - Arbeitsverlauf in ‰
0x0016 (22)Spannung0 ~ 1000x03Stromversorgungsspannung in V
0x0017 (23)Temperatur-200 ~ 2000x03Platttemperatur in ° C
0x0018 (24)Reservierung   

2.3 Motorsteuerungsregister

MotorsteuerungsregisterWie Tabelle 2.3 dargestellt.

Tabelle 2.3 Motorsteuerungsregister

RegisteradresseBeschreibungWertebereichUnterstützter FunktionscodeAnmerkung
0x0020 (32)Stopp0, 1, 20x03 0x060: Normaler Stopp 1: Notbremse 2: Freier Stopp
0x0021 (33)Einstellung des oberen Halbwortes für den ZielparameterSchlossene Schleife:- Höchste Drehzahl ~ Höchste Drehzahl Öffnungsschleife: -1000 ~ 1000 0x03 0x06 0x10Wenn die Geschwindigkeitssteuerung geschlossene Schleife ist, repräsentiert die Geschwindigkeit, wird die Einheit in RPM verwendet; wenn die Geschwindigkeitssteuerung offene Schleife ist, repräsentiert PWM, wird der Wert mit 0,1% multipliziert, um den Prozentsatz PWM zu erhalten. Positive Zahlen stellen eine Vorwärtsdrehung dar, negative Zahlen stellen eine Umkehrung dar, 0 normaler Stopp
0x0022 (34)Setzen Sie das niedrige Halbwort für den Zielparameter
0x0023 (35)Teststeuerung0, 10x03 0x060: Test abbrechen, 1: Phasenreihenfolge lernen
0x0024 (36)Ausgangsteuerung0, 10x03 0x060: Ausgang niedrig 1: Ausgang hoch
0x0025 ~ 0x27 (37) ~ (39)Reserviert   

2.4 Motorparameter Konfigurationsregister

Das Motorparameter Konfigurationsregister ist in Tabelle2.4 dargestellt.

Tabelle 2.4 Motorparameter Konfigurationsregister

Register-AdresseBeschreibungWertebereichUnterstützt FunktionscodeBemerkungen
0x0028 (40)Nennstrom des Motors0 ~ 15000x03 0x06 0x10Zahl multipliziert mit 0,01 für den Stromwert in der Einheit A
0x0029 (41)Höchstgeschwindigkeit des Motors. 0~1100000x03 0x06 0x10Einheit in RPM
0x002A (42)Niedriges Halbwort der maximalen Drehzahl des Motors
0x002B (43)Höchstes Halbwort der minimalen Drehzahl des Motors0 - 1100000x03 0x06 0x10Einheit in RPM, Allgemeine Einstellung unter 200 RPM
0x002C (44)Mindestdrehzahl des Motors
0x002D (45)Motorpollogarzahl0 ~ 655350x03 0x06 0x10Logarithmus der Nord-Süd-Magnetpole des Stators, die Hälfte der Magnetpole ist
0x002E (46)Motor 1, Zwei-Phasen - SequenzdatenHigh Byte 0 ~ 6 Low Byte 0 ~ 60x03 0x06 0x10Low Byte 1 Phase High Byte 2 Phase
0x002F (47)Motor 3, 4 Phasen-SequenzdatenHoch-Byte von 0 bis 6 niedrig-Byte von 0 bis 6 0x03 0x06 0x100x03 0x06 0x10
0x03 0x06 0 6 - Phasen-Sequenzdaten Elektromotor 4, 6 Phasen-SequenzdatenHohe Byte 0 bis 6 Low Byte 0 bis 60x03 0x06 0x10Low Byte 4 - Phasen Hohe Byte 6 - Phasen
0x0031 (49)Phase-Sequential - Lernzustand0,10x03 0x06 0x100x0032 (50)
0x0032 (50)Größe der unempfindlichen Startlasten0~4 0x03 0x06 0x100: Leichte Last 1: mittlere Last 2: schwere Last 3: geringe Trägheit Last 4: Große Trägheitslast
0x0033 (51)Geschwindigkeitsbeschleunigung Geschwindigkeitsbeschleunigung100 ~ Maximalgeschwindigkeit0x03 0x06 0x10Einheit RPM / S
0x0034 (52)Geschlossene Geschwindigkeit Verlangsamung Beschleunigung100 ~ maximale Geschwindigkeit0x03 0x06 0x10Einheit RPM / S
0x0035 (53)Geschwindigkeit Beschleunigung Beschleunigung4 ~ 5000x03 0x06 0x10Einheiten% / S
0x0036 (54)Öffnen-Schleife - Geschwindigkeit Verlangsamung Beschleunigung4 - 5000x03 0x06 0x10Einheiten% / S
0x0037 (55)Stoppmodus0, 1, 20x03 0x06 0x100: Normalstop 1: Notbremse 2: Freie Stopp
0x0038 (56)Automatischer Umschaltmodus0, 1, 20x03 0x06 0x100: Normaler Wechsel zu 1: Dringlich wechseln!
0x0039 (57)Stillstand-Phase - Sperrstrom0 ~ 15000x03 0x06 0x100: Nicht-Stillstand-Phase - Sperr - Sonstige Werte: Multiplizieren Sie den Wert mit 0,01 für den Stromwert in der Einheit A
0x003A ~ 0x3F (58) ~ (63)Reserviert   

2.5 Systemparameter Konfigurationsregister

Das Konfigurationsregister für Systemparameterwird in Tabelle2.5 dargestellt.

Tabelle 2.5 Systemparameter Konfigurationsregister

Register-AdresseBeschreibungWertebereichUnterstützt FunktionscodeBemerkungen
0x0040 (64)Blockierungsausfallzeit0 ~ 666350x03 0x06 0x10Einheit in mS
0x0041 (65)Schutz-Aus - Strom0~42000x03 0x06 0x10Zahl mit 0,01 für den Stromwert in Einheit A
0x0042 (66)interner Potentiometer-Steuerungsschwelle maximal0 - 33000x03 0x06 0x10Einheit mV
0x0043 (67)Mindesteuerungsschwelle für internes Potentiometer0 ~ 33000x03 0x06 0x10Einheit mV
0x0044 (68)Maximale Steuerungsschwelle für externe Eingabe0 ~ 100000x03 0x06 0x10Einheiten mV
0x0045 (69)Minimum-Schwelle für externe Eingabesteuerung0 bis 100000x03 0x06 0x10Einheiten mV
0x0046 (70)Maximaler Schutzspannungsschwellenwert (Überspannungsschutzspannung)8 ~ 560x03 0x06 0x10Schutzspannungsbereich, Einheit: V
0x0047 (71)Mindestschwellenwert für Schutzspannung (Unterspannungsschutzspannung)8 ~ 560x03 0x06 0x10
0x0048 (72)Spannungsschutz Einstellungen0,10x03 0x06 0x100: Nicht geschützt1: Spannungsschutz
0x0049(73)Ausgabe-Typ0,1,2,3,4,5 0x03 0x06 0x100: Keine Ausgabe (d.h. Ausgabe niedrig) 1: Langer Ausgabe 2: Alarmsignal Ausgabe 3: FG-Feedback - Signal Ausgabe 4: Ausfallsignal 5: Kommunikationssteuerung

2.6 PID-Parameter - Konfigurationsregister

Closed-Loop - Steuerung PID-Parameter - KonfigurationsregisterWie in Tabelle2.6 dargestellt.

Tabelle 2.6 Konfigurationsregister für PID-Parameter für geschlossene Schleifsteuerung

RegisteradresseBeschreibungWertebereichUnterstützter FunktionscodeAnmerkung
0x004A (74)Geschwindigkeit geschlossene Schleife P-Koeffizient hohes HalbwortEmpfehlung 1 ~ 3276800x03 0x10Zahlenwert durch 32768 geteilt als tatsächlicher Wert
0x004B (75)Geschwindigkeit geschlossene Schleife P-Koeffizient niedriges Halbwort
0x004C (76)Geschwindigkeit geschlossene Schleife I-Koeffizient hohes HalbwortEmpfehlungen 1 ~ 3267800x03 0x10Zahlenwert durch 32768 geteilt.
0x004D (77)Geschwindigkeit geschlossene Schleife I-Koeffizient niedriges Halbwort
0x004E (78)Geschwindigkeit geschlossene Schleife D-Faktor hohes Halbwort Empfehlung 1 ~ 326780 0x03 0x10 Zahlenwert durch 32768 geteilt.
0x004F (79)Geschwindigkeit geschlossene Schleife D-Koeffizient niedriges Halbwort

2.7 Kommunikationsparameter Konfigurationsregister

KommunikationParameter Konfigurationsregister sind in Tabelle2.6dargestellt.

Tabelle 2.7 Kommunikationsparameter Konfigurationsregister

Register-AdresseBeschreibungWertebereichUnterstützter FunktionscodeAnmerkung
0x0050 (80)485 Kommunikationsunterbrechung Bremszeit0 ~ 666350x03 0x060x10Einheit: S
0x0051 (81)485 Kommunikationsgerätadresse0 ~ 2550x03 0x060x10Modbus-Sklavengerätadresse
0x0052 (82)485 Serial-Port - Kommunikations-Baud - Rate 0~40x03 0x060x100: 96001: 19: 2002: 384003: 576004: 115200 Einheiten in bps
0x0053 (83)485 Kommunikations-Serial - Port-Prüfungsmethode0 - 30x03 0x060x100: Kein + Stop-Bit 1: Paar + 1 Stop-Bit 2: Ungewöhnlich + 1 Stop-Bit 3: Kein + 2 Stop-Bit
0x0054 (84) ~ 0x0059 (89)Reservierung   

3. Berechnung von CRC16

Die CRC-Generierungsfunktion in der C-Sprache wird im- Programm 3.1dargestellt. Alle möglichen CRC-Werte sind in zwei Arrays vorinstalliert, die bei der Berechnung des Nachrichteninhalts einfach indiziert werden können. Ein Array enthält alle Bereiche16 - BitCRC Alles im Bereich 256 Ein weiteres Array enthält Werte für niedrigere Byte. Diese Art und Weise, wie der Index auf CRCs zugreift, bietet eine schnellerere Möglichkeit, als ein neues CRC für jedes neue Zeichen im Nachrichtenpuffer zu berechnen.

Hinweis: Diese Funktion führt intern den Austausch von hohen / niedrigen CRC-Bytes durch. Diese Funktion gibt den bereits ausgetauschten CRC-Wert zurück. Das bedeutet, dass der CRC-Wert, der von dieser Funktion zurückgegeben wird, direkt in die Nachricht zum Senden gelegt werden kann.

Die Funktion verwendet zwei Parameter:

unsigned char * puchMsg; zeigt auf einen Zeiger, der den Puffer für die binäre Datennachricht enthält, die CRC generiert.

unsigned short usDataLen; Anzahl der Bytes im Nachrichtenpuffer.

Hinweis: Die folgenden CRC16 - Generatoren wurden aus dem < MODBUS over Serial Line Specification and Implementation Guide > entnommen.

Veröffentlicht in V1.02.

Prozess 3.1   CRC16Erzeugerfunktionsliste

/ * CRC-Werte für die oberen Bytes * /

static unsigned char auch CRCHi[] = {

0x01, 0x01, 0x 0x41, 0x41, 0x40, 0x80, 0x41, 0x40, 0x40, 0x41, 0x40, 0x40, 0x41, 0x40, 0x80, 0x41, 0x41, 0x40, 0x41, 0x41, 0x40, 0x41, 0x41, 0x 0x01, 0x01, 0x 0x81, 0x81, 0x40, 0x81, 0x40, 0x81, 0x81, 0x40, 0x81, 0x40, 0x81, 0x81, 0x40, 0x81, 0x40, 0x81, 0x81, 0x40, 0x81, 0x81, 0x40, 0x81, 0x81, 0x40, 0x81, 0x81, 0x 0x01, 0x01, 0x 0x80, 0x41, 0x80, 0x41, 0x40, 0x80, 0x41, 0x40, 0x40, 0x81, 0x40, 0x80, 0x41, 0x40, 0x80, 0x41, 0x41, 0x40, 0x41, 0x40, 0x41, 0x41, 0x40, 0x41, 0x41, 0x 0x01, 0x01, 0x 0x81, 0x81, 0x40, 0x81, 0x40, 0x81, 0x81, 0x40, 0x81, 0x40, 0x80, 0x41, 0x40, 0x80, 0x41, 0x41, 0x40, 0x80, 0x41, 0x41, 0x40, 0x40, 0x41, 0x41, 0x40, 0x40, 0x41, 0x41, 0x40, 0x41, 0x41, 0x 0x01, 0x01,

0x40

{}

/ * CRC-Wert für niedrige Bytes * /

statische Char auchCRCLo[] = {

0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4,

0x04, 0x0CC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD,

0x1D, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0xF7,

0x37, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26

0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0xA1, 0x63, 0xA3, 0xA2,

0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0xB

0x77, 0xB7, 0xB7, 0x Siehe auch: „Siehe, Siehe, Siehe,

Siehe auch: 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C,

0x5D, 0x9D, 0x5F, 0x9E, 0x5E, 0x5A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x88, 0x48, 0x49, 0x4B, 0x8B, 0x8A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4C, 0x8C, 0x8C,

0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80,

0x40

};

unsignierte Kurzform CRC16(puchmsg, usDataLen) Die / * - Funktion gibt CRC * /

unsigned char * puchMsg als unsigned short zurück. / * Nachricht für die Berechnung von CRC * /

unsigned short usDataLen/ * Anzahl der Bytes in der Nachricht * /
{ 
unsignierte... CRCHi = 0xFF;/ * hohe Initialisierung von CRC * /

unsignierte... CRCLo = 0xFF; / * CRC-Initialisierung mit niedrigen Byten * /

unsigned uIndex; / * CRC-Abfragetabellenindex * /

während (usDataLen - -)

{

/ * Vollständige den gesamten Nachrichtenpuffer * /

uIndex = uchCRCLo ^ * puchMsg++; / * CRC berechnet * /

|

uchCRCHi = auchCRCLo[uIndex];

}

return (uchCRCHi < 8| (d.h. mit dem Schlagwort);

}

Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.