1 Introducció
La comunicació d'equips industrials normalment implica una gran varietat de productes de maquinari i programari, així com protocols utilitzats per connectar plataformes informàtiques estàndard (ordinadors personals o estacions de treball) a dispositius d'automatització industrial. En conseqüència, la majoria de dispositius d'automatització estan dissenyats per executar ordres sèrie senzilles que són compatibles amb els ports sèrie estàndard que es troben als ordinadors personals o als complements-a les targetes de port sèrie. RS-232 és actualment la interfície sèrie més utilitzada en els sectors de PC i comunicacions industrials. RS-232 es defineix com un estàndard-únic dissenyat per ampliar les distàncies de comunicació en comunicacions sèrie de baixa velocitat. Com que RS-232 comparteix un senyal comú de terra entre el transmissor i el receptor, no pot utilitzar senyals diferencials; en cas contrari, el soroll de mode comú s'acoblaria al sistema de senyal. L'estàndard RS-232 especifica una distància màxima de només 15 m i una velocitat màxima de transmissió del senyal de 20 kbit/s.
CAN, abreviatura de "Controller Area Network", és un dels bus de camp més utilitzats a nivell internacional. Una única xarxa composta per bus CAN està limitada per les característiques elèctriques del maquinari de la xarxa. Com a bus de comunicació sèrie multi-mestre, les especificacions bàsiques de disseny de CAN requereixen velocitats de bits elevades i una forta resistència a les interferències electromagnètiques, així com la capacitat de detectar qualsevol error que es produeixi al bus de comunicació. Fins i tot quan la distància de transmissió del senyal arriba als 10 km, CAN encara pot proporcionar velocitats de transmissió de dades de fins a 50 kbit/s. La taula 1 mostra la relació entre la distància màxima de transmissió entre dos nodes qualsevol d'un bus CAN i les seves velocitats de bits.
Distància màxima entre dos nodes qualsevol en una configuració triangular en un sistema de bus CAN
Velocitat de bits/kbps 1000 500 250 125 100
Distància màxima/m 40 130 270 530 620
Velocitat de bits (kbps) 50 20 10 5
Distància màxima (m) 1300 3300 6700 10000
Com es pot veure, el bus CAN és un bus sèrie superior a RS-232 en termes de rendiment en temps real, adaptabilitat, flexibilitat i fiabilitat. Quan dos dispositius sèrie es troben lluny i no es poden connectar directament mitjançant RS-232, RS-232 es pot convertir a CAN per aconseguir la interconnexió de xarxa dels dispositius sèrie mitjançant el bus CAN.
Tanmateix, RS-232 i CAN difereixen significativament pel que fa als nivells de tensió i als formats de fotogrames. Concretament:
L'estàndard RS-232 utilitza lògica negativa, definint qualsevol nivell de tensió entre +3V i +15V com a "0" lògic i qualsevol nivell de tensió entre -3V i -15V com a "1" lògic. Els senyals CAN, en canvi, es transmeten mitjançant tensió diferencial. Les dues línies de senyal s'anomenen "CAN_H" i "CAN_L". En estat estàtic, tots dos són aproximadament 2,5 V; aquest estat es representa com un "1" lògic i també es coneix com "recessiu". Quan CAN_H és superior a CAN_L, representa un "0" lògic, conegut com a "dominant". En l'estat dominant, els valors de voltatge típics són: CAN_H=3.5V, CAN_L=1.5V;
El format de trama per al port sèrie RS-232 és: un bit d'inici, vuit bits de dades, un novè bit programable (que serveix d'adreça/bit de dades tant per a la transmissió com per a la recepció) i un bit de parada. El format de trama de dades CAN consta de: capçalera de trama + ID + dades (que es poden dividir en dos formats: trames estàndard i fotogrames ampliats).
Per tant, el disseny requereix un microcontrolador per realitzar conversions com ara conversions de nivell i format de fotograma. El procés de conversió es mostra a la figura 1.
2 Disseny de maquinari per a la conversió de RS-232 a CAN
En dissenyar el dispositiu de conversió RS-232{-a-CAN, s'utilitza el microcontrolador AT89C52 com a microprocessador; el SJA1000 s'utilitza com a microcontrolador CAN. El SJA1000 integra la capa física i les funcions de la capa d'enllaç de dades del protocol CAN i pot gestionar de manera passiva l'enquadrament de dades de comunicació; L'AT82C250 serveix com a interfície entre el controlador CAN i el bus físic, proporcionant capacitat de transmissió diferencial per al bus i capacitat de recepció diferencial per al controlador CAN. Es poden seleccionar tres modes de funcionament diferents (-alta velocitat, control de pendent i espera) mitjançant el pin 3 de l'AT82C250. Quan el pin 3 està connectat a terra, el dispositiu funciona en mode d'alta velocitat; l'aïllament òptic d'alta velocitat s'implementa mitjançant el 6N137, que evita interferències de senyals externs; El MAX232 s'utilitza per convertir senyals de 232 nivells a nivells TTL per al xip d'interfície del microcontrolador. Per obtenir detalls específics del circuit d'interfície de maquinari, consulteu els recursos rellevants per al SJA1000; aquí no es proporciona cap explicació addicional. Tanmateix, cal tenir en compte els punts següents.
(1) Es connecta una resistència de 120Ω als dos extrems del bus CAN per adaptar-se a la impedància del bus, millorant així la immunitat a les interferències i la fiabilitat de la comunicació de dades. A la pràctica, però, n'hi ha prou amb assegurar-se que la resistència de derivació entre "CAN_H" i "CAN_L" a la xarxa CAN és de 60Ω.
(2) El pin 20 (RX1) de l'SJA1000 es pot connectar a terra quan no s'utilitza (vegeu el disseny del programari per a la raó específica); quan es combina amb el bit de configuració CDR.6, això pot augmentar significativament la longitud del bus.
(3) El mètode de connexió dels pins TX0 i TX1 determina el nivell de la sortida sèrie. Consulteu la configuració del registre de control de sortida (OCR) per obtenir detalls específics.
(4) Es connecta una resistència de pendent entre el pin RS de l'AT82C250 i la terra. El valor de la resistència es pot ajustar adequadament en funció de la velocitat de comunicació del bus, que normalment oscil·la entre 16 kΩ i 140 kΩ.
(5) El MAX232 requereix quatre condensadors electrolítics-C1, C2, C3 i C4, que també s'utilitzen per a la conversió d'energia interna. Tots tenen una classificació d'1 μF/25 V; Es recomanen condensadors de tàntal i s'han de col·locar el més a prop possible del xip. S'ha de connectar un condensador de desacoblament de 0,1 μF entre la font d'alimentació del VCC i la terra.
3 Disseny de programari per a la conversió RS-232 a CAN
Sota el control del microprocessador, l'ús de la recepció del port sèrie i les interrupcions CAN durant l'intercanvi de dades entre RS-232 i CAN pot millorar l'eficiència operativa. El diagrama de flux del programa principal es mostra a la figura 2. El SJA1000 només es pot inicialitzar en mode de reinici; això inclou principalment la configuració del mode de funcionament, la divisió del rellotge i els registres del filtre d'acceptació, la configuració dels paràmetres de velocitat en baudis i la configuració del registre d'habilitació d'interrupcions.
Que les dades es puguin transmetre amb precisió també depèn de la velocitat de transmissió i el control de flux, que són aspectes que no es poden passar per alt durant el disseny del programari. Per tant, les seccions següents es centraran en la configuració de la velocitat en baudis CAN, la detecció automàtica de les velocitats en baudis del port sèrie i el control del flux de dades del port sèrie.

3.1 Configuració de la taxa de filtre CAN
Un dels elements clau del protocol CAN és la velocitat de transmissió. Els usuaris poden establir la posició dels punts de mostreig de bits dins del període de bits i el nombre de mostres, cosa que els permet optimitzar lliurement el rendiment de la xarxa per a les seves aplicacions. Tanmateix, durant aquest procés d'optimització, s'ha de parar atenció a la relació entre la tolerància de l'oscil·lador de referència utilitzat per als paràmetres de temporització de bits i els retards de propagació de diferents senyals dins del sistema.
La velocitat de bits del sistema, fBil, representa el nombre de bits de dades transmesos per unitat de temps, és a dir, la velocitat de transmissió fBit=1/tBit. La temporització de bits nominal consta de tres segments no-superposats: SYNC_SEG, TSEG1 i TSEG2. Aquests tres segments de temps es denoten com a tSYNC_SEG, tTSEG1 i tTSEG2, respectivament. Per tant, el període de bit nominal tBit és la suma d'aquests tres segments de temps.
tBit=tSYNC_SEG + tTSEG1 + tTSEG2
Dins del període de bits, aquests segments s'expressen en termes de múltiples enters d'una unitat de temps bàsica. Aquesta unitat de temps s'anomena quota de temps (TQ) i la durada d'una quota de temps és un cicle del rellotge del sistema CAN (tSCL), que es deriva del període de rellotge de l'oscil·lador (tCLK). El rellotge del sistema CAN es pot ajustar programant el factor de preescalador (valor preestablert de velocitat en baudis, BRP). Concretament:
tSCL=BRP × 2tCLK=2BPR/fCLK
Un altre interval de temps molt important per als càlculs de temporització de bits CAN és l'amplada de salt de sincronització (SJW), que té una durada de tSJW. El segment SJW no forma part del cicle de bits; més aviat, defineix el nombre màxim de TQ pel qual s'estén o s'escurça el cicle de bits durant un esdeveniment de resincronització. A més, el protocol CAN permet als usuaris especificar el mode de mostreig de bits (SAM), que pot ser el mode de mostra única-o el mode de mostra de tres-(seleccionant un resultat entre tres mostres). En el mode de mostra única-, el punt de mostreig es troba al final del segment TSEG1. En el mode de tres-mostra, es prenen dos punts de mostreig addicionals en comparació amb el mode de-mostra única; aquests es troben abans del final del segment TSEG1, separats per un TQ.

Els BPR, SJW, SAM, TESG1 i TESG2 esmentats anteriorment poden ser definits per l'usuari mitjançant els registres interns BTR0 i BTR1 del controlador CAN. Els detalls es mostren a la figura 3. Després d'establir BTR0 i BTR1, l'interval de velocitat en baudios real és:
Màxim=1/(tBit - tSJW), mínim=1/(tBit + tSJW)
3.2 Detecció de velocitat en baudis del port sèrie
Quan un dispositiu sèrie actua com a host, si necessiteu detectar la velocitat en baudis del port sèrie del dispositiu de conversió en aquell moment, primer podeu establir la velocitat de recepció de l'amfitrió (9600 baudis, per exemple) i enviar un caràcter específic (un retorn de carro, per exemple) des del terminal. D'aquesta manera, l'amfitrió pot determinar la velocitat de comunicació del dispositiu de conversió en funció de la informació de caràcters rebuda. El valor ASCII del caràcter de retorn de carro és 0DH; els valors rebuts a diferents velocitats en baudis es mostren a la taula 2.
Bytes rebuts a diferents velocitats de transmissió
Velocitat en baudis (bit/s) Bytes rebuts (hexadecimal) Velocitat en baudis (bit/s) Bytes rebuts (hexadecimal)
1200 80 4800 E6
1800 F0 9600 0D
2400 78 19200 F*
3.3 Control de flux del port sèrie
El terme "flux" utilitzat aquí fa referència al flux de dades. La pèrdua de dades sovint es produeix durant la transmissió entre dos ports sèrie. Com que la memòria intermèdia del microcontrolador té una capacitat limitada, si la memòria intermèdia està plena quan es reben dades, es perdran totes les dades que es continuïn enviant en aquest moment. El control de flux resol eficaçment aquest problema: quan l'extrem receptor no pot processar les dades a temps, el sistema de control de flux envia un senyal de "no rebre", fent que l'extrem emissor deixi de transmetre fins que rep un senyal de "reprendre la transmissió". Per tant, el control de flux gestiona el procés de transmissió de dades i evita la pèrdua de dades. Els dos tipus de control de flux que s'utilitzen habitualment són el control de flux de maquinari (incloent-hi RTS/CTS, DTR/CTS, etc.) i el control de flux de programari (XON/XOFF-continua/atura). L'explicació següent se centra únicament en el mètode de control de flux de maquinari mitjançant RTS/CTS.
Quan s'utilitza maquinari per al control de flux, els pins RTS i CTS del terminal sèrie es connecten als ports d'E/S del microcontrolador i els senyals d'inici/parada es reben i es transmeten configurant els ports d'E/S a 1 o 0. L'equip terminal de dades (com un ordinador) utilitza RTS per iniciar el flux de dades enviat pel microcontrolador, mentre que el microcontrolador fa servir el flux de dades CTS des de l'ordinador. Per implementar aquest mètode de connexió de maquinari, durant la programació s'estableixen un indicador de-nivell alt i un indicador de nivell- baix en funció de la mida de la memòria intermèdia de recepció. Quan la quantitat de dades a la memòria intermèdia arriba al llindar de nivell-alt, la línia CTS a l'extrem receptor es posa a un nivell baix (0 lògic). Quan el programa a l'extrem de la transmissió detecta que el CTS és baix, deixa de transmetre dades fins que la quantitat de dades a la memòria intermèdia de recepció cau per sota del llindar de nivell-baix i el CTS s'estableix en alt. RTS s'utilitza per indicar si el dispositiu receptor està preparat per rebre dades.
3.4 Subrutina de recepció de CAN
El format PeliCAN admet marcs estàndard i ampliats. El mode CAN es pot configurar mitjançant CDR.7 al registre divisor del rellotge (0 per BasicCAN, 1 per PeliCAN). Quan es reben dades CAN, el bit FF de la informació de trama s'utilitza per determinar si és una trama estàndard o ampliada, i el bit RTR s'utilitza per distingir entre una trama remota i una trama de dades. La següent és la subrutina de recepció de CAN:
;//////////////////////////////////////////////////////////////////
;//Recepció de dades CAN/Unificada en un format de marc amb un ID de 2 bytes//
;///////////////////////////////////////////////////////////////////////
RECAN:
MOV R0, #C_RE ; Adreça inicial de la memòria intermèdia interna del microcontrolador
MOV DPTR, #RXBUF ; Llegiu i deseu el contingut del buffer de recepció
MOVX A, @DPTR ; Llegiu el segon byte de la memòria intermèdia CAN
MOV @R0, A ; Desa
JB ACC.7, EFF_RE ; Bit FF: 0=SFF, 1=EFF
MOV R2, #0
SJMP SFF_RE ; En funció del número d'identificació, la posició on es captura el "byte de dades" varia
EFF_RE: MOV R2, #2
SFF_RE: MOV R2, #2
SFF_RE:
JB ACC.6, EXIT_RECAN ; Comproveu el bit RTR; si 1 (marc remot), salta
ANL A, #0FH
MOV R3, A ; En aquest punt, els 4 bits centrals representen la longitud de les dades
MOV C_NUM, A ; Emmagatzema la longitud de la trama rebuda a R3 i R5
RDATA0:
INC DPTR ; ID de 2 bytes
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 ; Si EFF, ometeu l'ID de dos-bytes
JZ DRATA1
INC DPTR
INC DPTR
DADES1: ; Bytes de dades
INC DPTR
INC R0
MOVX A, @DPTR
MOV @R0, A
DJNZ R3, RDATA1
EXIT_RECAN:
RET
4 Conclusió
La miniaturització dels ordinadors ha proporcionat les condicions necessàries per al desenvolupament intel·ligent d'instruments de mesura i control, la qual cosa ha permès que els dispositius terminals basats en microprocessador{0}} posseeixin capacitats de comunicació digital superiors. Amb l'aparició d'un nombre creixent de terminals intel·ligents, s'estan imposant més exigències a l'arquitectura de la xarxa, els protocols, el rendiment-en temps real, així com l'aplicabilitat, la flexibilitat, la fiabilitat i fins i tot el cost. En conseqüència, la tecnologia de bus de camp és una gran promesa per al desenvolupament futur. L'estructura de trama del bus CAN inclou un identificador (ID), que permet tenir múltiples hosts de xarxa dins d'una xarxa de dispositius; és a dir, a través d'aquests amfitrions de xarxa, es pot controlar l'estat operatiu de tota la xarxa del dispositiu i es poden prendre les decisions de control corresponents. Aquest dispositiu s'ha desenvolupat completament i ha aconseguit excel·lents resultats en aplicacions pràctiques.




