Progettazione di applicazioni per la conversione da RS-a CAN utilizzando la tecnologia fieldbus

Jun 27, 2026 Lasciate un messaggio

1 Introduzione


La comunicazione delle apparecchiature industriali coinvolge tipicamente un'ampia varietà di prodotti hardware e software, nonché protocolli utilizzati per connettere piattaforme informatiche standard (personal computer o workstation) a dispositivi di automazione industriale. Di conseguenza, la maggior parte dei dispositivi di automazione sono progettati per eseguire semplici comandi seriali compatibili con le porte seriali standard presenti sui personal computer o sulle schede di porta seriale aggiuntive-. RS-232 è attualmente l'interfaccia seriale più utilizzata nei settori dei PC e delle comunicazioni industriali. RS-232 è definito come uno standard-ended progettato per estendere le distanze di comunicazione nella comunicazione seriale a bassa velocità. Poiché RS-232 condivide una massa del segnale comune tra trasmettitore e ricevitore, non può utilizzare segnali differenziali; in caso contrario, il rumore di modo comune si accoppierebbe nel sistema di segnale. Lo standard RS-232 specifica una distanza massima di soli 15 me una velocità di trasmissione massima del segnale di 20 kbit/s.


CAN, abbreviazione di "Controller Area Network", è uno dei bus di campo più utilizzati a livello internazionale. Una singola rete composta da bus CAN è limitata dalle caratteristiche elettriche dell'hardware di rete. Essendo un bus di comunicazione seriale multi-master, le specifiche di progettazione di base del CAN richiedono velocità in bit elevate e una forte resistenza alle interferenze elettromagnetiche, nonché la capacità di rilevare eventuali errori che si verificano sul bus di comunicazione. Anche quando la distanza di trasmissione del segnale raggiunge i 10 km, CAN può comunque fornire velocità di trasmissione dati fino a 50 kbit/s. La tabella 1 mostra la relazione tra la distanza di trasmissione massima tra due nodi qualsiasi su un bus CAN e le rispettive velocità in bit.

 

Distanza massima tra due nodi qualsiasi in una configurazione triangolare in un sistema CAN Bus

Velocità in bit/kbps 1000 500 250 125 100

Distanza massima/m 40 130 270 530 620

Velocità in bit (kbps) 50 20 10 5

Distanza massima (m) 1300 3300 6700 10000


Come si può vedere, il bus CAN è un bus seriale superiore a RS-232 in termini di prestazioni in tempo reale, adattabilità, flessibilità e affidabilità. Quando due dispositivi seriali si trovano distanti e non possono essere collegati direttamente tramite RS-232, RS-232 può essere convertito in CAN per ottenere l'interconnessione di rete dei dispositivi seriali tramite il bus CAN.


Tuttavia, RS-232 e CAN differiscono notevolmente in termini di livelli di tensione e formati di frame. Nello specifico:


Lo standard RS-232 utilizza la logica negativa, definendo qualsiasi livello di tensione tra +3V e +15V come uno "0" logico e qualsiasi livello di tensione tra -3 V e -15 V come un "1" logico. I segnali CAN vengono invece trasmessi utilizzando la tensione differenziale. Le due linee di segnale si chiamano "CAN_H" e "CAN_L". Nello stato statico entrambi sono a circa 2,5 V; questo stato è rappresentato come un "1" logico e viene anche definito "recessivo". Quando CAN_H è maggiore di CAN_L, rappresenta uno "0" logico, noto come "dominante". Nello stato dominante i valori tipici della tensione sono: CAN_H=3.5V, CAN_L=1.5V;

 

Il formato del frame per la porta seriale RS-232 è: un bit di inizio, otto bit di dati, un nono bit programmabile (che funge da indirizzo/bit di dati sia per la trasmissione che per la ricezione) e un bit di stop. Il formato del frame di dati CAN è composto da: intestazione del frame + ID + dati (che possono essere suddivisi in due formati: frame standard e frame estesi).

基于现场总线实现RS-232到CAN转换的应用设计Pertanto, il progetto richiede che un microcontrollore esegua conversioni come conversioni di livello e formato frame. Il processo di conversione è mostrato nella Figura 1.

 

2 Progettazione hardware per la conversione da RS-a CAN


