1 Introduktion
Industriell utrustningskommunikation involverar vanligtvis en mängd olika hårdvaru- och mjukvaruprodukter, såväl som protokoll som används för att ansluta standarddatorplattformar (persondatorer eller arbetsstationer) till industriella automationsenheter. Följaktligen är de flesta automationsenheter utformade för att utföra enkla seriella kommandon som är kompatibla med standardserieportar som finns på persondatorer eller på tillägg-på seriella portkort. RS-232 är för närvarande det mest använda seriella gränssnittet inom PC- och industrikommunikationssektorerna. RS-232 definieras som en enkel-standard utformad för att utöka kommunikationsavstånden vid seriell kommunikation med låg hastighet. Eftersom RS-232 delar en gemensam signaljord mellan sändaren och mottagaren kan den inte använda differentialsignaler; annars skulle common-mode-brus kopplas in i signalsystemet. RS-232-standarden anger ett maximalt avstånd på endast 15 m och en maximal signalöverföringshastighet på 20 kbit/s.
CAN, förkortning för "Controller Area Network", är en av de mest använda fältbussarna internationellt. Ett enda nätverk som består av CAN-bussar begränsas av de elektriska egenskaperna hos nätverkshårdvaran. Som en multi-master seriell kommunikationsbuss kräver CAN:s grundläggande designspecifikationer höga bithastigheter och starkt motstånd mot elektromagnetiska störningar, samt förmågan att upptäcka eventuella fel som uppstår på kommunikationsbussen. Även när signalöverföringsavståndet når 10 km kan CAN fortfarande ge dataöverföringshastigheter på upp till 50 kbit/s. Tabell 1 visar förhållandet mellan det maximala överföringsavståndet mellan två godtyckliga noder på en CAN-buss och deras bithastigheter.
Maximalt avstånd mellan två valfria noder i en triangulär konfiguration i ett CAN-busssystem
Bithastighet/kbps 1000 500 250 125 100
Maximalt avstånd/m 40 130 270 530 620
Bithastighet (kbps) 50 20 10 5
Maximalt avstånd (m) 1300 3300 6700 10000
Som kan ses är CAN-bussen en överlägsen seriell buss till RS-232 vad gäller realtidsprestanda, anpassningsförmåga, flexibilitet och tillförlitlighet. När två seriella enheter är placerade långt ifrån varandra och inte kan anslutas direkt via RS-232, kan RS-232 konverteras till CAN för att uppnå nätverkssammankoppling av de seriella enheterna via CAN-bussen.
RS-232 och CAN skiljer sig dock avsevärt när det gäller spänningsnivåer och ramformat. Speciellt:
RS-232-standarden använder negativ logik och definierar vilken spänningsnivå som helst mellan +3V och +15V som en logisk "0" och alla spänningsnivåer mellan -3V och -15V som en logisk "1". CAN-signaler, å andra sidan, överförs med differentialspänning. De två signallinjerna kallas "CAN_H" och "CAN_L." I statiskt tillstånd är båda ungefär 2,5V; detta tillstånd representeras som en logisk "1" och kallas också för "recessiv". När CAN_H är högre än CAN_L representerar den en logisk "0", känd som "dominant". I det dominerande tillståndet är de typiska spänningsvärdena: CAN_H=3.5V, CAN_L=1.5V;
Ramformatet för RS-232 serieporten är: en startbit, åtta databitar, en programmerbar nionde bit (som fungerar som adress/databit för både sändning och mottagning) och en stoppbit. CAN-dataramformatet består av: ramhuvud + ID + data (som kan delas upp i två format: standardramar och utökade ramar).
Därför kräver konstruktionen en mikrokontroller för att utföra konverteringar såsom nivå- och ramformatkonverteringar. Konverteringsprocessen visas i figur 1.
2 Hårdvarudesign för RS-232-till-CAN-konvertering
Vid utformningen av RS-232-till-CAN-konverteringsenheten används mikrokontrollern AT89C52 som mikroprocessor; SJA1000 används som CAN-mikrokontroller. SJA1000 integrerar det fysiska lagret och datalänkslagerfunktionerna i CAN-protokollet och kan passivt hantera inramningen av kommunikationsdata; AT82C250 fungerar som gränssnittet mellan CAN-styrenheten och den fysiska bussen, vilket ger differentiell överföringskapacitet för bussen och differentiell mottagningskapacitet för CAN-styrenheten. Tre olika driftlägen (hög-hastighet, lutning och standby) kan väljas via stift 3 på AT82C250. När stift 3 är jordat, arbetar enheten i höghastighetsläge; höghastighets optisk isolering implementeras med 6N137, som förhindrar störningar från externa signaler; MAX232 används för att omvandla 232-nivåsignaler till TTL-nivåer för mikrokontrollerns gränssnittschip. För specifika detaljer om hårdvarugränssnittskretsar, se relevanta resurser för SJA1000; ytterligare förklaring ges inte här. Följande punkter bör dock noteras.
(1) Ett 120Ω-motstånd är anslutet i båda ändarna av CAN-bussen för att matcha bussimpedansen, vilket förbättrar immuniteten mot störningar och tillförlitligheten för datakommunikation. I praktiken är det dock tillräckligt att säkerställa att shuntmotståndet mellan "CAN_H" och "CAN_L" i CAN-nätverket är 60Ω.
(2) Pin 20 (RX1) på SJA1000 kan jordas när den inte används (se mjukvarudesignen för det specifika skälet); i kombination med inställning av bit CDR.6 kan detta öka busslängden avsevärt.
(3) Anslutningsmetoden för stiften TX0 och TX1 bestämmer nivån på serieutgången. Se inställningarna i Output Control Register (OCR) för specifik information.
(4) Ett lutningsmotstånd är anslutet mellan RS-stiftet på AT82C250 och jord. Resistansvärdet kan justeras på lämpligt sätt baserat på bussens kommunikationshastighet, vanligtvis från 16 kΩ till 140 kΩ.
(5) MAX232 kräver fyra elektrolytiska kondensatorer-C1, C2, C3 och C4 - som också används för intern effektomvandling. Alla har en klassificering på 1 μF/25 V; Tantalkondensatorer rekommenderas, och de bör placeras så nära chippet som möjligt. En 0,1 μF frånkopplingskondensator måste anslutas mellan VCC-strömförsörjningen och jord.
3 Mjukvarudesign för RS-232 till CAN-konvertering
Under mikroprocessorkontroll kan användning av seriell portmottagning och CAN-avbrott under datautbyte mellan RS-232 och CAN förbättra drifteffektiviteten. Huvudprogrammets flödesschema visas i figur 2. SJA1000 kan endast initieras i återställningsläge; detta inkluderar i första hand inställning av driftläge, klockdelning och acceptansfilterregister, konfigurering av baudhastighetsparametrar och inställning av avbrottsaktiveringsregistret.
Huruvida data kan överföras korrekt beror också på överföringshastigheten och flödeskontrollen, vilket är aspekter som inte kan förbises under mjukvarudesign. Följande avsnitt kommer därför att fokusera på konfiguration av CAN-överföringshastighet, automatisk detektering av serieports överföringshastigheter och dataflödeskontroll för serieportar.

3.1 Ställa in CAN-filterhastigheten
En av nyckelelementen i CAN-protokollet är baudhastigheten. Användare kan ställa in positionen för bitsamplingspunkterna inom bitperioden och antalet sampel, så att de fritt kan optimera nätverksprestanda för sina applikationer. Under denna optimeringsprocess måste emellertid uppmärksamhet ägnas åt förhållandet mellan toleransen för referensoscillatorn som används för bittidsparametrar och utbredningsfördröjningarna för olika signaler inom systemet.
Systemets bithastighet, fBil, representerar antalet databitar som överförs per tidsenhet, dvs baudhastigheten fBit=1/tBit. Den nominella bittimingen består av tre icke-överlappande segment: SYNC_SEG, TSEG1 och TSEG2. Dessa tre tidssegment betecknas som tSYNC_SEG, tTSEG1 respektive tTSEG2. Därför är den nominella bitperioden tBit summan av dessa tre tidssegment.
tBit=tSYNC_SEG + tTSEG1 + tTSEG2
Inom bitperioden uttrycks dessa segment i termer av heltalsmultiplar av en grundläggande tidsenhet. Denna tidsenhet kallas tidskvoten (TQ), och varaktigheten av en tidskvot är en cykel av CAN-systemklockan (tSCL), som härleds från oscillatorns klockperiod (tCLK). CAN-systemklockan kan justeras genom att programmera förskalningsfaktorn (förinställt värde för baudhastighet, BRP). Speciellt:
tSCL=BRP × 2tCLK=2BPR/fCLK
Ett annat mycket viktigt tidsintervall för CAN-bittimingsberäkningar är synkroniseringshoppbredden (SJW), som har en varaktighet på tSJW. SJW-segmentet är inte en del av bitcykeln; snarare definierar den det maximala antalet TQ med vilka bitcykeln förlängs eller förkortas under en omsynkroniseringshändelse. Dessutom tillåter CAN-protokollet användare att specificera bitsamplingsläget (SAM), som kan vara antingen enkel-sampelläge eller tre-sampelläge (välj ett resultat från tre sampel). I enkel-sampelläge är samplingspunkten i slutet av TSEG1-segmentet. I tre-sampelläge tas ytterligare två samplingspunkter jämfört med enstaka-sampelläge; dessa är placerade före slutet av TSEG1-segmentet, åtskilda av en TQ.

