Simulador
 
Fabricantes SCADA Buses Software Hardware

 

Principal
Contenido

Indice de fabricantesForos de automatasSeccion de novedadesSeccion de busqueda Menu
 

Caracteristicas
Simulador

 

 

 Durante todo el año recibimos muchos mail, pidiéndonos información para realizar trabajos sobre autómatas. Así que ahora es el momento para recordaros que necesitamos de vuestra colaboración enviándonos los que ya habéis presentado.

      

  

 

MANUAL DE INSTRUCCIONES

bulletEl entorno GUI (Guide User Interface)
bulletMenú Archivo
bulletMenú Run
bulletMenú Stop
bulletMenú %TMi
bulletMenú %Ci
bulletMenú Salir
bulletMenú Ayuda

EL ENTORNO GUI

Lo primero que nos encontraremos cuando ejecutemos el programa será la siguiente pantalla: Una foto del TSX07, las entradas/salidas en la parte inferior, a la derecha un recuadro en el que aparecerá el listado de los programas a cargar y arriba unos menús tipo Windows.
Podremos desplazarnos por dos zonas diferenciadas de la pantalla: los menús, las entradas y el listado del programa cargado.

PROGRAMA CON RATÓN

Si decides bajarte la versión con ratón, ya está, pasa a Menú Archivo

PROGRAMA SIN RATÓN

Para acceder a los menús utilizaremos la combinación de teclas ALT + letra subrayada (si no funcionara tendríamos que activar el Bloque Mayúsculas), por ejemplo, para acceder al menú Archivo teclearemos ALT + A. Una vez que hemos activado cualquier menú, nos moveremos dentro de él mediante las teclas de desplazamiento.
Para desplazarnos por las entradas y el listado del programa cargado utilizaremos las teclas de desplazamiento.
Para activar o desactivar las entradas pulsaremos la barra espaciadora o el intro.
En general se utilizará la barra espaciadora o el intro para activar o desactivar cualquier casilla.

Nota: Los menús Run y Stop no tienen submenús, sólo activan o desactivan la ejecución cíclica del programa cargado.

MENÚ ARCHIVO

En el menú Archivo nos encontramos con tres submenús:
bulletAbrir
bulletNuevo/Editar
bulletSalir a Dos

Con el submenú Abrir nos podremos mover por el PC para buscar los archivos que queremos cargar. Para que no nos salgan todo tipo de archivos hemos realizado un filtrado; SÓLO se podrán cargar ficheros con la extensión AUT. Una vez que aceptamos nos saldrá el listado del fichero cargado a nuestra derecha.
Nota: Si el listado es muy extenso, nos aparecerá una barra de desplazamiento con lo que nos podremos mover a lo largo de todo el fichero mediante las teclas de desplazamiento o RePag y AvPag.

MENÚ NUEVO/EDITAR

Con el submenú Nuevo/Editar cargaremos un editor de texto muy sencillo con el que podremos editar o modificar nuestros ficheros. Éste lleva su propia ayuda si hiciera falta.
Nota: Si no nos gusta este editor de textos, podemos usar cualquier otro siempre y cuando se asegure que utiliza SÓLO caracteres ASCII.

MENÚ SALIR A DOS

Con el submenú Salir a Dos podremos salir al sistema operativo (en nuestro caso a la Shell de DOS) y ejecutar distintos comandos de éste: dir,type, cd xxx, format xx ...
Para volver a nuestro programa deberemos teclear EXIT.

MENÚ RUN

Con el menú Run ejecutaremos cíclicamente un programa QUE PREVIAMENTE HEMOS DEBIDO CARGAR (véase Menú Archivo). Como este menú no tiene submenús evidentemente no aparecerá ninguno.

MENÚ STOP

Con el menú Stop pararemos la ejecución cíclica del programa que estemos ejecutando. ESTA OPERACIÓN HA DE REALIZARSE ANTES DE VOLVER A CARGAR CUALQUIER OTRO PROGRAMA.

MENÚ %TMI

Con este menú definiremos las bases de tiempos y los tipos de cada uno de los temporizadores que vayamos a utilizar. La forma de proceder es la siguiente:
1.- Introducir el número del temporizador (0,1,2,3...)
2.- Introducir el tiempo de preselección.
3.- Introducir el tipo del temporizador: TP, TON, TOFF.
4.- Introducir la base de tiempos.
5.- Si ya hemos terminado activaremos la casilla VOLVER si no es así activaremos la casilla OTRO.

