PLATAFORMA MÓVIL

 

PROGRAMACIÓN TARJETA ENCONOR


Tarjeta ENCONOR - Programación en MSWlogo

La programación de este caso se estructura en los siguientes pasos.

Se crea un procedimiento para crear la ventana gráfica del programa. Para crear la ventana utilizamos la función creaventana, dentro de la ventana se crean los botones con la función creaboton. Dentro de cada botón se establecerán entre los corchetes las funciones que se han de ejecutar una vez presionado el botón. Uno de los botones creados será el que se utiliza para salir de la aplicación, para lo cual se utiliza la orden adios.

Ej:

creaventana " "Principal [Plataforma Movil ] 120 42 200 150 []
creaboton "Principal "Arriba "Arriba 80 34 50 10 [proc_arriba control]
creaboton "Principal "Salir "SALIR 90 94 30 20 [proc_salir adios]

En este procedimiento se crea y se inicializa a 0 una variable que llamaremos bucle, y que nos servirá para poder leer las entradas digitales.

Se crea un procedimiento para activar las salidas digitales mediante la función salida la cual activará la salida digital adecuada expresada en un nº binario. Éste nº binario se va a guardar en variable creada a la que llamaremos led.

para Motor :led
salida :led
fin

Se crean varios procedimientos para que activen los 2 motores en un sentido de giro u otro, uno de los procedimientos creados se utiliza para desactivar todos los motores. Estos procedimientos van a llamar al procedimiento Motor que es el que permite activar las salidas digitales, a su vez dependiendo del motor que se quiera activar, se crean 2 variables (motor1 y motor2) las cuales activarán las salidas digitales pertenecientes a un motor u otro.

Como contenido adicional se actualiza el texto de los botones según los motores giren en un sentido u otro, para ello se utiliza la orden actualizaboton .

Ej:

para proc_abajo
(:motor2 = 34)
Motor :motor1 + :motor2
fin

para proc_parar
haz "motor1 0
haz "motor2 0
ACTUALIZABOTON "Izquierda "Izquierda
ACTUALIZABOTON "Derecha "Derecha
ACTUALIZABOTON "Abajo "Abajo
ACTUALIZABOTON "Arriba "Arriba
Motor 0
fin

Para poder leer las entradas digitales se necesita crear un bucle, para que este continuamente leyendo el valor de las entradas digitales. Para crear un bucle utilizamos la orden mientras y asignamos a una variable un valor, el cual se cambiará al dar al botón salir, para poder salir del bucle y poder salir así de la ejecución del programa.

Para leer las entradas digitales se utiliza la función ve? la cual nos devuelve el valor que hay en ese momento en las entradas, este valor lo guardaremos en una variable a la que llamamos entrada. Luego, según el valor que tengan las entradas, activará unos motor u otro en un sentido o en el otro, para lo cual se utilizarán condicionales.

