Go Down

Topic: Arduino como PLC para controlar proceso industrial (Read 24418 times) previous topic - next topic

maxid

La licencia de arduino especifica que se puede usar el core pero no puede llamarse arduino otro equipo que no sea fabricado por ellos.
Por eso los clones tienen variedad de nombres
El que pregunta aprende, el que responde aprende a responder.

cip3322


Yo he desarrollado un proyecto muy parecido en una hormigonera con un Mega. Actualmente está en uso, pero el problema que estoy teniendo es que aleatoreamente el arduino se resetea solo se va al inicio del sketch, con lo que se pierde todo le que está realizando. Tiene comunicación con una pc que monitorea el proceso: Envia la receta a preparar y recibe lo que va pesando, y a veces se resetea. Respecto al pesado, leer las celdas de carga, tuve que trabajar mucho ya que los resultados obtenidos de una caja que lee la celda y envia una señal 0-5v me daba enormes ocilaciones, pero con muchas (cientos) de lecturas que luego promedio obtengo un valor bastante estable. Si te interesa te cuento mas sobre mi proceso. Si alguien me puede ayudar con respecto al reseteo, les agradezco. En estos momentos estoy buscando información para comunicarme con la PC a travez de los pines con un Max 232 en vez del conector USB de la placa, calculando que por aquí me entra alguna señal que me resetea el sketch. Sigo en otro momento si les interesa el tema.


También estoy usando el arduino para controlar una maquina de prensa de uvas de una bodega algo parecido a esta:  http://www.agrovin.com/agrv/pdf/maquinaria/recepcion/prensa_ppa.pdf
al pulsar un botón ejecuta un programa da varios vueltas a la cuba, mete presión en bolsa de prensado, espera x minutos, vacía la bolsa de prensado, ... y empieza otro ciclo (12 en total). Tengo tres reles (prensado, vaciado y rotación) y dos sensores (presión y posición) ... en fin funciona de maravilla con 200 € he reemplazado un ordenador que vale 4000 €. Al principio tenia el mismo problema que el tuyo de vez en cuando se reseteaba el sketch le di mis vueltas y el problema era de lo mas tonto (al menos en mi caso) en vez de usar un shield de reles de arduino compre una placa con reles de cebec (pensando que son mas profesionales) y como pensaba que son lo mismo que un shield normal le conecte el pin de salida y el gnd directamente a la placa de reles, al final descubrí que la placa de cebec no llevaba ningún resistor en el gnd así que le daba 5 V directamente a través del mosfet al gnd lo que provocaba que el arduino se resetee. Solución : de lo mas simple un resistor de 1K y un diodo al gnd y asunto resuelto. Así que en tu caso estoy de lo mas seguro que el problema es electrónico, repasa todo y no te olvides que a todo voltaje que cae en el gnd  hay que poner un resistor entre 1 y 10 K.

maxid



Yo he desarrollado un proyecto muy parecido en una hormigonera con un Mega. Actualmente está en uso, pero el problema que estoy teniendo es que aleatoreamente el arduino se resetea solo se va al inicio del sketch, con lo que se pierde todo le que está realizando. Tiene comunicación con una pc que monitorea el proceso: Envia la receta a preparar y recibe lo que va pesando, y a veces se resetea. Respecto al pesado, leer las celdas de carga, tuve que trabajar mucho ya que los resultados obtenidos de una caja que lee la celda y envia una señal 0-5v me daba enormes ocilaciones, pero con muchas (cientos) de lecturas que luego promedio obtengo un valor bastante estable. Si te interesa te cuento mas sobre mi proceso. Si alguien me puede ayudar con respecto al reseteo, les agradezco. En estos momentos estoy buscando información para comunicarme con la PC a travez de los pines con un Max 232 en vez del conector USB de la placa, calculando que por aquí me entra alguna señal que me resetea el sketch. Sigo en otro momento si les interesa el tema.


