Arduino como PLC para controlar proceso industrial

Es una buena idea cuando empezamos?

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.

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.

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':

Tendremos que estar al caso.

Saludos,
Pedro

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!

Hola a todos.
Soy un recién llegado a ésto del Arduino. He estado leyendo y releyendo el post sobre el PLC, y me ha parecido bastante interesante.
Es cierto que hay más gente tratando de llegar al mismo sitio, pero en general, y según lo consultado, ocurre que estos proyectos:
a) No están terminados.
b) Son realmente caros.
http://www.electan.com/miniautomata-plc-arduino-winkhel-p-3273.html
https://www.kickstarter.com/projects/24519005/controllino-the-first-arduino-compatible-plc
Además que siempre supone un reto el crear una alternativa.
Por tanto, y en vista de que hay tanta gente apuntada a “trabajar” el proyecto (lo que me anima bastante, porque yo soy muy dejao), me he decidido a iniciar, con la osadía de la ignorancia, el trabajo real de este proyecto. Como diría un profesor mío, “el movimiento se demuestra… variando el vector posición respecto al tiempo”.
Voy a hacer un boceto, una especie de croquis mental, sobre el que se puede trabajar, modificándose a placer por otros miembros interesados con otras propuestas alternativas.
En principio, se trataría de diseñar y montar la versión 0 totalmente funcional con el mínimo posible, y después ya se harán mejoras y añadidos.

Comparación con el mercado
Primero creo que hay que comparar las comerciales que hay en el mercado:

Serie Marca Precio aprox.
Alpha 2 Mitsubishi 145 €
LOGO! Siemens 107 €
EASY 500 Moeller 91 €
MicroLogix Allen Bradley 150 €
ZELIOLogic Schneider / Telemecanique 141 €
CD12 Crouzet 120 €
SIMATIC S5 Neutral (Siemens) 328 €
ZEN OMRON 110 €

Aunque he encontrado algunos descatalogados a precios irrisorios, Zelio Logic 89 €, Alpha a 36 € y EASY 412 a ¡24 €!.
Ésto nos da una idea de por dónde nos debemos mover. Además (con algunas excepciones), la mayoría proveen 8-10 entradas y 4 salidas, generalmente a relé o a transistores (DC). Eso sí, los más proveen capacidad de ampliación.

Las especificaciones
Presento un boceto de las especificaciones básicas:

  • Nombre: LEOVIGILDO (¡Ojo que ya he avisado que se deben presentar alternativas, jaja! :P. Otras opciones son Liuva, el I, hermano de Leovigildo, o Hixem, el III, califa de Córdoba hasta que lo depuso Almanzor, que no Alcanfor, jeje 8). ¡Ah! Y lo de este nombre viene por que sea equivalente a lo de Arduino I de Ivrea). Se emplea Arduino UNO, aunque en posteriores diseños se puede emplear Micro o Nano por cuestiones de espacio.
  • Entradas Analógicas: 6, tres como posibles digitales, 0 - 5 V (aunque podrían ser 4-20mA según normalización industrial). Correspondientes con A0 a A5 del Arduino.
  • Entradas Digitales: 16 multiplexadas, por las 2, 4, 7, 8 y 12 (cuatro de selección de canal y una de recepción). 24 VAC/DC.
  • Salidas Digitales: 9 Relé estado sólido (alternativas a transistor DC y a triac o relé AC), 6 con posibilidad PWM. Se corresponden con 13, Rx, Tx, 3, 5, 6, 9, 10, 11. ¡Ojo! Rx y Tx tienen que tener la posibilidad de desconexión durante la programación.
  • Comunicaciones Modbus/RS485 (a partir de puerto I2C).
  • Alimentación 24 DC.
  • Especificación industrial en cuanto a interferencias y ruidos.
  • IP 20

La programación básica se hace sobre bloques de funciones (me parece más fácil de implementar), aunque debería admitir GRAFCET y diagramas de relés posteriormente.

Tareas
Me parece que la división de tareas y responsabilidades debe ser la siguiente:

