software:qview:qview_6:qview60

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

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:21] – [Variabili Statiche] qem207software:qview:qview_6:qview60 [2023/02/09 12:30] – [7.6.6 Shift a sinistra] 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 è {{:software:qview:qview_6:qview60:rm.png?nolink&30|}}. Se questa icona è presente significa che il QRM è attivo. Altrimenti sarà necessario avviarlo trovandolo nel pacchetto QWorkbench.\\ 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 è {{:software:qview:qview_6:qview60:rm.png?nolink&30|}}. Se questa icona è presente significa che il QRM è attivo. Altrimenti sarà necessario avviarlo trovandolo nel pacchetto QWorkbench.\\
-La connessione può avvenire sia via seriale tramite il convertitore IQ009 [[http://www.qem.eu/doku/doku.php/strumenti/accessori/iq009|convertitore IQ009]], sia tramite il collegamento tra la porta Ethernet del PC e la porta Ethernet del Qmove (per i modelli che ne sono provvisti).+La connessione può avvenire sia via seriale tramite il convertitore IQ009 [[https://www.qem.eu/doku/doku.php/strumenti/accessori/iq009|convertitore IQ009]], sia tramite il collegamento tra la porta Ethernet del PC e la porta Ethernet del Qmove (per i modelli che ne sono provvisti).
  
 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 "Connection Resources". Cliccare con il tasto destro su //Serial Com// e selezionare //Edit Resource Property...//.\\ Appare la finestra "Connection Resources". Cliccare con il tasto destro su //Serial Com// e selezionare //Edit Resource Property...//.\\
 Per un semplice collegamento seriale è necessario solo assicurarsi che il numero della porta COM sia corretto. Per quanto riguarda la velocità di comunicazione, lasciare per ora //AUTODETECT//. \\ Per un semplice collegamento seriale è necessario solo assicurarsi che il numero della porta COM sia corretto. Per quanto riguarda la velocità di comunicazione, lasciare per ora //AUTODETECT//. \\
-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://www.qem.eu/doku/doku.php/software/qworkbench/utility/qconfigurator10|QConfigurator-1]] oppure [[http://www.qem.eu/doku/doku.php/software/qworkbench/utility/qconfigurator20|QConfigurator-2]].+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://www.qem.eu/doku/doku.php/software/qworkbench/utility/qconfigurator10|QConfigurator-1]] oppure [[https://www.qem.eu/doku/doku.php/software/qworkbench/utility/qconfigurator20|QConfigurator-2]].
  
 Ora fare un doppio click sulla risorsa da usare per il collegamento e il messaggio //No connection// sulla barra in basso dovrebbe cambiare in //Connected with...// seguito dal codice del modello hardware utilizzato. Ora fare un doppio click sulla risorsa da usare per il collegamento e il messaggio //No connection// sulla barra in basso dovrebbe cambiare in //Connected with...// seguito dal codice del modello hardware utilizzato.
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 570: Linea 570:
 ^Ricetta 100| | | | ^Ricetta 100| | | |
  
-==== Variabili Indicizzate ==== +==== Variabili Indicizzate ==== 
 <code QCL> <code QCL>
 DATAGROUP DATAGROUP
Linea 583: Linea 583:
     <variable name> <F/B/W/L/S>     <variable name> <F/B/W/L/S>
 </code> </code>
-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 in numero di passi per ogni ricetta dell'archivio. Le variabili indicizzate sono da considerarsi come contenitori di una lista di valori per ogni ricetta, e sono accessibili come un array a 2 dimensioni, dove il primo valore è il numero di ricetta, il secondoil passo desiserato. Esempio:+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 il numero di passi per ogni ricetta dell'archivio. Le variabili indicizzate sono da considerarsi come contenitori di una lista di valori per ogni ricetta, e sono accessibili come un array a 2 dimensioni, dove il primo valore è il numero di ricetta, il secondo il passo desiserato. Esempio:
 <code QCL> <code QCL>
 DATAGROUP DATAGROUP
Linea 604: Linea 604:
 </code> </code>
  
-Possiamo immaginare la memoria di una variabile DATAGROUP, nel nostro esempio con variabili STATICHE INDICIZZATE, come la seguente tabella:+Possiamo immaginare la struttura della memoria di una variabile DATAGROUP, nel nostro esempio con variabili statiche indicizzate, come la seguente tabella: 
 ^ ^  Variable1  ^  Variable2  ^  Variable3  ^  Variable4  ^^^^^  Variable5  ^^^^^ ^ ^  Variable1  ^  Variable2  ^  Variable3  ^  Variable4  ^^^^^  Variable5  ^^^^^
 ^Ricetta 1| | | | | | | | | | | | | | ^Ricetta 1| | | | | | | | | | | | | |
Linea 619: Linea 620:
 Altre informazioni: Altre informazioni:
   * In un DATAGROUP tutte le variabili, sia statiche che indicizzate, sono ritentive (mantengono il valore allo spegnimento).   * In un DATAGROUP tutte le variabili, sia statiche che indicizzate, sono ritentive (mantengono il valore allo spegnimento).
-  * 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 DATAGROUP.
   * La sottosezione DATAPROGRAM è obbligatoria, mentre quella STEP è opzionale.   * La sottosezione DATAPROGRAM è obbligatoria, mentre quella STEP è opzionale.
   * 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 un comune array, le variabili statiche possono supportare anche un dato di tipo Flag (F). +  * Rispetto ad un comune array, le variabili statiche possono supportare anche un dato di dimensione Flag (F).
-===== - 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 //programmi// o //ricette//, mentre le righe //passi// (in inglese //step//).\\ +
-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, ognuna di queste variabili è identificata con un unico nome quindi, per poter far riferimento ai diversi valori che può assumere, si deve utilizzare un metodo di indicizzazione. Per esempio, per far riferimento alla variabile //dslVeMa// del programma (colonna) 5, viene usato il codice: +
- +
-<code QCL> +
-  dslVeMa[5] +
-</code> +
- +
-Le variabili indicizzate possono assumere un valore diverso a seconda del programma e del passo (riga) a cui si fa riferimento. Nella dichiarazione, ognuna di queste variabili è identificata con un unico nome quindi, per potersi riferire ai diversi valori che può assumere, si deve utilizzare un metodo di indicizzazione. Per esempio, per far riferimento alla variabile “ddwLuPe” del programma (colonna) 5 e del passo (riga) 3, viene usato il codice: +
- +
-<code QCL> +
-  ddwLuPe[5,3] +
-</code> +
- +
-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,1]|_|_|_|_^Indicizzate^ +
-^Step 2|ddwLuPe[1,2]|_|_|_|_^:::+
-^Step 3|ddwLuPe[1,3]|_|_|_|ddwLuPe[5,3]^:::+
-^Step 4|_|_|_|_|ddwLuPe[5,4]^:::+
-^Step 5|_|_|_|_|ddwLuPe[5,5]^:::+
-Nelle due sezioni, statiche e indicizzate, del datagroup è possibile dichiarare più di una variabile. +
- +
-La sintassi per la definizione di variabili DATAGROUP è: +
-<code QCL> +
-DATAGROUP +
-  <DataGroup Name> +
-[;Number of programs (or recipe) +
-  DATAPROGRAM +
-    <number of programs> +
-;Static variables declaration +
-    <variable name> <F/B/W/L/S> +
-    <variable name> <F/B/W/L/S> +
-    <variable name> <F/B/W/L/S>+
-[;Number of steps +
-  STEP +
-    <number of steps> +
-;Indexed variables declaration +
-    <variable name> <F/B/W/L/S> +
-    <variable name> <F/B/W/L/S> +
-    <variable name> <F/B/W/L/S>+
-</code> +
-dove: +
-|DATAGROUP|Parola chiave per la definizione di un DataGroup.| +
-|<DataGroup Name>|Nome associato al DataGroup.| +
-|DATAPROGRAM|Parola chiave per la definizione delle variabili statiche nel DataGroup.| +
-|<number of programs>|Numero di programmi (DataProgram) di cui è composto il DataGroup.| +
-|<variable name>|Nome della variabile statica del DataGroup.| +
-|<F/B/W/L/S>|Tipo della variabile statica| +
-|STEP|Parola chiave per la definizione delle variabili indicizzate nel DataGroup.| +
-|<number of steps>|Numero di passi (Step) di cui è composto il DataGroup.| +
-|<variable name>|Nome della variabile indicizzata del DataGroup.| +
-|<F/B/W/L/S>|Tipo della variabile indicizzata| +
- +
-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, mentre quella STEP è opzionale. +
- +
-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, sono ritentive (mantengono il valore allo spegnimento). +
- +
-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            ;Datagroup name +
-  DATAPROGRAM +
-    DIM_PROG            ;Number of programs +
-    ;--------------Static variables declaration------------------ +
-    dsfStat1 F          ; +
-    dswStat2 W          ; +
-  STEP +
-    DIM_STEP            ;Number of step for each program +
-    ;--------------Indexed variables declaration------------- +
-    ddbDin1 B           ; +
-    ddlDin2 L           ; +
-</code> +
- +
- +
-Sintassi nel caso di variabile statiche: +
-<code QCL> +
-< Nome variabile Static > < [ num_prog ] > +
-</code> +
- +
-Sintassi nel caso di variabile indicizzate: +
-<code QCL> +
-< Nome variabile Index > < [ num_prog, num_step ] > +
-</code>+
  
-//num_prog// e //num_step// possono essere un numero (non SINGLE), una costante, una variabile o un’espressione complessa. Nel caso di numero o di costante, viene eseguito il controllo durante la compilazione che l’indice non superi la dimensione massima dichiarata in configurazione (rispettivamente per il numero programmi e il numero step); gli altri indici - //num_prog e num_step// - partono (in valore) da uno. 
 ===== - 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:
 </code> </code>
  
-==== - Shift logico a sinistra ==== +==== - Shift a sinistra ==== 
-Esegue una operazione di shift a sinistra di //n// bit sull'argomento.\\ {{:software:qview:qview_6:qview60:shll.png?nolink|}}\\ La sintassi è:\\+Esegue una operazione di shift a sinistra di //n// bit sull'argomento.\\ {{:software:qview:qview_6:qview60:shll.png?nolink|}}\\ 
 +Lo shift è da intendersi indifferentemente sia //logico// che //aritmetico//, ossia:\\ 
 +\\ 
 +- 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'argomento per la potenza 2^n.\\ 
 +La sintassi è:\\
 <code QCL> <code QCL>
   SHLL(<variable>,<bits>)   SHLL(<variable>,<bits>)
Linea 1511: Linea 1413:
 Esempio: Esempio:
 <code QCL> <code QCL>
-  glValue = SHLL(glValue, 1)+  glNewValue = SHLL(glValue, 1
 +  ; Se glValue = &B00001100 (12) allora glNewValue = &B00011000 (24)
 </code> </code>
  
-==== - Shift logico a destra ==== +==== - Shift a destra ==== 
-Esegue una operazione di shift a destra di //n// bit sull'argomento.\\ {{:software:qview:qview_6:qview60:shlr.png?nolink|}}\\ La sintassi è:\\+Esegue una operazione di shift a destra di //n// bit sull'argomento.\\ {{:software:qview:qview_6:qview60:shlr.png?nolink|}}\\ 
 +Lo shift è da intendersi //aritmetico// (non //logico//), ossia: 
 +\\ 
 +- I bit che escono dalla sequenza a destra vengono perduti. 
 +- I bit che entrano nella sequenza a sinistra sono delle copie del bit più significativo (ossia di quello più a sinistra). 
 +\\ 
 +Dal punto di vista matematico si tratta della divisione dell'argomento per la potenza 2^n. Questa interpretazione continua a valere anche per i numeri negativi scritti in complemento a 2.\\ 
 +La sintassi è:\\
 <code QCL> <code QCL>
   SHLR(<variable>,<bits>)   SHLR(<variable>,<bits>)
  • Ultima modifica: 2024/03/22 14:06