También estoy usando el arduino para controlar una maquina de prensa de uvas de una bodega algo parecido a esta:  http://www.agrovin.com/agrv/pdf/maquinaria/recepcion/prensa_ppa.pdf
al pulsar un botón ejecuta un programa da varios vueltas a la cuba, mete presión en bolsa de prensado, espera x minutos, vacía la bolsa de prensado, ... y empieza otro ciclo (12 en total). Tengo tres reles (prensado, vaciado y rotación) y dos sensores (presión y posición) ... en fin funciona de maravilla con 200 € he reemplazado un ordenador que vale 4000 €. Al principio tenia el mismo problema que el tuyo de vez en cuando se reseteaba el sketch le di mis vueltas y el problema era de lo mas tonto (al menos en mi caso) en vez de usar un shield de reles de arduino compre una placa con reles de cebec (pensando que son mas profesionales) y como pensaba que son lo mismo que un shield normal le conecte el pin de salida y el gnd directamente a la placa de reles, al final descubrí que la placa de cebec no llevaba ningún resistor en el gnd así que le daba 5 V directamente a través del mosfet al gnd lo que provocaba que el arduino se resetee. Solución : de lo mas simple un resistor de 1K y un diodo al gnd y asunto resuelto. Así que en tu caso estoy de lo mas seguro que el problema es electrónico, repasa todo y no te olvides que a todo voltaje que cae en el gnd  hay que poner un resistor entre 1 y 10 K.


Aporto algo mas. Todas, pero todas las entrada deben estar protegidas de algun modo, ya sean analogigas o digitales.
En las entradas digitales generalmente vienen señales de cables largos, los que van captando muchos transitorios.
Hay que poner diodos a +5 y gnd y en lo posible usar optoacopladores, y en la entrada despues de los di0dos 1 capacitor de 100nf, dependiendo de la velocidad de lectura que busquen.
       
En la parte analogica es igual solo que poner un capacitor de tantalio de 1uF, esto realiza un promedio de señal y evita esos picos locos.
Asi lo teniamos en una placa para hormigoneras profesionales en toda la argentina, con errores de 1kg en 7000kg de pesada con conversores de 12bits.

Tambien lei hace poco que agregaron ferrites a los cables usb y dejaron de tener culgues de comunicacion.
El que pregunta aprende, el que responde aprende a responder.

ADLC

Cuando el AVR se resetea, la razón del reseteo se suele registrar en un registro.
Lo más seguro es que la razón de tu reset sea lo que se denomina un brown-out ... es decir, una caída de tensión demasiado grande porque se ha activado algo, normalmente una carga inductiva como un motor o un rele, que de pronto tira de un montón de miliámperios ...

El filtrado de las lineas de entrada está bien, y es necesario, pero el mayor problema está en el diseño de la alimentación ... como mínimo, deberías probar a alimentar el arduino (con una pila de 9V) de manera separada al resto de la circuitería para asegurarte que el micro no se cae por un brow-out ... al menos para probar; luego hay otras muchas manera de mejorar eso ...
Vinciduino rocks!

maxid

despues del reset ese registro se puede consultar? o hay tiempo de ejecutar una interrupcion para marcar o guardar en flash?
El que pregunta aprende, el que responde aprende a responder.

ADLC

Digamos que ese registro sólo se puede consultar después del reset ...

El registro es el MCUSR en el 328P. Búscalo en el datasheet del microcontrolador.
Por lo que he mirado, el código de inicialización de Arduino no lo toca, aunque no sé que hará la librería de C (que tampoco creo que lo toque).
Vinciduino rocks!

PeterKantTropus

Mi experiencia con Arduino en un entorno industrial fue negativa.
El proyecto era una cortadora de pliegos. La maquina debobinaba un rollo hasta cierta medida,  mediante un encoder , y luego una cuchilla deslizable lo cortaba en pliegos.
Al final lo logre hacer funcionar pero de vez en cuando hacia cualquier cosa.
El trabajo para hacerlo funcionar incluyo optoaclopar tanto salidas como entradas, no basta solo con las salidas.  Filtrar las fuente y agregar filtros a los reguladores de velocidad de los motores trifásicos.
Así y todo el funcionamiento fue errático, cuando el cliente ya se empezaba a cansarse opte por reemplazar todo por contadores de pulsos y reles.  La maquina perdió flexibilidad pero gano en confiabilidad.
Resumiendo: el costo de de todo el trabajo de filtrado supero el de un plc chino de bajo coste y si se suma el tiempo y enojo del cliente  fue una experiencia traumática. 

