domingo, 16 de junio de 2019

Limitaciones de la automatizacion industrial

La industria 4.0 (teóricamente tan avanzada) esta estancada en el siglo 19.
Los métodos de programación así como los programas usados en la codificación de PLCs se han estancado en un sistema demasiado básico para la época.
Esto no deberia ser un problema, pero lo cierto es que resulta mucho mas cómodo el uso de programas escritos de alto nivel que los de bajo nivel.
Y a cómodo no me refiero a fácil. Hay una gran diferencia entre hacer un programa en lenguaje de alto nivel y uno de bajo nivel.
El de bajo nivel vas a tener que preocuparte de casi todo. paso a paso, eso significa mucho trabajo repetitivo. Ademas los PLCs funcionan en modo cascada, por lo que aumenta el numero de instrucciones. Y el reaprovechamiento de partes de programa se desprecia.
Básicamente código espagueti.
Si fuera solo eso, aun estaria dentro de lo pasable. Los PIC antiguos, usaban un sistema de movimiento de bytes que se solia ver como:
Main:
        movlw   0x00
        movwf   TRISB
Loop:
        movlw    0x01
        movwf    PORTB
        movlw    0x00
        movwf    PORTB

De esta manera se lograba decir que el puerto B se encontrara apagado y que parpadease un LED con bucle infinito a velocidad de Clock.

Este es un sistema muy básico, que para lenguajes de alto nivel se traduce a casi el mismo numero de lineas. Por ejemplo:
void setup() {
  PORTB = 0x00
}
void loop() {
     PORTB = 0x01;
     PORTB = 0x00;
}

Se obvia el movimiento con la instrucción de un '='

En Los programas de PLC funcionan paso por paso moviendo y guardando, como se hacia antiguamente con los PIC.
Además, los PLCs no son tan seguros a nivel de programación.
Con que empieces a jugar con las teclas muy rápido, puedes llegar a generar un salto de paso en el programa y necesitar un reset.
Así que tampoco es tan robusto electrónicamente, como se da a entender.

Pero parte de todo el problema está en el entorno de desarrollo. Donde un conjunto de instrucciones básicas, puede suponer necesitar una pantalla de cine. La razón es que el entorno de programación se define en conjunto de bloques con un orden en vertical. Y las variables o valores, se colocan en los laterales de cada bloque.

Para los programas condicionales, no es tan desagradable, pero cuando quieres conseguir un resultado transformado en otro valor, se vuelve extremadamente molesto.
La razón es que en un lenguaje de alto nivel, usaríamos:
Word = Str(DInt)

mientras que en Step7 eso es igual a:
mover valor del byte 0 a conjunto de bytes "doble palabra"
(4 bytes) ED0 -> EB1 ... 3
Convertir la variable Dint (4bytes) a Real
+(4 bytes) -> ED4 -> EB4 ... 7
Convertir la variable Real a Word
+ (2 bytes) -> ED8 -> EB8 ... 11
MW10 = Word y desechar los EB8 y EB9
Ocupando 10 bytes en la conversion + 2 bytes de residuo y sin poder volver a reutilizar esas posiciones de memoria.
Por lo visto de memoria va sobrada, pero visualmente estos 5 pasos en el programa se traducen a una pagina DIN-A4 impresa por ambas caras.

El problema de una programación así, no es que sea difícil, es que resulta incomoda y aburrida.
Se pierde mucho tiempo y además es difícil encontrar un posible error sin comprobar físicamente.

Actualmente cualquier pagina web maneja 10 veces mas datos que los manejados en un PLC. En cambio, los programadores de PLCs, desde que empiezan a trabajar suelen estar mejor remunerados.

En mi opinion, es una tecnologia de bajo rango intelectual muy bien remunerada.




No hay comentarios:

Publicar un comentario