Académique Documents
Professionnel Documents
Culture Documents
PROGRAMACIÓN APLICADA A
LA INDUSTRIA
V CICLO
Escenario
Debe crear un VI de consola de impresión
que controle los envíos de trabajos de
impresión y monitorice el estado de
procesamiento de estos. Cada vez que el
usuario haga clic en el botón Enqueue
Element, se enviará un trabajo de
impresión a la impresora. Usted
monitorizará el número de trabajos de
impresión de la cola mediante una barra
vertical. Los LEDs indicarán el estado del
proceso de impresión.
El proceso de impresión de cada trabajo
incluye dos pasos: una etapa de
inicialización con una duración fija de 300
ms y una etapa de impresión con una
duración variable en función del tamaño
del trabajo.
Diseño
Los controles y los enums de
definición de tipo necesarios para
este proyecto ya están creados. Su
tarea es utilizar la plantilla del patrón
de diseño Productor/Consumidor que
incluye LabVIEW para crear el VI de
consola de impresión. La tabla 3-1
muestra los controles e indicadores
utilizados en el panel frontal del VI
de consola de impresión.
Tabla 3-1. Controles/Indicadores y
descripciones del panel frontal
Control e Indicador Descripción
Botón Enqueue Element Cada vez que el usuario haga clic en este botón, se enviará un
trabajo de impresión a la impresora.
Barra Queued Print Jobs Esta barra muestra el número de trabajos de impresión de la cola.
Cada vez que se envíe un trabajo de impresión a la impresora, se
añadirá un nuevo trabajo a la cola. Cuando la impresora inicia un
nuevo trabajo, el trabajo de impresión se elimina de la cola.
LED Waiting Este LED se enciende sólo cuando no haya trabajos de impresión
en la cola.
Queue Event: Value Change En este caso, utilice la función Enqueue Element para poner
en cola una constante de cadena de caracteres con el valor de
print job.
Timeout En este caso, utilice la función Get Queue Status para obtener
el número de elementos de la cola. Pasa el valor a la barra
Queued Print Jobs.
Implementación
Y
a
c
r
e
a
d
o
en Print Console.lvproj
Bucle productor
Complete el diagrama de bloques modificando primero el bucle productor
y después el bucle consumidor.
El bucle productor responde a los eventos del panel frontal. Cada vez que
el usuario haga clic en el botón Enqueue Element, se añadirá un trabajo de
impresión a la cola. El bucle productor también es responsable de
actualizar la barra Queued Print Jobs con el número de elementos de la
cola.
La figura 3-3 y la figura 3-4 son ejemplos del bucle productor completado.
Nota Si la etiqueta Event Data Node no es válida (texto negro), haga clic
derecho y seleccione una válida.
en la parte superior del caso Timeout difiere de otros objetos asociados a los eventos.
El nombre de la etiqueta sólo especifica el evento y no incluye el objeto asociado.
Figura 3-4. Caso Timeout del bucle
productor
Bucle consumidor
El bucle consumidor simula el proceso de impresión y actualiza los LEDs.
Implemente el proceso de impresión utilizando una máquina de estados. El
estado Wait recibe trabajos de impresión. Cuando se recibe un trabajo de
impresión, la máquina de estados inicia varios pasos para simular el
proceso de impresión. Los LEDs de impresión se actualizan después de
cada estado. Por lo tanto, el LED Initializing se enciende tras el estado
Initialize Setup y se apaga después del estado Setup. Igualmente, el LED
Printing se enciende tras el estado Print y se apaga después del estado
Print.
Las figuras 3-5 a la 3-9 son ejemplos del bucle consumidor completado.
1. Cree una máquina de estados en el bucle consumidor empezando con
el estado Wait. El estado Wait recibe trabajos de impresión utilizando
la función Dequeue Element. Si la función Dequeue Element recibe un
elemento de cola dentro del tiempo límite de espera especificado de
100 ms, la máquina de estados cambiará al estado Initialize Setup.
Si expira el tiempo de espera de la función Dequeue Element, la
máquina de estados permanecerá en el estado Wait.
❑ Para crear casos asociados con cada valor del enum, haga clic
derecho en el borde de la estructura Case y seleccione Add Case
for Every Value.
Consejo También puede crear nuevos casos duplicando los existentes. Para duplicar
un caso, haga clic con el botón derecho en el borde de la estructura Case y seleccione
Duplicate Case. Tenga cuidado al duplicar casos que incluyan terminales del panel
frontal, ya que podría duplicar objetos del panel frontal.
❑ Haga clic derecho en el túnel de error y seleccione Use Default
if
Unwired.
❑ Tenga en cuenta que tras dejar de poner en cola los trabajos de impresión, el proceso
de impresión seguirá ejecutándose.
❑ Tenga en cuenta que el bucle consumidor sólo se detiene cuando exista un error. Esto
ocurre cuando el bucle productor se detiene y la función Release Queue destruye la
referencia de la cola. Sin una referencia de cola válida, la función Dequeue Element en el
bucle consumidor devuelve un código de error 1122 con la explicación Refnum became
invalid while node waited for it o un código de error 1 con la explicación An
input parameter is invalid (si quedan elementos en la cola cuando se presiona stop).
1. BIBLIOGRAFÍA.
● LabVIEW Core 1.