BPR, SJW, SAM, TESG1 och TESG2 som nämns ovan kan alla definieras av användaren via de interna registren BTR0 och BTR1 i CAN-styrenheten. Detaljerna visas i figur 3. Efter att BTR0 och BTR1 har ställts in är det faktiska överföringshastighetsintervallet:
Maximalt=1/(tBit - tSJW), minsta=1/(tBit + tSJW)
3.2 Serieport Baud Rate Detection
När en seriell enhet fungerar som värd, om du behöver detektera serieportens baudhastighet för konverteringsenheten vid den tidpunkten, kan du först ställa in värdens mottagningshastighet (9600 baud, till exempel) och skicka ett specifikt tecken (en vagnretur, till exempel) från terminalen. På detta sätt kan värden bestämma kommunikationsöverföringshastigheten för omvandlingsanordningen baserat på den mottagna teckeninformationen. ASCII-värdet för vagnreturtecknet är 0DH; de värden som tas emot vid olika baudhastigheter listas i tabell 2.
Byte som tas emot med olika överföringshastigheter
Baudhastighet (bit/s) Mottagna byte (hexadecimal) Baudhastighet (bit/s) Mottagna byte (hexadecimal)
1200 80 4800 E6
1800 F0 9600 0D
2400 78 19200 F*
3.3 Seriell port flödeskontroll
Termen "flöde" som används här syftar på dataflöde. Dataförlust sker ofta under överföring mellan två seriella portar. Eftersom mikrokontrollerns buffert har begränsad kapacitet, om bufferten är full när data tas emot, kommer all data som fortsätter att skickas vid den tidpunkten att gå förlorad. Flödeskontroll löser effektivt detta problem: när den mottagande änden inte kan behandla data i tid, skickar flödeskontrollsystemet en "mottag ej"-signal, vilket gör att sändningsänden slutar sända tills den får en "återuppta sändning"-signal. Därför hanterar flödeskontroll dataöverföringsprocessen och förhindrar dataförlust. De två vanligaste typerna av flödeskontroll är hårdvaruflödeskontroll (inklusive RTS/CTS, DTR/CTS, etc.) och mjukvaruflödeskontroll (XON/XOFF-fortsätt/stopp). Följande förklaring fokuserar enbart på hårdvaruflödeskontrollmetoden med RTS/CTS.
När man använder hårdvara för flödeskontroll ansluts RTS- och CTS-stiften på den seriella terminalen till mikrokontrollerns I/O-portar, och start/stoppsignaler tas emot och sänds genom att ställa in I/O-portarna till 1 eller 0. Dataterminalutrustningen (som en dator) använder RTS för att initiera dataströmmen som skickas av mikrokontrollern, medan CTS-mikrokontrollern använder datorn för att starta och pausa datorn. För att implementera denna hårdvaruhandskakningsmetod ställs en flagga på hög-nivå och en flagga på låg-nivå in under programmering baserat på storleken på den mottagande bufferten. När mängden data i bufferten når den höga-nivåtröskeln, sätts CTS-linjen vid den mottagande änden låg (logisk 0). När programmet i sändningsänden upptäcker att CTS är låg, slutar det att sända data tills mängden data i mottagningsbufferten faller under tröskelvärdet för låg-nivå och CTS är högt inställt. RTS används för att indikera om den mottagande enheten är redo att ta emot data.
3.4 KAN ta emot subrutin
PeliCAN-formatet stöder både standard- och utökade ramar. CAN-läget kan konfigureras med CDR.7 i klockdelarregistret (0 för BasicCAN, 1 för PeliCAN). Vid mottagning av CAN-data används FF-biten i raminformationen för att bestämma om det är en standardram eller utökad ram, och RTR-biten används för att skilja mellan en fjärrram och en dataram. Följande är CAN-mottagningssubrutinen:
;//////////////////////////////////////////////////////////////////
;//CAN-datamottagning/förenad till ett ramformat med ett 2-byte-ID//
;///////////////////////////////////////////////////////////////////////
ÅTERTAG:
MOV R0, #C_RE ; Startadress för mikrokontrollerns interna buffert
MOV DPTR, #RXBUF ; Läs och spara innehållet i mottagningsbufferten
MOVX A, @DPTR ; Läs den andra byten i CAN-bufferten
MOV @R0, A ; Spara
JB ACC.7, EFF_RE ; FF-bit: 0=SFF, 1=EFF
MOV R2, #0
SJMP SFF_RE ; Beroende på ID-numret varierar positionen där "databyten" fångas
EFF_RE: MOV R2, #2
SFF_RE: MOV R2, #2
SFF_RE:
JB ACC.6, EXIT_RECAN ; Kontrollera RTR-biten; om 1 (fjärrram), hoppa ut
ANL A, #0FH
MOV R3, A; Vid denna punkt representerar de mittersta 4 bitarna datalängden
MOV C_NUM, A ; Lagra längden på den mottagna ramen i R3 och R5
RDATA0:
INC DPTR ; 2-byte ID
INC R0
MOVX A, @DPTR
MOV @R0, A
INC DPTR
MOVX A, @R0, A
INC DPTR
MOVX A, @DPTR
MOV @R0, A
MOV A, R2; Om EFF, hoppa över två-byte-ID
JZ DRATA1
INC DPTR
INC DPTR
DATA1: ; Databytes
INC DPTR
INC R0
MOVX A, @DPTR
MOV @R0, A
DJNZ R3, RDATA1
EXIT_RECAN:
RÖTA
4 Slutsats
Miniatyriseringen av datorer har gett de nödvändiga förutsättningarna för intelligent utveckling av mät- och kontrollinstrument, vilket gör det möjligt för mikroprocessorbaserade-terminalenheter att ha överlägsen digital kommunikationskapacitet. Med framväxten av ett ökande antal smarta terminaler ställs högre krav på nätverksarkitektur, protokoll, realtidsprestanda, såväl som tillämpbarhet, flexibilitet, tillförlitlighet och till och med kostnad. Följaktligen har fältbusstekniken ett stort löfte för framtida utveckling. Ramstrukturen för CAN-bussen inkluderar en identifierare (ID), som gör det möjligt att ha flera nätverksvärdar inom ett enhetsnätverk; det vill säga genom dessa nätverksvärdar kan driftstatusen för hela enhetsnätverket övervakas och motsvarande kontrollbeslut kan fattas. Denna enhet har nu utvecklats fullt ut och har uppnått utmärkta resultat i praktiska tillämpningar.