a) Coordinador(es) general(es)
a. Coordinador Soporte (Hardware que dicen los inglaterrenses).

  1. Entradas digitales / Multiplexor
  2. Entradas analógicas
  3. Salidas digitales
  4. Fuentes alimentación
  5. Sistemas de protección y blindaje contra la radiación electromagnética y otras fuentes de interferencias (pulsos de alta frecuencia en cables). Jaulas de Faraday y demás parafernalia.
  6. Remanencia de soporte
  7. Comunicación Modbus / RS485 a partir de I2C
    b. Coordinador de programa
  8. Interfaz gráfico para BF, GRAFCET y DR (prescindible de momento).
    8 ) Intérprete de texto DB, GRAFCET (prescindible de momento) y DR (prescindible de momento).
  9. Implementador de programa ARDUINO.
  10. Bloques básicos y relés
  11. Bloques tiempo / calendario y horas
  12. Bloques analógicos
  13. Remanencia de programa
    c. Coordinador de Diseño 3D
  14. PCBs / distribución de componentes
  15. Caja raíl DIN
  16. Conexionado e indicación
  17. Integración de medidas de PEM
  18. ¡¡IMAGEN DE NUESTRO LEOVIGILDO!! (mascota – icono, colores, etc.)

¡Hala!, ¡Que cada uno se coja lo que quiera y en una semana trabajando! Como hay muchas tareas, el que se atreva, que coja varias.
Y a continuación un croquis de cada tarea.

Como no soy capaz de aclararme con el editor BBCODE de este foro (si es que el que es torpe, es torpe :roll_eyes:), he decidido pasar todo como un pdf.
En fin, espero vuestros comentarios.
Un saludo,

PLC Arduino.pdf (449 KB)

Alguien tiene idea de las certificaciones electrícas que debe superar cualquier PLC para salir a la venta?
Diganme como van a lograr eso?
Ejemplo simple: Armen un arduino, agreguen todos los filtros que quieran. Luego pongan en la misma red una lámpara fluorescente que tenga problemas para arrancar, y mejoren la prueba con un variador de velocidad no de ultima generación sino uno de 5 años, que no sea vectorial, de esos que meten ruido de linea en proporciones alarmantes. Ahora, hagan que su arduino funcione bajo esas condiciones sin fallas.
Si pasan eso el proyecto tiene futuro.

Ayer estaba en el taller de mi hermano, máquina de plasma funcionando, soldadora electrica, compresores, etc. motores, contactores generando espúreos por todos lados... todo eso viaja por la línea eléctrica directo a la fuente de alimentación.
Hay que poner mucho cuidado en su diseÑo y mas en someterlo a pruebas. Son cosas que hacen quienes desarrollan PLC's.
No digo que no se puede lograr pero se requiere de mucha experiencia industrial.

