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
software:qview:qview_6:qview60 [2024/09/25 09:11] – [Table] qem214software:qview:qview_6:qview60 [2025/05/30 08:10] (versione attuale) – [23.2.1 Errore 32] qem218
Linea 196: Linea 196:
  
 Quando la CPU è in RUN vedremo il valore della variabile che si incrementa. Quando la CPU è in RUN vedremo il valore della variabile che si incrementa.
 +
 +<html><pagebreak /></html>
 +
 +===== - Pannelli di controllo =====
 +QView 6 mette a disposizione diversi **pannelli** utili alla programmazione. In questa sezione spiegheremo le funzionalità per ciascuno di essi.
 +
 +<WRAP center round download 60%>
 +Download example
 +</WRAP>
 +
 +==== Watches Panel ====
 +Questo pannello permette al programmatore di **vedere le variabili** e con i rispettivi **tipi** e **valori a runtime**.
 +Per usarlo è sufficiente scrivere la variabile di cui si vuole conoscere il valore all'interno della colonna centrale e verrà mostrata la variabile desiderata
 +
 +{{:software:qview:qview_6:qview60:watches_panel_new.png?direct|}}
 +
 +Come si vede nell'immagine si possono modificare i sheet di inserimento delle variabili. Ecco tutte lefunzionalità che riguardano le pagine del **Watches panel**.
 +  * **Aggiungere sheets**: per farlo è sufficiente fare click destro nella parte più grigia a destra e selezionare l'opzione "add sheet".
 +  * **Rimuvore sheets**: per farlo è necessario fare click destro sul sheet da eliminare e selezionare la voce "delete sheet".
 +  * **Rinominare sheets**: per farlo è sufficiente fare click destro sul sheet da rinominare e selezionare la voce "rename sheet".
 +  * **Cambiare la posizione dei sheets**: trascinare col tasto sinistro del mouse lo sheet desiderato fino alla posizione voluta.
 +
 +==== CPU Monitor ====
 +Questo pannello permette di visionare lo stato della CPU, i tempi di utilizzo, la presenza di breakpoint, vari errori, ecc. \\
 +{{:software:qview:qview_6:qview60:cpu_monitor.png?direct|}} \\
 +La prima finestra è divisa in 4 macro categorie:
 +  - **CPU General**: contiene le info generali della cpu. In particolare lo stato, il tempo trascorso dall'accensione e la memoria occupata dal programma
 +  - **CPU Task Info**: contiene tutte le informazioni riguardanti la task in esecuzione e il giro task, la presenza di breakpoint e il watchdog task nonchè la presenza del backup
 +  - **CPU Warnings**: fornisce le informazioni riguardo warning in atto come il watchdog o il battery low
 +  - **CPU Timings**: fornisce i tempi di giro task attuali, massimi e minimi 
 +
 +==== Data Record Panel ====
 +Il data record panel è un pannelo molto utile che permette di **graficare** fino a **8 variabili analogiche** e **8 digitali** per ogni pannello.
 +
 +{{:software:qview:qview_6:qview60:data_record_1.png?direct|}}\\
 +{{:software:qview:qview_6:qview60:data_record_2.png?direct|}} Per aggiungere una variabile è sufficiente **abilitare un canale libero**\\
 +{{:software:qview:qview_6:qview60:data_record_3.png?direct|}} **Inserire il nome** della variabile nell'apposito campo \\
 +{{:software:qview:qview_6:qview60:data_record_4.png?direct|}} Selezionare la tab **Data Plot** in alto a destra\\
 +{{:software:qview:qview_6:qview60:data_record_5.png?direct|}} Far partire la cattura dei valori  nella sezione Acquiring premere il **tasto avvia** in verde\\
 +{{:software:qview:qview_6:qview60:data_record_6.png?direct|}} Il **risultato** di un asse che va avanti e indietro è simile a questo \\
 +
 +Questo pannello risulta essere molto utile per la **regolazione del PID**. In quanto permette di vedere errori di inseguimento, rampe di accelerazione e decelerazione, ecc.
 +
 +==== Project Panel List ====
 +Questo pannello tiene traccia di tutti i pannelli presenti all'interno del progetto. Da qui è possibile chiuderli, aprirli o eliminarli. \\
 +{{:software:qview:qview_6:qview60:project_panel_list.png?direct|}}
 +
 +
  
  
  
