Arduino como PLC para controlar proceso industrial

Seria de gran ayuda para que podamos aportar ideas participativas. Gracias por tu interes en el Foro, Un saludo

Muy interesante la discusión,
Hace tiempo que nadie postea pero me ha parecido interesante dar mi punto de vista jeje. :grin:
Técnicamente, si hablamos sólo de programar una maquina para que haga una tarea determinada, obviamente ambos sistemas son igualmente validos, y como ya habéis comentado, la principal ventaja de Arduino respecto al PLC es que éste es abierto, por lo que es teóricamente más fácil de aprender a programar, se puede reutilizar más código, etc.
Sin embargo, me temo que en una planta industrial típica nadie va a querer reemplazar su antiguo PLC por un Arduino, aquí van algunas de mis razones:

  1. Los PLC tienen certificación para ser situados en áreas clasificadas, y este es un requerimiento muy típico en la industria del Oil&Gas por ejemplo. Además suelen estar certificados también para garantizar la integridad de los lazos de control y otorgar cierta fiabilidad al sistema (léase SIL, SIS, etc). Un Arduino desgraciadamente no tiene dicha certificación y, a menos que alguien se haga una pasta en certificarlo, no creo que eso vaya a suceder.
  2. Siguiendo la línea anterior, hay toda una industria detrás de los PLC que obviamente dificulta la entrada de nuevas alternativas. Siemens o ABB por ejemplo son gigantes industriales que además de la propia maquina tienen grandes contratos con las industrias cliente que dificultan enormemente la entrada de nuevas tecnologías.
  3. Los PLC además tienen software muy orientado a satisfacer las necesidades de los operadores de las plantas: los SCADA, los sistemas de control distribuido. Obviamente podemos diseñar un SCADA para Arduino, pero dudo que llegue a ofrecer las mismas prestaciones.
    Dicho todo esto, la verdad que ojalá Arduino pudiera introducirse como alternativa!
    Un saludo!

No me habia fijado en este hilo, ha estado bien que lo reflotes.

Comenzando...

Arduino como PLC, lo veo totalmente factible y de hecho ya hay una empresa que lo comercializa (un clon) para una aplicacion mas modesta:
http://www.winkhel.com/?gclid=CJymmp_Vx7YCFWbKtAod-TAADQ

Si bien, he visto al compañero de esta empresa por el foro, y el diseño que ha realizado con arduino es un estilo automata, cosa que veo muy interesante, no veo tan interesante el tema de que el software no es publico, una lastima, toca reinventar la rueda.

Mi opinion de lo que deberia ser o se podria hacer:
Al igual que openPLC, se deberia realizar un sistema arduino que crezca tanto como el usuario quiera, que emplee un protocolo estandar (mi voto es para ModBus) aunque no se implementarlo hay algo ya en la web y que emplee comunicaciones RS485 (protocolo industrial aceptado, funcionando y barato)

Respecto al software Scada o servidores si que es verdad que hay muy poco pero no debemos olvidar servidor gratuito que tiene PandoraFMS, MangoM2M, Ananas o algun otro... eso nos dejaria usar estos para aplicaciones propias.

Tambien existen proyectos parecidos para otros microprocesadores (de hecho, a la vuelta del verano estare intentando realizar un "automata" universal con un compañero de trabajo pero con PIC) que podriamos examinar.

Respecto al hardware creo que es bastante facil de implementarlo, mas faena va a dar el software... pero si os animais me apunto al desarrollo de un automata arduino pues es cierto que el tipo de programacion de los automatas y ladders y demas... no me gustan nada.

Ah, enlaces a tener en cuenta para ir abriendo boca: Freemodbus, PLCopen, OpenPlc.

Si hay animo... a crear automata, eso si, Open!!

Yo me sumo a la iniciativa de Heke, voluntario a desarrollar algo para hacer un PLC abierto basado en Arduino!

yo me sumo, y aporto algo mas.
Para que haya una certificacion tine que haber alguien que lo evalúe y pueda asegurar que cumple con normas. para eso se puede basar un diseño en la iso9001 por ejemplo o la norma de CE, TUV etc.

Ok, suena divertido, me prendo.

Salud!

