Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente Prossima revisioneEntrambe le parti successive la revisione | ||
software:qview:qview_6:qview60 [2015/04/20 11:55] – [7.2.4. SWITCH-ENDSWITCH] qem207 | software:qview:qview_6:qview60 [2015/04/28 10:47] – [3.11. Le variabili DATAGROUP] qem207 | ||
---|---|---|---|
Linea 533: | Linea 533: | ||
===== - Le variabili DATAGROUP ===== | ===== - Le variabili DATAGROUP ===== | ||
+ | Le variabili Datagroup sono una particolare struttura di dati, allocate in memoria in una zona ritentiva. Esse vengono dichiarate nella unit di configurazione e hanno la funzione di semplificare l' | ||
+ | |||
+ | **Variabili Statiche**\\ Le variabili statiche risiedono nel sottosettore di DATAGROUP nominato come DATAPROGRAM. Il primo valore di questo settore è un numero o una costante intera, e indica in numero di ricette dell' | ||
+ | |||
+ | <code QCL> | ||
+ | DATAGROUP | ||
+ | < | ||
+ | DATAPROGRAM | ||
+ | <number of recipes> | ||
+ | ;Static variables declaration | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
Le variabili Datagroup sono una particolare struttura di dati. Quando si dichiara un datagroup, si organizza una parte della memoria come una tabella formata da righe e colonne. Le colonne sono chiamate // | Le variabili Datagroup sono una particolare struttura di dati. Quando si dichiara un datagroup, si organizza una parte della memoria come una tabella formata da righe e colonne. Le colonne sono chiamate // | ||
Ogni programma (colonna) contiene due tipologie di variabili: | Ogni programma (colonna) contiene due tipologie di variabili: | ||
Linea 638: | Linea 655: | ||
// | // | ||
- | |||
===== - Sezione BUS ===== | ===== - Sezione BUS ===== | ||
Linea 1209: | Linea 1225: | ||
incontrata una istruzione di chiamata a subroutine (CALL). La subroutine viene identificata da | incontrata una istruzione di chiamata a subroutine (CALL). La subroutine viene identificata da | ||
un nome preceduto dalla parola chiave SUB e deve terminare con la parola chiave ENDSUB. Vedi | un nome preceduto dalla parola chiave SUB e deve terminare con la parola chiave ENDSUB. Vedi | ||
- | anche istruzione CALL. | + | anche istruzione CALL.\\ Per interrompere una subroutine prima del termine della stessa inserire la parola chiave RETURN. |
==== - CALL ==== | ==== - CALL ==== | ||
Linea 1413: | Linea 1429: | ||
</ | </ | ||
+ | ==== - Shift logico a sinistra ==== | ||
+ | Esegue una operazione di shift a sinistra di //n// bit sull' | ||
+ | <code QCL> | ||
+ | SHLL(< | ||
+ | </ | ||
+ | Esempio: | ||
+ | <code QCL> | ||
+ | glValue = SHLL(glValue, | ||
+ | </ | ||
+ | |||
+ | ==== - Shift logico a destra ==== | ||
+ | Esegue una operazione di shift a destra di //n// bit sull' | ||
+ | <code QCL> | ||
+ | SHLR(< | ||
+ | </ | ||
+ | Esempio: | ||
+ | <code QCL> | ||
+ | glValue = SHLR(glValue, | ||
+ | </ | ||
+ | |||
+ | ==== - Moltiplicazione e divisione ==== | ||
+ | Esegue una moltiplicazione di valori interi a 32 bit con risultato a 64 bit e una successiva divisione per valore intero a 32 bit. Il risultato è un valore di 32 bit.\\ **N.B.** Se viene eseguita una divisione per zero, la CPU andrà in stato " | ||
+ | <code QCL> | ||
+ | MULDIV(< | ||
+ | </ | ||
+ | Esempio: glValue = a * b / c | ||
+ | <code QCL> | ||
+ | glValue = MULDIV(a, b, c) | ||
+ | </ | ||
+ | |||
+ | ==== - Resto di moltiplicazione e divisione ==== | ||
+ | Esegue una moltiplicazione di valori interi a 32 bit con risultato a 64 bit e una successiva divisione per valore intero a 32 bit. Il risultato è il resto della divisione.\\ **N.B.** Se viene eseguita una divisione per zero, la CPU andrà in stato " | ||
+ | <code QCL> | ||
+ | RMULDIV(< | ||
+ | </ | ||
+ | Esempio: glValue = a * b % c | ||
+ | <code QCL> | ||
+ | glValue = RMULDIV(a, b, c) | ||
+ | </ | ||
+ | |||
+ | ==== - Arrotondamenti all' | ||
+ | |ROUND|Esegue un arrotondamento di un valore in floating point all' | ||
+ | |TRUNC|Esegue un arrotondamento di un valore in floating point all' | ||
+ | |FLOOR|Esegue un arrotondamento di un valore in floating point all' | ||
+ | |CEIL|Esegue un arrotondamento di un valore in floating point all' | ||
+ | La sintassi è:\\ | ||
+ | <code QCL> | ||
+ | ROUND(< | ||
+ | TRUNC(< | ||
+ | FLOOR(< | ||
+ | CEIL(< | ||
+ | </ | ||
+ | Esempio: | ||
+ | <code QCL> | ||
+ | gsValue = ROUND(2.7) | ||
+ | gsValue = ROUND(-2.7) | ||
+ | gsValue = TRUNC(2.7) | ||
+ | gsValue = TRUNC(-2.7) | ||
+ | gsValue = FLOOR(2.7) | ||
+ | gsValue = FLOOR(-2.7) | ||
+ | gsValue = CEIL(2.7) | ||
+ | gsValue = CEIL(-2.7) | ||
+ | </ | ||
+ | |||
+ | ==== - Operatori di classificazione ==== | ||
+ | |ISFINITE|Controlla se il numero dato ha valore finito.| | ||
+ | |ISINF|Controlla se il numero dato ha valore infinito.| | ||
+ | |ISNAN|Controlla se il numero dato ha valore NaN.| | ||
+ | |ISNORMAL|Controlla se il numero dato ha valore normale.| | ||
+ | La sintassi è:\\ | ||
+ | <code QCL> | ||
+ | ISFINITE(< | ||
+ | ISINF(< | ||
+ | ISNAN(< | ||
+ | ISNORMAL(< | ||
+ | </ | ||
+ | Esempio: | ||
+ | <code QCL> | ||
+ | gfValue = ISFINITE(gsValue) | ||
+ | gfValue = ISINF(gsValue) | ||
+ | gfValue = ISNAN(gsValue) | ||
+ | gfValue = ISNORMAL(gsValue) | ||
+ | </ | ||
===== - Funzioni trigonometriche ===== | ===== - Funzioni trigonometriche ===== | ||
Linea 3449: | Linea 3548: | ||
In questo capitolo vengono riassunte le parole chiave del QCL. | In questo capitolo vengono riassunte le parole chiave del QCL. | ||
- | ^ABS|valore assoluto| | + | ^ ABS | valore assoluto |
- | ^ACOS|arcocoseno| | + | ^ ACOS |
- | ^AND|AND logico| | + | ^ AND | AND logico |
- | ^ANDB|And logico bit a bit| | + | ^ ANDB |
- | ^APPLICATION|Radice implicita di ogni simbolo utilizzato| | + | ^ APPLICATION |
- | ^ARRGBL|sezione file di configurazione| | + | ^ ARRGBL |
- | ^ARRSYS|sezione file di configurazione| | + | ^ ARRSYS |
- | ^ASIN|arcoseno| | + | ^ ASIN |
- | ^ATAN|arcotangente| | + | ^ ATAN |
- | ^B|byte| | + | ^ B | byte | |
- | ^BEGIN|sezione codice operativo nella unit| | + | ^ BEGIN | sezione codice operativo nella unit |
- | ^BREAK|break| | + | ^ BREAK | break |
- | ^BUS|sezione file di configurazione| | + | ^ BUS | sezione file di configurazione |
- | ^CALL|chiamata subroutine| | + | ^ CALL |
- | ^CASE|istruzione SWITCH-CASE| | + | ^ CASE |
- | ^CONST|sezione file di configurazione| | + | ^ CEIL | arrotondamento a intero non inferiore a quello dato | |
- | ^COS|coseno| | + | ^ CONST | sezione file di configurazione |
- | ^COT|cotangente| | + | ^ COS | coseno |
- | ^DATAGROUP|sezione file di configurazione| | + | ^ COT | cotangente |
- | ^DATAPROGRAM|sezione file di configurazione| | + | ^ D | double |
- | ^DEVGROUP|inizio raggruppamento device| | + | ^ DATAGROUP |
- | ^ELSE|" | + | ^ DATAPROGRAM |
- | ^END|fine task| | + | ^ DEVGROUP |
- | ^ENDDEVGROUP|fine raggruppamento device| | + | ^ ELSE |
- | ^ENDIF|fine istruzione IF| | + | ^ END | fine task |
- | ^ENDSUB|fine subroutine| | + | ^ ENDDEVGROUP |
- | ^ENDSWITCH|fine SWITCH| | + | ^ ENDIF | fine istruzione IF | |
- | ^ENDWHILE|fine while| | + | ^ ENDSUB |
- | ^EQ|uguale| | + | ^ ENDSWITCH |
- | ^EXP|esponenziale| | + | ^ ENDWHILE |
- | ^EXTDEVICE|sezione file di configurazione| | + | ^ EQ |
- | ^F|flag| | + | ^ EXP | esponenziale |
- | ^FOR|istruzione FOR| | + | ^ EXTDEVICE |
- | ^FPROG|istruzione FPROG| | + | ^ F | flag | |
- | ^FSTEP|istruzione FSTEP| | + | ^ FLOOR | arrotondamento a intero non superiore a quello dato | |
- | ^GE|maggiore | + | ^ FOR | istruzione FOR | |
- | ^GLOBAL|sezione file di configurazione| | + | ^ FPROG | istruzione FPROG | |
- | ^GT|maggiore| | + | ^ FSTEP | istruzione FSTEP | |
- | ^IF|istruzione IF| | + | ^ GE |
- | ^INPUT|sezione file di configurazione| | + | ^ GLOBAL |
- | ^INTDEVICE|sezione file di configurazione| | + | ^ GT |
- | ^JUMP|istruzione JUMP| | + | ^ IF |
- | ^LE|minore o uguale| | + | ^ INPUT | sezione file di configurazione |
- | ^LN|logaritmo naturale| | + | ^ INTDEVICE |
- | ^LT|minore| | + | ^ ISFINITE |
- | ^NEG|negazione (inversione del segno o complemento a 2)| | + | ^ ISINF |
- | ^NEQ|operatore| | + | ^ ISNAN | controlla se il valore è Nan (Not a Number) |
- | ^NEXT|istruzione NEXT| | + | ^ ISNORMAL |
- | ^NOP|istruzione NOP| | + | ^ JUMP |
- | ^NOT|negazione| | + | ^ LE |
- | ^NOTB|negazione bit a bit (complemento a 1)| | + | ^ LN |
- | ^OR|OR logico| | + | ^ LT |
- | ^ORB|OR logico bit a bit| | + | ^ MULDIV |
- | ^OUTPUT|sezione file di configurazione| | + | ^ NEG | negazione (inversione del segno o complemento a 2) | |
- | ^POW|potenza| | + | ^ NEQ | operatore |
- | ^REFERENCE|proprietà di " | + | ^ NEXT |
- | ^REFERENCE|inizio dell' | + | ^ NOP | istruzione NOP | |
- | ^RESOUT|reset uscite| | + | ^ NOT | negazione |
- | ^S|singola precisione| | + | ^ NOTB |
- | ^SETOUT|setta uscita| | + | ^ OR |
- | ^SIN|seno| | + | ^ ORB | OR logico bit a bit |
- | ^SQRT|radice quadrata| | + | ^ OUTPUT |
- | ^STEP|sezione file di configurazione| | + | ^ POW | potenza |
- | ^SUB|subroutine| | + | ^ REFERENCE |
- | ^SWITCH|istruzione SWITCH-CASE| | + | ^ REFERENCES |
- | ^SYSTEM|sezione file di configurazione| | + | ^ RESOUT |
- | ^RESTART|istruzione di restart| | + | ^ RESTART |
- | ^RESUME|istruzione di resume| | + | ^ RESUME |
- | ^SUSPEND|istruzione di sospensione| | + | ^ RETURN |
- | ^TAN|tangente| | + | ^ RMULDIV |
- | ^TIMER|sezione file di configurazione| | + | ^ ROUND | arrotondamento a intero più vicino |
- | ^W|word| | + | ^ S | single |
- | ^WAIT|istruzione di wait| | + | ^ SETOUT |
- | ^WHILE|istruzione di while| | + | ^ SHLL | shift a sinistra |
- | ^XORB|OR esclusivo bit a bit| | + | ^ SHLR | shift a destra |
+ | ^ SIN | seno | | ||
+ | ^ SQRT | ||
+ | ^ STEP | ||
+ | ^ SUB | subroutine | ||
+ | ^ SUSPEND | ||
+ | ^ SWITCH | ||
+ | ^ SYSTEM | ||
+ | ^ TAN | tangente | ||
+ | ^ TIMER | sezione file di configurazione | ||
+ | ^ TRUNC | arrotondamento a intero non maggiore di grandezza | ||
+ | ^ W | word | | ||
+ | ^ WAIT | ||
+ | ^ WHILE | istruzione di while | ||
+ | ^ XORB | ||
Oltre a queste vanno considerate le direttive del precompilatore | Oltre a queste vanno considerate le direttive del precompilatore | ||
Linea 3535: | Linea 3649: | ||
< | < | ||
- | |||
====== - Appendice E: Tasti caldi ====== | ====== - Appendice E: Tasti caldi ====== | ||