Implementering af en omfattende motorbeskyttelsesenhed ved hjælp af RS-485 seriel kommunikation og Modbus-protokol

Jan 04, 2026 Læg en besked

1 Indledning

 

Mikrocontrollere anvendes i stigende grad i automatiserede kontrolenheder, mikroprocessor-baserede integrerede beskyttelsessystemer til elnet og andre industrielle automationskontrolområder, hvor kompleksiteten af ​​disse enheder vokser støt. For at imødekomme realtids-, multi-kravene til udviklingsmål, bliver den enkelte-CPU, enkelt-udviklermodel erstattet af en samarbejdstilgang, der involverer flere CPU'er af forskellige typer og flere udviklere. Dette nye udviklingsparadigme introducerer en kritisk udfordring: standardisering af hardware og software til informationsudveksling mellem CPU'er under implementering. Denne standardisering er afgørende for den vellykkede indførelse af denne nye model. Blandt talrige kommunikationsmetoder er den UART-baserede RS-485 seriel kommunikationsprotokol udbredt på grund af dens enkle ledningsføring, høje pålidelighed og evne til at understøtte flere CPU'er. Med hensyn til softwarekommunikationsprotokoller tilbyder Modbus-protokollen betydelige fordele for brugerne på grund af dens universelle natur og modne fejlfindingssoftware. Under udviklingen af ​​den nye omfattende motorbeskyttelsesenhed blev RS-485 seriel kommunikationsmetode og Modbus kommunikationsprotokol derfor vedtaget for at opnå data- og kontrolkommandoinformationsudveksling mellem flere CPU'er. For at forbedre effektiviteten og koordineringen af ​​seriel kommunikation implementerede forfatteren adskillige foranstaltninger i kommunikationsmekanismens hardware- og softwarearkitektur og opnåede fremragende resultater. Under systemkommunikationsfejlretningsfasen blev der anvendt en metode, hvor hvert CPU-modul først kommunikerede med standard Modbus-testsoftware, før de undergik gensidig sammenkoblingsfejlfinding, hvilket væsentligt forbedrede den kollaborative udviklingseffektivitet. Praksis har bevist, at denne designfilosofi forenkler systemstrukturen, mens den i høj grad forbedrer enhedens driftseffektivitet og pålidelighed.


2 funktioner i motorens omfattende beskyttelsesenhed


Ud over omfattende beskyttelsesfunktioner integrerer motorbeskyttelsesenheden måle-, fjernstyrings- og kommunikationsmuligheder. Dens store-skærm med kinesiske karakterer LCD-skærm muliggør en bruger-venlig grænseflade. Ved at bruge CAN-buskommunikation med overvågningsværten danner den et undersystem i et hierarkisk, distribueret understationsautomatiseringssystem. For at optimere systemfunktionaliteten til dets multi-krav, blev en multi-CPU-arkitektur vedtaget. Én CPU håndterer periodisk pulssampling og transmission; CPU-hovedmodulet styrer databehandling, elektrisk parameterberegning, fejldiagnose og koblingsoperationer; mens kortmodulets CPU overvåger menneskelig-maskininteraktion og letter kommunikationen med hovedbeskyttelsesmodulet og overvågningsværten. Hvert CPU-modul har klart definerede opgaver, hvilket letter samarbejdende udvikling af flere ingeniører under implementeringen. Seriel kommunikation forbinder hoved-CPU'en og panel-CPU'en, hvilket muliggør menneskelig{11}}maskineinteraktion og indtager dermed en kritisk position. Etablering af en rationel kommunikationsmekanisme er kernen i den serielle kommunikationssektion, der bestemmer kommunikationskoordinering og fejlfindingseffektivitet under de senere stadier af systemudvikling.


3 Introduktion til kommunikationsmekanismer

 

3.1 Hardwaredesign af kommunikationsmekanisme

