GRUA

 

PROGRAMACIÓN TARJETA CNICE


Tarjeta CNICE - 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 principal 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 "grua [Grua] 40 42 190 200 []
creaboton "grua "Girar_izquierda "Girar_izquierda 20 20 75 20 [proc_girarizquierda control]
creaboton "grua "Salir "Salir 65 150 75 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 de manera continuada.

Dentro de este procedimiento se leerá una vez las entradas digitales por si hay algún sensor de contacto que este presionado.

Se crean procedimientos para activar las salidas digitales que activan los 3 motores en uno u otro sentido, para desactivar los motores y salir de la aplicación creada. En estos procedimientos se va a utilizar la función M seguida delnúmero que indique el par de salidas digitales a activar, y tras esto se pondrán unas comillas con la letra D o I que indicará que el motor gire a la derecha (activa la salida 1 y desactiva la salida 0) o que el motor gire a izquierda (activa la salida 0 y desactiva la salida 1), con la letra P se le indica al motor que se detenga (desactiva las 2 salidas digitales).

Ej:

para proc_girarizquierda
M1 "I
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.

Se leerán las entradas para saber si se ha pulsado algún botón físico del ascensor o cuando pasa la cabina del ascensor por los imanes.

para control
mientras [:bucle=0] [
haz "entradas ve?
;Ahora se comprueba si se ha pulsado algún sensor#######
si (:entradas=1) [M1 "I]
si (:entradas=2) [M1 "D]
si (:entradas=4) [M2 "D]
si (:entradas=8) [M2 "I]
si (:entradas=16) [M3 "I]
.
.
.

]

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 CNICE - 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 nuevo.

En el modulo añadido, se tendrán que poner las siguientes declaraciones de llamadas a las funciones de la biblioteca “IO.DLL”. También se incluirá la función que permite activar las salidas digitales de la controladora.

Public Declare Sub PortOut Lib "IO.DLL"

(ByVal nPort As Integer, ByVal nData As Integer)
Public Declare Function PortIn Lib "IO.DLL"

(ByVal Port As Integer) As Integer

Para activar las salidas digitales, en el módulo se incluirá un procedimiento con el nombre “Motor”, en la cual se incluirá una variable a la que llamaremos “led”, la cual indicará el valor de la salida digital en formato binario. Y para desactivar las salidas digitales, en el módulo se incluirá un procedimiento con el nombre “Parar”.

Public Sub Motor (led)
       PortOut &H37A, 7

PortOut &H378, led
End Sub

Public Sub Parar ()
    PortOut &H37A, 7

PortOut &H378, 0
End Sub

También en el módulo se creará una función o procedimiento para leer las entradas digitales de la controladora, a este función se la denominará “LeeDigital”. Este procedimiento comprueba si hay algún dato en las entradas digitales, si lo encuentra, lo transforma a base decimal.

Public Sub LeeDigital (ENTERO: BitsBajos, BitsAltos, TotalBits)
    PortOut &H37A, 3
b = PortIn(&H379)
PortOut &H37A, 1
a = PortIn(&H379)
b = (b And &H78) / 8
b = Not b
b = b And 15
a = (a And &H78) / 8
a = Not a
a = a And 15
d = (a * 16) Or b
End Sub

En el formulario se crearán botones, en los cuales se crearán procedimientos que llamen a la función “Motor”. Por ejemplo:

Private Sub Command1_Click()
motor1 = 1
Call Motor(motor1 + motor2 + motor3)
End Sub

En el formulario también se creará un procedimiento para que lea el valor de las entradas digitales, para lo cual se incluirá una función “Timer”, que lee continuamente el valor de las entradas digitales. Según el valor de la entrada digital, los motores se activarán en un sentido o en otro. A continuación mostramos parte del código del procedimiento, para ver todo el contenido hay que descargarse el código desde el enlace que damos más adelante

Private Sub Timer1_Timer()
Call leedigital(b, a, d)
Dim E As Byte
E = d
Select Case E
Case 1
motor1 = 1
Call Motor(motor1 + motor2 + motor3)
Case 2
motor1 = 2
Call Motor(motor1 + motor2 + motor3)
.
.
.
.
End Select
End Sub

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 > Grua