MENÚ %CI

Con este menú definiremos la preselección de los diferentes contadores. La forma de proceder es la siguiente:
1.- Introducir el número del contador (0,1,2,3...)
2.- Introducir el contaje de preselección.
3.- Si ya hemos terminado activaremos la casilla VOLVER si no es así activaremos la casilla OTRO.

MENÚ SALIR

En este menú el programa nos preguntará si deseamos salir.

MENÚ AYUDA

Pequeño texto de ayuda de la utilización del programa, como se indica en él para salir se ha de teclear UNA SOLA VEZ ESC.
Nota: Si se teclea repetidas veces ESC se saldrá del programa sin que el usuario sea preguntado.


bulletPrograma,código,...con el ratón
bulletPrograma,código,...sin el ratón

PORQUÉ UNA VERSIÓN CON RATÓN Y OTRA SIN ÉL.

Se ha comprobado que en ciertas máquinas existen problemas al cargar el ratón y en algunas máquinas podemos tener problemas al dibujar en pantalla, en concreto la aparición de basura en pantalla al mover el ratón, por esto he decidido cargar el ratón (si no se carga también han aparecido errores en algunas máquinas) pero NO dibujarlo para que el programa funcione correctamente en TODAS LAS MÁQUINAS para las que está compilado. Para saber si en tu máquina funciona correctamente con el ratón sólo tienes que probar (no pasa nadaaa, sólo que si aparece basura en pantalla, sales y ya está).
Este problema seguramente desaparecerá si se compila el código fuente en la misma máquina. El problema de la aparición de basura es debido a que si dibuja algo en la pantalla mientras el puntero está visible, podría ocurrir una interrupción de movimiento en medio de su operación de dibujo. Si esto ocurre, el buffer del ratón y el código de cambio de banco SVGA se confundirán, y dejarán 'rastros de ratón' por toda la pantalla. Para evitar esto, debemos asegurarnos de ocultar el puntero del ratón siempre que vaya a dibujar la pantalla (creo haber leído).

Bueno, si sabemos cómo remediar el problema de basura que aparece en algunas máquinas ¿por qué no lo hacemos? Pues porque la operación de actualización de las entradas y salidas de nuestro programa es tan rápida que aparece el ratón parpadeando con lo cual solucionamos un problema pero tenemos otro que no podemos solucionar ya que deseamos actualizar las entradas y salidas lo más rápidamente posible. De todos modos puedes probar a compilar el código fuente en tu máquina y comentar la línea del código fuente "g_a14.c" en la que aparezca "scare_mouse( );" para dibujar el ratón y ver que sucede.
No sé si lo he dicho por ahí pero si lo vas a compilar necesitaras las librerías de Allegro y el Djgpp. Son fáciles de usar (las he podido usar yo:-). De todas formas si me lo pregunta mucha gente ya haré un capítulo sobre cómo compilarlo y las herramientas necesarias.

El programa TSX.EXE ha sido compilado en un Pentium MMX 166 con 32 Meg de Ram y sistema operativo Microsoft Windows 98; se ha probado en máquinas de diferentes tipos: 486 , Pentium y Pentium II todos ellos de Intel sobre sistemas operativos diferentes aunque todos ellos de Windows: Windows 95 y Windows 98; en todos ellos se ha comprobado que nuestro programa funciona correctamente y no aparece basura en pantalla (en 3 de esos 6 ordenadores se ha podido dibujar
correctamente el ratón sin necesidad de compilar el programa, así que si tienes suerte, a ti tampoco te pasará, y sino ya sabes: COMPILA EL CÓDIGO).
Si tienes algún problema o duda sobre el programa o sobre cómo compilarlo mándame un mail.

PROGRAMACIÓN

Para estudiar en detalle la programación que está permitida en este simulador tendría que volver al apartado de ANÁLISIS SINTÁCTICO (que no he incluido porque he creído que no es necesario) y ver cuál es la sintaxis permitida. De todas maneras le adelanto que el tipo de programación en este simulador es casi idéntica a la del TSX07, las únicas operaciones que no están permitidas son: mezclar en la carga Set/Reset con Store/StoreNot y la programación no reversible de contadores como temporizadores.