Me gusta el proyecto, y de hecho estoy en algo similiar con orientación específica (reemplazar un plc con un MEGA o un DUE) y tambien me había nutrido del OPENPLC ARDUINO cuyo link alguien sugirió hace un tiempo. Aun no llegué a la etapa de pruebas de campo.
Algo que me ha condicionado mucho ha sido lograr la estabilidad de lectura que tiene un PLC, yo uso PLC marca Automation Direct, son muy baratos considerando la simple ecuación precio/perfomance. Ahora como en mi pais (Argentina) se ha vuelto muy dificil importar (llevo 3 meses intentando conseguir el permiso para adquirir 10 PLC's) me puse en la tarea de intentar reemplazarlo por un ARDUINO que tenga el poder suficiente.
Para mis pruebas en mi taller, yo hago lo que dije antes. Tengo un tubo fluorescente que tiene problemas de arranque.. y veo si mi Arduino funcionan sin problemas. Eso lo logre con filtros RFI, con capacitores en paralelo con los diodos del puente rectifiador en el secundario de la fuente de alimentación. Y con un placa con plano de masa para todo lo que no es ARDUINO pero sirve de interfaz.
Esta prueba la superé, pero cuando puse el Variador de velocidad DANFOSS de 1HP que es tecnología 2000, pues desastre..
Asi que a rediseñar y acá estoy.
El PLC bajo las mismas condiciones funciona oK.

Excelente aporte.
De lo expuesto sugiero lo siguiente:

  • Entradas: El estandar es 24AC( que permite DC) en entradas
    En las salidas y por experiencia es mejor el triac, los relé solidos o mecanicos son caros voluminosos, (tienen menos vida util en cuanto a los mecanicos) y los solidos tienen caida de tension. Los capacitores deben ser Poliester. y tambien agregar un varistor a la tension maxima de trabajo, 24vca 220vca, etc.

  • Multiplexion:
    No es mala idea, pero eso llevaria una capa de software adicional para transformar las ideas del usuario a salidas, es mas conveniente usar un PCF8575 que te da 16 salidas o entradas o combinadas a 400Khz de muestreo y por I2c con salida de interrupcion

  • La fuente me parece bien, pero para ambientes industriales las switching deben ser muyyyyyyy cuidadas en ruido, quizas una mas estandar capta menos ruido, o puede ser filtrada mas facil

  • En las comunicaciones RS845, creo maxim tiene uno con bus i2c, sino se usa el serial del micro, o un softwareserial. Si queres te busco mas info.

  • Diseño:
    En cuanto al diseño lo haria tipo sandwich, CPU, IO, AD, Comunicacione,Fuente, de esta forma pueden haber distintos modelos, con 16, 32,64 salidas, con AD o no, con comunicacion o no, etc

  • Como software se puede usar minibloq.org que es totalmente adaptable y es grafico. Se pueden crear bloques, operaciones y accesorios, como sensores etc.

Estoy pendiente!!

@surbyte: Tambien soy de Argentina y trabaje en una empresa de automatismos, y simple tubo fluorescente te arrunia el dia. Por eso hablé de la fuente, y los filtros.
Aveces eso importa mas que el resto. o por ejemplo donde está el boton de reset, parece una estupidez, pero si está lejos esa linea es una antena y paff se resetea a cada rato!!!

Exacto!!! Y se que eres de Argentina.
Bueno yo voy a tratar de aportar la fuente de mi PLC Koyo DL05 o DL06
Tengo un par quemados.
Ambos usan el LM2677 que es una fuente de switching STEP DOWN de facil uso y da hasta 3Amp.
aca el esquema general.
Veré como está hecha la fuente que les comento.

No creo que esté muy lejos de esto pero prestaré debida atencion a los filtros y al impreso

Que bueno estar disponible cuando suge tanta energia comunitaria! Para ir presentando las motivaciones solo dire que se me rompió el timer mecanico del lavarropas, vivo en argentina y hago electronica reciclada.

Las especificaciones son interesantes, las alternativas tambien, los requisitos todos realizables. La diferencia esta en que funque en cualqueir ambiente, eso se puede debuguera y despues se certifica en el caso de argentina en el INTI, una vez logrado esto se le coloca el Marcado CE ( asumo que por la cantidad de argentinos las cosas duras se harian aca :P)

Tengo un proyectito de hace unos años ( anterior a que conociera Arduino y se los comparto para usarlo de puntapie inicial )

Les comparto la salida a Triacs y si pica sigo compartiendo, fue la punta de un conotrlador de persianas electricas...

Amigos míos,

Soy ingeniero industrial, tengo 60 años y, lo mejor (peor) de todo, es que he arrastrado el ass por todo tipo de sitios (para ganarme la vida he llegado a extremos como tener que dar clase de electrónica en la universidad . . . .vivir para ver).

No se centren en la cuestión de las especificaciones (tantas comunicaciones RS 232, RS XXX, MODIBUS, Entradas digitales / Multiplexor, Entradas analógicas, I2C, Interfaz gráfico para BF, GRAFCET y DR, etcétera, etcétera.), es tentador (y adictivo).

Es un problema de entorno industrial; alquién propuso "Integración de medidas de PEMSistemas de protección y blindaje contra la radiación electromagnética y otras fuentes de interferencias (pulsos de alta frecuencia en cables). Jaulas de Faraday y demás parafernalia". Por ahí van los tiros.

Además de eso, hay una serie de certificaciones que son necesarias para "homologar" el equipo. La certificación "CE" es engañosa: puesto que el fabricante la puede poner, casi, a voluntad, pareciera que una vez puesta vale todo: nada más lejos de la realidad, el marcado CE garantiza lo que garantiza, en este caso que la placa no tiene peligros para el usuario (electrocución e, imagino, en este caso que cumple la directiva de interferencias radioeléctricas y poco más).

Los viejos tenemos tendencia a ponernos pesados :D. Les remito a este enlace del foro http://forum.arduino.cc/index.php/topic,50780.0.html que lo explica muy bien.

Saludos

Estoy en desacuerdo con ajos en el buen sentido. No es para polemizar tampoco. (@ajos no me malentiendas).
No creo que se busque acá hacer algo comercial, se intenta resolver un problema que nos sirva a todos cuando encaremos proyectos industriales como los ya expuestos, luego cada uno verá que utilidad le dará o no.
Muchos prometemos y pocos hacemos.
Se requiere mucha energía y dinero para hacer todo esto de las certificaciones.

En fin, busquemos solucionar el mayor problema que es justamente una fuente confiable que asegure un funcionamiento estable del arduino en ambientes hostiles. Las interfaces entrada salida y de comunicacion son facilmente resolvibles.
El mayor problema está en la red y como hará o no que el arduino tenga comportamientos erráticos.

Esa para mi es la premisa aunque supongo que ya esta establecida.

Che no es que yo dijera que me iba a meter con las certificaciones, solo que es simple el proceso... En todo momento entendi que estabamos ante un proyecto de Hard Libre asi que es para los que quieran :slight_smile:

Respecto del tema Arduino y Ruido... aca el Diseño del PCB es clave, el arduino no esta diseñado para ambientes ruidosos, asi que hay que complementarlo bastante para que funcione... por otro lado seria simple armar algo compatible con Arduino pero con mas robustes.

Por otro lado lo mejor es tener un modulo aparte que filtre la alimentacion del Arduino del restohay bastante lugar para esto si se parte de una fuente de 24Vdc.

Tambien donde este el arduino se puede enjaular para mejorar respecto de la radiacion.. pero en fin hay que probarlo...

Por el lado de la programacion hay que habilitar el watch dog, seguramente convenga tener un reloj de tiempo real ( se podria Hakear el arduino para que use el oscilador interno y un cristal de 32K para la implementaicon del RTC.) para manejar calendarios.

En fin si que hay mucho para probar, pro lo pronto yo voy a jugar con los triacs y el lavarropas y les cuento ( en rigor voy a utilizar un ATtiny85 y no un Arduino...)

Hola de nuevo.
Siento la tardanza en contestar, pero la obligaciones laborales...

Surbyte:
Llevas razón, y creo que es algo fundamental. Pero no imposible. Más aún, los PLC "de verdad", y no los simples relés programables (me refiero por ejemplo los NEVADA ¿3000 o 6000? no recuerdo; controlan una turbina de vapor con más de 700 señales en un auténtico ambiente industrial) están ejecutados en placas multicapa, en los que generalmente no se emplea plano de masa (¿por efectos capacitivos? No lo sé). Pero sí jaulas de Faraday y filtros de alta frecuencia. Y funcionan.
La cuestión es encontrar una configuración válida. Ésto es,

  1. Proteger la línea de alimentación.
  2. Proteger las líneas de entrada.
  3. Proteger de interferencias aéreas.
    Fuentes de tensión protegidas que funcionen en ambientes industriales las puedes encontrar a miles y hay cientos de esquemas funcionales.
    La protección de líneas de entrada con filtros RC está más que constatada y no voy a insistir más en ello.
    La protección aérea con jaulas de Faraday la encuentras cada día en prácticamente cualquier aparato, debido a las altas frecuencias a las que funciona la mayoría.
    Pero, como acertadamente apuntas, hay que montarlo y probarlo. Tu laboratorio de "interferencias" me parece excelente.
    Por ese motivo es importantísimo que alguien con experiencia en estos asuntos nos ayude. Seguro que alguien del foro nos echará una mano. Y en cualquier caso, para éso estamos, para cacharrear ;).