Nella progettazione del dispositivo di conversione da RS-232-a-CAN, il microcontrollore AT89C52 viene utilizzato come microprocessore; l'SJA1000 viene utilizzato come microcontrollore CAN. L'SJA1000 integra le funzioni del livello fisico e del livello di collegamento dati del protocollo CAN e può gestire passivamente l'inquadramento dei dati di comunicazione; L'AT82C250 funge da interfaccia tra il controller CAN e il bus fisico, fornendo capacità di trasmissione differenziale per il bus e capacità di ricezione differenziale per il controller CAN. È possibile selezionare tre diverse modalità operative (alta-velocità, controllo pendenza e standby) tramite il pin 3 dell'AT82C250. Quando il pin 3 è collegato a terra, il dispositivo funziona in modalità ad alta velocità; l'isolamento ottico ad alta velocità è implementato utilizzando il 6N137, che previene le interferenze provenienti da segnali esterni; Il MAX232 viene utilizzato per convertire i segnali di livello 232 in livelli TTL per il chip di interfaccia del microcontrollore. Per dettagli specifici sul circuito di interfaccia hardware, fare riferimento alle risorse pertinenti per SJA1000; qui non vengono fornite ulteriori spiegazioni. Tuttavia, è opportuno tenere presente i seguenti punti.


(1) Ad entrambe le estremità del bus CAN è collegata una resistenza da 120 Ω per adattarla all'impedenza del bus, migliorando così l'immunità alle interferenze e l'affidabilità della comunicazione dei dati. In pratica è tuttavia sufficiente garantire che la resistenza di shunt tra "CAN_H" e "CAN_L" nella rete CAN sia di 60 Ω.


(2) Il pin 20 (RX1) dell'SJA1000 può essere messo a terra quando non in uso (vedere la progettazione del software per il motivo specifico); se combinato con l'impostazione del bit CDR.6, ciò può aumentare significativamente la lunghezza del bus.


(3) Il metodo di connessione dei pin TX0 e TX1 determina il livello dell'uscita seriale. Fare riferimento alle impostazioni nel Registro di controllo dell'uscita (OCR) per dettagli specifici.


(4) Un resistore di pendenza è collegato tra il pin RS dell'AT82C250 e la terra. Il valore della resistenza può essere regolato opportunamente in base alla velocità di comunicazione del bus, tipicamente compreso tra 16 kΩ e 140 kΩ.


(5) Il MAX232 richiede quattro condensatori elettrolitici-C1, C2, C3 e C4, utilizzati anche per la conversione dell'alimentazione interna. Tutti hanno un valore nominale di 1 μF/25 V; Si consigliano condensatori al tantalio e dovrebbero essere posizionati il ​​più vicino possibile al chip. È necessario collegare un condensatore di disaccoppiamento da 0,1 μF tra l'alimentazione VCC e la terra.


3 Progettazione del software per la conversione da RS-232 a CAN


Sotto il controllo del microprocessore, l'utilizzo della ricezione della porta seriale e degli interrupt CAN durante lo scambio di dati tra RS-232 e CAN può migliorare l'efficienza operativa. Il diagramma di flusso del programma principale è mostrato nella Figura 2. L'SJA1000 può essere inizializzato solo in modalità reset; ciò include principalmente l'impostazione della modalità operativa, della divisione dell'orologio e dei registri del filtro di accettazione, la configurazione dei parametri della velocità di trasmissione e l'impostazione del registro di abilitazione dell'interruzione.

 

La precisione della trasmissione dei dati dipende anche dalla velocità di trasmissione e dal controllo del flusso, aspetti che non possono essere trascurati durante la progettazione del software. Pertanto, le sezioni seguenti si concentreranno sulla configurazione della velocità di trasmissione CAN, sul rilevamento automatico delle velocità di trasmissione della porta seriale e sul controllo del flusso di dati della porta seriale.

info-1-1

 

3.1 Impostazione della velocità di filtraggio CAN


Uno degli elementi chiave del protocollo CAN è il baud rate. Gli utenti possono impostare la posizione dei punti di campionamento dei bit all'interno del periodo di bit e il numero di campioni, consentendo loro di ottimizzare liberamente le prestazioni della rete per le loro applicazioni. Tuttavia, durante questo processo di ottimizzazione, è necessario prestare attenzione al rapporto tra la tolleranza dell'oscillatore di riferimento utilizzato per i parametri di temporizzazione dei bit e i ritardi di propagazione dei diversi segnali all'interno del sistema.


