This is an old revision of the document!
DEVICE DATACELL
0.1 Introduction
The DATACELL device, is used to store data in a non-volatile device and is inserted in the family Micro-Qmove when there is no HMI device;
DATACELL has:
-
flexible memory management programs;
-
a programmable memory access from QCL in writing and reading;
-
an insertion of an end-of-program for each program.
0.2 Installation
0.2.1 DEVICE DECLARATION IN THE CONFIGURATION FILE (.CNF)
In the configuration unit (.CNF), the BUS section must be declared so that you have the hardware resources required for the implementation of the DATACELL device.
;--------------------------------- ; Internal device declaration ;--------------------------------- INTDEVICE <device name> DATACELL TCamp
where:
<device name> | The name assigned to the device. |
DATACELL | Keyword that identifies the device of recipe management. |
Tcamp | Time sampling device (1÷250 ms). |
0.2.1.1 Example
;-------------------------------- ; Internal device declaration ;-------------------------------- INTDEVICE dcData DATACELL 0004
0.3 Operation
The DATACELL device used to access a memory area equal to 8192 long (32768 bytes) available in the non-volatile memory of the instrument. This memory area is designed to be used as a data container for work programmes or recipes.
The device allows you to arrange access to these data through a table with rows (in numbers equal to a “numstep” parameter) and columns (in numbers equal to a “numprog”). In each box of this table you can set up a number of variables of type long from 1 to 6 (in the “numelem” parameter). The user of the device must set the value of the “numelem” and “numstep” parameters and as a result the device counts the number of columns that make up the table and writes in the “numprog” parameter.
The formula that the device uses is:
numprog = 8192 / (numstep * numelem + [1])
The presence of the number [1] depends on the setting of the bit 0 of the “prgsetting” parameter. The 0 bit of the “prgsetting” parameter allows you to assign each program a variable to indicate which is the step to end program.
If for example, we want to create a table to hold the work programmes with 10 steps each and every step with 4 variables, we can have a total number of programs of 204. If you want to assign to each program a variable to indicate which is the step to end program, the number of programs will be 199.
To write the data into the table that is created you have to use the WRITESTEP command. Before using this command, you must set the “progin” and “stepin” parameters the coordinate of the box that you want to write (in progin is write the column and in stepin the row). Also you have to write the values to be transferred into the box in the “elema” … “elemf” parameters. At this point you can store these data in memory by sending WRITESTEP command. The same system is used to write the variable to indicate the step of fineprogramma using the “elemend” parameter.
0.3.1 Esempio di scrittura:
[...] dcData:progin = 2 ;programma di lavoro 2 dcData:stepin = 7 ;passo 7 del programma dcData:elema = 10 ;prima variabile dcData:elemb = 45678 ;seconda variabile dcData:elemc = 12 ;terza variabile dcData:elemd = 345678768 ;quarta variabile dcData:stepout = 0 WRITESTEP dcData ;invio comando di scrittura WAIT dcData:stepout EQ dcData:stepin ;attesa comando eseguito [...]
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.
0.3.2 Esempio di lettura:
[...] dcData:progin = 2 ;programma di lavoro 2 dcData:stepin = 7 ;passo 7 del programma dcData:stepout = 0 READSTEP dcData ;invio comando di lettura WAIT dcData:stepout EQ dcData:stepin ;attesa comando eseguito glVar01 = dcData:elema ;prima variabile letta glVar02 = dcData:elemb ;seconda variabile letta glVar03 = dcData:elemc ;terza variabile letta glVar04 = dcData:elemd ;quarta variabile letta [...]
0.4 Tabella comandi e parametri
0.4.1 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'inizializzazione il campo R indica il valore che il parametro o stato assume allaccensione
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
0.4.1.1 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; in caso contrario il comando non è inviato.
A
Indica il modo d'accesso.
R = Read (lettura).
W = Write (scrittura).
RW = Read / Write.
0.4.2 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, 2) dal valere del parametro numelem, 3) dal valore del parametro numstep 4) dalla abilitazione del fine programma. La formula è la seguente: numprog = 8192 / 1). |
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'introduzione del fine programma. Quando questo bit è 1 il numero di programmi “numprog” diventa: nuprog = 8192 / (numstep * numelem + 1). Se il bit “0” e a “0” il numero di programmi diretta: numprog = 8192 / (numstep * numelem) |
0.4.3 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 |
0.5 Limitazioni
L'operazione di scrittura tramite il comando WRITESTEP deve essere eseguita tenendo conto che a causa del componente
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'operatore con tempistiche
relativamente lente. Sicuramente non è una memoria utilizzabile per contenere dati che devono essere scritti con
una alta frequenza. In ogni caso l'operazione di scrittura viene eseguita con una modalità in background e non pregiudica
le prestazioni della CPU nel gestire il resto dei device e dell'applicativo.
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.