Maxid:
Muchas gracias.
De acuerdo parcialmente con las entradas digitales. Lo único señalar que la universalidad elimina la posibilidad de señales por frecuencia (raras por otro lado).
En cuanto a las salidas por triac, de acuerdo contigo, pero apuntar que no permite salidas PWM, y ¡¡ojo con las continuas, que quedan bloqueadas!! Enterado, condensadores poliester, 600V. Y también apuntado, además de amortiguador, varistor.
En cuanto a la multiplexión, la capa de software es bastante "ligera" y por otro lado deja el puerto I2C para comunucaciones Modbus, pero me someto a tu experiencia.
De la fuente hay un comentario posterior creo que muy interesante.
Lo de las comunicaciones me parece muy bien... pero es que no tengo ni idea, jaja.
Diseño: ¡¡Ferpectamente !! (cito a Obélix)
En cuanto al software lo acabo de ver y lo estoy tanteando con las siguientes conclusiones:
a) Generaría código del tipo 01 (véase el pdf)
b) ¡¡Pero ya está funcionando!! Eso sí, habría que generar una librería de bloques, que no parece que sea muy complejo
Gracias otra vez

Surbyte:
Hola de nuevo. Gracias por el circuito y la idea de la fuente. Pero ¿esta fuente alimenta a la vez al Arduino 9-12VDC y a las entradas 5VDC?¿crees que son necesarias varias tensiones o se podría solucionar con una sola tensión? perdona mi ignorancia

