disys Inserito: 10 settembre 2012 Segnala Share Inserito: 10 settembre 2012 Salve a tutti, è la prima volta che vengo su questo forum e non so praticamente NULLA di PLC quindi scusatemi se dico fesserie. Noi sviluppiamo software in C++ e sempre più spesso ci capita di dover anche muovere delle semplici automazioni come motori in continuo o elettrovalvole. Finora ci siamo arrangiati utilizzando la piattaforma Arduino per gestire gli I/O da software ma la scarsa affidabilità dell'Arduino si fa sentire sempre più spesso. Abbiamo quindi deciso di passare al PLC per gestire gli I/O e, essendoci stato consigliato Omron, siamo capitati qui. Quello che volevo chiedere è: esiste un modo di programmare un PLC tale per cui, se cambia un ingresso (e quindi un bit), il PLC me lo comunichi via seriale o ethernet senza che io debba continuamente chiedergli lo stato di quel bit? So che esiste il protocollo FINS ma mi sembra di capire che quel protocollo viene utilizzato più che altro per scrivere dati sul PLC e per interrogarlo. Quello che a me interessa, invece, è restare in attesa sulla porta seriale del PC finchè il PLC mi comunica che un bit è cambiato. E' possibile? Grazie a tutti quelli che mi vorranno rispondere. Marco Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 10 settembre 2012 Segnala Share Inserita: 10 settembre 2012 Si può fare semplicemente che quando l'ingresso (o comunque sia, l'evento scatenante) cambia stato, venga lanciata una routine che invia un messaggio, magari un banale ASCII, via seriale. Dal lato PC, l'arrivo del messaggio (che conterrà anche la descrizione dell'evento) sarà poi interpretata come volete. E' fattibile anche via ethernet, ma occhio che non tutti i PLC omron possono aprire i socket per emettere un messaggio... Link al commento Condividi su altri siti More sharing options...
disys Inserita: 10 settembre 2012 Autore Segnala Share Inserita: 10 settembre 2012 Grazie mille Ctec perchè, cosa rarissima nei forum, hai risposto esattamente alla domanda che avevo posto. Per mandare un banale ASCII (che è esattamente quello che facciamo ora con l'Arduino), bisogna sapere bene bene il Ladder oppure è abbastanza semplice? Grazie ancora Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 10 settembre 2012 Segnala Share Inserita: 10 settembre 2012 Beh, ecco, c'è da accedere alla parte di comunicazione, che per molti è vista come la parte più ostica della programmazione... Secondo me è semplice, soprattutto con gli Omron. Se poi voi programmate l'Arduino, direi che c'è solo da leggere un po' il manuale... Basta sostanzialmente impostare la porta nelle Impostazioni del PLC, poi "costruire" il messaggio (cosa che dipende un poco dal PLC usato, perchè i più vecchi non hanno la gestione delle stringhe), dopodichè la si invia mediante TXD. Se poi si vogliono fare le cose a modino, si mette il PLC in ascolto di un messaggio di acknowledge (che so, una stringa tipo OK o ACK) e se non lo si riceve entro un certo tempo, ci si riprova, magari per un paio di volte. Se si usano stringhe con CR o CR+LF come terminazione, il modulo di comunicazione del PLC mette a disposizione dei bit che avvertono quando un messaggio è arrivato nel buffer. Quando avete scelto il PLC, al limite vi posso aiutare a configurare il tutto.PS: non avevo mai sentito parlare di scarsa affidabilità dell'Arduino, anche se non l'ho mai usato. Cosa intendete dire? Link al commento Condividi su altri siti More sharing options...
disys Inserita: 10 settembre 2012 Autore Segnala Share Inserita: 10 settembre 2012 Sei veramente gentile. Per il PLC pensavo ad una cosa come questa: http://www.ebay.it/sch/i.html?_trksid=p5197.m570.l1313&_nkw=CP1EE30DRA+&_sacat=0 ma l'ho scelto più che altro per il prezzo e perchè non ho bisogno di cpu performanti visto che l'Arduino è perfettamente in grado di fare il ciclo. Quello che non capisco sono gli ingressi e le uscite, io ho una scheda per Arduino con 6 ingressi optoisolati e 6 uscite a relè. Il PLC come funziona? Ha i relè incorporati? Per ciò che concerne l'affidabilità di arduino c'è da dire che non è ovviamente una questione di microcontrollore, che va benissimo, ma della scheda su cui è montato (e quindi dell'arduino). Ad esempio se l'alimenti esternamente allora scalda tantissimo, tanto da bruciarsi o da andare in protezione. E' sensibilissimo a disturbi EM tanto che si spegne e riaccende l'integrato, perdendo la comunicazione e cambiando immancabilmente porta usb. Inoltre mi è capitato un paio di volte di bruciare alcune uscite/ingressi (che nell'integrato sono gli stessi pin) senza apparente motivo. Infine, nota assai dolente, a volte è necessario premere il pulsante di reset per riuscire a riprogrammarlo perchè l'ide dice che l'arduino non risponde. Come dire che se l'arduino è dentro un quadro elettrico ti tocca aprire ogni volta il quadro. Ad ogni modo a me serve un plc piccolo, con almeno 8 in e 8 out, con gli ingressi che mi leggono da 5 a 30 V e le uscite a relè che possano andare in continua a 12 o 24 V o in alternata a 230. E che mi supporto il TXD, suppongo Marco Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 10 settembre 2012 Segnala Share Inserita: 10 settembre 2012 No, quel PLC non va bene, non puoi metterci la seriale. Ed è grosso, 30 I/O Devi andare su un CP1E-N20 (20 I/O, di cui 12 ingressi e 8 uscite. Ci sono poi più scelte, sia come uscite (a relè o a transistor) e come alimentazione (230Vac o 24Vdc). Poi ci aggiungi il modulino RS232. In pratica ti serve un CP1E-N20DR-A (uscite relè e pwr a 230Vac), oppure un CP1E-N20DR-D (alimentazione 24Vdc). Le uscite a relè sono da 2A ciascuna, sia a 230Vac che 24Vdc. Occhio ai comuni di uscita, che possono essere caricati massimo con 4A ciascuno. Per la RS232, ti serve un CP1W-CIF01. Uhm... Meno male che non lo uso. Le schede che faccio io sono basate su ARM Cortex M3 (STM32), e posso assicurare una immunità e robustezza fuori dal comune, anche se io non optoisolo quasi mai un tubazzo... Link al commento Condividi su altri siti More sharing options...
NoNickName Inserita: 10 settembre 2012 Segnala Share Inserita: 10 settembre 2012 (modificato) Per ciò che concerne l'affidabilità di arduino c'è da dire che non è ovviamente una questione di microcontrollore, che va benissimo, ma della scheda su cui è montato (e quindi dell'arduino). Ad esempio se l'alimenti esternamente allora scalda tantissimo, tanto da bruciarsi o da andare in protezione. Tipico problema in cui lo zero dell'arduino non è lo zero del quadro. Se lo zero dell'alimentatore è flottante, come penso, mettilo allo stesso potenziale dello zero del quadro. Meglio ancora se li prendi tutti e due e li metti a terra. Modificato: 10 settembre 2012 da NoNickName 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