NOTA: Posiblemente vuelva a rediseñar la gramática para incluir este caso aunque lo interesante sería volver a realizar el programa en C++ (incluyendo cosas que actualmente el programa no puede hacer como la anterior e incluso operaciones de bits y cosas de esas) y mejorar la presentación. Espero que cuando te acuerdes de mi familia por tener que copiar más líneas de las necesarias por este motivo seas comprensivo ya que YO NO SOY PROGRAMADOR así que si te interesa el programilla y sabes algo de diseño de gramáticas y cosas de esas me podrías echar una manilla (yo no tengo ni idea, y lo más importante para que funcione correctamente el programa ES SU GRAMÁTICA)

Veamos unos ejemplos:
bulletCombinación Serie-Paralelo
bulletCombinación Paralelo-Serie
bulletProgramación empleando entradas y salidas
bulletProgramación empleando marcas
bulletProgramación empleando marcas y salidas como entradas
bulletCómo resolver la imposibilidad de mezclar Set/Reset con Store/StoreNot
bulletPaso de programación irreversible a reversible

Combinación Serie-Paralelo

LD        %I0.0
AND     %I0.1
OR(      %I0.2
AND     %I0.3)
ST        %Q0.0

Combinación Paralelo-Serie

LD        %I0.1
OR        %I0.2
AND(     %I0.3
OR        %I0.4)
ST        %Q0.0

Programación empleando entradas y salidas

LD        %I0.0
OR        %I0.1
AND(    %I0.4
OR        %I0.5)
ST        %Q0.0

LD        %I0.0
OR        %I0.1
AND     %I0.3
ST        %Q0.1

LD        %I0.0
OR        %I0.1
AND     %I0.3
AND     %I0.2
ST        %Q0.2

Programación empleando marcas

LD        %I0.0
OR        %I0.1
ST        %M0

LD        %I0.4
OR        %I0.5
ST        %M1

LD        %M0
AND     %M1
ST        %Q0.0

LD        %M0
AND     %I0.3
ST        %Q0.1
LD        %M0
AND     %I0.3
AND     %I0.2
ST        %Q0.2

Programación empleando marcas y salidas como entradas

LD        %I0.0
OR        %I0.1
ST        %M0

LD        %I0.4
OR        %I0.5
ST        %M1

LD        %M0
AND     %M1
ST        %Q0.0

LD        %M0
AND     %I0.3
ST        %Q0.1

LD        %Q0.1
AND     %I0.2
ST        %Q0.2

Cómo resolver la imposibilidad de mezclar Set/Reset con Store/StoreNot

Supongamos el siguiente programa:

LD        %I0.0
AND     %I0.1
ST        %Q0.1
STN     %Q0.2
S        %M3
R        %M4

Si se introduce este listado en nuestro programa éste nos dirá que el listado es incorrecto puesto que si analizamos la estructura de la sintaxis permitida por el programa no está permitido mezclar secuencias de Store/StoreNot con Set/Reset como hemos dicho anteriormente. La solución: duplicar el código o mejor aún utilizar marcas.

LD        %I0.0
AND     %I0.1
ST        %M0

LD        %M0
ST        %Q0.1
STN     %Q0.2
LD        %M0
S        %M3
R        %M4

Paso de programación irreversible a reversible

Como ya se ha mencionado anteriormente, tampoco está permitida la programación de temporizadores y contadores de forma irreversible. Veamos un ejemplo de paso de programación irreversible a reversible. Programación irreversible:

LD        %I0.1
IN        %TM1
LD        %TM1.Q
ST        %Q0.3

Programación reversible:

BLK     %TM1
LD        %I0.1
IN
OUT_BLK
LD        Q
ST        %Q0.3
END_BLK

Con los contadores pasa exactamente lo mismo, hemos de utilizar la programación de bloques.

Autor: Jose Maria Sirvent         http://perso.wanadoo.es/bullende

 

 
 
Recomendamos

 

¿Te gustaría ver aqui tu publicidad?

publicidad@automatas.org

 

 

 

 

Todos los nombres comerciales que se utilizan en esta web están o pueden estar registrados por sus respectivos fabricantes.

Principal ] Arriba ]

        2000, 2006            Última modificación: 02/03/2006