Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
0
Manual bsico v1.0 Revisin A
Febrero 2012
Ir al ndice
ndice
1 INICIO...........................................................................................................................3 2 GUI (Graphical User Interface)..........................................................................................5 3 USO...............................................................................................................................8 3.1 Insercin de un bloque..............................................................................................9 3.1.1 Puertos...........................................................................................................12 3.2 Conexin de bloques...............................................................................................13 3.3 Seleccin y edicin mltiple......................................................................................14 4 CDIGO PROGRAMABLE.................................................................................................16 4.1 Inicializacin del modelo..........................................................................................18 4.2 Ejecucin de la simulacin........................................................................................20 4.3 Visualizacin de los resultados..................................................................................21 4.4 Paths tiles............................................................................................................22 5 EJEMPLOS.....................................................................................................................23 5.1 Construccin de un sistema de primer orden mediante bloques bsicos..........................23 5.2 Construccin de un subsistema.................................................................................25 6 CREACIN DE UN BLOQUE DE LIBRERA...........................................................................27 7 LICENCIAS....................................................................................................................31 7.1 Python...................................................................................................................31 7.1.1 History of the software......................................................................................31 7.1.2 Terms and conditions for accessing or otherwise using Python...............................32 7.2 wxPython...............................................................................................................35 7.3 Numpy..................................................................................................................35 7.4 Scipy.....................................................................................................................36 7.5 Matplotlib...............................................................................................................36 7.5.1 License...........................................................................................................36 7.5.2 License agreement for matplotlib 1.1.0...............................................................36 7.6 Photon...................................................................................................................37
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
2/38
Ir al ndice
1 INICIO
_______________________________________________________
Photon es una herramienta para simulacin de sistemas dinmicos de cualquier tipo. Es muy comn utilizar herramientas de simulacin para resolver ciertos problemas complejos y cuya solucin analtica es difcil de encontrar o incluso puede que no exista. Los campos de accin en donde podra ser til un simulador son muy variados, por ejemplo, para analizar dinmica de fluidos, problemas del mbito fsico, qumico, elctrico, electrnico, etc. En general, cualquier sistema que pueda ser representado matemticamente por ecuaciones diferenciales, algebraicas, lineales o no lineales, podra ser simulado con esta herramienta. Photon es una herramienta simple, rpida y efectiva para construir y simular sistemas dinmicos hechos a medida mediante diagramas de bloques. Utiliza el potente motor de simulacin FreeSim 3.0 desarrollado ntegramente por Estudios Elctricos. Este motor de simulacin se encuentra altamente optimizado con el objetivo de lograr mxima velocidad durante el proceso de clculo. En funcin de ello, se han desarrollado distintos mtodos y algoritmos, para correr una simulacin en distintos hilos (threads) y de esa forma utilizar al mximo la potencia de clculo disponible en las PC modernas. Esta herramienta permite construir diagramas de bloques, como lo hara con un lpiz sobre una hoja de papel, a partir de una librera de bloques bsicos que realizan todas las operaciones necesarias. Si se necesitara alguna operacin particular, es factible crearla mediante la combinacin de los bloques simples de librera. Si eso no fuera suficiente, es posible crear un bloque en el cual se define su comportamiento mediante programacin (utilizando el lenguaje Python 2.x). Esto permite total flexibilidad al momento de disear un diagrama de bloques. La librera de bloques est divida por categoras en:
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
3/38
Ir al ndice
Dentro de cada una de estas categoras existe una batera de bloques elementales que pueden ser utilizados en cualquier diagrama. Photon utiliza internamente el lenguaje de programacin Python 2.x para realizar la simulacin, y para la escritura de porciones de cdigo por parte del usuario. Para mayor informacin relacionada con cuestiones del lenguaje de programacin remitirse a www.python.org. Photon puede ser instalado en cualquier PC en donde funcione Python 2.x. Algunos paquetes adicionales son necesarios tales como wxPython, numpy, matplotlib, etc. Como resultado, este software es multi-plataforma. Fue probado exitosamente en distintas versiones de Windows, Linux y Mac OS X.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
4/38
Ir al ndice
La interfaz de usuario es extremadamente amigable y permite mediante unos pocos clicks generar un diagrama de bloques sencillo. Al momento de desarrollar el software, se puso especial atencin en la esttica de los diagramas. Para ello se han utilizado formas redondeadas, sombras, colores y curvas de Bzier que son ampliamente utilizadas por los programas ms importantes de dibujo vectorial. Todo ello combinado resulta en grficos de alta definicin y sumamente agradables. La ventana principal presenta un diseo minimalista y consta de cinco reas: 1. Men 2. Lista de Sistemas y subsistemas. 3. Lienzo de dibujo 4. Ventana de salida 5. Barra de herramientas La mayor parte de las acciones estn vinculadas con alguna combinacin de teclas. Una vez familiarizado con ellas, el usuario podr realizar las tareas ms rpidamente.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
5/38
Ir al ndice
El listado en forma de rbol sobre el lado izquierdo permite navegar el sistema. La vista de la hoja corresponde con el tem seleccionado en el navegador. La ventana de salida muestra los distintos mensajes que surgen durante el uso del software. Sobre el lienzo y mediante el men contextual se pueden agregar todos los bloques que hagan falta para generar la funcionalidad requerida. Los bloques se comunican entre s mediante las conexiones que vinculan un puerto de salida(rojo) con un puerto de entrada(verde).
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
6/38
Ir al ndice
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
7/38
Ir al ndice
3 USO
_______________________________________________________
Al iniciar Photon, se cuenta con una hoja en blanco lista para comenzar la edicin. La mayor parte de las acciones pueden ser realizadas directamente sobre el lienzo con el puntero del mouse. El men contextual sobre la hoja contiene casi todas las operaciones que pueden realizarse.
La manipulacin de la hoja es sumamente sencilla. La rueda del mouse permite realizar zoom sobre la posicin en que se encuentra el puntero. Fcilmente el usuario puede acercar y alejar la hoja para hacer foco en donde desee. El efecto de zoom tambin se logra mediante las teclas Ctrl y +/- pero en este caso el foco se corresponde con el centro de la zona visible de la hoja.
Manual bsico v1.0 rev:A
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
8/38
Manteniendo presionada la tecla Shift el puntero del mouse cambia a la clsica manito con la que se puede arrastrar la hoja hacia la posicin deseada. La creacin de un sistema simulable requiere de algunas sencillas etapas. 1. Insercin de los bloques necesarios del modelo. 2. Conexin de bloques. 3. Inicializacin del modelo. 4. Ejecucin de la simulacin. 5. Visualizacin de los resultados.
Ir al ndice
3.1 Insercin de un bloque La insercin de bloques se hace mediante el men contextual. Se presiona con el botn derecho del mouse sobre el lugar vaco en donde se quiere agregar un bloque y se desplegar el men. El primer tem del men es Nuevo bloque y all se encuentra la librera de bloques bsicos. A continuacin se muestran los pasos para crear un bloque Gain. Es importante notar que en el sistema principal se llama por defecto MainSystem, tal como lo indica el nodo principal de la lista de bloques. Todo System es un contenedor de otros elementos, incluso otros System. Dentro de cada proyecto, existe un solo sistema principal y es el que contiene el cdigo de ejecucin. El resto de los sistemas que pueda haber son subsistemas del principal. Todos los bloques que se agreguen sern hijos del MainSystem (o como se designe al sistema principal).
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
9/38
Ir al ndice
Luego de insertado un bloque, puede ser movido o redimensionado. Estas acciones se realizan arrastrando los handles que aparecen en las esquinas del bloque cuando est seleccionado. Si se presiona la tecla Ctrl una vez comenzado el arrastre aparecern dos lneas, una horizontal y otra vertical, que se cruzan en el lugar original donde estaba el handle y que sirven de gua para lograr un movimiento en una sola direccin. Esta caracterstica es extensible a cualquier handle ya sea de un bloque o de una lnea. Todos los bloques tienen parmetros que los caracterizan. Ellos se muestran en pantalla cuando se selecciona la opcin Editar bloque... del men contextual del bloque (o haciendo doble click sobre el bloque). En el caso particular de un subsistema, el comportamiento ante el evento "doble click" sobre l es distinto:
si el subsistema no tiene definida una mscara -> "doble click" entra al subsistema
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
10/38
si el subsistema ya tiene definida una mscara -> "doble click" abre el dilogo de edicin de mscara
Ir al ndice
si el subsistema ya tiene definida una mscara -> "Ctrl+doble click" entra al subsistema
Dentro de la pestaa Mscara se visualizan todos los parmetros modificables que son particulares de la clase de bloque que se est editando. Dentro de la pestaa General se visualiza el identificador del bloque (no editable) y el nombre del bloque. El nombre debe ser nico entre todos los bloques pertenecientes a un sistema. Si se intenta utilizar un nombre ya usado, el software agregar automticamente un nmero como sufijo del nombre de manera que sea nico.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
11/38
Dentro de la pestaa Descripcin se muestra la ayuda particular de cada bloque, indicando cul es la funcin que cumple.
Ir al ndice
Dentro de la pestaa Grficas se visualizan parmetros del bloque relacionados con cuestiones grficas. Tanto la posicin como el tamao del bloque estn dados en pixels. Existen dos controles del tipo listas desplegables que permiten definir si se muestra o no el nombre del bloque incluyendo la posicin para hacerlo y si se muestra o no la lista de parmetros sobre la hoja indicando la forma de hacerlo. El hecho de que los valores de los parmetros aparezcan sobre la hoja permite una mejor documentacin de los modelos realizados.
3.1.1 Puertos Los puertos determinan la interfase del bloque (junto con su mscara). Son los que definen las seales de entrada y salida de los bloques. Los puertos de entrada se dibujan como un crculo de color verde. Los puertos de salida son crculos de color rojo. Todos los puertos tiene un nmero nico para el tipo que sea (tipo entrada o salida). Por ejemplo, un bloque no puede tener dos puertos de entrada numerados con "0", pero si un puerto "0" de entrada y un "0" de salida. En la mayora de los bloques de librera los puertos ya estn definidos y por lo tanto no son modificables ni su nmero ni su tipo. Algunos bloques en particular necesitan que se definan determinadas caractersticas de sus puertos. Por ejemplo un sumador podra tener algunas entradas que suman y otras que restan, o bien, ms entradas que las que trae por defecto. Para agregar un puerto, si el bloque lo permite, se utiliza la opcin correspondiente del men contextual del bloque. Para editar un puerto se despliega el men contextual sobre el mismo o con doble click.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
12/38
Ir al ndice
Se observa que mediante la ventana de edicin se puede seleccionar el tipo de puerto Entrada/Salida, el nmero, el smbolo, el lado en donde se ubicar y un nombre y una descripcin si fuera necesario. El tipo de dato est definido por el tipo de bloque al cual pertenece el puerto. En el caso de los subsistemas, el tipo es seleccionable mediante una lista desplegable. 3.2 Conexin de bloques Para crear una lnea, simplemente se debe arrastrar con el mouse desde un puerto de salida (rojo) hasta uno de entrada (verde) libre. Al soltar el botn del mouse sobre un puerto de entrada libre se dibuja automticamente una lnea de tipo Bezier. Varias lneas pueden comenzar en un mismo puerto de salida, pero solo una lnea puede llegar a una entrada determinada.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
13/38
Ir al ndice
Para modificar el aspecto de la lnea se puede seleccionar y mover los handles o agregarle nuevos handles para generar diferentes curvaturas. A modo de recomendacin, tmese unos segundos decorando los diagramas de bloques y ver cuanto ms agradable resultan a la vista.
3.3 Seleccin y edicin mltiple Existen situaciones en donde se desea modificar alguna caracterstica o parmetro en particular de varios de los bloques que conforman el DB. Para esos casos, es posible utilizar el cuadro de dialogo de seleccin mltiple en donde se muestran en una grilla todos los bloques seleccionados. En esa grilla aparecen como columnas, todas las propiedades que son compartidas por todos los objetos seleccionados. Es importante notar que las propiedades: id, name, showName, showParams, x, y, w y h son comunes a todos los bloques y por lo tanto siempre aparecern en la grilla. El resto de las columnas agregadas hacia la derecha dependern de que clase de bloques se hayan seleccionado. En la Figura 3.12 se encuentran seleccionados tres bloques que tiene en la mscara un parmetro K y por lo tanto aparece la columna correspondiente. Sobre esta grilla se pueden efectuar acciones de modificacin tanto como copiar y pegar. La seleccin de los bloques se puede realizar manualmente con el mouse (manteniendo presionado la tecla Ctrl) o mediante la herramienta de seleccin por clases del men contextual.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
14/38
Ir al ndice
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
15/38
Ir al ndice
4 CDIGO PROGRAMABLE
_______________________________________________________
Para lograr una simulacin, el software construye de manera intermedia y transparente para el usuario un script con cdigo puro Python 2.x. Dentro de este script existen partes que son personalizables por el usuario. Estas porciones de cdigo personalizables son identificadas como:
Cdigo de ejecucin, Condiciones iniciales, Importacin de mdulos, Cdigo inicial, Funciones de clase.
En este punto es necesario tener conocimientos mnimos de programacin en Python (ver doc.python.org)
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
16/38
Cada uno de estos cinco tems mencionados anteriormente son representados por una transcripta al lugar correspondiente dentro del script que genera el software al momento de la ejecucin. A continuacin se presenta el esqueleto de un script y se marcan los puntos en donde sern transcriptas cada porcin de cdigo escrito por el usuario. Es importante notar que cada una de esas partes tiene un mbito diferente para sus variables.
Ir al ndice
pestaa en la ventana de "Editar cdigo Python" y la porcin de cdigo que se escriba all ser
Esqueleto de script
... ... # Importacin de mdulos class MainSystem(freesim.System): def __init__(self, ....): # Codigo inicial (creacin de los objetos) ... def calcInit(self): # Condiciones iniciales ... # Funciones de clase del usuario
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
17/38
Para crear cdigo en la pestaa de funciones de clase se debe tener en cuenta que se definen con la siguiente estructura:
Ir al ndice
4.1 Inicializacin del modelo El proceso de inicializacin requiere el clculo de los valores de las variables de estado si se requiere que el modelo arranque en equilibrio. Esto implica que dadas las condiciones de borde del sistema que se desea simular, ste tendr una condicin de rgimen estacionario en la cual podra permanecer indefinidamente. Bajo esas condiciones, las variables de estado del sistema adoptarn determinados valores que son los que se necesitan calcular en esta etapa de inicializacin. Si para las condiciones de las entradas y salidas, se calculan correctamente los valores de las variables de estado, el sistema ya estara en rgimen estacionario desde el instante cero de simulacin, en caso contrario, existir una evolucin transitoria hasta lograr el punto de equilibrio. Las condiciones iniciales de los bloques aparecen en sus respectivas mscaras como un parmetro ms a ser cargado. Por ejemplo en la mscara de un bloque Int aparece la variable x0 que representa la condicin inicial.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
18/38
Ir al ndice
La forma ms rudimentaria de inicializar sera escribir el valor en el cuadro de texto correspondiente en la mscara. En caso de que se necesite realizar algn clculo extra, se puede realizar en la pestaa Condiciones iniciales en la ventana de edicin de cdigo python. Dentro de la pestaa Condiciones iniciales es posible escribir cdigo en lenguaje Python 2.x. Esta porcin de cdigo forma parte del cuerpo de una funcin de clase llamada calcInit que recibe una referencia del sistema llamada self. Internamente el software construye una funcin con la siguiente forma:
19/38
En general, cualquier parmetro de la mscara puede ser modificado de esta manera, en este caso particular se usa para modificar un parmetro que representa una condicin inicial.
Ir al ndice
Dentro del cdigo escrito por el usuario se puede incorporar cualquier clase de expresin admitida por un intrprete de Python 2.x. Esto permite total flexibilidad pues se dispone de todas las herramientas con las que cuenta dicho lenguaje de programacin, puede por ejemplo abrir un archivo y leer algunos datos para inicializar el sistema en una determinada condicin o cualquier otra cosa que al usuario se le ocurra.
4.2 Ejecucin de la simulacin Dentro de la pestaa Cdigo de ejecucin es posible escribir cdigo en lenguaje Python 2.x. Esta porcin de cdigo forma parte del cuerpo de una funcin de clase llamada runScript que recibe una referencia del sistema llamada self y dos argumentos llamados old y WorkSpace. Internamente el software construye una funcin con la siguiente forma:
def runScript(self, old=None, WorkSpace={}): (cdigo escrito por el usuario en la seccin Cdigo de ejecucin)
Cuando se elige la opcin Ejecutar Script (F5) el software procesa el sistema desarrollado, construye un script escrito en lenguaje Python 2.x, y lo ejecuta. Para ejecutarlo crea en memoria un objeto de la clase del sistema principal y lo ejecuta llamando a la funcin runScript de la instancia. A partir de all se ejecutarn secuencialmente las lneas de cdigo escritas por el usuario. El argumento old es un diccionario que contiene los resultados de la simulacin anterior. Durante la primera ejecucin es None dado que todava no existe una simulacin anterior. El argumento WorkSpace es un diccionario cuyo contenido persiste entre las distintas simulaciones que el usuario realice. Esta caracterstica puede ser utilizada como un espacio de trabajo en donde se almacenan cosas tiles. Una estructura de runScript tpica podra ser la siguiente.
self.initSim(runstep=0.001) self.run(10.0)
El cdigo anterior inicializa la simulacin, define el paso de integracin en 0.001 segundos y simula 10.0 segundos.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
20/38
Ir al ndice
Para la visualizacin de los resultados es necesario ubicar bloques Scope conectados a las seales que se desean registrar. El nombre de un Scope ser utilizado para designar la seal registrada dentro del diccionario de resultados. La forma de obtener los resultados es pedirle al sistema el diccionario de la simulacin. Esto se hace mediante la funcin getSimuDict(). Las claves del diccionario corresponden a los nombres de todos los Scope presentes en el sistema. Adicionalmente existe la clave 't' que corresponde al tiempo de simulacin. Este diccionario es en realidad un objeto de la clase Mdict el cual tiene un comportamiento exactamente igual a un diccionario nativo de Python con la particularidad que se puede obtener algunas de sus claves como si fueran un atributo. Esto quiere decir que la llamada d['t'] y d.t son semejantes, permitiendo ahorrar gran cantidad de comillas y corchetes en la edicin. Una forma adicional de visualizar resultados es mediante los bloques DummyIn y DummyOut. Estos bloques muestran en pantalla el valor de la entrada o la salida a la que estn conectados respectivamente luego de finalizada la simulacin. Dentro del espacio de nombres en donde se ejecuta la funcin runScript se encuentran definidos los siguientes alias:
matplotlib.pyplot es un mdulo que provee funciones para generar grficos de alta calidad. La sintaxis de la funcin plot contenida dentro del mdulo plt es sumamente sencilla, se le debe pasar como parmetro el array del eje x, el array del eje y, opcionalmente se le agrega el color y tipo de la lnea. Para mayor informacin sobre el mdulo matplotlib remitirse a la pgina web http://matplotlib.sourceforge.net/ numpy es un mdulo que contiene toda clase de funciones matemticas y que habitualmente son utilizadas. Para mayor informacin http://numpy.scipy.org/ . Por ejemplo si existiera un bloque Scope llamado 'out' se podra generar una figura de la siguiente manera:
21/38
La ltima lnea de cdigo es necesaria para visualizar la figura en una ventana. 4.4 Paths tiles
Ir al ndice
Existe un archivo de configuracin llamado config.txt que contiene algunos paths importantes en formato xml y se encuentra ubicado en la misma carpeta de la aplicacin. Si se ejecuta Photon y no se encuentra ste archivo, se crear automticamente con algunos valores predefinidos. Luego el usuario podra editar el archivo con cualquier editor de texto y cambiarlos. La seccin de paths podra lucir de la siguiente manera:
<PATHS> <PATH key="$APPPATH$" value="C:\Python27\Lib\site-packages\Photon"/> <PATH key="$LIBPATH$" value="C:\Python27\Lib\site-packages\Photon\Libreria"/> <PATH key="$UTILSPATH$" value="C:\Python27\Lib\site-packages\Photon\utils"/> </PATHS>
Las claves $LIBPATH$, $APPPATH$ y $UTILSPATH$ podran ser usadas para crear paths relativos. Por ejemplo si se deseara abrir dentro de un subsistema un archivo ejemplo.ph3 que est ubicado dentro de la carpeta definida como librera, se podra usar para la propiedad Archivo en la pestaa General del subsistema:
C:\Python27\Lib\site-packages\Photon\Libreria\ejemplo.ph3 $LIBPATH$\ejemplo.ph3
De la misma forma podran usarse los otros path definidos en el archivo config.txt. La clave $UTILSPATHS tiene adems la particularidad de que se importa automticamente durante la ejecucin del script, por lo tanto podra generarse un mdulo de funciones personalizado ubicado dentro de esa carpeta, por ejemplo misFunciones.py, y utilizarse luego simplemente agregando la lnea siguiente en la seccin de Importacin de mdulos
import misFunciones
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
22/38
Ir al ndice
5 EJEMPLOS
_______________________________________________________
La condicin inicial del integrador llamado Int se define igual a cero. Este valor puede ser directamente cargado en la mscara del bloque. El cdigo de ejecucin tendra la siguiente forma:
self.initSim(0.001) self.run(10.0) d = self.getSimuDict() plt.plot(d.t, d.inp,'g', d.t, d.output,'b') plt.grid() plt.xlabel('t [seg]') plt.ylabel('input and output') plt.show()
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
23/38
Ir al ndice
Si se quisiera automatizar el clculo de la condicin inicial, para independizarse del valor inicial del Step se podra incorporar la siguiente lnea de cdigo en la seccin Condiciones iniciales en la ventana de edicin de cdigo.
self.Int.x0 = self.Step.value1
De esta manera la condicin inicial del integrador siempre ser el valor inicial del Step.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
24/38
Ir al ndice
En la figura 5.4 se puede observar el contenido del subsistema. El bloque verde representa una entrada y el rojo una salida. En el momento en el que se crea un bloque tipo System subsystem, ste no tiene ningn puerto. Se los debe agregar mediante el men contextual. Cada sistema contiene una hoja en la cual se podrn agregar nuevos bloques.
Es importante diferenciar la interfase de un subsistema del contenido del mismo. La interfase contiene la informacin de cmo se vincula el bloque con el resto de los bloques, es decir, los puertos. La vinculacin con el exterior se lleva a cabo mediante el nmero del puerto. Esto quiere decir que al sumador de la figura 5.4 le llegar la salida del bloque Step de la figura 5.3 y la salida de Int de la figura 5.4 ser registrada por el Scope de la figura 5.3 llamado output. Grficamente se podra pensar que la vinculacin ocurre de la siguiente manera:
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
25/38
Ir al ndice
La opcin descubrir del men contextual construye automticamente la interfase externa del subsistema a partir del contenido del mismo. Esto quiere decir que por cada bloque Input y Output que haya dentro del subsistema se crear su correspondiente puerto exterior. Obviamente el resultado de la simulacin es exactamente igual que en el ejemplo del punto 5.1 . Las pestaas de script se veran de la siguiente manera.
El concepto de subsistema permite crear libreras de bloques. Todos los bloques que compartan la interfase (o una parte de ella dependiendo el caso) podran ser intercambiables.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
26/38
Ir al ndice
Los bloques de librera sirven para reutilizar modelos ya construidos y guardados en un archivo. Un bloque de librera es en definitiva un MainSystem al que se le ha definido una mscara y la forma automatizada de calcular sus condiciones iniciales tanto de los estados internos como de todas las entradas y salidas necesarias. Es posible la reutilizacin de diagramas de bloques existentes mediante la inclusin de un bloque System al que se le indica que su contenido proviene de un archivo previamente guardado. Para crear un subsistema que funcione como un bloque de librera, ste debera funcionar correctamente, independientemente de donde se lo coloque y para eso se deben construir su mscara y calcular correctamente sus condiciones iniciales en funcin de las condiciones de borde. Pasos: 1. Construccin del subsistema: como ejemplo se utilizar el subsistema de la figura 5.3. 2. Construccin de la mscara: considerando que la constante de tiempo ahora ser configurable.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
27/38
Agregar un tem con el botn '+' y editarlo para que quede como se muestra en la figura siguiente
Ir al ndice
3. Ahora la variable T puede ser usada dentro del subsistema y tomar el valor que se ingrese en la mscara. Entonces se modifica el bloque Cond y remplaza el valor 0.5 por el nombre de variable T.
Las variables de las mscaras son pasadas como argumentos al constructor del objeto en el momento de la ejecucin. Si se necesitara utilizar en tiempo de ejecucin el valor de T dentro de, por ejemplo el cdigo de inicializacin, se debera utilizar la siguiente expresin: self.Cond.gain. Esto es debido a que el valor 0.5 asignado a la variable T es redirigido al parmetro gain del bloque Cond.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
28/38
4. El siguiente paso es inicializar el subsistema. Se supondr que la entrada es forzada valor conocido sea la salida, pero ese caso no se ha contemplado. Mediante el men contextual de subsystem se llega a Editar Codigo...
Ir al ndice
por el sistema principal y entonces es un valor conocido. Podra haber pasado que el
Es importante notar que la lnea de cdigo fuerza la condicin inicial del integrador al valor que adopte la entrada 0 del subsistema. Existen algunas funciones tiles al momento de inicializar: - self.GetInput(nro de puerto) : obtiene el valor del puerto de entrada dado - self.GetOutput(nro de puerto) : obtiene el valor del puerto de salida dado - self.SetInput(nro de puerto, valor) : fuerza el valor del puerto de entrada dado. - self.SetOutput(nro de puerto, valor) : fuerza el valor del puerto de salida dado. 5. Luego desde el sistema principal (que es el padre de subsystem) solo hace falta llamar a que se calculen las condiciones iniciales de subsystem despus de haberse asegurado que el valor de su entrada est calculado.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
29/38
6. Para crear un bloque de librera a partir de este subsistema se debe guardar el sistema desde el men contextual.
Ir al ndice
Suponiendo que se guarda con el nombre sub_PT1.ph3, este archivo se convierte en un bloque de librera debido a que se puede utilizar en cualquier otro lugar simplemente agregando un bloque subsystem e indicndole que su contenido proviene del archivo sub_PT1.ph3. El contenido de cualquier subsistema que est vinculado a un archivo es de solo lectura y la nica forma de ser modificado es abrindolo como sistema principal 7. A partir de este instante la propiedad archivo del subsistema y su contenido queda vinculado con el archivo que se ha grabado. Para desvincularlo solo es necesario borrar el nombre del archivo en la mscara.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
30/38
Ir al ndice
7 LICENCIAS
_______________________________________________________
7.1 Python
Year 1991-1995 1995-1999 2000 2000 2001 2001 2001 2001 2001 2002 2002 2002 2002 2002-2003 2002-2003 2002-2003 2003 2003 2004
Owner CWI CNRI CNRI CNRI PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF
GPL compatible? yes yes no no no yes yes yes yes yes yes yes yes yes yes yes yes yes
31/38
BeOpen.com no
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
Ir al ndice
Release 2.3.5 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.5 2.5.1 2.5.2 2.5.3 2.6 2.6.1 2.6.2 2.6.3 2.6.4 2.7
Derived from 2.3.4 2.3 2.4 2.4.1 2.4.2 2.4.3 2.4 2.5 2.5.1 2.5.2 2.5 2.6 2.6.1 2.6.2 2.6.3 2.6 2005 2004 2005 2005 2006 2006 2006 2007 2008 2008 2008 2008 2009 2009 2010 2010
Year
Owner PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF PSF
GPL compatible? yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
Note GPL-compatible doesnt mean that were distributing Python under the GPL. All Python licenses, unlike the GPL, let you distribute a modified version without making your changes open source. The GPL-compatible licenses make it possible to combine Python with other software that is released under the GPL; the others dont. Thanks to the many outside volunteers who have worked under Guidos direction to make these releases possible. 7.1.2 Terms and conditions for accessing or otherwise using Python PSF LICENSE AGREEMENT FOR PYTHON 2.7.2 1. This LICENSE AGREEMENT is between the Python Software Foundation (PSF), and the Individual or Organization (Licensee) accessing and otherwise using Python 2.7.2 software in source or binary form and its associated documentation. 2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 2.7.2 alone or in any derivative version, provided, however, that PSFs License Agreement and PSFs notice of copyright, i.e., Copyright 2001-2010 Python Software Foundation; All Rights Reserved are retained in Python 2.7.2 alone or in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates Python 2.7.2 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python 2.7.2. 4. PSF is making Python 2.7.2 available to Licensee on an AS IS basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
32/38
Ir al ndice
5.
6. 7.
8.
MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.7.2 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 2.7.2 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.7.2, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. This License Agreement will automatically terminate upon a material breach of its terms and conditions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. By copying, installing or otherwise using Python 2.7.2, Licensee agrees to be bound by the terms and conditions of this License Agreement. BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
1. This LICENSE AGREEMENT is between BeOpen.com (BeOpen), having an office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the Individual or Organization (Licensee) accessing and otherwise using this software in source or binary form and its associated documentation (the Software). 2. Subject to the terms and conditions of this BeOpen Python License Agreement, BeOpen hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use the Software alone or in any derivative version, provided, however, that the BeOpen Python License is retained in the Software, alone or in any derivative version prepared by Licensee. 3. BeOpen is making the Software available to Licensee on an AS IS basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 5. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 6. This License Agreement shall be governed by and interpreted in all respects by the law of the State of California, excluding conflict of law provisions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between BeOpen and Licensee. This License Agreement does not grant permission to use BeOpen trademarks or trade names in a trademark sense to endorse or promote products or services of Licensee, or any third party. As an exception, the BeOpen Python logos available at http://www.pythonlabs.com/logos.html may be used according to the permissions granted on that web page.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
33/38
Ir al ndice
7. By copying, installing or otherwise using the software, Licensee agrees to be bound by the terms and conditions of this License Agreement. CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 1. This LICENSE AGREEMENT is between the Corporation for National Research Initiatives, having an office at 1895 Preston White Drive, Reston, VA 20191 (CNRI), and the Individual or Organization (Licensee) accessing and otherwise using Python 1.6.1 software in source or binary form and its associated documentation. 2. Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 1.6.1 alone or in any derivative version, provided, however, that CNRIs License Agreement and CNRIs notice of copyright, i.e., Copyright 1995-2001 Corporation for National Research Initiatives; All Rights Reserved are retained in Python 1.6.1 alone or in any derivative version prepared by Licensee. Alternately, in lieu of CNRIs License Agreement, Licensee may substitute the following text (omitting the quotes): Python 1.6.1 is made available subject to the terms and conditions in CNRIs License Agreement. This Agreement together with Python 1.6.1 may be located on the Internet using the following unique, persistent identifier (known as a handle): 1895.22/1013. This Agreement may also be obtained from a proxy server on the Internet using the following URL: http://hdl.handle.net/1895.22/1013. 3. In the event Licensee prepares a derivative work that is based on or incorporates Python 1.6.1 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python 1.6.1. 4. CNRI is making Python 1.6.1 available to Licensee on an AS IS basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 7. This License Agreement shall be governed by the federal intellectual property law of the United States, including without limitation the federal copyright law, and, to the extent such U.S. federal law does not apply, by the law of the Commonwealth of Virginia, excluding Virginias conflict of law provisions. Notwithstanding the foregoing, with regard to derivative works based on Python 1.6.1 that incorporate non-separable material that was previously distributed under the GNU General Public License (GPL), the law of the Commonwealth of Virginia shall govern this License Agreement only as to issues arising under or with respect to Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between CNRI and Licensee. This License Agreement does not grant permission to use CNRI trademarks or
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
34/38
Ir al ndice
trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. 8. By clicking on the ACCEPT button where indicated, or by copying, installing or otherwise using Python 1.6.1, Licensee agrees to be bound by the terms and conditions of this License Agreement. ACCEPT CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 Copyright 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Stichting Mathematisch Centrum or CWI not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE 7.2 wxPython
7.3 Numpy Copyright (c) 2005, NumPy Developers All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the NumPy Developers nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
Manual bsico v1.0 rev:A
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
35/38
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
Ir al ndice
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 7.4 Scipy
7.5 Matplotlib 7.5.1 License Matplotlib only uses BSD compatible code, and its license is based on the PSF license. See the Open Source Initiative licenses page for details on individual licenses. Non-BSD compatible licenses (eg LGPL) are acceptable in matplotlib Toolkits. For a discussion of the motivations behind the licencing choice, see Licenses. 7.5.2 License agreement for matplotlib 1.1.0 1. This LICENSE AGREEMENT is between John D. Hunter (JDH), and the Individual or Organization (Licensee) accessing and otherwise using matplotlib software in source or binary form and its associated documentation. 2. Subject to the terms and conditions of this License Agreement, JDH hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use matplotlib 1.1.0 alone or in any derivative version, provided, however, that JDHs License Agreement and JDHs notice of copyright, i.e., Copyright (c) 2002-2009 John D. Hunter; All Rights Reserved are retained in matplotlib 1.1.0 alone or in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates matplotlib 1.1.0 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to matplotlib 1.1.0. 4. JDH is making matplotlib 1.1.0 available to Licensee on an AS IS basis. JDH MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, JDH MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB 1.1.0 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 5. JDH SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF MATPLOTLIB 1.1.0 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING,
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
36/38
DISTRIBUTING, OR OTHERWISE USING MATPLOTLIB 1.1.0, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
Ir al ndice
7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between JDH and Licensee. This License Agreement does not grant permission to use JDH trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. 8. By copying, installing or otherwise using matplotlib 1.1.0, Licensee agrees to be bound by the terms and conditions of this License Agreement. 7.6 Photon El programa se distribuye bajo licencia de Estudios Elctricos S.R.L. de Argentina (EE). No est permitido revender el programa ni redistribuirlo sin el previo consentimiento de EE. El cdigo fuente del programa, los algoritmos de clculo, etc, estn protegidos por las leyes de Propiedad intelectual, si bien el programa est desarrollado con herramientas de libre distribucin no est permitido el uso de ningn mtodo de ingeniera inversa para obtener dicho cdigo fuente.
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
37/38
Ir al ndice
No se autorizan copias del presente documento sin autorizacin previa por escrito de ESTUDIOS ELECTRICOS SRL
38/38