strumenti:moduli:canopen

BUS di campo CANopen

1. Segnalazioni

ERR LEDStateDescriptionCategoryNote
OFFNo errorQuando il dispositivo è in runobbligatorio
BLINKINGInvalid configurationErrore di configurazione generaleopzionaleAvviene quando c'è un problema hw come il mancato riconoscimento delle schede I/O del modulo oppure come l'errore nella lettura dello stato dei dip-switch di configurazione (ID e velocità CAN)
SINGLE FLASHWarning limit reachedQuando uno dei contatori del CAN controller supera il warning levelobbligatorio
DOUBLE FLASHError control eventQuando avviene un guard event o un heartbeat eventobbligatorio
TRIPLE FLASHSync errorQuando il SYNC non viene ricevuto entro il communication cycle period(H)Obbligatorio se supportato obj 1006H altrimenti opzionaleL'object 1006H è supportato ma non gestito l'errore dalla libreria. O lo togliamo o dobbiamo implementarne noi la gestione FIXME
ONBus offAttivo quando il CAN controller va in BUS OFFobbligatorio
RUN LEDStateDescriptionCategoryNote
BLINKINGPRE-OPERATIONALIl modulo è nello stato PRE-OPERATIONALobbligatorio
ONOPERATIONALIl modulo è nello stato OPERATIONALobbligatorioOK

2. Predefined Communication Objects

Descrive il tipo di dispositivo e la sua funzionalità:

IndexObject codeNameData typeDescription
1000HVar Device typeUnsigned32Profilo device

Significato dei bits:

Additional Information General Information
Specific functionality I/O functionality Device profile number
31 2423 1615 0
401 (191H)

I/O functionality

Funzionalità input/output: 15 (0Fh)

23-20 19 18 17 16
riservati Uscite analogiche Ingressi analogici Uscite digitali Ingressi digitali

1 = la funzione è implementata

0 = la funzione non è implementata

Specific functionality:

Non implementata

E' il nome del produttore del dispositivo:

IndexObject codeNameData typeDescription
1008Hvar Manufacturer device name stringnome del produttore
'm' 'e' 'Q'
31 2423 1615 87 0
MSB LSB

E' la versione hardware del dispositivo:

IndexObject codeNameData typeDescription
1009Hvar Manufacturer hardware version stringversione hardware del dispositivo
'D' '1' 'C' 'M'
31 2423 1615 87 0
MSB LSB
IndexObject codeNameData typeDescription
100AHvar Manufacturer software version stringversione software del dispositivo
'1' '0' '1' '0'
31 2423 1615 87 0
MSB LSB

3. PDO Mapping

4. Manufacturer Configuration SDO

Il valori acquisiti dagli ingressi analogici possono essere adeguatamente filtrati tramite un filtro RC digitale del quale è possibile specificare la costante di tempo per ciascuno degli ingressi suddetti. Gli elementi del dizionario sono:

IndexObject codeNameData typeDescription
2200HArrayDigital filter time constantUnsigned16Costante di tempo del filtro RC espressa in ms
2201HArraySensor/Measure typeUnsigned8Tipo di sensore e/o misura:
0 —→ temperatura con termocoppia tipo J
1 —→ temperatura con termocoppia tipo K
2 —→ temperatura con PT100
3 —→ conducibilità
4 —→ resistività
5 —→ Redox
6 —→ PH
2203hArrayCalibration point numberUnsigned8E' il numero di punti di calibrazione (impostando 0 la funzione di calibrazione viene esclusa)
2204hArrayCalibration point 1 raw valueUnsigned16E' il valore dell'ingresso analogico espresso in bit del 1° punto di calibrazione
2205hArrayCalibration point 1 measure valueUnsigned16E' il valore dell'ingresso analogico espresso in unità di misura del 1° punto di calibrazione
2206hArrayCalibration point 2 raw valueUnsigned16E' il valore dell'ingresso analogico espresso in bit del 2° punto di calibrazione
2207hArrayCalibration point 2 measure valueUnsigned16E' il valore dell'ingresso analogico espresso in unità di misura del 2° punto di calibrazione
2208hArrayCalibration point 3 raw valueUnsigned16E' il valore dell'ingresso analogico espresso in bit del 3° punto di calibrazione
2209hArrayCalibration point 3 measure valueUnsigned16E' il valore dell'ingresso analogico espresso in unità di misura del 3° punto di calibrazione
220AhArrayCalibration point 4 raw valueUnsigned16E' il valore dell'ingresso analogico espresso in bit del 4° punto di calibrazione
220BhArrayCalibration point 4 measure valueUnsigned16E' il valore dell'ingresso analogico espresso in unità di misura del 4° punto di calibrazione
IndexObject codeNameData typeDescription
2210hArrayCostante di cellaUnsigned8E' la costante di cella del sensore di misura di conducibilità:
0 —→ 10 cm
1 —→ 1 cm
2 —→ 0.1 cm
3 —→ 0.01 cm
4 —→ 5 cm
2211hArrayRisoluzione misura
di conducibilità
Unsigned8E' l'unità di misura scelta per il valore di conducibilità:
0 —→ uS/1000
1 —→ uS/100
2 —→ uS/10
3 —→ uS
4 —→ mS/100
5 —→ mS/10
6 —→ mS
2212hArrayCoefficiente di termocompensazioneUnsigned16Valore del coefficiente di termocompensazione espresso in %/°C. Impostando 0 si esclude la termocompensazione.
2213hArrayTemperatura di riferimentoUnsigned16E' la temperatura di riferimento per la termocompensazione.
2214hArrayFrequenza segnale comando cellaUnsigned16Valore di frequenza del segnale AC di comando della cella espresso in Hz.
2215hArrayPosizione campionamento misura conducibilitàUnsigned16E' la posizione del campionamento della misura di conducibilità all'interno del semiperiodo del campionamento:
0 —→ 50%
1 —→ 10%
2 —→ 90%

4.1.1.1 Costanti di cella e unità di misura ammesse

uS/1000 us/100 uS/10 uS mS/100 mS/10 mS
K=10
K=5
K=1
K=0.1
K=0.01

4.1.1.2 Procedura di calibrazione elettrochimica

La misura di conducibilità prevede una calibrazione a 2 punti che permette di compensare gli errori introdotti dalla resistività del cavo di collegamento e dall'errore della costante di cella. Lasciare la cella in aria ed escludere la calibrazione impostando l'OD 2203H al valore 0, il valore dell'ingresso analogico sarà espresso in bit. Impostare il valore in bit dell'ingresso analogico x.AIxx nell'OD 2204H ed impostare 0 nell'OD 2205H. Immergere la cella in una soluzione di conducibilità nota, attendere la stabilizzazione della misura e poi impostare il valore in bit dell'ingresso analogico nell'OD 2206H. Successivamente impostare il valore di conducibilità della soluzione nell'OD 2207H. Infine, riabilitare la calibrazione impostando l'OD 2203H al valore 2.

Se gli ingressi analogici sono associati a sensori per la misura di temperatura (RTD, PT100, Termocoppie,…) il valore dell'ingresso analogico (6401H) letto è espresso in decimi di °C.

I misuratori di frequenza sono configurabili per mezzo di una serie di parametri. Gli elementi del dizionario corrispondenti a tali parametri sono:

