bhef Inserito: 21 febbraio 2020 Segnala Inserito: 21 febbraio 2020 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
batta Inserita: 21 febbraio 2020 Segnala Inserita: 21 febbraio 2020 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.
batta Inserita: 21 febbraio 2020 Segnala Inserita: 21 febbraio 2020 (modificato) 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ì: 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: 21 febbraio 2020 da batta
bhef Inserita: 21 febbraio 2020 Autore Segnala Inserita: 21 febbraio 2020 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ì: 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.
leleviola Inserita: 21 febbraio 2020 Segnala Inserita: 21 febbraio 2020 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
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora