Arquitectura del software de control.Lo primero que necesitamos definir es la
Máquina de Estados que representa a nuestro torno o fresadora.
Básicamente, hay cinco Estados posibles:
- Máquina parada.
- Arranque Suave.
- Régimen Nominal.
- Maquina Trabada.(en general, sobrecargada)
- Máquina Desconectada.(motor desconectado, pero placa alimentada)
Es muy importante, en aras de la calidad del software que vamos a desarrollar, hacer un esfuerzo en reducir el número de estados posibles, al mínimo.
Con estos cinco estados tenemos que definir todos los posibles flujos que nos lleven de un estado a otro, y las condiciones que han de cumplirse para que se pase de un estado al siguiente.
Primer ejemplo:
La máquina está en
Régimen Nominal. Desde ahí puede pasar al estado de
Máquina Trabada. La condición que habrá de cumplirse para pasar a ese nuevo estado es que la corriente medida por el sensor Hall sea mayor que un determinado valor.
Por ello, mientras estamos funcionando en régimen nominal, estaremos continuamente monitorizando la corriente por la carga. En cuanto pase de un valor, consideraré la máquina como trabada (en general, sobrecargada).
Segundo ejemplo:
Un razonamiento paralelo sirve para definir lo que ocurre al conectar la máquina a la red: Al aplicarse tensión estamos en el estado de
Máquina Parada. Entonces se intenta leer el potenciómetro de velocidad. Si se obtiene una lectura correcta, entonces se pasa al estado siguiente, de
Arranque Suave. Si se consigue llegar a la velocidad indicada por el potenciómetro, entonces pasamos al estado de
Régimen Nominal.
y así con todas las posibles opciones. Es un poco pesado, pero no es difícil de hacer. Eso sí, hay que ser muy cuidadoso para no dejarse ninguna posibilidad sin tener en cuenta. En ese caso la máquina podría quedar en un estado no definido, y "fuera de control". Por ello, la propia arquitectura del software ha de ser robusta en si misma, y no permitir la permanencia en estados no definidos, si llegaran a darse.
Herramientas de Depuración.Para depurar todo este código es necesario (o al menos muy conveniente) disponer de una pantalla de visualización de datos que me permita monitorizar las variables que me interesen, en cada parte del programa.
Es bueno dedicar un tiempo a desarrollar una rutina de monitorización basada en el uso de la pantalla, de forma que pueda visualizar cualquier variable que queramos, textos, o lo que preveamos que va a ser necesario, de forma completamente flexible.
Esta es la que estoy usando ahora.:
