¿Qué PLC elijo?

¿Qué PLC elijo?
Una de las dudas que se suele tener a la hora de programar es ¿qué PLC elijo? Evidentemente hay veces en la que puedes ir sobrado en el sentido que estás seguro que con el PLC que vas a elegir, no vas a tener ningún problema. Pero ¿y si la cosa no está tan clara?

Cuando el PLC no alcanza

Resulta que ahora estamos terminando un proyecto de un prototipo de máquina de secado para el sector farmacéutico. Por cómo es el sistema y debido a que el programa como tal no es muy complejo pensé que inicialmente con un S7-1214 iba a ser suficiente ya que el sistema consite de:
  • Una CPU
  • 5 periferias con 4 entradas analógicas, un par de salidas analógicas y dos o tres entradas y salidas digitales por periferia.
En proceso se trata de acondicionar un aire por lo que hay que manejas un ventilador, una resistencia, una bomba que recircula agua y una válvula de 3 vías. Vamos, que no parece que necesites un programa muy potente para mover todo el tinglado. Comprobamos que no habría problemas por el número de periferias que colgaran del S7-1214 y el número de señales no es para asustar. Por otro lado, consideramos que el programa en sí, no iba a tener problemas a la hora de ejecutarse con la capacidad del S7-1214.

Cosa de memoria

La cosa es que según fuimos avanzando en el proyecto y hablando con nuestros clientes, la cosa se empezó a torcer. La razón fundamental fue la memoria remanente... sí, la memoria remanente... ¿quién lo iba a decir eh? La cuestión es que las recetas, por su complejidad, necesitan estar en el PLC ya que los HMI de Siemens no están preparados para realizar lo que necesitamos en este caso. Por tanto, aunque usamos el HMI para hacer las recetas, la información reside completamente en el PLC. Así que hubo un momento en el que hubo que aumentar el número de recetas y etapas dentro de la receta y pasó esto: Como puedes ver, la memoria de trabajo estaba muy lejos de estar en un punto crítico mientras que la memoria remanente la teníamos en un 87%. Teniendo en cuenta que aún no habíamos terminado con el programa, hubo que cambiar el PLC, ya que no hay forma de ampliar dicha memoria. Podemos ampliar la memoria de carga solamente. Total, que cambiamos la CPU a un S7-1510SP obteniendo esto una vez modificado y cargado el programa: Como vez, en el apartado de memoria remanente estamos usando unos 12,5KB pero claro, en el caso del S7-1200 tenemos un máximo de 14KB y en el S7-1500 90KB. Por tanto, una de las cosas que tienes que tener en cuenta es.. .¿cómo de grande va a ser tu programa? ¿Te va a alcanzar con 100KB?  ¿Y su memoria remanente? La vedad es que para "llenar" 100KB hay que picar mucho código. De hecho, aunque en la imagen no se ve, después de haber terminado el proyecto he ocupado sobre 40KB... pero he usado unos 69KB de memoria retentiva.

Velocidad de procesamiento

Por otro lado, de las últimas veces que miré el ciclo de scan con el 1510SP rondaba los  7-8 ms aproximadamente. No es fácil saber cuánto tardaría en realizar lo mismo con un S7-1214, pero podemos hacernos una idea. Sabemos por las especificaciones de Siemens, que estas CPU tienen estas características:  

CPU processing times

 S7-1214

S7-1510SP

for bit operations, typ.

0.08 µs; / instruction

25 ns/ instruction

for word operations, typ.

1.7 µs; / instruction

32 ns/ instruction

for floating point arithmetic, typ.

2.3 µs; / instruction

170ns/ instruction

Por tanto, vemos que en cálculos de bit es unas 3,2 veces más lento un S7-1214 respecto a un S7-1510SP. La cosa se dispara si además los cálculos matemáticos tienen mucho peso en el programa. Si básicamente tienes que el 90% de tu programa es código booleano, el ciclo de scan no se te irá a valores muy altos con un 1200 vs 1510SP ya que hay que tener en cuenta que en los 7-8ms están incluidos todo l que hace la CPU, incluida las comunicaciones. Pero si tienes que hacer muchos cálculos matemáticos, la diferencia será grande. Luego, piensa que tipo de programa vas a necesitar, porque de primeras ya sabrás si va a ser más de lógica booleana o va a tener una fuerte componente matemática.  

Número de entradas y salidas

