I metacomandi sono degli identificatori destinati a condizionare la fase di compilazione. Non generano direttamente nessun codice ma specificano la modalità di elaborazione del programma sorgente R3.
I metacomandi si suddividono in quattro gruppi:
•metacomandi di definizione di modalità di programmazione diagramma tempo generale
•metacomandi di condizionamento del listato
•metacomandi per scopi generali
Metacomandi di definizione di modalità di programmazione diagramma tempo generale
$rule |
Definizione task 0 che contiene le rule |
$task n |
Definizione Task (1-:-8) |
$rule_periodic |
Definizione regola periodica rule_periodic |
$rule_time |
|
$rule_inp |
Definizione regola asincrona int_inp |
Metacomandi di condizionamento del listato
Definisce un simbolo |
|
Rimuove la definizione di un simbolo |
|
Se il simbolo è definito, allora il programma viene compilato |
|
Se il simbolo non è definito, allora il programma viene compilato |
|
$expand |
Se presente, in fase di compilazione viene gestita l'espansione dei LIT all'interno del file listato |
Metacomandi per scopi generali
Include un file esterno nella compilazione (*.i3). Utile per la definizione simbolica delle risorse hardware |
||
$close_loop |
Simula la chiusura dell'anello di posizione. Se presente, RTE simula i valori di cp e cv degli assi |
|
$check_array |
verifica, run-time, se vi è un accesso ad un elemento di un array inesistente. Ovviamente penalizza il tempo di esecuzione. |
|
$write_on_extern |
Abilita possibilità di scrivere le variabili definite come extern (public) |
|
$use_rpe |
Abilita l'estensione al linguaggio RPE (Robox Path Executor). Aggiunto in automatico usando il configuratore di progetto RDE (gruppi di assi) |
|
$error "messaggio" |
Da RC3E v33.1.21 Forza il compilatore a dare un errore di compilazione (utile ad es. all'interno di un blocco condizionato, per accorgersi se il blocco viene o meno compilato) |
|
$step |
Per ottenere il massimo delle prestazioni dalle rule interruptanti è stato eliminato il superfluo. Volendo riabilitare la 'marcatura' dei passi di un task di rule asincrone (RULE_PERIODIC incluso) al fine di poter mettere dei breakpont sull'esecuzione dei passi, bisogna aggiungere in testa al file (dopo la definizione del tipo di file) la linea $step Esempio:
|
|
$warning "messaggio" |
Da RC3E v33.1.21 Forza il compilatore a dare un warning di compilazione (utile ad es. all'interno di un blocco condizionato, per accorgersi se il blocco viene o meno compilato) |
Pseudo istruzioni
Le variabili di tipo BIT_MASK permettono di definire e inizializzare particolari variabili intere (di tipo U32) da utilizzarsi come maschere di bit.
Tipicamente l'impostazione dei bit avviene in automatico tramite le scelte di configurazione che l'utente opera nel configuratore di progetto dci RDE.
Le variabili di tipo BIT_MASK possono comunque essere lette e modificate anche da sorgente R3
bit_mask_set nomevar valore |
La variabile nomevar viene inizializzata a valore |
bit_mask_add nomevar valore |
In nomevar vengono posti a 1 i bit specificati da valore, senza alterare gli altri |
bit_mask_remove nomevar valore |
In nomevar vengono posti a 0 i bit specificati da valore, senza alterare gli altri |
Annotazioni:
•anche l'istruzione lit che permette di definire dei simbolici alle grandezze.