Il bit rate del sistema, fBil, rappresenta il numero di bit di dati trasmessi per unità di tempo, ovvero il baud rate fBit=1/tBit. La temporizzazione in bit nominale è composta da tre segmenti non- sovrapposti: SYNC_SEG, TSEG1 e TSEG2. Questi tre segmenti temporali sono indicati rispettivamente come tSYNC_SEG, tTSEG1 e tTSEG2. Pertanto, il periodo di bit nominale tBit è la somma di questi tre segmenti temporali.


tBit=tSYNC_SEG + tTSEG1 + tTSEG2


All'interno del periodo di bit, questi segmenti sono espressi in termini di multipli interi di un'unità di tempo di base. Questa unità di tempo è chiamata quota temporale (TQ) e la durata di una quota temporale è un ciclo dell'orologio del sistema CAN (tSCL), che deriva dal periodo dell'orologio dell'oscillatore (tCLK). L'orologio del sistema CAN può essere regolato programmando il fattore prescaler (valore preimpostato della velocità di trasmissione, BRP). Nello specifico:


tSCL=BRP × 2tCLK=2BPR/fCLK


Un altro intervallo di tempo molto importante per i calcoli della temporizzazione dei bit CAN è l'ampiezza del salto di sincronizzazione (SJW), che ha una durata di tSJW. Il segmento SJW non fa parte del ciclo di bit; piuttosto, definisce il numero massimo di TQ di cui il ciclo di bit viene esteso o accorciato durante un evento di risincronizzazione. Inoltre, il protocollo CAN consente agli utenti di specificare la modalità di campionamento bit (SAM), che può essere la modalità a singolo-campione o la modalità a tre-campioni (selezionando un risultato da tre campioni). Nella modalità campione singolo-, il punto di campionamento si trova alla fine del segmento TSEG1. Nella modalità a tre-campioni, vengono presi due punti di campionamento aggiuntivi rispetto alla modalità a-campione singolo; questi si trovano prima della fine del segmento TSEG1, separati da un TQ.

 

info-1-1

I valori BPR, SJW, SAM, TESG1 e TESG2 sopra menzionati possono tutti essere definiti dall'utente tramite i registri interni BTR0 e BTR1 del controller CAN. I dettagli sono mostrati nella Figura 3. Dopo aver impostato BTR0 e BTR1, l'intervallo di velocità di trasmissione effettivo è:
Massimo=1/(tBit - tSJW), Minimo=1/(tBit + tSJW)

 

3.2 Rilevamento della velocità di trasmissione della porta seriale


Quando un dispositivo seriale funge da host, se in quel momento è necessario rilevare la velocità di trasmissione della porta seriale del dispositivo di conversione, è possibile prima impostare la velocità di trasmissione in ricezione dell'host (9600 baud, ad esempio) e inviare un carattere specifico (un ritorno a capo, ad esempio) dal terminale. In questo modo l'host può determinare la velocità di trasmissione della comunicazione del dispositivo di conversione in base alle informazioni sui caratteri ricevute. Il valore ASCII del carattere di ritorno a capo è 0DH; i valori ricevuti a diverse velocità di trasmissione sono elencati nella Tabella 2.


Byte ricevuti a velocità di trasmissione diverse


Baud rate (bit/s) Byte ricevuti (esadecimale) Baud rate (bit/s) Byte ricevuti (esadecimale)


1200 80 4800 E6

1800 F0 9600 0D

2400 78 19200 F*


3.3 Controllo del flusso della porta seriale


Il termine "flusso" qui utilizzato si riferisce al flusso di dati. La perdita di dati si verifica spesso durante la trasmissione tra due porte seriali. Poiché il buffer del microcontrollore ha una capacità limitata, se il buffer è pieno durante la ricezione dei dati, tutti i dati che continuano ad essere inviati in quel momento andranno persi. Il controllo del flusso risolve efficacemente questo problema: quando l'estremità ricevente non può elaborare i dati in tempo, il sistema di controllo del flusso invia un segnale "non ricevere", facendo sì che l'estremità mittente interrompa la trasmissione finché non riceve un segnale "riprendi trasmissione". Pertanto, il controllo del flusso gestisce il processo di trasmissione dei dati e previene la perdita di dati. I due tipi di controllo di flusso comunemente utilizzati sono il controllo di flusso hardware (inclusi RTS/CTS, DTR/CTS, ecc.) e il controllo di flusso software (XON/XOFF-continua/interrompi). La seguente spiegazione si concentra esclusivamente sul metodo di controllo del flusso hardware utilizzando RTS/CTS.


