chia10 Inserito: 2 settembre Segnala Share Inserito: 2 settembre Salve a tutti, ho appena iniziato a studiare come poter strutturare i diagramma ladder per PLC OmronCP1L, ma sto avendo notevoli difficoltà. Sapreste indirizzarmi su dei siti in cui spiegano bene come strutturare i diagrammi ladder? Ad esempio, come posso sviluppare questa consegna? Si attui un controllo sulla forza sviluppata sulla regolazione di un muscolo pneumatico per una fissata deformazione in catena aperta e catena chiusa. In base al valore attuale di forza generata, il segnale di comando in pressione da inviare al muscolo avrà pendenza diversa. 1. Catena aperta Basandoci sulla relazione matematica (funzione di trasferimento) Forza = Forza (pressione, ∆L/L): • calcolare il valore di pressione per produrre la forza voluta: 3,88 Bar; • con un fondoscala pari a 6 Bar, trovare il comando di tensione da inviare alla valvola proporzionale in pressione per produrre il valore di pressione precedentemente calcolato: 6,3 Volt; • scrivere un programma PLC che, dopo l’attivazione di un pulsante di START, generi un segnale analogico di output al fine di ottenere la pressione calcolata; • leggere il valore della forza ed effettuare un confronto con quella voluta Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 2 settembre Segnala Share Inserita: 2 settembre Tutti 'sti calcoli in ladder? Ommammmamia, ci vogliono un sacco di rung. C'è poco da organizzare, non c'è tanta logica da fare, ma una mole di calcoli. Alla fine il programma aspetta lo start, calcola il segnale analogico, legge la forza applicata, fa un confronto. Tutto in sequenza. Il massimo di "struttura" è quello di creare una FB per i calcoli, e una per la lettura analogica. PS: perché usare il CP1 che ha 20 anni e non andare su un CP2 che almeno è più recente e veloce? Ancora meglio un CJ2, che ti dà la possibilità di scrivere routine in ST, che per i calcoli è una manna... Rimanendo su PLC programmabili con CXone Link al commento Condividi su altri siti More sharing options...
chia10 Inserita: 2 settembre Autore Segnala Share Inserita: 2 settembre (modificato) purtroppo all'università ci fanno usare solo Omron CP1L. Però come posso capire ad esempio quando usare i comandi *F, /F, FIX, MOV, MOVL,... a seconda dei casi? ho alcune difficoltà a capire come impostare la logica per il funzionamento. Modificato: 2 settembre da chia10 Link al commento Condividi su altri siti More sharing options...
chia10 Inserita: 3 settembre Autore Segnala Share Inserita: 3 settembre 20 ore fa, Ctec ha scritto: Tutti 'sti calcoli in ladder? Ommammmamia, ci vogliono un sacco di rung. C'è poco da organizzare, non c'è tanta logica da fare, ma una mole di calcoli. Alla fine il programma aspetta lo start, calcola il segnale analogico, legge la forza applicata, fa un confronto. Tutto in sequenza. Il massimo di "struttura" è quello di creare una FB per i calcoli, e una per la lettura analogica. PS: perché usare il CP1 che ha 20 anni e non andare su un CP2 che almeno è più recente e veloce? Ancora meglio un CJ2, che ti dà la possibilità di scrivere routine in ST, che per i calcoli è una manna... Rimanendo su PLC programmabili con CXone Salve, purtroppo all'università ci fanno usare solo il PLC OMRON CP1L. Per quanto riguarda questo caso, vorrei avere alcune delucidazioni, se possibile. L'esercizio è stato svolto dal professore in questa maniera: non capisco i numeri +1,67 , +25,5 ,... da dove vengono presi. se sono tutti input che vengono letti direttamente oppure se sono stati calcolati. Grazie mille per l'aiuto Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 3 settembre Segnala Share Inserita: 3 settembre 21 ore fa, chia10 ha scritto: quando usare i comandi *F, /F, FIX, MOV, MOVL I PLC in genere sono molto legati ai tipi di dato, ed è anche giusto per evitare eventi strani come numeri negativi dove non dovevano esserci. A me mancano funzioni di casting come in C nel linguaggio ST, ma non si può avere tutto... Quindi i PLC, soprattutto quelli un poco più datati come il CP1, non sono in grado di adattare i valori a seconda dell'uso. Per questo ti trovi delle istruzioni base (per esempio la moltiplicazione *) che ha diversi "modificatori" a seconda del tipo di dato da elaborare: * Moltiplicazione tra interi (16bit) con segno *L Moltiplicazione tra doppi interi (32bit) con segno *U Moltiplicazione tra interi (16bit) senza segno *UL Moltiplicazione tra doppi interi (32bit) senza segno *F Moltiplicazione tra floating point tralasciando quelli in BCD (oramai si usano piuttosto poco, anche se a volte risultano utili). Stessa cosa per istruzioni di spostamento come la MOV (16 bit) e MOVL (32bit), da scegliere a seconda del tipo da copiare. Ovviamente, in fase di compilazione, avrai un messaggio di warning che ti avverte se hai cercato di moltiplicare due interi con e senza segno, o altre incongruenze. L'operazione verrà svolta lo stesso, ma con risultati imprevisti. 37 minuti fa, chia10 ha scritto: non capisco i numeri +1,67 , +25,5 Questi sono i cosiddetti "magic numbers" che vanno evitati come la morte. Sono valori che così sembrano senza senso, ed è sempre meglio usare (come la #define in C e le EQU in assembler...) delle label che abbiano senso e tra l'altro il CXprogrammer lo consente eccome. Nel tuo programma probabilmente sono dei precalcolati, dovrei vedere in particolare, magari stasera. Ora non ho tempo, scusa. Link al commento Condividi su altri siti More sharing options...
chia10 Inserita: 5 settembre Autore Segnala Share Inserita: 5 settembre Il 03/09/2024 alle 10:16 , Ctec ha scritto: I PLC in genere sono molto legati ai tipi di dato, ed è anche giusto per evitare eventi strani come numeri negativi dove non dovevano esserci. A me mancano funzioni di casting come in C nel linguaggio ST, ma non si può avere tutto... Quindi i PLC, soprattutto quelli un poco più datati come il CP1, non sono in grado di adattare i valori a seconda dell'uso. Per questo ti trovi delle istruzioni base (per esempio la moltiplicazione *) che ha diversi "modificatori" a seconda del tipo di dato da elaborare: * Moltiplicazione tra interi (16bit) con segno *L Moltiplicazione tra doppi interi (32bit) con segno *U Moltiplicazione tra interi (16bit) senza segno *UL Moltiplicazione tra doppi interi (32bit) senza segno *F Moltiplicazione tra floating point tralasciando quelli in BCD (oramai si usano piuttosto poco, anche se a volte risultano utili). Stessa cosa per istruzioni di spostamento come la MOV (16 bit) e MOVL (32bit), da scegliere a seconda del tipo da copiare. Ovviamente, in fase di compilazione, avrai un messaggio di warning che ti avverte se hai cercato di moltiplicare due interi con e senza segno, o altre incongruenze. L'operazione verrà svolta lo stesso, ma con risultati imprevisti. Questi sono i cosiddetti "magic numbers" che vanno evitati come la morte. Sono valori che così sembrano senza senso, ed è sempre meglio usare (come la #define in C e le EQU in assembler...) delle label che abbiano senso e tra l'altro il CXprogrammer lo consente eccome. Nel tuo programma probabilmente sono dei precalcolati, dovrei vedere in particolare, magari stasera. Ora non ho tempo, scusa. Salve, la ringrazio. I "magic numbers" quindi vengono presi direttamente dal programma ed usati in determinati casi per qualche calcolo specifico? oppure nel mio caso, potrebbero essere dati presi direttamente in laboratorio e misurati sul muscolo pneumatico? Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 5 settembre Segnala Share Inserita: 5 settembre Non leggo bene, ma per esempio, nella seconda parte, il nome del programma è di Acquisizione Forza. Da questo, deduco abbastanza facilmente che +9.81 è l'accelerazione di gravità terrestre (g) Se per esempio fossero stati usati label e commenti, avresti avuto come variabile "g" e accanto il commento "accelerazione di gravità". Anche gli altri valori interi hanno riferimenti alle formule, va visto un po' lì. Non mi torna molto che l'input cella sia associato a un canale (word) di ingressi 1, normalmente fa parte degli ingressi digitali fisici del PLC. Ma è un esempio da lezione, per cui chi se ne frega se poi nella realtà sarà inutilizzabile... Link al commento Condividi su altri siti More sharing options...
chia10 Inserita: 5 settembre Autore Segnala Share Inserita: 5 settembre 18 minuti fa, Ctec ha scritto: Non leggo bene, ma per esempio, nella seconda parte, il nome del programma è di Acquisizione Forza. Da questo, deduco abbastanza facilmente che +9.81 è l'accelerazione di gravità terrestre (g) Se per esempio fossero stati usati label e commenti, avresti avuto come variabile "g" e accanto il commento "accelerazione di gravità". Anche gli altri valori interi hanno riferimenti alle formule, va visto un po' lì. Non mi torna molto che l'input cella sia associato a un canale (word) di ingressi 1, normalmente fa parte degli ingressi digitali fisici del PLC. Ma è un esempio da lezione, per cui chi se ne frega se poi nella realtà sarà inutilizzabile... però non ho capito una cosa, nella parte di "generazione di tensione" essendoci input è probabile che i dati siano stati semplicemente visualizzati sul momento ed inseriti nel programma? mentre nella parte di "acquisizione forza", non essendoci input non capisco come il professore li abbia presi o calcolati. per l'input cella con 1, potrebbe essere un errore di trascrizione oppure potrebbe essere un dato scelto dal professore? Link al commento Condividi su altri siti More sharing options...
Alessio Menditto Inserita: 5 settembre Segnala Share Inserita: 5 settembre Chia per carità non quotare tutto ogni volta se non serve. Link al commento Condividi su altri siti More sharing options...
chia10 Inserita: 5 settembre Autore Segnala Share Inserita: 5 settembre D'accordo, la ringrazio Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 5 settembre Segnala Share Inserita: 5 settembre No, attenzione, quell' 1 non è un valore numerico, è un indirizzo. C'è da considerare la notazione per i numeri e indirizzi Numeri senza niente prima (1, 100, 23) non sono numeri ma indirizzi di "canali" di tipo CIO (ingresso uscita). Per esempio, nel CP1, gli ingressi cominciano dal canale 0 fino a 99, le uscite dal canale 100 al 199, e i successivi sono per moduli o funzioni speciali. Per questo consiglio di leggere il manuale. Se si vuole invece mettere un numero, dipende dal formato. Se per esempio devo mettere il numero "1", se è in formato UINT, scriverò &1, se formato INT, scrivo +1, se float scrivo +1.0, se esadecimale scrivo #1. Quindi quella istruzione FLT 1 W8, prende il valore del canale 0 (intero a 16bit) e lo trasforma in float e lo mette in W8 (o meglio W8 e W9, dato che un float occupa 32bit) Link al commento Condividi su altri siti More sharing options...
chia10 Inserita: 10 settembre Autore Segnala Share Inserita: 10 settembre La ringrazio😊 Link al commento Condividi su altri siti More sharing options...
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