IndexObject codeNameData typeDescription
3000hArrayRead Frequency/DutyUnsigned16Valore misurato di frequenza o duty cycle (a seconda del valore del parametro “Capture Mode” 3005 h).
3001hArraySample Time (ms)Unsigned8Tempo di campionamento della frequenza. E' l'intervallo di tempo, espresso in ms, ogni quale viene fornito un nuovo valore della misura di frequenza. Questo è valido per frequenze superiori all'inverso di questo parametro, per frequenze inferiori il dato viene fornito ogni inverso della frequenza del segnale di ingresso. Si consiglia di utilizzare valori uguali o superiori a 20ms.
3002hArrayMinimum FrequencyUnsigned32Valore minimo della frequenza rilevabile espresso in mHz; al di sotto di tale valore il valore misurato vale 0. Inoltre, l'inverso di tale valore, determina il tempo necessario affinchè, in assenza segnale di ingresso, venga rilevata una frequenza pari a 0.
3003hArrayMaximum FrequencyUnsigned32Valore massimo della frequenza rilevabile espresso in mHz.
3004hArrayFrequency resolutionUnsigned8Risoluzione della misura di frequenza:
0 —→ Hz
1 —→ dHz (Hz/10)
2 —→ cHz (Hz/100)
3 —→ mHz (Hz/1000)
3005hArrayCapture ModeUnsigned8Modalità di funzionamento:
0 —> acquisizione frequenza sul fronte di salita
1 —> acquisizione frequenza sul fronte di discesa
2 —> acquisizione duty cycle
3006hArrayMedian Filter typeUnsigned8Tipo di filtro mediano. Determina il numero di medie del filtro mediano per il filtraggio della misura. I valori disponibili sono:
0 —> filtro disabilitato
1 —> filtro a 3 medie
2 —> filtro a 5 medie
3 —> filtro a 7 medie
4 —> filtro a 9 medie
3007hArrayAcquisition filter Time ConstantUnsigned16Costante di tempo del filtro di acquisizione espressa in ms.
3008hArrayStabilization filter Time ConstantUnsigned16Costante di tempo del filtro di stabilizzazione espressa in ms.
3009hArrayDelta frequency for activation stabilization filterUnsigned32Valore massimo di variazione della frequenza, in un tempo pari a 5 costanti di tempo di acquisizione, per l'attivazione del filtro di stabilizzazione.

