SIMULACIÓN Introducción  a la estructura  de árbol  de Flexsim
Introducción a la estructura de árbol de Flexsim Flexsim ha sido diseñado en su totalidad bajo el concepto de " estru...
¿ Qué es un Nodo? <ul><li>Los nodos son los bloques mediante los cuales se construye un árbol de Flexsim.  </li></ul><ul><...
¿ Qué es un Nodo? <ul><li>Si son nodos de datos pueden contener estos tipos de información: </li></ul><ul><ul><li>number (...
Símbolos de los nodos Folder estándar Un Objeto Datos de un objeto Función (C++) Función (FlexScript)
Ejemplo de un árbol de modelo en Flexsim
La lógica en la escritura de FlexSim <ul><li>Flexsim ofrece dos opciones para la lógica de escritura en los modelos: Flexs...
Reglas Generales en la Escritura de FlexSim <ul><li>El lenguaje es sensible a las mayúsculas  (case sensitive) </li></ul><...
Operadores Matemáticos <ul><li>x + y </li></ul><ul><li>x - y </li></ul><ul><li>x * y </li></ul><ul><li>x / y </li></ul><ul...
Precauciones a tomar <ul><li>C++ interpreta el número &quot;5&quot; como un entero, si lo desea de punto flotante, debe es...
Comparaciones en Flexsim <ul><li>x > y </li></ul><ul><li>x < y </li></ul><ul><li>x >= y </li></ul><ul><li>x <= y </li></ul...
Precauciones a tomar <ul><li>&quot; = &quot; no es lo mismo que &quot; == &quot; </li></ul><ul><ul><li>&quot;=&quot; se us...
Actualización de Valores de Variables en Flexsim <ul><li>x = y </li></ul><ul><li>x += y </li></ul><ul><li>x -= y </li></ul...
Tipos de Variables <ul><li>int </li></ul><ul><li>double </li></ul><ul><li>string </li></ul><ul><li>treenode </li></ul>inte...
Cómo declarar variables <ul><li>int index = 1; </li></ul><ul><li>double peso = 175.8; </li></ul><ul><li>string categoria =...
“ IF Lógico” if (expresi ón de prueba ) { bloque de código } else { bloque de código } if (content(item) == 2) { colorred(...
“ SWITCH Lógico” <ul><li>El enunciado &quot;Switch&quot; le permite escoger una parte del código a ejecutar de entre mucha...
“ SWITCH Lógico” switch ( switchvariable ) { case casenum: { code block break; } case casenum2: { code block break; } defa...
Referencias Básicas de los Objetos <ul><li>current el objeto actual, el dueño del código. </li></ul><ul><li>item el flowit...
Estadísticas Básicas de los Objetos <ul><li>content( object ) contenido o inventario </li></ul><ul><li>getinput( object ) ...
Atributos de espacio de los Objetos xloc( object ) yloc( object ) zloc( object ) setloc( object, xnum, ynum, znum ) xsize(...
Atributos Básicos de los Objetos <ul><li>getname( object ) </li></ul><ul><li>setname( object, “name” ) </li></ul><ul><li>g...
Labels de los Objetos <ul><li>sintáxis </li></ul><ul><li>getlabelnum( object, “labelname” ); </li></ul><ul><li>setlabelnum...
Control Básico de Objetos <ul><li>closeinput( object ); openinput( object ); </li></ul><ul><li>stopinput( object );  resum...
Comandos de Tablas Globales (Global Tables)  <ul><li>gettablenum( “tablename”, rownum, colnum ) </li></ul><ul><li>settable...
OUTPUT CONSOLE  <ul><li>El  Output Console  se usa para registrar su propia información </li></ul>
OUTPUT CONSOLE  <ul><li>pf(valor numérico)  </li></ul><ul><li>Este comando imprime en la consola el valor de punto flotant...
OUTPUT CONSOLE  <ul><li>pd(valor numérico)  </li></ul><ul><li>Este comando imprime en la consola el valor como un entero d...
OUTPUT CONSOLE  <ul><li>pr()  </li></ul><ul><li>Todo lo que se imprima después de este comando, será en un renglón nuevo. ...
OUTPUT CONSOLE  <ul><li>pt(texto)  </li></ul><ul><li>Regresa un texto a la consola.  </li></ul><ul><li>Ejemplo: pt(&quot;V...
OUTPUT CONSOLE  <ul><li>concat(str text1, str text2[, str text3, ...])  </li></ul><ul><li>Combina textos </li></ul><ul><li...
Upcoming SlideShare
Loading in...5
×

Programación de código

2,381

Published on

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

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,381
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Programación de código

  1. 1. SIMULACIÓN Introducción a la estructura de árbol de Flexsim
  2. 2. Introducción a la estructura de árbol de Flexsim Flexsim ha sido diseñado en su totalidad bajo el concepto de &quot; estructura de árbol &quot;. 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. 3. ¿ Qué es un Nodo? <ul><li>Los nodos son los bloques mediante los cuales se construye un árbol de Flexsim. </li></ul><ul><ul><li>main tree (objetos y datos del modelo y del proyecto). </li></ul></ul><ul><ul><li>view tree (objetos de GUIs y picklist). </li></ul></ul><ul><ul><li>model tree (objetos y datos relacionados con el modelo). </li></ul></ul><ul><li>Los nodos contienen toda la información (no toda visible fuera del árbol) de los objetos, GUI’s y datos. </li></ul><ul><li>Todos los nodos tienen un nombre. </li></ul><ul><li>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. </li></ul>
  4. 4. ¿ Qué es un Nodo? <ul><li>Si son nodos de datos pueden contener estos tipos de información: </li></ul><ul><ul><li>number (numérica) </li></ul></ul><ul><ul><li>string (texto) </li></ul></ul><ul><ul><li>object (objeto) </li></ul></ul><ul><li>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). </li></ul><ul><li>Si los nodos contienen subnodos, se usa para expandir y ver los nodos hijos . </li></ul>
  5. 5. Símbolos de los nodos Folder estándar Un Objeto Datos de un objeto Función (C++) Función (FlexScript)
  6. 6. Ejemplo de un árbol de modelo en Flexsim
  7. 7. La lógica en la escritura de FlexSim <ul><li>Flexsim ofrece dos opciones para la lógica de escritura en los modelos: Flexscript y C++. </li></ul><ul><li>Flexscript se recomienda por sobre C++ ya que su código trabaja inmediatamente en el modelo sin necesidad de compilar . </li></ul><ul><li>Cuando la velocidad es importante, C++ corre más rápido que Flexscript, pero necesita ser compilado. </li></ul><ul><li>Flexscript se parece mucho a C++, casi son idénticos , pero Flexscript ha sido simplificado en su uso. </li></ul>
  8. 8. Reglas Generales en la Escritura de FlexSim <ul><li>El lenguaje es sensible a las mayúsculas (case sensitive) </li></ul><ul><li>Los números se consideran de punto flotante (double) a menos que se especifique otra cosa </li></ul><ul><li>Los textos se ingresan entrecomillados (&quot;texto&quot;) </li></ul><ul><li>Los paréntesis llaman a las funciones, y las comas separan los argumentos de las funciones (moveobject(object1, object2);) </li></ul><ul><li>Una función siempre termina con punto y coma &quot;;&quot; </li></ul><ul><li>Los paréntesis también pueden ser empleados en agrupaciones matemáticas y lógicas ((x+3)*2) </li></ul><ul><li>Se usan llaves { } para definir enunciados en bloque </li></ul><ul><li>Para hacer comentarios en el remanente del renglón, use // </li></ul><ul><li>Comentarios multilínea empiezan con /* y terminan con */ </li></ul><ul><li>No use espacios o caracteres especiales al definir nombres, solo &quot;_&quot; está permitido. </li></ul><ul><li>Los nombre pueden incluir números pero no pueden empezar con un número (maquina9 está bien, pero 9maquina no) . </li></ul>
  9. 9. Operadores Matemáticos <ul><li>x + y </li></ul><ul><li>x - y </li></ul><ul><li>x * y </li></ul><ul><li>x / y </li></ul><ul><li>sqrt(x) </li></ul><ul><li>pow(x,y) </li></ul><ul><li>round(x) </li></ul><ul><li>frac(x) </li></ul><ul><li>fmod(x,y) </li></ul><ul><li>min(x,y) </li></ul><ul><li>max(x,y) </li></ul><ul><li>fabs(x) </li></ul>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. 10. Precauciones a tomar <ul><li>C++ interpreta el número &quot;5&quot; como un entero, si lo desea de punto flotante, debe escribir &quot;5.0&quot; </li></ul><ul><li>Si se usa &quot;/&quot; 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. </li></ul>
  11. 11. Comparaciones en Flexsim <ul><li>x > y </li></ul><ul><li>x < y </li></ul><ul><li>x >= y </li></ul><ul><li>x <= y </li></ul><ul><li>x == y </li></ul><ul><li>x != y </li></ul><ul><li>comparetext(texto1,texto2) </li></ul><ul><li>&& </li></ul><ul><li>|| </li></ul><ul><li>! </li></ul>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. 12. Precauciones a tomar <ul><li>&quot; = &quot; no es lo mismo que &quot; == &quot; </li></ul><ul><ul><li>&quot;=&quot; se usa para asignar un valor </li></ul></ul><ul><ul><li>&quot;==&quot; se usa cuando se compara </li></ul></ul><ul><li>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. </li></ul><ul><ul><li>Por ejemplo, fabs(valor1-valor2)<0.000001 regresará &quot;true&quot; si ambos valores son prácticamente iguales. </li></ul></ul>
  13. 13. Actualización de Valores de Variables en Flexsim <ul><li>x = y </li></ul><ul><li>x += y </li></ul><ul><li>x -= y </li></ul><ul><li>x *= y </li></ul><ul><li>x /= y </li></ul><ul><li>x ++ </li></ul><ul><li>x -- </li></ul>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. 14. Tipos de Variables <ul><li>int </li></ul><ul><li>double </li></ul><ul><li>string </li></ul><ul><li>treenode </li></ul>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. 15. Cómo declarar variables <ul><li>int index = 1; </li></ul><ul><li>double peso = 175.8; </li></ul><ul><li>string categoria = “exportacion”; </li></ul><ul><li>treenode montacargas = centerobject(current,1); </li></ul>
  16. 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. 17. “ SWITCH Lógico” <ul><li>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 </li></ul><ul><li>Debe ser una variable INTEGER. </li></ul><ul><li>Este ejemplo ajusta el color de los ítems 1 a amarillo, los 5 a rojo y todos los demás a verde. </li></ul>
  18. 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. 19. Referencias Básicas de los Objetos <ul><li>current el objeto actual, el dueño del código. </li></ul><ul><li>item el flowitem involucrado que dispara el evento. </li></ul><ul><li>model() hace referencia al árbol del modelo. </li></ul><ul><li>inobject(object, portnum) inobject(current,1) </li></ul><ul><li>outobject(object, portnum) outobject(current,1) </li></ul><ul><li>centerobject(object, portnum) centerobject(current,1) </li></ul>
  20. 20. Estadísticas Básicas de los Objetos <ul><li>content( object ) contenido o inventario </li></ul><ul><li>getinput( object ) entradas al objeto </li></ul><ul><li>getoutput( object ) salidas del objeto </li></ul><ul><li>Ejemplos: </li></ul><ul><li>int inventario = content(current); </li></ul><ul><li>Int entradas = getinput(current); </li></ul><ul><li>int produccion = getoutput(current); </li></ul>
  21. 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. 22. Atributos Básicos de los Objetos <ul><li>getname( object ) </li></ul><ul><li>setname( object, “name” ) </li></ul><ul><li>getitemtype( object ) </li></ul><ul><li>setitemtype( object, num) </li></ul><ul><li>setcolor( object, red, green, blue ) </li></ul><ul><li>colorred( object ) – blue,green,random... </li></ul>
  23. 23. Labels de los Objetos <ul><li>sintáxis </li></ul><ul><li>getlabelnum( object, “labelname” ); </li></ul><ul><li>setlabelnum( object, “labelname” , value ); </li></ul><ul><li>getlabelstr( object, “labelname” ); </li></ul><ul><li>setlabelstr( object, “labelname” , string ); </li></ul><ul><li>label( object, “labelname” ); </li></ul><ul><li>ejemplos </li></ul><ul><ul><li>getlabelnum( item, “numero de serie” ); </li></ul></ul><ul><ul><li>setlabelnum( item, “numero de serie”, 5 ); </li></ul></ul><ul><ul><li>getlabelstr( current, “categoria” ); </li></ul></ul><ul><ul><li>setlabelstr( current, “categoria”, “congelados” ); </li></ul></ul><ul><ul><li>inc( label(item, “numero de retrabajos”), 1 ); </li></ul></ul><ul><ul><ul><li>Este comando para incrementar solo funciona con valores num éricos. </li></ul></ul></ul>
  24. 24. Control Básico de Objetos <ul><li>closeinput( object ); openinput( object ); </li></ul><ul><li>stopinput( object ); resumeinput( object ); </li></ul><ul><li>closeoutput( object ); openoutput( object ); </li></ul><ul><li>stopoutput( object ); resumeoutput( object ); </li></ul><ul><li>sendmessage( toobject, fromobject, parameter1, parameter2, parameter3 ); </li></ul><ul><li>senddelayedmessage( toobject, delaytime, fromobject, parameter1, parameter2, parameter3 ); </li></ul><ul><li>stopobject( object ); resumeobject( object ); </li></ul><ul><li>moveobject( object, containerobject ); </li></ul>
  25. 25. Comandos de Tablas Globales (Global Tables) <ul><li>gettablenum( “tablename”, rownum, colnum ) </li></ul><ul><li>settablenum( “tablename”, rownum, colnum, value ) </li></ul><ul><li>gettablestr( “tablename”, rownum, colnum ) </li></ul><ul><li>settablestr( “tablename”, rownum, colnum, string ) </li></ul>
  26. 26. OUTPUT CONSOLE <ul><li>El Output Console se usa para registrar su propia información </li></ul>
  27. 27. OUTPUT CONSOLE <ul><li>pf(valor numérico) </li></ul><ul><li>Este comando imprime en la consola el valor de punto flotante especificado. El valor se imprime con 6 dígitos decimales. </li></ul><ul><li>Ejemplo: pf(123.32); </li></ul><ul><li>Imprime 123.320000. </li></ul>
  28. 28. OUTPUT CONSOLE <ul><li>pd(valor numérico) </li></ul><ul><li>Este comando imprime en la consola el valor como un entero discreto. Recuerde que esto trunca cualquier decimal. </li></ul><ul><li>Ejemplo: pd(123.321); </li></ul><ul><li>regresa 123 en la consola. </li></ul>
  29. 29. OUTPUT CONSOLE <ul><li>pr() </li></ul><ul><li>Todo lo que se imprima después de este comando, será en un renglón nuevo. </li></ul><ul><li>Ejemplo: pf(1); pr(); pf(2); pr(); pf(3); pr(); </li></ul><ul><li>Regresa 1, 2, and 3 en renglones distintos. </li></ul>
  30. 30. OUTPUT CONSOLE <ul><li>pt(texto) </li></ul><ul><li>Regresa un texto a la consola. </li></ul><ul><li>Ejemplo: pt(&quot;Value=&quot;); pf(123); pr(); </li></ul><ul><li>Esto regresa Value=123, luego cambia de renglón de manera que el siguiente texto que imprima estará en un renglón distinto. </li></ul>
  31. 31. OUTPUT CONSOLE <ul><li>concat(str text1, str text2[, str text3, ...]) </li></ul><ul><li>Combina textos </li></ul><ul><li>Puede usar hasta 10 parámetros </li></ul><ul><li>Lo que regresa es un texto </li></ul><ul><li>Ejemplo: concat(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;) regresa &quot;abc&quot; </li></ul>

×