-<html><pagebreak /></html> 
  
 ====== - Introduzione alla programmazione ====== ====== - Introduzione alla programmazione ======
Linea 1295: Linea 1342:
 </code> </code>
  
-Per comprendere meglio il significato di queste istruzioni di sistema si veda il capitolo “Multitasking”.+Per comprendere meglio il significato di queste istruzioni di sistema si veda il capitolo “[[https://wiki.qem.it/doku.php/software/qview/qview_6/qview60#multitasking|Multitasking]]”.
 ===== - Variabili di sistema ===== ===== - Variabili di sistema =====
 Il sistema QMOVE mette a disposizione delle variabili legate al sistema operativo interno di sola lettura; i nomi Il sistema QMOVE mette a disposizione delle variabili legate al sistema operativo interno di sola lettura; i nomi
Linea 2321: Linea 2368:
 Ogni task inizia la sua esecuzione dalla prima riga di codice. Il controllo poi passa al task successivo quando si incontra nel codice un’istruzione WAIT (Figura 3). Ogni task inizia la sua esecuzione dalla prima riga di codice. Il controllo poi passa al task successivo quando si incontra nel codice un’istruzione WAIT (Figura 3).
  
-|Figura 3: flusso del programma (condizioni iniziali).| +| Figura 3: flusso del programma (condizioni iniziali).  
-|{{ software:qview:qview41:qview_21.png?nolink250 |}}|+| {{ software:qview:qview41:qview_21.png?nolink }}       |
  
 Quando il controllo ritorna al task in questione esso riprende l’esecuzione del codice dal punto in cui l’aveva interrotta solo se la condizione posta subito a destra della parola chiave WAIT è vera altrimenti esegue nuovamente un cambio task, come è schematizzato nella figura 4. Quando il controllo ritorna al task in questione esso riprende l’esecuzione del codice dal punto in cui l’aveva interrotta solo se la condizione posta subito a destra della parola chiave WAIT è vera altrimenti esegue nuovamente un cambio task, come è schematizzato nella figura 4.
  
-|Figura 4: flusso del programma (condizione di cambio task).| +| Figura 4: flusso del programma (condizione di cambio task).  
-|{{ software:qview:qview41:qview_22.png?nolink350 |}}|+| {{ software:qview:qview41:qview_22.png?nolink }}             |
  
 Può succedere quindi che se in un task esiste un WAIT la cui condizione non è mai verificata il codice successivo a tale WAIT non venga mai eseguito.\\ Può succedere quindi che se in un task esiste un WAIT la cui condizione non è mai verificata il codice successivo a tale WAIT non venga mai eseguito.\\
Linea 3445: Linea 3492:
 <html><pagebreak /></html> <html><pagebreak /></html>
  
 +==== - Chiamate Ricorsive ====
 +Una subroutine può chiamare se stessa per una profondità massima di 15 livelli. In pratica non si possono avere più di 15 istanze di una subroutine contemporaneamemente aperte. 
 ====== - Appendice B: Conversione e promozione di tipo ====== ====== - Appendice B: Conversione e promozione di tipo ======
  
Linea 3724: Linea 3773:
   * Non è possibile scrivere le //subroutine// prima della istruzione //END// di una unit. Le //SUB// vanno sempre scritte alla fine della unit e dopo l'//END//.   * Non è possibile scrivere le //subroutine// prima della istruzione //END// di una unit. Le //SUB// vanno sempre scritte alla fine della unit e dopo l'//END//.
  
 +====== - Errori ======
 +
 +===== - Errori di Runtime =====
 +
 +==== - Syntax Error ====
 +
 +==== Descrizione errore ====
 +
 +L'errore di sintassi ''sintax'' può verificarsi durante l'esecuzione quando il runtime del QCL incontra un'errata sintassi.
 +
 +Esempio pratico:
 +
 +Si veda il codice sorgente in figura, in particolare la parte:
 +
 +<code QCL>
 +; main entry point
 +BEGIN
 +  NOP
 +  WAIT 1  
 +END
 +</code>
 +
 +\\  
 + 
 +Si noti che la compilazione avviene senza problemi.\\ 
 +
 +----
 +
 +{{ :software:qview:qview_6:qview60:syntax_err1.png?direct |}}
 +
 +----
 +
 +L'errore viene mostrato nel CPU Monitor {{:software:qview:qview_6:cpu_monitor.jpg?nolink|}} non appena l'applicativo viene messo in **RUN**
 +
 +Quando l'errore appare, cliccare sul pulsante {{:software:qview:qview_6:debug_line.jpg?nolink|}} per vedere la parte del codice che l'ha generato (l'indicatore è una freccia verde).
 +
 +Se il PLC è un [[https://wiki.qem.it/doku.php/strumenti/qmoveplus#integrati|dispositivo integrato]] si presenta la dicitura ''Sintax Error'' nel display HMI e la dicitura ''Err: Sintax'' viene mostrata nel **CPU Monitor Panel** e l'errore viene segnalato nella riga in cui è presente l'istruzione ''END'' (come in figura).
 +
 +Se il PLC è un [[https://wiki.qem.it/doku.php/strumenti/qmoveplus#retroquadro|dispositivo retroquadro]] il led di segnalazione errore compirà un numero di lampeggi tale da indicare tale errore, fare riferimento al manuale dello strumento ''Segnalazioni del led err'' ([[https://wiki.qem.it/doku.php/strumenti/qmoveplus/c1r44/mimc1r44fx_base#segnalazioni_del_led_err|qui un esempio]] - 7 lampeggi)
 +
 +----
 +
 +{{ :software:qview:qview_6:qview60:syntax_err2.png?direct |}}
 +
 +
 +----
 +
 +==== Soluzione errore ====
 +
 +**Risolvere** inserendo il codice della UNIT in questione all'interno di un **ciclo WHILE** inserendo come **condizione** qualcosa di **sempre vero**, ad esempio ''TRUE'' oppure ''1''.
 +
 +----
 +
 +<code QCL>
 +; main entry point
 +BEGIN
 +  WHILE TRUE
 +      NOP
 +      WAIT 1
 +  ENDWHILE    
 +END
 +</code>
 +
 +----
 +
 +{{ :software:qview:qview_6:qview60:syntax_err3.png?direct |}}
 +
 +----
 +
 +Questo perché dopo aver terminato l'esecuzione della ''UNIT'' il programma termina bloccando tutti i processi successivi. Per ulteriori informazioni consultare la sezione dedicata al "[[https://wiki.qem.it/doku.php/software/qview/qview_6/qview60#multitasking|Multitasking]]"
 +
 +----
 +
 +
 +===== - Errori applicativo Qview =====
 +
 +==== - Errore 32 ====
 +
 +Questo errore si verifica se si verificano errori in uno dei file dell'archivio .qm6 del progetto.
 +
 +Per risolvere questo errore è necessario controllare il contenuto del file .qm6 e verificare che il file .QMV contenuto in esso non sia mal formattato o non faccia riferimento ad un altro archivio. 
 +
 +Questo tipo di errore può capitare quando si copia un applicativo esistente o si importano parti di esso in un nuovo applicativo. 
  
 +----
  
 +{{:software:qview:qview_6:qview_error_32.png?nolink|}}
  • Ultima modifica: 2024/09/25 09:11