• No se han encontrado resultados

3. Desarrollo

3.5. Ciclos de desarrollo

3.5.1. Ciclo 1

Desarrollo de los casos de uso

Programa en S7 Escenario:

En cuanto a este apartado, se ha creado la estructura de clases b´asica que definir´an la arquitectura de S7, para poder realizar correctamente la traducci´on a C++ de todo lo que programe el usuario. Para ello se propone una primera versi´on con Bloque, Instrucci´on y Segmento.

Lo primero a crear ser´a el Form1.h, la clase sobre la que pivotar´a todo el programa, y en donde se producir´a la fusi´on del mundo generado en OpenGL con los botones e interfaz creados, y sobre donde se operar´a con el c´odigo S7 y se producir´an todas las comprobaciones.

El Form es la clase que se crea cuando se programa en CLI/C++ habilitada para emplear todos los controles que incluye el paquete ofrecido por Windows, tales como botones, panel, textbox, checkbox... Es por tanto el pilar de la aplicaci´on y la clase con m´as elementos y funciones.

Se ha a˜nadido un TextBox contenido en un Panel a˜nadido al Form que har´a las veces de Segmento de S7 para esta primera versi´on, a fin de poder realizar las comprobaciones oportunas de la viabilidad de chequear el c´odigo del usuario y analizar su validez.

Simular Escenario y Manipular E/S:

Se han a˜nadido una serie de Checkbox directamente al Form que har´an las veces de botones, tanto de simulaci´on de entradas y salidas del programa (para ver el estado de los diferentes elemen- tos), como para navegar dentro de nuestra aplicaci´on (pasar de la simulaci´on del escenario a la manipulaci´on del c´ogido).

Con el Checkbox se podr´a comprobar de manera clara si algo est´a activo o no, ya que son cajas que se marcan con un tic, algo muy similar a lo que ofrece el entorno SIMATIC, logr´andose as´ı un interfaz muy familiar a los usuarios iniciados.

A˜nadir y quitar segmentos:

Se a˜naden varios TextBox a un panel nuevo contenido en el Form, que har´an las veces de segmentos con sus correspondientes botones de eliminar y a˜nadir los diferentes segmentos. Todo esto se incluir´a en un panel a fin de poder ocultar o mostrar estos segmentos de golpe.

El resultado final ser´a similar al interfaz de escritura de SIMATIC, con la intenci´on de lograr el entorno m´as amistoso para el usuario y que pueda acabar siendo compatible con el entorno de Siemens.

Comprobaci´on del c´odigo en S7:

Para comprobar si el c´odigo introducido por el usuario es correcto en S7, ser´a necesaria la creaci´on de un Parser, que ser´a el encargado de interpretar la validez del c´odigo de una manera estructu- rada, as´ı como un Scan-Op y Scan-dir que ser´an las clases sobre las que pivotar´a este chequeo de instrucciones.

Para facilitar la comprensi´on del parser, se muestra a continuaci´on una m´aquina de estados del proceso de funcionamiento de lectura de las l´ıneas, y que caminos puede ir tomando en funci´on de lo que vaya leyendo.

Figura 3.2: M´aquina de estados de la clase Parser

Como se puede comprobar, el parser est´a compuesto de diversos estados en los que se queda leyendo espacios en blanco hasta detectar alg´un car´acter e iniciar as´ı el an´alisis del operador en primer lugar y de la direcci´on de memoria en segundo lugar.

Hay tambi´en contemplada un estado de fin de l´ınea correcto y otro de l´ınea con error, que ser´an los estados finales que tendr´a cualquier l´ınea de c´odigo.

Adem´as, para poder definir de validez de instrucciones correctas/err´oneas se emplear´a un sistema de colores (verde correcto, rojo incorrecto) para que el usuario pueda visualizar a simple vista los posibles segmentos que contengan errores en el c´odigo.

3.5. CICLOS DE DESARROLLO 37

Diagrama de clases

La clase m´as importante como se ha explicado antes ser´a el Form, el esqueleto del programa.

En esta primera versi´on se a˜naden los atributos b´asicos para realizar pruebas, as´ı como algunas funciones en las que empezar a trabajar la anteriormente comentada uni´on de objetos. En futuros ciclos solo se referenciar´an los cambios producidos sobre la misma, con el fin de no mostrar algo repetitivo.

En el diagrama se muestra ´unicamente el contendor de controles, y los atributos b´asicos de esta primera versi´on.

En la parte de atributos, se ha incluido una timer, aunque a´un no se le da uso, por lo que ser´a explicado en futuros ciclos.

Figura 3.3: Clase Form.h: Ciclo 1