Den kommunikationsmekanisme, der foreslås for dette system, sigter mod høj effektivitet og pålidelighed. RS-485 anvender en halv-dupleksstruktur, som ofte er mere praktisk end fuld duplex i feltapplikationer. Her anvendes en forenklet forbindelse med kun to signallinjer. Systemgrænsefladekredsløbsdiagrammet er vist i figur 1. TTL-logiske niveauer, der udsendes af 8051-mikrocontrolleren på hovedbeskyttelsesmodulet, er optisk isoleret og konverteres derefter til RS-495-niveauer af MAX485-chippen. Efterfølgende konverterer MAX485-chippen på panelmodulet disse tilbage til TTL-logiske niveauer til aflæsning af 8031-mikrocontrolleren. På 8051-mikrocontrollersiden styrer pin P2.7 på parallel I/O-port 2 MAX-indgangsaktiveringsbenet RE og outputaktiveringsbenet DE. Som vist i figur 1, når P2.7 udsender et højt niveau, er RE aktiveret, hvilket gør det muligt for mikrocontrollersiden at modtage data. Når P2.7 udsender et lavt niveau, er DE aktiveret, hvilket gør det muligt for mikrocontrollersiden at transmittere data. Denne tilgang forhindrer datatab på grund af overlapning forårsaget af blind transmission, hvilket sikrer høj kommunikationskvalitet og pålidelig transmissionshastighed.

采用RS-485串行通信和Modbus通信协议实现电动机综合保护装置的设计

 

3.2 Kommunikationsprotokol

 

For at sikre nøjagtig datatransmission mellem to moduler i beskyttelsesenheden er et sæt specifikationer, der styrer informationsoverførsel,-inklusive transmissionstilstande, dataformater og indhold-. Dette udgør protokollen eller kommunikationsprotokollen. Uden let tilgængelig, moden debugging-software fungerer hoved-CPU-modulet i det væsentlige som en sort boks, hvilket fører til adskillige og vanskelige-at-udfordringer under systemintegrationstestning. Derfor blev den bredt anvendte Modbus-kommunikationsprotokol valgt og forenklet for at passe til enhedens specifikke krav, hvilket muliggør vellykket inter-modulkommunikation med dokumenteret effektivitet. Modbus anvender en master-slave-kommunikationsmodel. Masteren sender først en kommunikationsanmodningskommando til slaven. Slaven svarer derefter til masteren med data baseret på funktionskoden i anmodningskommandoen. Hver slave har en unik adresse. Både anmodningsframes sendt af masteren og svarframes sendt af slaven begynder med slavens adresse. Slaver læser kun kommandoer adresseret til dem selv og ignorerer beskeder, der starter med andre slaveadresser. Denne funktionalitet implementeres ved hjælp af den serielle 8051-ports tilstand 2 eller tilstand 3. Denne kommunikationsmodel for spørgsmål-og-svar forbedrer kommunikationsnøjagtigheden væsentligt. RTU-transmissionstilstanden for Modbus er overtaget i denne enhed.


4 Foranstaltninger til at forbedre kommunikationspålidelighed


De sidste to bytes af en Modbus-meddelelse tjener som kontrolsumbytes. RTU-kommunikation anvender CRC-16 cyklisk redundanstjek til fejldetektion. Dens kodnings-/afkodningsmekanisme er relativt enkel med en lav fejlrate, der kan opnås gennem beregnings- eller programmeringsmetoder. Flere tilgange er skitseret nedenfor:


4.1 Grundlæggende algoritme (manuel beregning)


Brug af CRC16-CCITT som et eksempel: CRC-kontrolsummen er 16 bit, og det genererende polynomium er 17 bit. Antag, at datastrømmen er 4 bytes: BYTE, BYTE, BYTE, BYTE[0];


Skift datastrømmen til venstre med 16 bit, og udvide den effektivt med en faktor på 256×256. Udfør derefter division med generatorpolynomiet 0x11021 ved hjælp af ikke-lånende division (svarende til bitvis XOR). Den resulterende rest er CRC-kontrolsummen. Den transmitterede datastrøm består af 6 bytes: BYTE, BYTE, BYTE, BYTE[0], CRC, CRC[0].


4.2 Computeralgoritme 1 (Bit-Type Algorithm)


1) Placer de øverste 16 bit (BYTE, BYTE) af den udvidede datastrøm (6 bytes) i et 16-bit register;