IndexObject codeNameData typeAccessDescription
5000HArrayCommunication speedUnsigned8RWVelocità di comunicazione:
0 —→ 4800
1 —→ 9600
2 —→ 19200
3 —→ 38400
4 —→ 57600
5 —→ 115200
5001HArrayData bitsUnsigned8RWNumero bit di dati:
7 bit
8 bit
5002HArrayStop bitsUnsigned8RWNumero bit di stop:
1 bit
2 bit
5003HArrayParityUnsigned8RWBit di parità:
0 —→ nessuna parità
1 —→ parità dispari
2 —→ parità pari
5004HArrayControl flowUnsigned8RWControllo di flusso:
0 —→ nessuno
1 —→ XON-XOFF
5005HArrayXON thresholdUnsigned16RWSoglia di XON. Il valore deve essere inferiore alla soglia XOFF (5006H)
5006HArrayXOFF thresholdUnsigned16RWSoglia di XOFF. Il valore deve essere superiore alla soglia XON (5005H) ed inferiore alla dimensione del buffer(5007H)
5007HArrayTx buffer sizeUnsigned16RODimensione del buffer di trasmissione
5008HArrayRx buffer sizeUnsigned16RODimensione del buffer di ricezione
5009HArrayMax read charUnsigned16RWE' il numero massimo di caratteri che si possono estrarre con una lettura dal buffer di ricezione (5011H)
500AHArrayEnd string num charsUnsigned8RWNumero di caratteri di silenzio per individuare il fine stringa. Impostando valore 0 la funzionalità di riconoscimento del fine stringa è disabilitata.
500BHArrayChars in Tx bufferUnsigned16RONumero di caratteri nel buffer di trasmissione
500CHArrayChars in Rx bufferUnsigned16RONumero di caratteri presenti nel buffer di ricezione
500DHArrayTransmit charsUnsigned16RWNumero di caratteri da trasmettere
500EHArrayControl WordUnsigned16RW
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Line BreakReset ErrorsFlushSendInit
Line Break
Se attivato pone la linea seriale in break (Tx pin allo stato alto).
Reset Errors
azzera gli eventuali errori di comunicazione.
Flush
Quando passa da 0 a 1 svuota le FIFO di trasmissione e ricezione.
Send
Quando passa da 0 a 1 attiva la trasmissione, sulla porta seriale, dei caratteri presenti sulla FIFO di trasmissione in numero pari a quelli impostati in trasmit chars (500DH). Se sempre attivo, la trasmissione inizia ogniqualvolta vengono scritti dei caratteri sul buffer di trasmissione (5010H). Nota: dopo una inizializzazione della comunicazione (passaggio da 0 a 1 del bit Init) la trasmissione viene abilitata solamente dopo un passaggio da 0 a 1 del bit Send.
Init
inizializza la comunicazione e svuota le FIFO di trasmissione e ricezione. E' necessario eseguire un Init ogniqualvolta si modifica un parametro di comunicazione come la velocità di comunicazione (5000H), i bit di dato (5001H), ecc.
500FHVarStatus WordUnsigned16RO
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
overunning error framing error parity error Breaking TX overflow RX overflow TXoff RXoff End stringFlushedToggle SendedSendedInitialized
overunning error
indica un errore di overrrun. Si azzera attivando il bit 3 della control word (Reset Errors).
framing error
indica un errore di framing. Si azzera attivando il bit 3 della control word (Reset Errors).
parity error
indica un errore di parità. Si azzera attivando il bit 3 della control word (Reset Errors).
Breaking
indica che la linea è in break.
TX overflow
indica che si è tentato di scrivere nel buffer di tramissione un numero di caratteri maggiore della dimensione del buffer stesso. In tal caso i caratteri in eccedenza vengono ignorati. Si azzera attivando il bit 3 della control word (Reset Errors).
RX overflow
indica che sono stati ricevuti caratteri dopo che la FIFO di ricezione era piena. Si azzera attivando il bit 3 della control word (Reset Errors).
TXoff
indica che la trasmissione è sospesa a causa della ricezione di un carattere di XOFF. Si azzera automaticamente quando viene ricevuto un carattere di XON.
RXoff
indica che il dispositivo seriale non è in grado di ricevere ulteriori caratteri. Si azzera automaticamente quando il numero di caratteri presenti nel buffer di ricezione diventa inferiore alla soglia di Xon (5006H).
End string
indica che è stata ricevuta una stringa. Questo bit è significativo solamente se End string num chars è diverso da zero. Si azzera quando viene effettuata una lettura dal buffer di ricezione(5010H) oppure quando viene eseguito il comando di flush (passaggio da 0 a 1 del bit Flush della control word).
Flushed
Si attiva ad indicare che il comando di flush è stato eseguito. Si disattiva dopo una scrittura di uno o più caratteri sul buffer di trasmissione (5010H).
Toggle Sended
cambia il suo stato ogniqualvolta vengono scritti dei caratteri sul buffer di trasmissione(5010H).
Sended
indica che i caratteri impostati in trasmit chars (500DH) sono stati trasmessi sulla porta seriale. Si azzera disattivando il bit 1 della control word (Send) oppure, con tale bit sempre attivo, quando viene effettuata una scrittura di caratteri nel buffer di trasmissione.
Initialized
indica che la porta seriale è stata inizializzata correttamente.
5010HVarTransmit FIFOstringRW
5011HVarReceive FIFOstringRO

E' possibile catturare il valore dei contatori presenti mediante attivazione di ingresso di interrupt. Gli elementi del dizionario interessati sono:

Index Object code Name Data type Access Description
2401H Array Count Signed16 RO Conteggio
2402H Array Line Captured count Signed16 RO Conteggio catturato per linea d'interrupt
2403H Integer Line Capture enable mask Unsigned16 RW Abilitazione cattura conteggio
2404H Integer Line Edge capture Unsigned16 RW Fronte impulso cattura conteggio
2405H Integer Line Status Unsigned16 RO Stato linea d'interrupt
2406H Array Counter to be captured Unsigned8 RW Numero contatore da catturare
per linea d'interrupt
2407H Integer Captured Count Signed16 RO Conteggio catturato
2408H Integer Int. line Captured count Unsigned8 RO Linea interrupt conteggio catturato

4.4.0.1 Utilizzo

Per poter utilizzare le linee d'interrupt remotate è necessario disporre di un modulo RMC QEM con il firmware abilitato per tale funzionalità. Attualmente i firmware abilitati sono:

RMC1S-1.0.4
RMC3M-1.0.7
RMC2M-1.0.12