Lo veo interesante este proyecto y animo a todos a intervenir. Podemos poner esquemas, bocetos, proyectos, ideas creativas etc. etc.
Podíamos centrar un poco el tema y trabajar en Módulos, me explico : Los mas entendidos en desarrollo hardware podían implementar desarrollos de tarjetas E/S opto acopladas, salidas a relé o a transistor, o a triac. La "base" ya está implementada en el micro y su tarjeta propia, por lo tanto se trata de implementar los shiels de forma artesanal para la comunicación de datos E/S Un tema que considero muy importante es el desarrollo de una fuente de alimentación muy estable, protegida de parásitos e interferencias y si es posible, con batería -tampón.
Los desarrolladores de Software podrían escribir librerías de código abierto en forma de Módulos, los cuales se podrán implementar al programa en forma de librerías que son llamadas desde el main
Yo tengo conocimientos e electrónica Industrial y puedo aportar información esquemas e ideas, y con mas colegas podemos ir poco a poco implementado un sistema que vaya mejorando día a día con las ideas que aportemos, Pienso que la potencialidad de la plataforma Arduino brinda una oportunidad más que excelente para el desarrollo de proyectos de Automatización Industrial a muy bajo coste, y lo que es más interesante, código abierto y libre para ampliaciones, desarrollos y nuevos proyectos

Como primer proyecto de ampliación, propongo la implementación de una placa casera de Entradas opto acopladas para tensiones de entrada de +24 V que es el estándar en Automatización Industrial, al rango que ha de admitir es de +24 V DC hasta +5 V DC para que sea compatible con todo el rango de tensiones en Automatización Industrial. Seria también un punto a su favor que pudiese admitir tensiones de entrada de 24 V AC funcionado del mismo modo que el anterior. Os animáis a enviar los esquemas ¿? Venga vamos a por ello ¡¡

A mi se me había ocurrido por cuestión de espacio pequeñas placas verticales que se conectan con tiras de pines con la señal , +,-. De esta forma cada placa puede ser una entrada optoacoplada, una salida rele, etc, y por software configurar el uso de cada pin.

Tenemos que aportar los esquemas de los circuitos entre todos pàra asi opinar. Pienso que deberiamos de partir de proyectos sencillos al principio para asi asimilar los conceptos poco a poco ya que algunas personas no estan muy familiarizadas con los circuitos. A medida que vayamos creciendo en ideas y conceptos los circuitos pueden ser algo mas complejos. Tambien los desarolladores de librerias pueden aportar ideas y rutinas al proyecto

Y por que no, a modo de expansion de entradas/salidas utilizar registros de desplazamiento, estos pueden a través de un optoacoplador controlar salidas a SSR, la rama Allen Bradley posee tarjetas de salida asi, y permiten desde 5V hasta 380V tanto en AC/DC

no se si lo conocéis pero lo que planteáis hacer lo tienen estos chicos ya muy avanzado.

https://code.google.com/p/open-plc

Todo esto está muy bien, pero si para un montaje simple de arduino salen problemas de ruidos en un entorno doméstico ¿que ocurrirá en uno industrial?.
Por lo que llevo visto hasta el momento (poco, la verdad) el arduino viene con muy poca protección frente al entorno. Me parece muy frágil. Y además da una cierta imagen de fragilidad.
Supongo además que no pensareis usar el arduino tal cual, por que se me erizan los vellos sólo de pensar un montaje con hilos sin soldadura en esos terminales tipo pin que trae el arduino.

Y eso que me encantaría poder hacer cosas de tipo industrial con este chisme. Además programando en C sin otros añadidos.

Con esto quiero decir que el primer paso para fabricar ese plc abierto sería blindar el arduino y modificar la forma que acceder las E/S al mismo.

En fin, si se hace un proyecto así me ofrezco para lo que sea que haya que hacer ¿donde hay que apuntarse?.

arduino asi como viene no sirve para cosas reales, carece de varios filtros para ruido. Es sabido que cada integrado se debe poner un capacitor de .1 lo mas cerca de vcc, y las placas no lo traen.
Obviamente hay que partir de un diseño personalizado y no usar un shield encima. Incluso saltar a un atmega644 u otro con mas capacidad que un 328

maxid:
arduino asi como viene no sirve para cosas reales, carece de varios filtros para ruido. Es sabido que cada integrado se debe poner un capacitor de .1 lo mas cerca de vcc, y las placas no lo traen.
Obviamente hay que partir de un diseño personalizado y no usar un shield encima. Incluso saltar a un atmega644 u otro con mas capacidad que un 328

Con tu permiso, abro un post nuevo para no desvirtuar este con una duda que me surge de tu comentario.

Además, por seguir con la discusión de este hilo; este arduino plc-open sería diseñando una placa nueva. De ser así ¿seguiría siendo un arduino?.

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

cromani:
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.

cip3322:

cromani:
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.

protio.png

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 ...

despues del reset ese registro se puede consultar? o hay tiempo de ejecutar una interrupcion para marcar o guardar en flash?