• Save
Programación de código
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Programación de código

  • 2,913 views
Uploaded on

Lista de funciones y operaciones con variables para operar con el código de Flexsim

Lista de funciones y operaciones con variables para operar con el código de Flexsim

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,913
On Slideshare
2,885
From Embeds
28
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 28

http://www.slideshare.net 27
http://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. SIMULACIÓN Introducción a la estructura de árbol de Flexsim
  • 2. Introducción a la estructura de árbol de Flexsim Flexsim ha sido diseñado en su totalidad bajo el concepto de " estructura de árbol ". Toda la información de Flexsim está contenida en este árbol de Flexsim, incluyendo los objetos de las bibliotecas (library) y toda la información del modelo. Esta jerarquía se construye mediante nodos individuales que ligan y almacenan esa información.
  • 3. ¿ Qué es un Nodo?
    • Los nodos son los bloques mediante los cuales se construye un árbol de Flexsim.
      • main tree (objetos y datos del modelo y del proyecto).
      • view tree (objetos de GUIs y picklist).
      • model tree (objetos y datos relacionados con el modelo).
    • Los nodos contienen toda la información (no toda visible fuera del árbol) de los objetos, GUI’s y datos.
    • Todos los nodos tienen un nombre.
    • Un nodo puede ser simplemente un contenedor para otros nodos, una palabra clave usada para definir algún atributo de un objeto, o contener datos.
  • 4. ¿ Qué es un Nodo?
    • Si son nodos de datos pueden contener estos tipos de información:
      • number (numérica)
      • string (texto)
      • object (objeto)
    • Si los nodos tienen datos de objeto, usa para ver una lista separada de toda la información del objeto (datos y funciones de los miembros).
    • Si los nodos contienen subnodos, se usa para expandir y ver los nodos hijos .
  • 5. Símbolos de los nodos Folder estándar Un Objeto Datos de un objeto Función (C++) Función (FlexScript)
  • 6. Ejemplo de un árbol de modelo en Flexsim
  • 7. La lógica en la escritura de FlexSim
    • Flexsim ofrece dos opciones para la lógica de escritura en los modelos: Flexscript y C++.
    • Flexscript se recomienda por sobre C++ ya que su código trabaja inmediatamente en el modelo sin necesidad de compilar .
    • Cuando la velocidad es importante, C++ corre más rápido que Flexscript, pero necesita ser compilado.
    • Flexscript se parece mucho a C++, casi son idénticos , pero Flexscript ha sido simplificado en su uso.
  • 8. Reglas Generales en la Escritura de FlexSim
    • El lenguaje es sensible a las mayúsculas (case sensitive)
    • Los números se consideran de punto flotante (double) a menos que se especifique otra cosa
    • Los textos se ingresan entrecomillados ("texto")
    • Los paréntesis llaman a las funciones, y las comas separan los argumentos de las funciones (moveobject(object1, object2);)
    • Una función siempre termina con punto y coma ";"
    • Los paréntesis también pueden ser empleados en agrupaciones matemáticas y lógicas ((x+3)*2)
    • Se usan llaves { } para definir enunciados en bloque
    • Para hacer comentarios en el remanente del renglón, use //
    • Comentarios multilínea empiezan con /* y terminan con */
    • No use espacios o caracteres especiales al definir nombres, solo "_" está permitido.
    • Los nombre pueden incluir números pero no pueden empezar con un número (maquina9 está bien, pero 9maquina no) .
  • 9. Operadores Matemáticos
    • x + y
    • x - y
    • x * y
    • x / y
    • sqrt(x)
    • pow(x,y)
    • round(x)
    • frac(x)
    • fmod(x,y)
    • min(x,y)
    • max(x,y)
    • fabs(x)
    x más y 1.6+4.2 (=5.8) x menos y 5.8-4.2 (=1.6) x por y 1.2 * 2.4 (=2.88) x entre y 6.0/4.0 (=1.5) raíz cuadrada de x sqrt(5.3) (=2.3) X elevada a la potencia de y (x y ) x redondeado al entero más cercano, round(5.6) (=6) regresa la parte decimal de x, frac(5.236) (=0.236) regresa el residuo de x /y regresa el m ínimo de x y y regresa el máximo de x y y Regresa el absoluto de x fabs(-2.3) (=2.3)
  • 10. Precauciones a tomar
    • C++ interpreta el número "5" como un entero, si lo desea de punto flotante, debe escribir "5.0"
    • Si se usa "/" para dividir dos valores enteros como “5” y “2”, al ser ambos enteros, C++ regresa como resultado un entero (“2” en vez de “2.5”). Lo mejor es definir desde el inicio ambos operadores como de punto flotante.
  • 11. Comparaciones en Flexsim
    • x > y
    • x < y
    • x >= y
    • x <= y
    • x == y
    • x != y
    • comparetext(texto1,texto2)
    • &&
    • ||
    • !
    x mayor que y x menor que y x mayor o igual que y x menor o igual que y x igual que y x no igual que y texto1 igual a texto2 “ Y” lógico “ O” lógico “ NO” lógico
  • 12. Precauciones a tomar
    • &quot; = &quot; no es lo mismo que &quot; == &quot;
      • &quot;=&quot; se usa para asignar un valor
      • &quot;==&quot; se usa cuando se compara
    • El operador &quot;==&quot; puede causar problemas al comparar dos valores de punto flotante, cuando uno o ambos han sido calculados usando operaciones matemáticas (esto puede hacer perder precisión). Recuerde que el operador &quot;==&quot; solo regresa &quot;TRUE&quot; si los 64 bits de cada valor son exactamente los mismos. Para prevenir este error, puede mejor validar si un par de valores se encuentran ambos dentro de un rango.
      • Por ejemplo, fabs(valor1-valor2)<0.000001 regresará &quot;true&quot; si ambos valores son prácticamente iguales.
  • 13. Actualización de Valores de Variables en Flexsim
    • x = y
    • x += y
    • x -= y
    • x *= y
    • x /= y
    • x ++
    • x --
    x vale igual que y mismo que poner x = x + y mismo que poner x = x - y mismo que poner x = x * y mismo que poner x = x / y mismo que poner x = x + 1 mismo que poner x = x - 1
  • 14. Tipos de Variables
    • int
    • double
    • string
    • treenode
    integer “entero”. (1, 2, 3, 14324) double precision “con decimales“ (2.5, 3.14159) text string “texto” (“Reparando Montacargas”) Hace referencia a un nodo del árbol Flexsim
  • 15. Cómo declarar variables
    • int index = 1;
    • double peso = 175.8;
    • string categoria = “exportacion”;
    • treenode montacargas = centerobject(current,1);
  • 16. “ IF Lógico” if (expresi ón de prueba ) { bloque de código } else { bloque de código } if (content(item) == 2) { colorred(item); } else { colorblack(item); }
  • 17. “ SWITCH Lógico”
    • El enunciado &quot;Switch&quot; le permite escoger una parte del código a ejecutar de entre muchas posibilidades, dependiendo del valor de alguna variable
    • Debe ser una variable INTEGER.
    • Este ejemplo ajusta el color de los ítems 1 a amarillo, los 5 a rojo y todos los demás a verde.
  • 18. “ SWITCH Lógico” switch ( switchvariable ) { case casenum: { code block break; } case casenum2: { code block break; } default: { code block break; } } int type = getitemtype(item); switch (type) { case 1: { coloryellow(item); break; } case 5: { colorred(item); break; } default: { colorgreen(item); break; } }
  • 19. Referencias Básicas de los Objetos
    • current el objeto actual, el dueño del código.
    • item el flowitem involucrado que dispara el evento.
    • model() hace referencia al árbol del modelo.
    • inobject(object, portnum) inobject(current,1)
    • outobject(object, portnum) outobject(current,1)
    • centerobject(object, portnum) centerobject(current,1)
  • 20. Estadísticas Básicas de los Objetos
    • content( object ) contenido o inventario
    • getinput( object ) entradas al objeto
    • getoutput( object ) salidas del objeto
    • Ejemplos:
    • int inventario = content(current);
    • Int entradas = getinput(current);
    • int produccion = getoutput(current);
  • 21. Atributos de espacio de los Objetos xloc( object ) yloc( object ) zloc( object ) setloc( object, xnum, ynum, znum ) xsize( object ) ysize( object ) zsize( object ) setsize( object, xnum, ynum, znum ) xrot( object ) yrot( object ) zrot( object ) setrot( object, xdeg, ydeg, zdeg )
  • 22. Atributos Básicos de los Objetos
    • getname( object )
    • setname( object, “name” )
    • getitemtype( object )
    • setitemtype( object, num)
    • setcolor( object, red, green, blue )
    • colorred( object ) – blue,green,random...
  • 23. Labels de los Objetos
    • sintáxis
    • getlabelnum( object, “labelname” );
    • setlabelnum( object, “labelname” , value );
    • getlabelstr( object, “labelname” );
    • setlabelstr( object, “labelname” , string );
    • label( object, “labelname” );
    • ejemplos
      • getlabelnum( item, “numero de serie” );
      • setlabelnum( item, “numero de serie”, 5 );
      • getlabelstr( current, “categoria” );
      • setlabelstr( current, “categoria”, “congelados” );
      • inc( label(item, “numero de retrabajos”), 1 );
        • Este comando para incrementar solo funciona con valores num éricos.
  • 24. Control Básico de Objetos
    • closeinput( object ); openinput( object );
    • stopinput( object ); resumeinput( object );
    • closeoutput( object ); openoutput( object );
    • stopoutput( object ); resumeoutput( object );
    • sendmessage( toobject, fromobject, parameter1, parameter2, parameter3 );
    • senddelayedmessage( toobject, delaytime, fromobject, parameter1, parameter2, parameter3 );
    • stopobject( object ); resumeobject( object );
    • moveobject( object, containerobject );
  • 25. Comandos de Tablas Globales (Global Tables)
    • gettablenum( “tablename”, rownum, colnum )
    • settablenum( “tablename”, rownum, colnum, value )
    • gettablestr( “tablename”, rownum, colnum )
    • settablestr( “tablename”, rownum, colnum, string )
  • 26. OUTPUT CONSOLE
    • El Output Console se usa para registrar su propia información
  • 27. OUTPUT CONSOLE
    • pf(valor numérico)
    • Este comando imprime en la consola el valor de punto flotante especificado. El valor se imprime con 6 dígitos decimales.
    • Ejemplo: pf(123.32);
    • Imprime 123.320000.
  • 28. OUTPUT CONSOLE
    • pd(valor numérico)
    • Este comando imprime en la consola el valor como un entero discreto. Recuerde que esto trunca cualquier decimal.
    • Ejemplo: pd(123.321);
    • regresa 123 en la consola.
  • 29. OUTPUT CONSOLE
    • pr()
    • Todo lo que se imprima después de este comando, será en un renglón nuevo.
    • Ejemplo: pf(1); pr(); pf(2); pr(); pf(3); pr();
    • Regresa 1, 2, and 3 en renglones distintos.
  • 30. OUTPUT CONSOLE
    • pt(texto)
    • Regresa un texto a la consola.
    • Ejemplo: pt(&quot;Value=&quot;); pf(123); pr();
    • Esto regresa Value=123, luego cambia de renglón de manera que el siguiente texto que imprima estará en un renglón distinto.
  • 31. OUTPUT CONSOLE
    • concat(str text1, str text2[, str text3, ...])
    • Combina textos
    • Puede usar hasta 10 parámetros
    • Lo que regresa es un texto
    • Ejemplo: concat(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;) regresa &quot;abc&quot;