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 | ||
software:qview:qview_6:qview60 [2024/09/25 09:12] – [Table] qem214 | software: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. | ||
+ | |||
+ | < | ||
+ | |||
+ | ===== - 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 | ||
+ | </ | ||
+ | |||
+ | ==== 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' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Come si vede nell' | ||
+ | * **Aggiungere sheets**: per farlo è sufficiente fare click destro nella parte più grigia a destra e selezionare l' | ||
+ | * **Rimuvore sheets**: per farlo è necessario fare click destro sul sheet da eliminare e selezionare la voce " | ||
+ | * **Rinominare sheets**: per farlo è sufficiente fare click destro sul sheet da rinominare e selezionare la voce " | ||
+ | * **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. \\ | ||
+ | {{: | ||
+ | La prima finestra è divisa in 4 macro categorie: | ||
+ | - **CPU General**: contiene le info generali della cpu. In particolare lo stato, il tempo trascorso dall' | ||
+ | - **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. | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | Questo pannello risulta essere molto utile per la **regolazione del PID**. In quanto permette di vedere errori di inseguimento, | ||
+ | |||
+ | ==== Project Panel List ==== | ||
+ | Questo pannello tiene traccia di tutti i pannelli presenti all' | ||
+ | {{: | ||
+ | |||
+ | |||
- | < | ||
====== - Introduzione alla programmazione ====== | ====== - Introduzione alla programmazione ====== | ||
Linea 1295: | Linea 1342: | ||
</ | </ | ||
- | 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:// |
===== - 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 2326: | Linea 2373: | ||
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: | + | | {{ software: |
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: | ||
< | < | ||
+ | ==== - 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 // | * Non è possibile scrivere le // | ||
+ | ====== - Errori ====== | ||
+ | |||
+ | ===== - Errori di Runtime ===== | ||
+ | |||
+ | ==== - Syntax Error ==== | ||
+ | |||
+ | ==== Descrizione errore ==== | ||
+ | |||
+ | L' | ||
+ | |||
+ | Esempio pratico: | ||
+ | |||
+ | Si veda il codice sorgente in figura, in particolare la parte: | ||
+ | |||
+ | <code QCL> | ||
+ | ; main entry point | ||
+ | BEGIN | ||
+ | NOP | ||
+ | WAIT 1 | ||
+ | END | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | Si noti che la compilazione avviene senza problemi.\\ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ---- | ||
+ | |||
+ | L' | ||
+ | |||
+ | Quando l' | ||
+ | |||
+ | Se il PLC è un [[https:// | ||
+ | |||
+ | Se il PLC è un [[https:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Soluzione errore ==== | ||
+ | |||
+ | **Risolvere** inserendo il codice della UNIT in questione all' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <code QCL> | ||
+ | ; main entry point | ||
+ | BEGIN | ||
+ | WHILE TRUE | ||
+ | NOP | ||
+ | WAIT 1 | ||
+ | ENDWHILE | ||
+ | END | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Questo perché dopo aver terminato l' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ===== - Errori applicativo Qview ===== | ||
+ | |||
+ | ==== - Errore 32 ==== | ||
+ | |||
+ | Questo errore si verifica se si verificano errori in uno dei file dell' | ||
+ | |||
+ | 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. | ||
+ | ---- | ||
+ | {{: |