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/28 14:19] – [3.11. Le variabili DATAGROUP] qem207 | software:qview:qview_6:qview60 [2023/02/09 12:21] – [7.6.7 Shift logico a destra] qem215 | ||
---|---|---|---|
Linea 154: | Linea 154: | ||
===== - Connessione del PC al QMOVE ===== | ===== - Connessione del PC al QMOVE ===== | ||
Prima di poter aprire il collegamento è necessario che sia attivo il gestore delle risorse QRM (Qem Resurces Manager). Si trova tra le icone in basso a sinistra della barra degli strumenti di Windows. La sua icona è {{: | Prima di poter aprire il collegamento è necessario che sia attivo il gestore delle risorse QRM (Qem Resurces Manager). Si trova tra le icone in basso a sinistra della barra degli strumenti di Windows. La sua icona è {{: | ||
- | La connessione può avvenire sia via seriale tramite il convertitore IQ009 [[http:// | + | La connessione può avvenire sia via seriale tramite il convertitore IQ009 [[https:// |
Per poter trasferire il progetto compilato alla CPU bisogna connettere il PC al sistema QMOVE. | Per poter trasferire il progetto compilato alla CPU bisogna connettere il PC al sistema QMOVE. | ||
Linea 163: | Linea 163: | ||
Appare la finestra " | Appare la finestra " | ||
Per un semplice collegamento seriale è necessario solo assicurarsi che il numero della porta COM sia corretto. Per quanto riguarda la velocità di comunicazione, | Per un semplice collegamento seriale è necessario solo assicurarsi che il numero della porta COM sia corretto. Per quanto riguarda la velocità di comunicazione, | ||
- | Per un collegamento Ethernet invece è necessario selezionare //TCP/IP// e specificare il //TCP/IP Host & Port// con il suo indirizzo IP e il numero della porta a 5001. Per configurare il QMOVE con uno specifico indirizzo IP si deve usare una delle utility installate nel QWorkbench: [[http:// | + | Per un collegamento Ethernet invece è necessario selezionare //TCP/IP// e specificare il //TCP/IP Host & Port// con il suo indirizzo IP e il numero della porta a 5001. Per configurare il QMOVE con uno specifico indirizzo IP si deve usare una delle utility installate nel QWorkbench: [[https:// |
Ora fare un doppio click sulla risorsa da usare per il collegamento e il messaggio //No connection// | Ora fare un doppio click sulla risorsa da usare per il collegamento e il messaggio //No connection// | ||
Linea 535: | Linea 535: | ||
Le variabili Datagroup sono una particolare struttura di dati, memorizzate in una zona ritentiva. Esse vengono dichiarate nella unit di configurazione e sono idonee per rappresentare un archivio di ricette. \\ Le variabili Datagroup contengono due tipologie di variabili: | Le variabili Datagroup sono una particolare struttura di dati, memorizzate in una zona ritentiva. Esse vengono dichiarate nella unit di configurazione e sono idonee per rappresentare un archivio di ricette. \\ Le variabili Datagroup contengono due tipologie di variabili: | ||
- | ==== Variabili Statiche ==== | + | ==== - Variabili Statiche ==== |
<code QCL> | <code QCL> | ||
DATAGROUP | DATAGROUP | ||
Linea 546: | Linea 546: | ||
< | < | ||
</ | </ | ||
- | 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 | + | 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 |
<code QCL> | <code QCL> | ||
DATAGROUP | DATAGROUP | ||
Linea 562: | Linea 562: | ||
</ | </ | ||
- | Possiamo immaginare la memoria di una variabile DATAGROUP, nel nostro esempio con variabili | + | Possiamo immaginare la struttura della memoria di una variabile DATAGROUP, nel nostro esempio con variabili |
^ ^ Variable1 | ^ ^ Variable1 | ||
^Ricetta 1| | | | | ^Ricetta 1| | | | | ||
Linea 570: | Linea 570: | ||
^Ricetta 100| | | | | ^Ricetta 100| | | | | ||
- | ==== Variabili Indicizzate ==== | + | ==== - Variabili Indicizzate ==== |
<code QCL> | <code QCL> | ||
DATAGROUP | DATAGROUP | ||
Linea 583: | Linea 583: | ||
< | < | ||
</ | </ | ||
- | Le variabili indicizzate risiedono nel sottosettore di DATAGROUP nominato come STEP. La loro funzione è quella di introdurre per ogni ricetta, il concetto di passo. Il primo valore di questo settore è un numero o una costante intera, e indica | + | Le variabili indicizzate risiedono nel sottosettore di DATAGROUP nominato come STEP. La loro funzione è quella di introdurre per ogni ricetta, il concetto di passo. Il primo valore di questo settore è un numero o una costante intera, e indica |
<code QCL> | <code QCL> | ||
DATAGROUP | DATAGROUP | ||
Linea 604: | Linea 604: | ||
</ | </ | ||
- | Possiamo immaginare la memoria di una variabile DATAGROUP, nel nostro esempio con variabili | + | Possiamo immaginare la struttura della memoria di una variabile DATAGROUP, nel nostro esempio con variabili |
^ ^ Variable1 | ^ ^ Variable1 | ||
^Ricetta 1| | | | | | | | | | | | | | | ^Ricetta 1| | | | | | | | | | | | | | | ||
Linea 619: | Linea 620: | ||
Altre informazioni: | Altre informazioni: | ||
* In un DATAGROUP tutte le variabili, sia statiche che indicizzate, | * In un DATAGROUP tutte le variabili, sia statiche che indicizzate, | ||
- | * Le variabili Datagroup possono essere più di una, in questo caso è necessario inserire più settori di tipo DATAGROUP. | + | * Le variabili Datagroup possono essere più di una, in questo caso è necessario inserire più parole chiave |
* La sottosezione DATAPROGRAM è obbligatoria, | * La sottosezione DATAPROGRAM è obbligatoria, | ||
* Il numero massimo di ricette impostabile è 65534. | * Il numero massimo di ricette impostabile è 65534. | ||
* Il numero massimo di passi impostabile è 65534. | * Il numero massimo di passi impostabile è 65534. | ||
- | * Rispetto | + | * Rispetto |
- | ===== - Le variabili DATAGROUP old ===== | + | |
- | + | ||
- | 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: | + | |
- | * Statiche. | + | |
- | * Indicizzate. | + | |
- | + | ||
- | Le statiche sono delle variabili che possono assumere un valore diverso a seconda del programma (della colonna) a cui si fa riferimento. Nella dichiarazione, | + | |
- | + | ||
- | <code QCL> | + | |
- | dslVeMa[5] | + | |
- | </ | + | |
- | + | ||
- | Le variabili indicizzate possono assumere un valore diverso a seconda del programma e del passo (riga) a cui si fa riferimento. Nella dichiarazione, | + | |
- | + | ||
- | <code QCL> | + | |
- | ddwLuPe[5, | + | |
- | </ | + | |
- | + | ||
- | Graficamente il datagroup si può rappresentare in questo modo: | + | |
- | ^_^Prog.1^Prog. 2^Prog. 3^Prog. 4^Prog. 5^_^ | + | |
- | ^_|dslVeMa[1]|dslVeMa[2]|dslVeMa[3]|dslVeMa[4]|dslVeMa[5]^Statiche^ | + | |
- | ^Step 1|ddwLuPe[1, | + | |
- | ^Step 2|ddwLuPe[1, | + | |
- | ^Step 3|ddwLuPe[1, | + | |
- | ^Step 4|_|_|_|_|ddwLuPe[5, | + | |
- | ^Step 5|_|_|_|_|ddwLuPe[5, | + | |
- | Nelle due sezioni, statiche e indicizzate, | + | |
- | + | ||
- | La sintassi per la definizione di variabili DATAGROUP è: | + | |
- | <code QCL> | + | |
- | DATAGROUP | + | |
- | < | + | |
- | [;Number of programs (or recipe) | + | |
- | DATAPROGRAM | + | |
- | <number of programs> | + | |
- | ;Static variables declaration | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | [;Number of steps | + | |
- | STEP | + | |
- | <number of steps> | + | |
- | ;Indexed variables declaration | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | dove: | + | |
- | |DATAGROUP|Parola chiave per la definizione di un DataGroup.| | + | |
- | |< | + | |
- | |DATAPROGRAM|Parola chiave per la definizione delle variabili statiche nel DataGroup.| | + | |
- | |<number of programs> | + | |
- | |< | + | |
- | |< | + | |
- | |STEP|Parola chiave per la definizione delle variabili indicizzate nel DataGroup.| | + | |
- | |<number of steps> | + | |
- | |< | + | |
- | |< | + | |
- | + | ||
- | La definizione del DATAGROUP è composta di 3 parti: | + | |
- | * una relativa alla definizione del nome del datagroup; | + | |
- | * una relativa all’impostazione del numero programmi e delle variabili statiche (inizia con la parola chiave DATAPROGRAM); | + | |
- | * una relativa all’impostazione del numero di passi di programma e delle variabili indicizzate (inizia con la parola chiave STEP). | + | |
- | + | ||
- | Il nome datagroup segue tutte le regole generali finora incontrate per la sintassi dei nomi variabili. | + | |
- | + | ||
- | Il numero programmi va scritto in forma numerica, oppure tramite l’ausilio di costanti e deve essere diverso da zero; il numero massimo di programmi è 65534. | + | |
- | + | ||
- | Il numero passi va scritto in forma numerica, oppure tramite l’ausilio di costanti e deve essere diverso da zero. Il numero massimo di passi è 65534. | + | |
- | + | ||
- | La sottosezione DATAPROGRAM è obbligatoria, | + | |
- | + | ||
- | Non è possibile dichiarare una sezione STEP senza dichiarare almeno una variabile indicizzata. È possibile dichiarare una sezione STEP senza dichiarare una sezione DATAPROGRAM. Non è possibile dichiarare una sezione DATAPROGRAM senza dichiarare almeno una variabile statica. È possibile dichiarare una sezione DATAPROGRAM senza dichiarare una sezione STEP.\\ | + | |
- | In un DATAGROUP tutte le variabili, sia statiche che indicizzate, | + | |
- | + | ||
- | Per calcolare l’occupazione in memoria totale del DATAGROUP si deve tener presente che ogni variabile inserita nel datagroup occupata 4 byte (qualsiasi sia il tipo scelto per la variabile stessa). Quindi l’occupazione in byte è pari a: | + | |
- | + | ||
- | (N.Programmi x N.Variabili statiche x 4 ) + ( N.Programmi x N.Passi x N.Variabili indicizzate x 4).\\ | + | |
- | Esempio: | + | |
- | <code QCL> | + | |
- | DATAGROUP | + | |
- | dMyDataGrp | + | |
- | DATAPROGRAM | + | |
- | DIM_PROG | + | |
- | ; | + | |
- | dsfStat1 F ; | + | |
- | dswStat2 W ; | + | |
- | STEP | + | |
- | DIM_STEP | + | |
- | ; | + | |
- | ddbDin1 B ; | + | |
- | ddlDin2 L ; | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | Sintassi nel caso di variabile statiche: | + | |
- | <code QCL> | + | |
- | < Nome variabile Static > < [ num_prog ] > | + | |
- | </ | + | |
- | + | ||
- | Sintassi nel caso di variabile indicizzate: | + | |
- | <code QCL> | + | |
- | < Nome variabile Index > < [ num_prog, num_step ] > | + | |
- | </ | + | |
- | // | ||
===== - Sezione BUS ===== | ===== - Sezione BUS ===== | ||
La sezione BUS nell’unità di configurazione è indispensabile per dichiarare quale modello hardware di QMOVE il programmatore ha a disposizione.\\ | La sezione BUS nell’unità di configurazione è indispensabile per dichiarare quale modello hardware di QMOVE il programmatore ha a disposizione.\\ | ||
Linea 1504: | Linea 1399: | ||
</ | </ | ||
- | ==== - Shift logico | + | ==== - Shift a sinistra ==== |
- | Esegue una operazione di shift a sinistra di //n// bit sull' | + | Esegue una operazione di shift a sinistra di //n// bit sull' |
+ | Lo shift è da intendersi indifferentemente sia //logico// che // | ||
+ | \\ | ||
+ | - I bit che escono dalla sequenza a sinistra vengono perduti.\\ | ||
+ | - I bit che entrano nella sequenza a destra sono degli 0.\\ | ||
+ | \\ | ||
+ | Dal punto di vista matematico si tratta della moltiplicazione dell' | ||
+ | La sintassi è:\\ | ||
<code QCL> | <code QCL> | ||
SHLL(< | SHLL(< | ||
Linea 1514: | Linea 1416: | ||
</ | </ | ||
- | ==== - Shift logico | + | ==== - Shift a destra ==== |
- | Esegue una operazione di shift a destra di //n// bit sull' | + | Esegue una operazione di shift a destra di //n// bit sull' |
+ | |||
+ | |||
+ | |||
+ | Dal punto di vista matematico ---> divisione per 2 (funziona anche con i negativi scritti in complemento a 2) | ||
+ | |||
+ | |||
+ | La sintassi è:\\ | ||
<code QCL> | <code QCL> | ||
SHLR(< | SHLR(< |