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.