2) Hvis den mest signifikante bit af registeret er 1, skal du flytte registeret til venstre med én bit (opnå den mindst signifikante bit fra den næste byte), og derefter udføre en XOR-operation med den forenklede form af generatorpolynomiet; ellers skal du blot flytte registeret til venstre med én bit (for at opnå den mindst signifikante bit fra den næste byte);

3) Gentag trin 2, indtil hele datastrømmen (6 bytes) er flyttet ind i registeret;

4) Værdien i registret er CRC checksum CRC, CRC[0].

 

4.3 Computeralgoritme 2 (Byte-Typealgoritme) (256^n angiver 256 hævet til n)

 

Repræsenter den byte-ordnede datastrøm som et matematisk polynomium. Lad datastrømmen være BYTE[n] BYTE[n-1] BYTE[n-2] ... BYTE[0] er repræsenteret som det matematiske udtryk

BYTE[n] × 256^n + BYTE[n-1] × 256^(n-1) + ... + BYTE × 256 + BYTE[0], hvor "+" angiver XOR-operationen. Lad generatorpolynomiet være G17 (17-bit), så er CRC-koden CRC16.

CRC16=(BYTE[n] × 256^n + BYTE[n-1] × 256^(n-1) + ... + BYTE × 256 + BYTE[0]) × 256^2 / G17

Dette involverer at flytte datastrømmen til venstre med 16 bit og derefter dividere med generatorpolynomiet G17.

Afledning viser, at CRC-kontrolkoden for BYTE[n-1] er lig med XOR-resultatet af de øverste 8 bits af den foregående bytes CRC-kontrolkode Y[n] (YH8[n]) og den aktuelle byte BYTE[n-1].


Algoritmen af ​​byte-type er som følger:


1) Initialiser CRC-registergruppen til alle "0" (0x0000).

2) Skift CRC-registergruppen 8 bit til venstre og gem den i CRC-registergruppen.

3) Udfør en XOR-operation mellem den oprindelige CRC-registergruppes høje 8 bits (forskyttet 8 bits til højre) og databyten for at opnå et indeks, der peger på værditabellen.

4) Udfør en XOR-operation mellem tabelværdien, der peges på af indekset og CRC-registergruppen.

5) Forøg datamarkøren. Hvis databehandlingen ikke er fuldført, gentag trin 2).

6) Få CRC.

 

5 foranstaltninger til at forbedre kommunikationseffektiviteten

 

5.1 Separate kommunikationsmodtagelses- og transmissionsopgaver


8051 mikrocontrolleren kan transmittere og modtage data via den serielle port ved hjælp af interrupts. Den serielle port-controller SCON understøtter initialisering og bitadressering. Når en seriel port afbrydelsesanmodning opstår, låser de to nederste bit af SCON sende- og modtageafbrydelserne. Når CPU'en skriver data eller et tegn til den serielle ports sendebuffer SUBF (instruktion: MOV SUBF, A), begynder senderen at sende. Efter at have fuldført én dataramme, sætter hardwaren TI-flaget til "1", hvilket indikerer, at den serielle port anmoder om en afbrydelse fra CPU'en for at sende den næste dataramme. Tilsvarende, hvis den serielle portmodtager er aktiveret til modtagelse, efter modtagelse af en dataramme, sættes RI-flaget til 1, hvilket indikerer, at den serielle port anmoder om en afbrydelse fra CPU'en for at læse data fra modtagedatabufferen.


5.2 Reduktion af afbrydelsesvarighed


Da der anvendes flere interrupts i softwarearkitekturdesignet, for at sikre pålidelig programdrift og minimere sandsynligheden for konflikter mellem forskellige opgaver, bør softwareimplementeringen stræbe efter at strømline opgaverne for forskellige interrupts og forkorte deres udførelsestid. Inden for kommunikationsafbrydelsesunderrutinen skal du udføre væsentlige opgaver ved indtastning af afbrydelsen, såsom: sletning af de tilsvarende statusbits i det serielle portkontrolregister, læsning af modtagne tegn eller skrivning af tegn, der skal transmitteres fra/til bufferen, forøgelse af antallet af modtagne eller transmitterede tegn, osv. Afslut derefter afbrydelsen med det samme. Andre opgaver, såsom validering af rammer, svar på modtagne rammekommandoer (telemetri/telekommando) og forberedelse af transmissionsrammer, bør håndteres i hovedprogrammet.