Quando si utilizza l'hardware per il controllo del flusso, i pin RTS e CTS del terminale seriale sono collegati alle porte I/O del microcontrollore e i segnali di avvio/arresto vengono ricevuti e trasmessi impostando le porte I/O su 1 o 0. L'apparecchiatura terminale dati (come un computer) utilizza RTS per avviare il flusso di dati inviato dal microcontrollore, mentre il microcontrollore utilizza CTS per avviare e mettere in pausa il flusso di dati dal computer. Per implementare questo metodo di handshake hardware, durante la programmazione vengono impostati un flag di livello alto-e un flag di livello basso-in base alla dimensione del buffer di ricezione. Quando la quantità di dati nel buffer raggiunge la soglia di livello alto-, la linea CTS all'estremità ricevente viene impostata su basso (0 logico). Quando il programma all'estremità trasmittente rileva che CTS è basso, interrompe la trasmissione dei dati finché la quantità di dati nel buffer di ricezione non scende al di sotto della soglia di livello basso- e CTS viene impostato su alto. RTS viene utilizzato per indicare se il dispositivo ricevente è pronto a ricevere dati.


3.4 Subroutine di ricezione CAN


Il formato PeliCAN supporta sia i frame standard che quelli estesi. La modalità CAN può essere configurata utilizzando CDR.7 nel registro del divisore dell'orologio (0 per BasicCAN, 1 per PeliCAN). Quando si ricevono dati CAN, il bit FF nelle informazioni del frame viene utilizzato per determinare se si tratta di un frame standard o esteso e il bit RTR viene utilizzato per distinguere tra un frame remoto e un frame di dati. Quella che segue è la subroutine di ricezione CAN:

 

;//////////////////////////////////////////////////////////////////

;//Ricezione dati CAN/Unificato in un formato frame con un ID a 2 byte//

;///////////////////////////////////////////////////////////////////////

 

RICONDIZIONARE:

MOV R0, #C_RE ; Indirizzo iniziale del buffer interno del microcontrollore

MOV DPTR, #RXBUF ; Leggere e salvare il contenuto del buffer di ricezione

MOVX A, @DPTR ; Leggere il secondo byte del buffer CAN

MOV @R0, A ; Salva

JB ACC.7, EFF_RE ; Bit FF: 0=SFF, 1=EFF

MOV R2, #0

SJMP SFF_RE ; A seconda del numero ID varia la posizione in cui viene catturato il "byte di dati".

EFF_RE: MOV R2, #2

SFF_RE: MOV R2, #2

SFF_RE:

JB ACC.6, ESCI_RECAN ; Controllare il bit RTR; se 1 (frame remoto), salta fuori

ANL A, #0FH

MOV R3, A; A questo punto, i 4 bit centrali rappresentano la lunghezza dei dati

MOV C_NUM, A ; Memorizza la lunghezza del frame ricevuto in R3 e R5

RDATA0:

INC DPTR ; ID a 2 byte

INCR0

MOVX A, @DPTR

MOV @R0, A

INC DPTR

MOVX A, @R0, A

INC DPTR

MOVX A, @DPTR

MOV @R0, A

MOV A, R2; Se EFF, salta i due-ID byte

JZ DRATA1

INC DPTR

INC DPTR

DATI1: ; Byte di dati

INC DPTR

INCR0

MOVX A, @DPTR

MOV @R0, A

DJNZ R3, RDATA1

ESCI_RECAN:

RET

 

4 Conclusione


La miniaturizzazione dei computer ha fornito le condizioni necessarie per lo sviluppo intelligente di strumenti di misurazione e controllo, consentendo ai dispositivi terminali basati su microprocessore- di possedere capacità di comunicazione digitale superiori. Con l'emergere di un numero crescente di terminali intelligenti, vengono poste esigenze sempre più elevate in termini di architettura di rete, protocolli, prestazioni in tempo reale-, nonché applicabilità, flessibilità, affidabilità e persino costi. Di conseguenza, la tecnologia dei bus di campo rappresenta una grande promessa per lo sviluppo futuro. La struttura del frame del bus CAN include un identificatore (ID), che rende possibile avere più host di rete all'interno di una rete di dispositivi; cioè, attraverso questi host di rete, è possibile monitorare lo stato operativo dell'intera rete di dispositivi e prendere le corrispondenti decisioni di controllo. Questo dispositivo è stato ormai completamente sviluppato e ha ottenuto ottimi risultati nelle applicazioni pratiche.

Invia la tua richiesta

whatsapp

Telefono

Posta elettronica

Inchiesta