para control
mientras [:bucle=0] [
haz "entradas ve?
si (:entradas = 1) [
haz "motor1 1
ACTUALIZABOTON "Derecha "Parar_Derecha
ACTUALIZABOTON "Izquierda "Izquierda
]
si (:entradas = 2) [
.
.
]

Se llama al procedimiento que crea la ventana gráfica fuera de cualquier procedimiento, para que se cargue la aplicación gráfica nada más cargar el fichero de logo.

Puede descargarse desde este enlace que viene a continuación el archivo programado en mswlogo.

 

Tarjeta ENCONOR - Programación en Visual Basic

La programación de este caso se estructura en los siguientes pasos.

Se crea un nuevo proyecto EXE Estándar.

Agregar un Modulo Existente, éste será un modulo para la programación en Visual Basic que nos proporciona Enconor. El modulo se denomina “Enconor”.

Además se agregará un módulo nuevo, en el cuál se creará un procedimiento denominado “Motor” que llamará a l función “enviar”del módulo Enconor. En este módulo se agregaran dos variables denominada “motor1” y “motor2”, que serán las que guardaran los valores de las salidas digitales para utilizarlas sobre los dos motores que se utilizan. El motor1 corresponde al giro horizontal de la plataforma, y el motor2 corresponde al giro vertical de la plataforma.

Public Sub Motor(led)
Enviar (led)
End Sub

Hay que agregar un objeto del tipo “Microsoft Comm Control 6.0”, dentro del formulario donde trabajaremos. Si en la barra de herramientas no existe un objeto del tipo MSComm, identificado por un icono de un teléfono, deberá añadirlo a la barra de herramientas del siguiente modo:

1.- Seleccionar el menú “Proyecto”.

2.- Elegir la opción “Componentes”.

3.- Buscar el componente del tipo “Microsoft Comm Control 6.0”.

4.- Aceptar.

Suponiendo que utilizaremos el puerto serie COM 1, se actuará de la siguiente manera: (para cualquier otro puerto, los valores deberán adecuarse con el puerto elegido).

Todas las órdenes referidas a la comunicación con el puerto, tienen el siguiente formato:

Nombre_Formulario.Nombre_Objeto_MSComm.Operación = Valor_Operación

Por ejemplo, nosotros asumiremos lo siguiente, aunque el usuario podrá ponerlo a su gusto:

Nombre_Formulario = FormEnconor

Nombre_Objeto_MSComm = ENCONOR

De esta manera, en el procedimiento Form_Load del formulario FormEnconor, se inicializará el puerto COM1:

Private Sub Form_Load()
‘Se elige el Puerto COM1 mediante la propiedad CommPort
FormEnconor.ENCONOR.CommPort = 1
‘Se establece el modo de comunicación a 9600 baudios, sin paridad, 8 bits de ‘datos y 1 bit de parada mediante la propiedad Settings
FormEnconor.ENCONOR.Settings = "9600,N,8,1"
'Indicar al control que lea todo el búfer al usar ' Input.
FormEnconor.ENCONOR.InputLen = 0
' Abrir el puerto, poniendo a True la propiedad PortOpen
FormEnconor.ENCONOR.PortOpen = True
End Sub

En el formulario se crearán varios botones para los diferentes movimientos que va a realizar la plataforma (giro izquierda, giro derecha, subir rampa, bajar rampa, parar), en los cuales se introducirá el código necesario para que active la salida digital correspondiente. A continuación mostramos el botón de subir la rampa.

Private Sub Command1_Click()
If motor2 = 34 Then'32=32+2 Salida Digitales 6 y 2
motor2 = 0'Si la plataforma ya esta subiendo,se para
Else
motor2 = 34'La plataforma sube
End If
Call Motor(motor1 + motor2)
End Sub

Se puede crear otro botón que permita cargar otro formulario en el que se muestre una imagen de las conexiones a realizar entre el dispositivo y la controladora Enconor.

En el formulario creado, en el código de carga del formulario se introducirá el siguiente comando “canal = DetectarPuerto()” para que la aplicación a crear se pueda comunicar con la controladora Enconor.

También en el formulario se creará un procedimiento de control, el cual interpreta el dato leído en las entradas digitales para a continuación realizar la acción que corresponda a ese dato, activando las adecuadas salidas digitales. Por ejemplo, si el dato leído en las entradas digitales indica que la plataforma ha llegado al tope izquierdo, entonces se activarán las salidas digitales adecuadas para que la torre gire en el sentido contrario.

El procedimiento de control quedaría dela siguiente forma, para lo cual se pone un Timer para que vaya leyendo el valor de las entradas digitales continuamente.

Private Sub Timer1_Timer ( )
x = Recibir()
Dato = ValorEntradas
Select Case Dato
Case 1
motor1 = 1'La torre gira a la derecha
Case 2
motor1 = 17'La torre gira a la izquierda
Case 4
motor2 = 2 'La rampa esta bajando
Case 8
motor2 = 34'La rampa esta subiendo
Case 5
motor1 = 1'La torre gira a la derecha
motor2 = 34'La rampa esta subiendo
Case 9
motor1 = 1'La torre gira a la derecha
motor2 = 2 'La rampa esta bajando
Case 6
motor1 = 17'La torre gira a la izquierda
motor2 = 34'La rampa esta subiendo
Case 10
motor1 = 17'La torre gira a la izquierda
motor2 = 2 'La rampa esta bajando
Case 3, 7, 11, 12, 13, 14, 15 'Cualquier otro caso no posible
motor1 = 0
motor2 = 0
End Select
Call Motor(motor1 + motor2)
End Sub

También se utilizará el Timer para cargar diferentes imágenes dependiendo del valor de las entradas digitales.

Una vez terminado el proyecto, éste se guarda y pulsa F5 o el botón Iniciar para ejecutar la aplicación.

Una vez comprobada que la aplicación funciona, se creará un archivo ejecutable del proyecto creado.

Puede descargarse desde este enlace que viene a continuación los diferentes archivos que forman todo el proyecto.

6. PROYECTOS > Plataforma móvil