El número de entradas y salidas puede ser un buen indicativo de cómo de grande te va a salir el programa. Quiero decir que si tiene muchas entradas o salidas, salvo excepciones, tendrá asocidado en principio mucho código, ya que si tienes señales, serán para hacer algo con ellas, y por tanto, vas a tener que aporrear el teclado bastante. No hay un número mágico para decir "hasta aquí", pero cuando veas que vas a tener muchas tarjetas en el rack o muchas periferias, piensa que tal vez merezca la pena rascarse el bolsillo.

Precio

Lógicamente está el precio del hardware. Si tienes duda, plantéate si merece la pena elegir un 1510, ya que la diferencia entre un S7-1214 a un S7-1510SP no es gigantesca. Podemos estar hablando de unos 400€ entre ambos. Hay diferencia, pero no estamos hablando de miles de euros de diferencia.

¿Más cosas que mirar?

Claro, siempre hay cosas que mirar como compatibilidad o expansiones futuras. ¿Vas a querer programar en AWL, por ejemplo? Esto descartará usar un S7-1214... o si quieres comunicar O si vas a aumentar el número de tarjetas o periferias que vas a tener colgado del sistema... y los que se prevén que pueda haber en el futuro.

Y tú ¿en qué cosas te fijas?

Te invito a que comentes en qué cosas te sueles fijar para elegir tal o cual CPU. Siempre se aprenden cosas nuevas de la experiencia de los demás. En mi caso, por ejemplo, no había tenido nunca problemas con la memoria remanente hasta este proyecto. Pero como para casi todo, siempre hay una primera vez.
Comentarios (19)
Aleix
Muy interesante Iñigo. Un problema que tuve en mi caso fue que se escogió mal la CPU debido al número de esclavos profinet (IO Devices) que tenía el sistema. Las CPUs 1200 admiten máximo 16. Mientras que las CPUs 1500 la más básica adminte hasta 128. Esto obligó a tomar decisión de si añadir una CP u otra alternativa y por costes, al final se añadió otra CPU. Saludos!
Iñigo Gútiez
Sí, el tema de las remotas, es un claro ejemplo. Pero cuando son unas cuantas a mi ya me salta el chip que si tienes digamos 10... un 1200 aunque pueda, se me hace que no es el adecuado. Porque tampoco me gusta agotar los requerimientos.
Iago
Lo primero que me fijaba hasta ahora era en el número de entradas y salidas que necesitaría, y en función de ellas, realizar una estimación de la memoria de programa y datos que necesitaría, teniendo en cuenta la capacidad de ampliación en cuanto a módulos y periferia. La verdad es que nunca me he fijado en la memoria remanente, pero también apenas he tenido contacto con proyectos que requieran mucho uso de esta. La memoria de carga pues lo mismo. Como nunca han sido programas muy extensos, nunca me ha preocupado, pero tras leeer las experiencias de otros programadores, reconozco que me estoy empezando a fijar en todos estos detalles. El tema del lenguaje sí que no le presto atención, ya que considero que un programador debe conocer (no dominar) todos los lenguajes del PLC que va a instalar. Uno nunca sabe cuándo tendrá que emplear un lenguaje específico.
Iñigo Gútiez
La memoria de carga es lo unico que tiene solución con una MMC. Lo del lenguaje, ojo, porque lo mismo tienes que migrar un S7-300/400 y te es interesante usar un 1500 por poder migrar parte de codigo en AWL de una forma sencilla, por ejemplo sin tener que rehacerlo desde cero.
Afonso
Excelente trabajo. Gracias.
Iñigo Gútiez
Gracias Alfonso
Juan Pablo
Hola Iñigo, interesante. Una duda, ¿el guardar en un DB en memoria de carga no era opción?
Iñigo Gútiez
No, lo estuve mirando, y no podía exportar el tema de recetas por se datos en UDT anidados.
José Saquete
Hola Iñigo, interesante post. Muchas veces dejamos a un lado el tema de la memoria al momento de escoger un PLC. Yo normalmente me guío por varios aspectos, entre ellos destacan: 1) ¿Estación remota o local? 2) Drives conectados (¿G120 o S120?) 3) Control de ejes (Maestro / Esclavo) ¿Sincronización de ejes? ¿Cam function? 4) CPU compacto o modular de acuerdo con las necesidades. 5) Technology objects requeridos (¿output cam?) 6) Número de entradas / salidas digitales, análogas, encoders, resolvers, etc. 7) ¿PLC de seguridad? ¿Tiempo de respuesta? 8) Redes compatibles Normalmente, estas preguntas me ayudan a determinar si debo irme por S7-1500 o S7-1200, y algunas veces me toca determinar si debe ser un S7-1500T debido a sus funciones adicionales avanzadas. También es importante tener el cuenta el presupuesto del cliente, y siempre dar un alcance conciso al cliente para que comprenda lo que va a poder hacer y no hacer con la solución brindada. Saludos
Iñigo Gútiez
Sí sí, hay que fijarse en muchas cosas en caso de que tenga muchos chismes alrededor jeje.
jon
buenas iñigo y comunidad tengo una duda sobre si estoy haciendo correctamente las cosas me pasa lo siguiente: he creado un fc de mapeo de entradas digitales y he creado dentro un objeto llamado fc entrada digital que tiene 4 entradas y 1 salida, lo uso dentro de ese fc de mapeo cada vez que tengo una entrada digital. En una de las patas es un db con in out para introducir un db con un udt para usar temporizador y poder filtrar la señal ya que no quiero usar un fb por tema de espacio ya que el mas básico S7 1500 los dbs máximos son 2000 y no quiero llenarlo de dbs de instancias de entradas para filtrar esas señales. estaría haciéndolo correctamente o tendré problemas de falsos positivos? te dejo un enlace con la foto del fc: https://i.postimg.cc/DZWDbQ4f/fc.png gracias de antemano.
Iñigo Gútiez
Pues sin entenderlo muy bien, no sé que decirte. Pero por el tema de temporizadores, puedes crear un DB con un array de temporizadores y usar el temporizador X que se lo pasas por referencia, y no el udt. No se, como tu veas.
Jon
Gracias por responder, es difícil de explicar jaja en 4 lineas. Gracias por tener este blog te sigo desde hace mucho y casualmente vivo cerca de donde trabajabas me quede sorprendido cuando vi que en internet encontré a alguien que compartía conocimientos de automatizacion y trabajase tan cerca jajaja yo estuve en vidrala y en los alrededores con una subcontrata de programador de plcs y scada. Un saludo y que valla bien.
Antonio
Hola, una vez me quedé tirado en el extranjero porque la memoria de trabajo de la CPU S7-414 2DP se agotó. Hubo que cambiar de CPU con el consiguiente retraso. Desde entonces el dato de la memoria de trabajo lo tengo muy presente antes de empezar. En otra ocasión, un S7-318 DP, manejaba una buena cantidad de PIDs. En cada zona de la instalación había una pantalla HMI en donde se podían ajustar los parámetros de regulación de los PIDs de esa zona. Esos parámetros se guardaban en DBs remanentes. Pero si la CPU pasaba a stop por cualquier motivo, hacía luego un arranque en frio y todos los datos de los DBs se perdían. Por eso ahora no me fio nada de las remanencias. No sé si en Tia Portal ha mejorado algo este tema, aunque no me lo parece. Lo que sí se puede hacer es escribir las recetas en la Memory Card, en la memoria de carga, como si fuese un fichero plano txt, e ir leyendo de ahí.
Iñigo Gútiez
Bueno, la memoria remanente es una buena opción en muchos casos. Y dependiendo de qué situaciones, tal vez tienes que pasar los valores a arranque.
Rodrigo
Hola Iñigo, un excelente aporte!. Tengo la siguiente pregunta, ninguna S7-1200 aceptaría STL? muchas gracias.
Luis Salazar
"las recetas, por su complejidad, necesitan estar en el PLC ya que los HMI de Siemens no están preparados para realizar lo que necesitamos en este caso." Hola iñigo, ¿podrías desarrollar eso un poco?... Saludos.
Fabio Ricca
Hola Íñigo desde ya agradecido por tus post, te sigo hace mucho son muy interesante, programo PLC Siemens desde que me inicie en la programación y desarrollos de sistemas para máquinas y la verdad siempre me fue un problema el tema de la memoria, yo siempre miro las cantidades entradas/salidas tantos digitales, analógicas y encoder para tener un estimado de que CPU voy a utilizar. Saludos.
Franco
Si el hardware todavia no estaba comprado, hubiera echo lo mismo. Si ya estaba comprado, hubiera optado por buscar alguna solucionar via software. Es muy raro el caso que necesito en un proyecto chico tanta memoria remanente. El plc esta pensado para casos dentro de lo normal.