ADLC

Está claro que hacer funcionar algo en casa no es lo mismo que hacerlo funcionar en un entorno industrial o de automoción ...

De hecho, Arduino no fue diseñado con esos entornos en mente. Aun así, los microcontroladores están llamados a comerse a los PLCs con el tiempo (es una opinión personal, claro) por algo tan sencillo como el tema de coste vs. flexibilidad ...
Vinciduino rocks!

manumoli

Pienso que ponemos demasiadas pegas puesto que estamos hablando de tan solo  un proyecto que esta en  el inicio, no estamos hablando de una implementacion  industrial ya homologada, mas bien de como aportar ideas creativas para la inventiva.
Todos los problemas de parasitos inducidos en las  lineas  de alimentacion se solucionan muy facilmente mediante una bateria-tampon que alimente el  Arduino a una tension  estable y aislada.
El cableado  hacia y desde los sensores, obiamente, ha de ser  de calidad, apantallado y con filltros adecuados para evitar la indduccion de parasitos, pero esto no es tan caro de implementar ni mucho menos, ya existen muchos  modelos de filtros en el mercado muy economcos.  Una  buena idea es que la placa central no sea solo el  Arduino de control, sino que cada grupo de sensores o de acruadores  sea  el esclavo en un bus comun hacia el Arduino de control.
El tipo de  bus pienso que implementar el RS 486 es una buena opcion y quzas la mas  economica
Seamos positivos y aportemos ideas, esquemas, enlaces, por que ser creativo en si mismo ya es un indice de asertividad

maxid

claro que si se puede, si han hecho uun satelite con arduino como no se va apoder.
Es logico que hay que ir arreglando y agregando protecciones.
Yo sugiero el uso de i2c y spi para comunicar modulos, y asi con la idea de arduino el uso de shields, cpu,io,ad,comunicaciones,etc.
Si se forma un equipo de trabajo cada grupo puede enfocarse en una parte.
El que pregunta aprende, el que responde aprende a responder.


albertprieto84

Hola, yo estoy desarrollando un proyecto para utilizar arduino en entornos industriales. Si buscáis la familia ardbox en la web de industrialshields podréis ver las diferentes variedades.
Creo que arduino tiene potencial a nivel industrial, si bien se tendrían que mejorar ciertas cosas para conseguir mas fiabilidad y seguridad para la correcta aceptación.
Nosotros, somos un equipo de 5 ingenieros y estamos trabajando para que esto sea así! En una semanita, llegarán las primeras unidades de la pre-serie de producción que lanzamos. Si os interesa podéis contactar conmigo!
A la vez, estamos trabajando en un software para adaptar la programación de arduino a LADDER! ya que para la programación industrial no todo el mundo se atreve a escribir código y se está mas familiarizado con este tipo de código.

maxid

Estoy empezando a usar minibloq, es una programacion en bloques como scratch pero mas simple y totalmente ampliable.
Los desarrolladores son argentinos y fueron a Sparkfun https://www.sparkfun.com/news/1374a un hacking. Se pueden desarrollar modulos espacificos para "idioma" plc
Es muy simple y no tiene limites.
El que pregunta aprende, el que responde aprende a responder.

pedro1974

Buenas tardes,
parece que ya hay alguien que empieza a comercializar PLCs basado en arduino en formato industrial. Veo que de momento les falta software y se tiene que programar 'a mano':
http://www.industrialshields.com/

Tendremos que estar al caso.

Saludos,
Pedro

NPlayer

Arduino para entornos industriales es un proyecto interesante, pero complejo jeje.  A mi me gustaría saber sobre el estado de las salidas cuando hay un reseteo del arduino.  Creo haber leido que cuando se reinicia el arduino el estado de los pines es inestable, y pudieran ponerse a nivel alto en algún momento.  ¿Es esto así?  Porque sería un problema que al reiniciarse el arduino se conectaran o desconectaran elementos conectados al arduino antes de que se haya cargado el programa.

Saludos!

Go Up