5.3 Effektiv rammetermineringsdetektion for at forhindre kommunikationsstagnation


Anvendelse af en dedikeret softwaretimer til at detektere slutningen af ​​en modtaget ramme forhindrer kommunikationsopgaver i at blive hængende, hvis en ramme modtages ufuldstændigt, hvilket sikrer rettidig modtagelse af efterfølgende billeder. Da tidsintervallet mellem bytes inden for en frame er meget kortere end frame-til-frame-intervallet, startes softwaretimeren, hver gang en ny byte modtages. Timeren er indstillet til det mindste interval mellem frame-til-frame. Dette interval varierer med forskellige baudrate. Hvis den næste byte modtages før den forudindstillede tid udløber, indikerer det, at rammen er ufuldstændig, og timeren genstarter. Hvis timeren tæller ned til den forudindstillede tid, udløser den det tilsvarende afbrydelsesnummer. Inden for timerafbrydelsesunderrutinen indstilles rammeslutflagbyten, hvilket betyder, at rammemodtagelsen er fuldført. Efter at masterprogrammet har registreret en fuldførelse af rammemodtagelse, validerer det rammens integritet ved at verificere slaveadressen og cyklisk redundanstjek (CRC) byte. Hvis det bekræftes som en gyldig ramme beregnet til masteren, behandler den rammekommandoen baseret på dens funktionskode og forbereder sig på at sende en ramme. Når slaven modtager en forkert besked, sender den en fejlramme tilbage. Hvis den modtagne besked har en forkert CRC, kan slaven vælge ikke at svare. Hvis masteren ikke modtager et svar fra slaven inden for den angivne tid, vil den genudsende anmodningsmeddelelsen. Hvis flere retransmissioner ikke modtager et svar fra slaven, rapporteres en kommunikationsfejl.


5.4 Bestemmelse af kommunikationshastighed


Da alle enheder befinder sig i det samme chassis, er afstanden mellem modulerne minimal. Modbus fungerer på RS485 til kommunikation på lang-afstand, hvilket eliminerer behovet for at overveje afstandseffekter på baudhastigheden. Desuden forhindrer master-slave-kommunikationstilstanden linjeoverbelastning. Ud fra kommunikationseffektivitetens perspektiv, så længe den indstillede baudhastighed ikke overstiger den maksimale baudhastighedsgrænse for den chip, der anvendes i modulet, resulterer en højere baudhastighed i hurtigere informationsudveksling og højere kommunikationseffektivitet. Indstilling af baudhastigheden til at være nøjagtig den samme for begge kommunikationsparter sikrer, at den modtagende ende sampler hver databit ved midtpunktet af bitcyklussen, hvorved der opnås pålidelig kommunikation.


5.5 Rimelige fejlfindingsmetoder


Under debugging skal du først teste kommunikationen mellem hvert CPU-modul og mikrocomputeren via RS485/RS232-datakonverteringsmodulet. Efter vellykket individuel testning skal du fortsætte til inter-modul-fejlfinding, hvilket væsentligt forbedrer den overordnede fejlfindingseffektivitet. Under modul-til-computerkommunikationsfejlfinding anvender computeren Modbus-fejlfindingssoftware til at simulere masterens kommunikationsproces, idet den aktivt anmoder om information fra slaven. Dette gør hele modtage- og transmissionsprocessen gennemsigtig og klar, hvilket muliggør rettidig løsning af modulproblemer. Under fælles debugging observerer busovervågningssoftware data fra begge sider for hurtigt at identificere og løse problemer.

 

6 innovationspunkter i dette papir


For det første vedtager dette papir Modbus, en universel industriel standard, i beskyttelsesenheden. Den nødvendige værktøjssoftware kan fås direkte fra relevante websteder uden at pådrage sig omkostninger til intellektuel ejendom. For det andet implementerer beskyttelsesenheden multitasking og bruger Modbus-protokollen til at skabe en rimelig fælles debugging-mekanisme mellem CPU-moduler, hvilket i høj grad forbedrer effektiviteten af ​​kollaborativ systemudvikling.

Send forespørgsel

whatsapp

Telefon

E-mail

Undersøgelse