Ajos:
Cierto, es la fuerza de la comunidad.
Gracias por el circuito del triac. Quizá complementado con lo que comenta Maxid: amortiguador (snubber) y varistor.

Vffgaston:
jajaja, te entiendo. Yo con menos añitos (46) también he dado unos pocos tumbos. Creo que estamos todos de acuerdo contigo en el que el primer y principal problema es eliminar o reducir a límites funcionales los ruidos electrónicos del ambiente industrial, y que nuestro mayor esfuerzo debe andar por ahí. En mi caso, desconozco bastante sobre especificaciones, pero veo que tú sí tienes ideas: espero tus aportes con impaciencia. De momento, estoy con el enlace que has colocado, que me parece muy interesante.

Ajos:
¡¡Sí señor!! Ya he citado que "el movimiento se demuestra... variando el vector posición respecto al tiempo"
Me parece muy interesante los del reloj externo.
Por cierto, me he dado cuenta que estos sistemas, en vez de emplear una alimentación de seguridad como yo he dibujado, emplean una EEPRON con una pila para mantener los valores de remanecia.

Un saludo a todos, y disculpad el tocho.
PD.- vuelvo a pedir ayuda a algún diseñador gráfico que haga algo en condiciones con esto:![](http://C:\Users\uf781078\Desktop\Propio\Electrónica\PLC Arduino\Hola a todos_archivos\Leovigildo Logo.jpg)

Leovigildo Logo.jpg

Que bueno que estas nuevamente en el ruedo! Respecto tema red snubber en los triacs, en el diseño que comparti utilice Triacs Snuberless de ST:
(The MIT License – Open Source Initiative).

Los varistores se pueden colocar para proteger los triacs despues del fusible... tienen mantenimiento asi que en todo caso seria recomendable colocarlos en bornera.

El reloj de tiempo real se implementa x soft en el uC, solo se agrega un cristal adecuado, el tema de las NVRAM es para el respaldo de información ante desastres.... En todo caso lo mas directo seria habilitar el brownout con por ejemplo el mas alto nivel de tension ( seria entre 4.1V y 4.5V) y que en esa condición almacene parametros de estado en la EEPROM del uC...

Otra alternativa a la perdida de alimentación seria que trabajara con un SUPER CAP/BATERIA y sólo actuando sobre entradas salidas que no demanden mucha energia, esto se diseña para mantener el sistema en un minimo funcional durante un periodo de tiempo dado o ante una falla de alimentación...

Todo bien ajos, igualmente estamos sumando todos incluso vos. Cada uno desde su experiencia. Yo por ejemplo pensaba que las certificaciones eran caras. Por lo visto no lo son tanto. Sabes de valores? Aunque no sea un caso como el que se plantea. Expresalo en dolares o euros para que sea algo que todos entiendan si es posible claro.

Respécto de la fuente que tensiones necesitamos además de +5V? Algo para comandar relés?

Ajos, es el horario y calendario laboral...
Gracias por la respuesta, que me está costando trabajo digerir (son temas que desconozco por completo)
Y te pregunto lo mismo que Surbyte. ¿Es realmente necesario que existan varios niveles de tensión, o con el de 9-12V basta? El de 5V no puede alimentar a Arduino, ya que se sale de su zona segura de alimentación.
En cuanto a las entradas digitales. Si se alimenta al Arduino a 12 V, se coloca en serie tierra, la salida del opto como interruptor, resistencia de 4k7 o 47 k salida hacia entrada digital a 5V (4.9 aprox) y resistencia 6k8 o 68k (ese factor de 10 es por que no conozco la impedancia de entrada del Arduino.), por tanto nos evitamos un nivel de tensión.
Asumo las entradas digitales, incluyendo diseño de filtro de entrada y filtro y rectificador antes del opto. A ver qué sale... :grin: