Go Down

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

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.
En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...

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
          7) 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.[/size]
En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...

Como no soy capaz de aclararme con el editor BBCODE de este foro (si es que el que es torpe, es torpe  :smiley-roll-blue:), he decidido pasar todo como un pdf.
En fin, espero vuestros comentarios.
Un saludo,
En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...

surbyte

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.

maxid

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



El que pregunta aprende, el que responde aprende a responder.

maxid

@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!!!
El que pregunta aprende, el que responde aprende a responder.

surbyte

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

ajos

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

vffgaston

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

surbyte

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.

ajos

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

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...)
Salud!

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:
En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...

ajos

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:
(http://www.opensource.org/licenses/mit-license).

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

surbyte

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...  :smiley-mr-green:
En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...

Go Up