Guía de Módulos
Nota: el nombre de cada módulo lleva a su descripción en 2MIL.
Módulo lógico que contiene en su interfaz todas las funciones de control de la cosechadora, ya sean automáticas o de interacción con el operario. Comprende los módulos ADMINISTRADOR DE ESTADO, REGISTRADOR DE OPERACIONES, GESTOR INTERACTIVO y el módulo base de la jerarquía de controles automáticos GESTOR AUTOMATICO.
Este módulo abstrae el estado de la cosechadora, esto es, los datos que indican en qué forma está funcionando la maquinaria. Su secreto es la forma en que realmente se almacenan esos datos. Ofrece funciones que permiten modificar y recuperar el valor de cualquiera de los campos que conforman el estado (presión del operario sobre el asiento, longitud del campo a cosechar, semilla con la que se está trabajando, humedad a la que se debe mantener la semilla en la tolva, modo de operación y si se está cosechando, vaciando la tolva o ambas a la vez). También forman parte de la interfaz de este módulo las funciones necesarias para guardar el estado en un medio permanente y restaurarlo del mismo. Esto es porque las modificaciones y consultas de valores de estado se realizan sobre una copia del mismo en una memoria volátil y se requiere que el estado se mantenga guardado aun cuando el sistema no esté en funcionamiento (ej.: cuando se acciona la palanca de emergencia).
Presenta el método que todas las operaciones deben invocar para registrar su trabajo en el registro de operaciones. Forma parte de CONTROL ya que en caso de estar la máquina operando en modo prueba y no haber espacio disponible en el almacenamiento secundario debe detener el funcionamiento e informar de tal situación. Para ello, cada vez que es invocada chequea el modo de operación, si éste es "normal" guarda la operación invocando la función exportada por VITACORA independientemente de si se cuenta con el espacio necesario para esto, si el modo es "prueba" verifica el espacio disponible, si es suficiente guarda la operación, si no detiene la cosecha y muestra un cartel por pantalla; justamente este procedimiento es un secreto.
Este módulo toma las entradas detectadas por
el módulo INPUT y ejecuta las tareas requeridas por el operario.
Para ello cuenta con la función procesar_ult_ent( ) que al ser
ejecutada verifica si existen en INPUT entradas sin procesar, en
caso afirmativo toma esa entrada y con ella hace evolucionar la
máquina de estado finito que representa el control por teclado
del sistema. Su secreto es la representación y el funcionamiento
de dicha máquina de estado finito.
Las distintas entradas posibles son las que
se pueden dar por el teclado, los botones de inicio y parada de
cosecha y la palanca de emergencia.
En el estado inicial se espera que el
usuario seleccione una semilla, cambie de operario o modifique el
largo del campo. Esto último es opcional pero las dos primeras
operaciones deben llevarse a cabo antes de iniciar la cosecha.
CAMBIAR SEMILLA hará que se presente un
menú con las semillas disponibles, el operario puede elegir una
de la lista mediante las teclas de flecha y presionando ACEPTAR o
directamente digitar el número correspondiente a la semilla
deseada. Luego de seleccionada la semilla se da la posibilidad de
ingresar la humedad de tolva definida por el usuario o utilizar
la determinada por defecto para la semilla elegida. En cualquier
momento la tecla CANCELAR vuelve todo al estado inicial.
Con START se inicia la cosecha (se pone en
funcionamiento la maquinaria de cosecha y la velocidad de avance
comienza a ser controlada automáticamente por el sistema). Al
presionar STOP la cosecha se detiene, así como también, el
avance de la máquina. Para seguir andando sin cosechar se debe
utilizar un acelerador mecánico que está fuera de nuestro
sistema (cuando se está cosechando este acelerador queda fuera
de uso).
BORRAR permite editar el ingreso de datos.
Este módulo es base de la jerarquía de los distintos módulos que controlan los procesos automáticos del sistema y como tal reúne las características comunes que éstos comparten. Parte de estas características son la posibilidad de inicializar un controlador y hacer que éste controle el valor correspondiente, lo cual se refleja en las funciones inicializar_gautomatico y controlar_valor respectivamente. Estas funciones deberán ser sobrecargadas por cada módulo concreto.
Este módulo controla el proceso automático de mantenimiento de humedad constante. Hereda las características del módulo base GESTOR_AUTOMATICO. Las funciones controlar_humedad ( ) y inicializar_crtl_humedad ( ) son sobrecargadas del GESTOR_AUTOMATCO y se describen coloquialmente en su nombre.
Este módulo controla el proceso automático de adecuar la velocidad de la cosechadora en función del rinde. Hereda las características del módulo base GESTOR_AUTOMATICO. Las funciones controlar_rinde ( ) e inicializar_crtl_velocidad ( ) son sobrecargadas del GESTOR_AUTOMATCO y se describen coloquialmente en su nombre.
Este módulo controla el proceso automático de detectar el hombre sentado en la cosechadora, si no es el caso, detiene inmediatamente la cosecha. Hereda las características del módulo base GESTOR_AUTOMATICO. Las funciones controlar_presion ( ) y inicializar_crtl_presion ( ) son sobrecargadas del GESTOR_AUTOMATCO y se describen coloquialmente en su nombre.
Este módulo controla el proceso automático de llenado y descarga de la tolva en función de su capacidad. Hereda las características del módulo base GESTOR_AUTOMATICO. Las funciones controlar_estado_tolva ( ) y inicializar_crtl_tolva( ) son sobrecargadas del GESTOR_AUTOMATCO y se describen coloquialmente en su nombre. Posee además dos atributos entre sus secretos, espacio_min y espacio_max que representan los limites de control. La función calc_tiempo_rest( ) se encarga de calcular el tiempo restante hasta la próxima descarga y mostrarlo por pantalla.
Este módulo controla el proceso automático de cosecha en función de la longitud ingresada. Hereda las características del módulo base GESTOR_AUTOMATICO. Las funciones controlar_distancia ( ) y inicializar_crtl_dist ( ) son sobrecargadas del GESTOR_AUTOMATCO y se describen coloquialmente en su nombre.
Este módulo contiene la información predeterminada que se utiliza en la cosecha de cada una de las semillas que acepta el sistema. Cada semilla tiene definido qué humedad debería tener, los límites de velocidad entre los que debe ser cosechada y el rinde que se espera sea mantenido. Además brinda la posibilidad de agregar una nueva semilla, tanto en la carga inicial de datos durante el proceso de fabricación, como en una posible extensión de las capacidades de la máquina una vez entregada al cliente.
Base en la jerarquía de los distintos sensores que son parte del sistema. Contiene las características comunes de los módulos de los que es base, como ser el calibrado del sensor, ver el valor que éste está registrando y asignar una referencia a cada uno. Por referencia se entiende la forma en que el sistema obtendrá las señales enviadas por los sensores, de esta manera se consigue generalidad permitiendo diferentes modos de acceso; por ejemplo, mapeo directo de memoria, puertos serie, etc.
HUMEDAD, VELOCIDAD, RINDE, PRESION, ESPACIO_DISPONIBLE
Estos módulos abstraen los sensores físicos, los cuales tienen su calibrado, su referencia particular y la lectura de lo sensado. Lo que éstos ocultan es la forma en que los sensores físicos comunican sus mediciones.
Este módulo, aunque lo que representa no es un sensor real, es visto como tal ya que se puede ver el valor que ha calculado, se lo calibra dándole un valor inicial y se lo asocia a una referencia. Lo que oculta es el cálculo que realiza para conseguir el valor que ofrece.
Módulo lógico, su interfaz son los métodos que permiten ver por pantalla la presentación, las opciones que ofrece el sistema, los datos ingresados por el usuario y los determinados por el funcionamiento de la cosechadora; también posibilita el guardado de una operación para que ésta se registre en forma permanente. Comprende el módulo VITACORA y el módulo lógico PANTALLA.
Este módulo permite guardar las operaciones
realizadas por el sistema en disco y ver el espacio disponible en
éste.
Se ha definido el tipo reg_op el cual es un
registro que contiene un string, que es el nombre del método que
solicita ser registrado, y el valor que éste modifica. Cuando
una operación es realizada, la función escribir_operacion es
llamada con el reg_op como parámetro, donde está el nombre de
la operación y el nuevo valor resultante de ésta Si el método
puede actuar sobre distintos valores, el tipo del valor pasado
determina qué ha sido modificado; en este caso se registrará
varias veces el mismo nombre de operación con distintos tipos de
datos. También se ha definido tipo valor, suponiendo que es
posible en 2MIL ya que es soportado por varios lenguajes de
programación, como la unión de varios tipos.
Módulo lógico compuesto por DISPOSITIVO_VISUAL y PRESENTADOR_SALIDA. La interfaz de éste es la interfaz de PRESENTADOR_SALIDA, ya que sólo debe ser utilizado por éste último lo exportado por DISPOSITIVO_VISUAL.
Este módulo abstrae el hardware de presentación de la pantalla (funciones de graficación).
Este módulo es el encargado de mostrar la información de salida. Lo hace por medio de PRESENTADOR_VISUAL. Cada función de mostrar usa las funciones básicas del otro módulo.
Este módulo abstrae el software que va a
manejar el elemento actuador físico. Este es la clase base de
todos los actuadores físicos. Importa del módulo SENSOR el tipo
referencia que le indica que port ( controlador físico) tiene
que inicializar.
Esto lo realiza con una función publica
inic_act a la que se le pasa referencia como parámetro.
Este módulo abstrae a los actuadores físicos que pueden tener dos estados posibles ( encendido o apagado). Hereda las características del módulo ACTUADOR. Posee tres funciones públicas start_disp( ) que enciende al actuador, stop_disp ( ) que apaga al actuador y funcionando( ) que, por medio de un procedimiento privado, devuelve una condición BOOL para saber en qué condición se encuentra el actuador ( TRUE = encendido, FALSE= apagado ).
Este módulo abstrae al actuador físico que controla el accionar de los ventiladores para la regulación de la humedad. Hereda las características del módulo BINARIO. Los procedimientos que ejecuta son sobrecargados de la clase BINARIO y posee una función publica inic_reg_hum a la que se le pasa referencia indicando este actuador. Ésta, por medio de un procedimiento privado, es la encargada de inicializar al módulo.
Este módulo abstrae al actuador físico que controla el accionar de la descarga de la tolva ( abierta / cerrada ). Hereda las características del módulo BINARIO. Los procedimientos que ejecuta son sobrecargados de la clase BINARIO y posee una función pública inic_desc_tolva a la que se le pasa referencia indicando este actuador. Ésta, por medio de un procedimiento privado, es la encargada de inicializar al módulo.
Este módulo abstrae al actuador físico que controla el encendido de la maquinaria de cosecha. Hereda las características del módulo BINARIO. Los procedimientos que ejecuta son sobrecargados de la clase BINARIO y posee una función pública inic_maq_cose a la que se le pasa referencia indicando este actuador. Ésta, por medio de un procedimiento privado, es la encargada de inicializar al módulo.
Este módulo abstrae a los actuadores físicos que trabajan en forma proporcional (varían su salida en proporción a una señal de entrada). Hereda las características del módulo ACTUADOR. Importa los tipos velocidad y semilla para poder actuar según se setee en forma manual o con los datos estándar (depende del módulo que lo llame). Esto se exporta en la función actuar_según a la que se le pasa el tipo param. El procedimiento de ésta es privado.
Este módulo abstrae al actuador que controla la velocidad de la cosechadora. Trabaja en forma proporcional (hereda las características de analógico). Exporta la función acelerar_segun (param) donde se le pasa param como tipo. Tiene otra función pública inic_reg_vel (referencia) la cual, por un procedimiento privado, setea el módulo.
Este módulo abstrae al actuador que adecua las diferentes partes mecánicas de la cosechadora según el tipo de semilla. Trabaja en forma proporcional ( Hereda las características de analógico ). Exporta la función setear_cose_según (param) donde se le pasa param como tipo. Tiene otra función pública inic_par_cose ( referencia ) la cual, por un procedimiento privado, setea el módulo.
Este módulo abstrae al controlador de teclado.
Importa una librería estándar. Exporta varios tipos que
representan cada tecla. Exporta una función pública
retornar_ult_ent ( ) que devuelve en ent la última tecla
pulsada.
Posee otra función pública ent_pendiente
( ) que devuelve un TRUE cuando ingreso alguna entrada y todavía
no fue leída por otro módulo. Tiene una función pública
inic_input por la cual se setea al módulo. Además posee una
función privada detec_ent que es la encargada de detectar cuando
se presionan teclas.
Este módulo abstrae al hardware que representa al reloj y además se encarga de temporizar los eventos que así lo requieran. Presenta la fecha y hora , permite su seteo y consulta. La temporización se logra con la función agregar_temporizador que agrega la función pasada como parámetro al conjunto de funciones que el reloj ejecutara a intervalos de tiempo dados por time_temp milisegundos. El estado del módulo esta dado por la fecha y hora actual y el conjunto de funciones que debe temporizar.