Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
software:devices:datacell [2019/08/29 17:01] – modifica esterna 127.0.0.1 | software:devices:datacell [2020/07/13 15:07] (versione attuale) – qem103 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== DEVICE DATACELL ====== | ||
+ | |||
+ | |||
+ | ====== - Introduzione ====== | ||
+ | |||
+ | Il device DATACELL, è utilizzato per memorizzare dati in un dispositivo non volatile ed è inserito nella famiglia Micro- | ||
+ | Qmove quando non è presente il device HMI;\\ | ||
+ | DATACELL è dotato di: | ||
+ | * una gestione di memoria programmi flessibile; | ||
+ | * un accesso alla memoria programmabile da QLC in scrittura e lettura; | ||
+ | * un inserimento di un indicatore di fine programma per ogni programma. | ||
+ | |||
+ | |||
+ | ===== - Installazione ===== | ||
+ | |||
+ | ==== - DICHIARAZIONE DEVICE NEL FILE DI CONFIGURAZIONE (.CNF) ==== | ||
+ | |||
+ | Nell' | ||
+ | hardware necessarie allimplementazione del device DATACELL. | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Dichiarazione devices interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | <nome device> | ||
+ | </ | ||
+ | |||
+ | dove: | ||
+ | |<nome device> | ||
+ | |DATACELL|Parola chiave che identifica il device di gestione ricette.| | ||
+ | |Tcamp|Tempo campionamento device (1÷250 ms).| | ||
+ | |||
+ | === - Esempio === | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Dichiarazione devices interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | dcData | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== - Funzionamento ===== | ||
+ | |||
+ | Il device DATACELL permette di accedere ad una zona di memoria pari a 8192 long (32768 bytes) presenti nella memoria | ||
+ | non volatile dello strumento. Tale zona di memoria è predisposta per essere utilizzata come contenitore di dati per | ||
+ | programmi di lavoro o ricette.\\ | ||
+ | Il device permette organizzare l' | ||
+ | numstep) e colonne (in numero pari a numprog). In ogni casella di questa tabella è possibile impostare un numero di | ||
+ | variabili di tipo long da 1 a 6 (nel parametro numelem). L' | ||
+ | numelem e numstep e di conseguenza il device calcola il numero di colonne di cui è composta la tabella e lo scrive nel | ||
+ | parametro numprog. | ||
+ | |||
+ | La formula che il device utilizza è:\\ | ||
+ | numprog = 8192 / (numstep * numelem + [1]) | ||
+ | |||
+ | La presenza del numero [1] dipende dal settaggio del bit 0 del parametro prgsetting. Il bit 0 del parametro prgsetting | ||
+ | permette di assegnare ad ogni programma una variabile per indicare quale è il passo di fineprogramma.\\ | ||
+ | Se per esempio, quindi, vogliamo realizzare una tabella per contenere dei programmi di lavoro con 10 passi ognuno e | ||
+ | ogni passo con 4 variabili, potremo avere un numero totale di programmi pari a 204. Se si vuole assegnare ad ogni programma | ||
+ | una variabile per indicare quale è il passo di fineprogramma, | ||
+ | Per scrivere i dati nella tabella creata si deve usare il comando WRITESTEP. Prima di usare il comando, si deve impostare | ||
+ | nei parametri progin e stepin le coordinate della casella che si vuole scrivere (in progin si scrive la colonna e in stepin | ||
+ | la riga). Inoltre si devono scrivere i valori da trasferire nella casella nei parametri elema ... elemf. A questo punto è | ||
+ | possibile memorizzare tali dati in memoria inviando il comando WRITESTEP. Lo stesso sistema si utilizza per scrivere la | ||
+ | variabile per indicare il passo di fineprogramma utilizzando il parametro elemend. | ||
+ | |||
+ | ==== - Esempio di scrittura: ==== | ||
+ | |||
+ | <code QCL> | ||
+ | [...] | ||
+ | dcData: | ||
+ | dcData: | ||
+ | dcData: | ||
+ | dcData: | ||
+ | dcData: | ||
+ | dcData: | ||
+ | dcData: | ||
+ | WRITESTEP dcData | ||
+ | WAIT dcData: | ||
+ | [...] | ||
+ | </ | ||
+ | Per leggere i dati dalla memoria si deve usare il comando READSTEP. Prima di usare il comando si deve impostare nei | ||
+ | parametri progin e stepin le coordinate della casella che si vuole leggere (in progin si scrive la colonna e in stepin la | ||
+ | riga). A questo punto è possibile leggere i dati in memoria inviando il comando READSTEP. I dati letti verranno riportati | ||
+ | nei parametri elema ... elemf e elemend. | ||
+ | |||
+ | ==== - Esempio di lettura: ==== | ||
+ | |||
+ | <code QCL> | ||
+ | [...] | ||
+ | dcData: | ||
+ | dcData: | ||
+ | dcData: | ||
+ | READSTEP dcData | ||
+ | WAIT dcData: | ||
+ | glVar01 = dcData: | ||
+ | glVar02 = dcData: | ||
+ | glVar03 = dcData: | ||
+ | glVar04 = dcData: | ||
+ | [...] | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== - Tabella comandi e parametri ===== | ||
+ | |||
+ | ==== - SIMBOLOGIA ADOTTATA ==== | ||
+ | |||
+ | Il **nome** del parametro, stato o comando è riportato alla sinistra della tabella. | ||
+ | |||
+ | **R**\\ | ||
+ | Indica se il relativo parametro o stato è ritentivo (al momento dellinizializzazione del device mantiene lo stato precedentemente definito), oppure lo stato che assume al momento dellinizializzazione del device.\\ | ||
+ | Se il device non necessita d' | ||
+ | della scheda.\\ | ||
+ | R = Ritentivo\\ | ||
+ | 0 = Al momento dellinizializzazione del device il valore è forzato a zero.\\ | ||
+ | 1 = Al momento dellinizializzazione del device il valore è forzato a uno.\\ | ||
+ | - = Al momento dellinizializzazione del device è presentato il valore significativo. | ||
+ | |||
+ | **D**\\ | ||
+ | Indica la **dimensione del parametro**.\\ | ||
+ | F = Flag\\ | ||
+ | B = Byte\\ | ||
+ | W = Word\\ | ||
+ | L = Long\\ | ||
+ | S = Single Float\\ | ||
+ | |||
+ | === - Condizioni === | ||
+ | Sono descritte tutte le **condizioni necessarie affinché il parametro sia considerato corretto o perché il comando sia accettato**.\\ In alcuni casi sono specificati dei valori limite per laccettazione del parametro: se sono introdotti dei valori esterni ai limiti impostati, il dato è in ogni caso accettato; pertanto devono essere previsti opportuni controlli dellapplicativo tali da garantire il corretto funzionamento.\\ Per lesecuzione di un comando, tutte le relative condizioni devono necessariamente essere soddisfatte; | ||
+ | |||
+ | **A**\\ | ||
+ | Indica il modo d' | ||
+ | R = Read (lettura).\\ | ||
+ | W = Write (scrittura).\\ | ||
+ | RW = Read / Write. | ||
+ | |||
+ | ==== - Parametri ==== | ||
+ | |||
+ | ^Nome^D^R^A^Condizioni^Descrizione^ | ||
+ | |numelem|B|R|RW|-|**Elements number**\\ Indica il numero di elementi allinterno di un passo\\ Range valido: 1 ÷ 6| | ||
+ | |numstep|W|R|RW|-|**Step number**\\ Indica il numero di passi in ogni programma\\ Range valido: 1 ÷ 8192| | ||
+ | |numprog|W|-|R|-|**Program number**\\ Indica il numero di programmi disponibili. Il valore dipende da\\ 1) il numero totale di long disponibili in memoria programmi, | ||
+ | |progin|W|0|RW|-|**Program input**\\ Indica il numero del programma da memorizzare con il comando WRITESTEP o leggere con il comando READSTEP.| | ||
+ | |stepin|W|0|RW|-|**Step input**\\ Indica il numero del passo da memorizzare con il comando WRITESTEP o leggere con il comando READSTEP.| | ||
+ | |stepout|W|0|RW|-|**Step output**\\ Indica che il passo scritto è stato memorizzato oppure che il passo in lettura è disponibile. Per verificare che il comando inviato (WRITESTEP o READSTEP) è stato eseguito è necessario controllare che stepin = stepout.| | ||
+ | |elema..f|L|0|RW|-|**Elements A..F**\\ Sono i valori del passo utilizzati con i comandi READSTEP e WRITESTEP| | ||
+ | |elemend|W|0|RW|-|**Elements for end program**\\ Se diverso da zero Indica che il passo ha fine programma.| | ||
+ | |readstep|-|-|R|-|**ReadStep**\\ Consente la lettura del passo selezionato in stepin| | ||
+ | |writestep|-|-|R|-|**WriteStep**\\ Consente la scrittura del passo selezionato in stepin| | ||
+ | |prgsetting|B|R|RW|-|**Setting program data-entry**\\ Il bit ZERO abilita l' | ||
+ | |||
+ | ==== - Comandi ==== | ||
+ | |||
+ | ^Nome^D^R^A^Condizioni^Descrizione^ | ||
+ | |readstep|-|-|R|-|**ReadStep**\\ Consente la lettura del passo selezionato in stepin| | ||
+ | |writestep|-|-|R|-|**WriteStep**\\ Consente la scrittura del passo selezionato in stepin| | ||
+ | |||
+ | |||
+ | ===== - Limitazioni ===== | ||
+ | |||
+ | L' | ||
+ | di memoria utilizzato (Flash Eprom seriale) tale operazione risulta onerosa dal punto di vista del tempo utilizzato. | ||
+ | Infatti il tempo utilizzato è variabile da 512 a 1024 volte il tempo di campionamento associato device DATACELL. Quindi | ||
+ | questo tipo di memoria può essere utilizzato per contenere dei dati che possono essere variati dall' | ||
+ | relativamente lente. Sicuramente non è una memoria utilizzabile per contenere dati che devono essere scritti con | ||
+ | una alta frequenza. In ogni caso l' | ||
+ | le prestazioni della CPU nel gestire il resto dei device e dell' | ||
+ | Per esempio se il tempo di campionamento associato al device è di 6 ms, il tempo per eseguire una scrittura nel device | ||
+ | può andare da circa 3 a 6 secondi. Il parametro stepout diventa uguale a stepin dopo questo tempo.\\ | ||
+ | Inoltre il tipo di memoria utilizzato garantisce un numero di scritture pari a 100000. Anche per questo si deve evitare di | ||
+ | scrivere dei programmi che scrivino in modo continuo sulla memoria utilizzando il comando WRITESTEP. | ||
+ | |||