BUS di campo CANopen
1. Segnalazioni
ERR LED | State | Description | Category | Note |
OFF | No error | Quando il dispositivo è in run | obbligatorio | |
BLINKING | Invalid configuration | Errore di configurazione generale | opzionale | Avviene 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 FLASH | Warning limit reached | Quando uno dei contatori del CAN controller supera il warning level | obbligatorio | |
DOUBLE FLASH | Error control event | Quando avviene un guard event o un heartbeat event | obbligatorio | |
TRIPLE FLASH | Sync error | Quando il SYNC non viene ricevuto entro il communication cycle period(H) | Obbligatorio se supportato obj 1006H altrimenti opzionale | L'object 1006H è supportato ma non gestito l'errore dalla libreria. O lo togliamo o dobbiamo implementarne noi la gestione |
ON | Bus off | Attivo quando il CAN controller va in BUS OFF | obbligatorio |
RUN LED | State | Description | Category | Note |
BLINKING | PRE-OPERATIONAL | Il modulo è nello stato PRE-OPERATIONAL | obbligatorio | |
ON | OPERATIONAL | Il modulo è nello stato OPERATIONAL | obbligatorio | OK |
2. Predefined Communication Objects
2.1 1000H - Device type
Descrive il tipo di dispositivo e la sua funzionalità:
Index | Object code | Name | Data type | Description |
---|---|---|---|---|
1000H | Var | Device type | Unsigned32 | Profilo device |
Significato dei bits:
Additional Information | General Information | |||||||
Specific functionality | I/O functionality | Device profile number | ||||||
31 | 24 | 23 | 16 | 15 | 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
2.2 1008H - Manufacturer device name
E' il nome del produttore del dispositivo:
Index | Object code | Name | Data type | Description |
---|---|---|---|---|
1008H | var | Manufacturer device name | string | nome del produttore |
'm' | 'e' | 'Q' | |||||
31 | 24 | 23 | 16 | 15 | 8 | 7 | 0 |
MSB | LSB |
2.3 1009H - Manufacturer hardware version
E' la versione hardware del dispositivo:
Index | Object code | Name | Data type | Description |
---|---|---|---|---|
1009H | var | Manufacturer hardware version | string | versione hardware del dispositivo |
'D' | '1' | 'C' | 'M' | ||||
31 | 24 | 23 | 16 | 15 | 8 | 7 | 0 |
MSB | LSB |
2.4 100AH - Manufacturer software version
Index | Object code | Name | Data type | Description |
---|---|---|---|---|
100AH | var | Manufacturer software version | string | versione software del dispositivo |
'1' | '0' | '1' | '0' | ||||
31 | 24 | 23 | 16 | 15 | 8 | 7 | 0 |
MSB | LSB |
3. PDO Mapping
4. Manufacturer Configuration SDO
4.1 Ingressi analogici
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:
Index | Object code | Name | Data type | Description |
---|---|---|---|---|
2200H | Array | Digital filter time constant | Unsigned16 | Costante di tempo del filtro RC espressa in ms |
2201H | Array | Sensor/Measure type | Unsigned8 | Tipo 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 |
2203h | Array | Calibration point number | Unsigned8 | E' il numero di punti di calibrazione (impostando 0 la funzione di calibrazione viene esclusa) |
2204h | Array | Calibration point 1 raw value | Unsigned16 | E' il valore dell'ingresso analogico espresso in bit del 1° punto di calibrazione |
2205h | Array | Calibration point 1 measure value | Unsigned16 | E' il valore dell'ingresso analogico espresso in unità di misura del 1° punto di calibrazione |
2206h | Array | Calibration point 2 raw value | Unsigned16 | E' il valore dell'ingresso analogico espresso in bit del 2° punto di calibrazione |
2207h | Array | Calibration point 2 measure value | Unsigned16 | E' il valore dell'ingresso analogico espresso in unità di misura del 2° punto di calibrazione |
2208h | Array | Calibration point 3 raw value | Unsigned16 | E' il valore dell'ingresso analogico espresso in bit del 3° punto di calibrazione |
2209h | Array | Calibration point 3 measure value | Unsigned16 | E' il valore dell'ingresso analogico espresso in unità di misura del 3° punto di calibrazione |
220Ah | Array | Calibration point 4 raw value | Unsigned16 | E' il valore dell'ingresso analogico espresso in bit del 4° punto di calibrazione |
220Bh | Array | Calibration point 4 measure value | Unsigned16 | E' il valore dell'ingresso analogico espresso in unità di misura del 4° punto di calibrazione |
4.1.1 Misure di conducibilità
Index | Object code | Name | Data type | Description |
---|---|---|---|---|
2210h | Array | Costante di cella | Unsigned8 | E' 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 |
2211h | Array | Risoluzione misura di conducibilità | Unsigned8 | E' 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 |
2212h | Array | Coefficiente di termocompensazione | Unsigned16 | Valore del coefficiente di termocompensazione espresso in %/°C. Impostando 0 si esclude la termocompensazione. |
2213h | Array | Temperatura di riferimento | Unsigned16 | E' la temperatura di riferimento per la termocompensazione. |
2214h | Array | Frequenza segnale comando cella | Unsigned16 | Valore di frequenza del segnale AC di comando della cella espresso in Hz. |
2215h | Array | Posizione campionamento misura conducibilità | Unsigned16 | E' 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.
4.2 Misuratori di frequenza
I misuratori di frequenza sono configurabili per mezzo di una serie di parametri. Gli elementi del dizionario corrispondenti a tali parametri sono:
Index | Object code | Name | Data type | Description |
---|---|---|---|---|
3000h | Array | Read Frequency/Duty | Unsigned16 | Valore misurato di frequenza o duty cycle (a seconda del valore del parametro “Capture Mode” 3005 h). |
3001h | Array | Sample Time (ms) | Unsigned8 | Tempo 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. |
3002h | Array | Minimum Frequency | Unsigned32 | Valore 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. |
3003h | Array | Maximum Frequency | Unsigned32 | Valore massimo della frequenza rilevabile espresso in mHz. |
3004h | Array | Frequency resolution | Unsigned8 | Risoluzione della misura di frequenza: 0 —→ Hz 1 —→ dHz (Hz/10) 2 —→ cHz (Hz/100) 3 —→ mHz (Hz/1000) |
3005h | Array | Capture Mode | Unsigned8 | Modalità di funzionamento: 0 —> acquisizione frequenza sul fronte di salita 1 —> acquisizione frequenza sul fronte di discesa 2 —> acquisizione duty cycle |
3006h | Array | Median Filter type | Unsigned8 | Tipo 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 |
3007h | Array | Acquisition filter Time Constant | Unsigned16 | Costante di tempo del filtro di acquisizione espressa in ms. |
3008h | Array | Stabilization filter Time Constant | Unsigned16 | Costante di tempo del filtro di stabilizzazione espressa in ms. |
3009h | Array | Delta frequency for activation stabilization filter | Unsigned32 | Valore massimo di variazione della frequenza, in un tempo pari a 5 costanti di tempo di acquisizione, per l'attivazione del filtro di stabilizzazione. |
4.3 Porte seriali
Index | Object code | Name | Data type | Access | Description | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
5000H | Array | Communication speed | Unsigned8 | RW | Velocità di comunicazione: 0 —→ 4800 1 —→ 9600 2 —→ 19200 3 —→ 38400 4 —→ 57600 5 —→ 115200 |
||||||||||||||||||||||||||||||||
5001H | Array | Data bits | Unsigned8 | RW | Numero bit di dati: 7 bit 8 bit |
||||||||||||||||||||||||||||||||
5002H | Array | Stop bits | Unsigned8 | RW | Numero bit di stop: 1 bit 2 bit |
||||||||||||||||||||||||||||||||
5003H | Array | Parity | Unsigned8 | RW | Bit di parità: 0 —→ nessuna parità 1 —→ parità dispari 2 —→ parità pari |
||||||||||||||||||||||||||||||||
5004H | Array | Control flow | Unsigned8 | RW | Controllo di flusso: 0 —→ nessuno 1 —→ XON-XOFF |
||||||||||||||||||||||||||||||||
5005H | Array | XON threshold | Unsigned16 | RW | Soglia di XON. Il valore deve essere inferiore alla soglia XOFF (5006H) | ||||||||||||||||||||||||||||||||
5006H | Array | XOFF threshold | Unsigned16 | RW | Soglia di XOFF. Il valore deve essere superiore alla soglia XON (5005H) ed inferiore alla dimensione del buffer(5007H) | ||||||||||||||||||||||||||||||||
5007H | Array | Tx buffer size | Unsigned16 | RO | Dimensione del buffer di trasmissione | ||||||||||||||||||||||||||||||||
5008H | Array | Rx buffer size | Unsigned16 | RO | Dimensione del buffer di ricezione | ||||||||||||||||||||||||||||||||
5009H | Array | Max read char | Unsigned16 | RW | E' il numero massimo di caratteri che si possono estrarre con una lettura dal buffer di ricezione (5011H) | ||||||||||||||||||||||||||||||||
500AH | Array | End string num chars | Unsigned8 | RW | Numero di caratteri di silenzio per individuare il fine stringa. Impostando valore 0 la funzionalità di riconoscimento del fine stringa è disabilitata. | ||||||||||||||||||||||||||||||||
500BH | Array | Chars in Tx buffer | Unsigned16 | RO | Numero di caratteri nel buffer di trasmissione | ||||||||||||||||||||||||||||||||
500CH | Array | Chars in Rx buffer | Unsigned16 | RO | Numero di caratteri presenti nel buffer di ricezione | ||||||||||||||||||||||||||||||||
500DH | Array | Transmit chars | Unsigned16 | RW | Numero di caratteri da trasmettere | ||||||||||||||||||||||||||||||||
500EH | Array | Control Word | Unsigned16 | RW |
|
||||||||||||||||||||||||||||||||
500FH | Var | Status Word | Unsigned16 | RO |
|
||||||||||||||||||||||||||||||||
5010H | Var | Transmit FIFO | string | RW | |||||||||||||||||||||||||||||||||
5011H | Var | Receive FIFO | string | RO |
4.4 Cattura conteggi
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
-
Il tempo di campionamento del device di conteggio o posizionamento deve essere uguale al tempo di campionamento del device CANOPEN.
-
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.
-
Il numero massimo di linee d'interrupt per ogni slave è 9.
-
Il numero più alto dello SLOT sul quale è possibile collegare un modulo con la cattura impulso di zero è l'11.
-
L'associazione conteggio↔linea d'interrupt nel modulo RMC è fissa per il momento (2406H non è implementato)
-
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)
-
Non è possibile associare un task ad'interrupt.
-
Il device RECDATA non può utilizzare linee d'interrupt remotate
-
Il device CAMMING3 può utilizzare linea d'interrupt remotata solo per fare il preset
-
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.
4.5 Valori di default delle Configurazioni
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
Index | Name | Default Value |
2200h | Digital filter Time Constant | 10 |
2201h | Sensor/Measure type | dipendente dall'HW |
Misuratori di frequenza
Index | Name | Default Value |
3001h | Sample Time (ms) | 20 |
3002h | Minimum Frequency | 1000 |
3003h | Maximum Frequency | 99999999 |
3004h | Frequency resolution | 0 |
3005h | Capture Mode | 0 |
3006h | Median Filter type | 2 |
3007h | Acquisition filter Time Constant | 10 |
3008h | Stabilization filter Time Constant | 100 |
3009h | Delta frequency for activation stabilization filter | 0 |