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:38] – [Variabili Indicizzate] qem207software:qview:qview_6:qview60 [2023/02/09 12:31] – [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 625: Linea 625:
   * Il numero massimo di passi impostabile è 65534.   * Il numero massimo di passi impostabile è 65534.
   * Rispetto ad un comune array, le variabili statiche possono supportare anche un dato di dimensione 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 1505: 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 1512: 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