Aparecen como atributos estado, que indica si la aplicaci´on se encuentra en modo programar o simular, las dos pantallas que habr´a disponibles cuando se ejecute un escenario. Adem´as, hay a˜nadidas las clases validas y dir-validas para realizar las validaciones de c´odigo de esta primera versi´on.

Tambi´en hay diferentes atributos del universo STEP 7 (segment, OB1, RLO...) a modo de primera versi´on para probar la viabilidad de emplearlo con Windows Forms.

Las funciones mostradas en el diagrama, excluyendo al constructor y destructor, son las m´as destacables de esta versi´on, y ser´an las que se vayan desarrollando en futuros ciclos.

cuando se produce este evento. As´ı mismo, accionar´a una serie de mecanismos de comprobaci´on de c´odigo por parte del sistema para analizar la validez del c´odigo. Y en ´ultima instancia, cambiar´a el estado a simulaci´on si el c´odigo es correcto.

La funci´on codigo-click es la opuesta. Tiene todos los mecanismos activados cuando en mitad de la simulaci´on se pulsa este bot´on para volver al modo programar.

Las funciones M1 y X1 son las de a˜nadir y eliminar segmentos respectivamente, las cuales realizan una serie de mecanismos para saber donde se introduce o elimina el segmento y si debe mover c´odigo de segmento (ya que realmente oculta o muestra segmentos ya creados).

En esta primera versi´on del programa, el Form1 se comunica con la estructura de clases creadas para conformar la jerarqu´ıa de Step7, as´ı como con un Parser que pueda interpretar el c´odigo metido por el usuario.

La carpeta Step7 contiene todos los elementos relativos a la estructuraci´on del lenguaje S7, para tratar de organizar de la mejor manera posible el c´odigo y aproximarlo lo m´aximo posible a lo ofrecido por Siemens. Por tanto, esta clase buscar´a lograr una estructura de bloques, segmentos, instrucciones simular a lo encontrado en SIMATIC.

En cuanto al Parser, y las clases sobre las que se apoya (ScanOp y ScanDir), son las clases que se encargaran de comprobar la validez del c´odigo que se haya introducido, comparando cada instruc- ci´on con las direcciones de memoria habilitadas en la versi´on del programa y con los operadores v´alidos de la base de datos.

3.5. CICLOS DE DESARROLLO 39

Interfaz de usuario

El interfaz de usuario de esta versi´on se ha empleado con el objetivo de ver la viabilidad de futuras versiones, as´ı como para tratar de buscar la mejor soluci´on de cara a sencillez y utilidad.

En la primera pantalla se encuentra la visualizaci´on del modo programar c´odigo, en el cual el usuario podr´a a˜nadir/quitar segmentos, validar las instrucciones que haya a˜nadido y clicar en START para pasar al modo ejecuci´on del c´odigo.

Figura 3.5: Interfaz modo programar: Ciclo 1

Una vez pulsado START, se pasa al modo visualizaci´on, en el cual en futuras versiones se a˜nadir´a una ventana gr´afica para visualizar el entorno en 3D. Por ahora eso se ha representado con un cambio de color.

3.5. CICLOS DE DESARROLLO 41

Aspectos t´ecnicos

Se ha trabajado en crear un interfaz sencillo pero visual, por tanto se han ido a˜nadiendo los diversos controles que ofrece Windows al Form1.h.

En este primer ciclo cabe destacar la manipulaci´on de los controles por defecto, modificando el tama˜no, la forma y a˜nadiendo im´agenes para personalizar lo m´aximo posible la soluci´on.

As´ı mismo, la creaci´on del parser ha sido estudiada minuciosamente, creando diversos estados intermedios para simplificar la labor. Se apoya en Scan-Dir y Scan-Op para el momento de validar cada parte de la instrucci´on, por tanto el parser ser´a aplicado a cada l´ınea de c´odigo que haya escrito el usuario, a f´ın de segmentar completamente el c´odigo para validarlo.

Cabe resaltar que el c´odigo se almacenar´a ordenado en el segmento, y los segmentos en el bloque, de cara a una futura simulaci´on de elementos, en los que no s´olo influye la validez de las instrucciones si no tambi´en el orden en el que est´en escritas en el programa.

Pruebas

Las pruebas en esta primera van a ser muy simples y funcionales.

Por un lado se comprueba que todos los botones a˜nadidos se muestran correctamente, y que se ocultan o modifican seg´un en el modo de programa que se encuentra la aplicaci´on (programar o simular).

La otra prueba principal que se realiza es ver que los botones a˜nadir y quitar segmentos funcionen de la manera esperada, actuando sobre el segmento deseado y desencadenando el cambio de texto esperado en los segmentos.

Documento similar