Vai al contenuto
PLC Forum


Campionamento ciclico di valori analogici in una DB


bhef

Messaggi consigliati

Buongiorno a tutti

Sono Fabio 27 anni programmatore PLC alle prime armi ed è un vero piacere scrivervi qui per la prima volta (il forum lo seguo da circa un anno ma è la prima volta che mi capita di scrivere).

Avrei bisogno di un aiuto da parte vostra:

Mi spiego

Innanzitutto stiamo parlando di un PLC S7-1513, Tia Portal 15.1 e linguaggio programmazione KOP.

Dovrei leggere dei valori analogici provenienti da un sensore e ad ogni intervallo di tempo (25ms) inserirli in sequenza in una DB per un totale di 5000ms, in totale quindi stiamo parlando di 200 dati.

Mi sono creato quindi un clock di 25ms ma la domanda è: come faccio a salvarmi i dati in sequenza? cioè il primo valore nel primo posto nella DB, il secondo valore nel secondo posto nella DB ecc..?

Se è possibile preferirei utilizzare il linguaggio KOP perchè degli altri linguaggi non ho molta dimestichezza.

 

Ringrazio in anticipo le risposte

Fabio

 

Link al commento
Condividi su altri siti


16 minuti fa, bhef ha scritto:

Mi sono creato quindi un clock di 25ms

Se vuoi avere precisione nei tempi di campionamento, con tempi così brevi lascia perdere il clock autocostruito, che risente dei tempio di scansione del plc, ed è quindi impreciso.
Inserisci invece le istruzioni in un OB a tempo, con tempo di 25 ms.

 

Per l'archiviazione, peccato che tu lo voglia fare in KOP, perché in testo strutturato faresti tutto in poche righe.

E peccato anche che tu stia lavorando con una cpu S7-300, che non ti permette, in KOP, di indicizzare le variabili.
Con il 300 mi sa che lo puoi fare in strutturato, in awl, ma non in kop. Quindi, ti consiglio vivamente di prendere in considerazione di farlo in strutturato.

Il tutto si riduce a una cosa simile (da inserire nell'OB a tempo di cui sopra):

"myDB".myVar[#id] := #analogValue;

#id := #id + 1;
IF #id > 99 THEN
    #id := 0;
END_IF;

Presupposti: devi aver creato un DB con un array di 100 variabili (0..99), e la variabile id non deve essere una variabile temporanea.

Link al commento
Condividi su altri siti

Opsss...

Non chiedetemi perché, ma avevo letto CPU 313.
Con la 1513 lo puoi fare anche in KOP, ma perché non farlo lo stesso in strutturato, che è così semplice?

Comunque, in ladder, sarebbe così:

immagine.png.2bd08bafdba325454306f34b99a92044.png

 

Nell'immagine ho tagliato un pezzo. L'istruzione al centro è INC.

In strutturato, con 1500 e TIA dalla V15 in poi, potresti anche modificare la riga

#id := #id + 1;

in

#id += 1;
Modificato: da batta
Link al commento
Condividi su altri siti

2 ore fa, batta ha scritto:

Opsss...

Non chiedetemi perché, ma avevo letto CPU 313.
Con la 1513 lo puoi fare anche in KOP, ma perché non farlo lo stesso in strutturato, che è così semplice?

Comunque, in ladder, sarebbe così:

immagine.png.2bd08bafdba325454306f34b99a92044.png

 

Nell'immagine ho tagliato un pezzo. L'istruzione al centro è INC.

In strutturato, con 1500 e TIA dalla V15 in poi, potresti anche modificare la riga


#id := #id + 1;

in


#id += 1;

Intanto grazie per le risposte.

Penso proprio di ascoltare il consiglio e inserire un OB30 in linguaggio strutturato.

Link al commento
Condividi su altri siti

come non condividere batta,

che fortuna che avete ad aver un aiutante come lui,

ai tempi o almeno 15 anni fa ho sperimentato tutto ciò anche con altri marchi tutto in modo autodidatta

e diro che era quasi più soddisfacente, ma daltronde i tempi cambiano e la rete serve anche a questo, ad aiutarsi fra di noi

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...