Anche il firmware del controllore deve avere tale funzinalità abilitata. La release del firmware deve essere 7 o superiore (esempio 1P20F-20.7.1)

L'utilizzo di una linea d'interrupt remotata avviene in genere tramite un device il quale provvede all'impostazione di tutti i registri del dizionario sipra citati. La dichiarazione del device risulta essere per esempio:

BUS
	1	1K11F	30
	2	.	.
	3	1MG3F	.
	4	C401A	.

INTDEVICE
	local_CNT		COUNTER3	0008	3.CNT01	 1	X.X	X.X X.X
	remote_CNT		COUNTER3	0008	4.CNT01	 41	X.X	X.X X.X

Per ottenere il numero della linea d'interrupt da impostare nella configurazione del device è necessario moltiplicare per 10 il numero dello slot al quale il modulo RMC si riferisce e sommarci il numero della linea d'interrupt del modulo stesso. Nell'esempio, il device remote_CNT, utilizza la linea d'interrupt 1 del modulo RMC posto sullo slot 4.

L'impostazione dei valori corretti negli oggetti del dizionario sopracitati, viene eseguita automaticamente dal firmware. Per l'utilizzatore finale, è trasparente il fatto di utilizzare una linea d'interrupt locale o remotata.

Tutti i devices sono abilitati all'utilizzo della linea di interrupt su modulo RMC a parte il device RECDATA ed il device CAMMING3 che può usare la linea di interrupt su modulo RMC solo per la procedura di preset.

4.4.0.2 Limitazioni

  1. Il tempo di campionamento del device di conteggio o posizionamento deve essere uguale al tempo di campionamento del device CANOPEN.
  2. E'possibile, come già prima, catturare conteggi remotati con linee d'interrupt locali ma il funzionamento non è “preciso” poichè il conteggio non viene letto nell'istante di cattura.
  3. Il numero massimo di linee d'interrupt per ogni slave è 9.
  4. Il numero più alto dello SLOT sul quale è possibile collegare un modulo con la cattura impulso di zero è l'11.
  5. L'associazione conteggio↔linea d'interrupt nel modulo RMC è fissa per il momento (2406H non è implementato)
  6. Non è possibile leggere lo stato della linea d'interrupt direttamente dal device, lo si può fare mediante il simbolo del segnale digitale (es. 4.INP10)
  7. Non è possibile associare un task ad'interrupt.
  8. Il device RECDATA non può utilizzare linee d'interrupt remotate
  9. Il device CAMMING3 può utilizzare linea d'interrupt remotata solo per fare il preset
  10. Vi è una relazione tra la possibilità di catturare più conteggi remotati contemporaneamente, il tempo di campionamento e la velocità di rotazione dell'encoder il cui conteggio è da catturare. Tale limitazione è dovuta al fatto che un solo conteggio catturato può essere trasmesso ad ogni SYNC (tempo di campionamento del device CANOPEN) e quindi ci può essere un ritardo di n SYNC tra la cattura e l'invio dell'informazione. Se questo ritardo è tale per cui il conteggio si muove di più 32767 impulsi, rispetto alla posizione di cattura, si ha un'errore nel calcolo della posizione assoluta acquisita.

Le configurazioni degli ingressi analogici e dei misuratori di frequenza non sono ritentive e quindi devono sempre essere reimpostate tramite gli SDO appropriati ad ogni accensione del modulo. Il modulo carica comunque dei valori di default uguali per tutte le risorse di uno stesso tipo. Le seguenti tabelle riportano tali valori:

ingressi analogici

IndexNameDefault Value
2200hDigital filter Time Constant 10
2201hSensor/Measure type dipendente dall'HW

Misuratori di frequenza

IndexNameDefault Value
3001hSample Time (ms) 20
3002hMinimum Frequency 1000
3003hMaximum Frequency 99999999
3004hFrequency resolution 0
3005hCapture Mode 0
3006hMedian Filter type 2
3007hAcquisition filter Time Constant 10
3008hStabilization filter Time Constant 100
3009hDelta frequency for activation stabilization filter 0
  • Ultima modifica: 2023/12/07 11:34