• Viernes 8 de Noviembre de 2024, 16:03

Autor Tema:  Quien Me Pueda Ayudar  (Leído 1572 veces)

erojasb

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Quien Me Pueda Ayudar
« en: Martes 19 de Junio de 2007, 01:42 »
0
Hola.
No soy del todo nuevo en programaciòn, he trabajado lo bàsico de VBA y entiendo bien la logica de programaciòn. Debido a que existen tantos tutoriales sobre VBA quisiera saber si alguien conoce uno que me permita conocer que herramientas del VBA puedo utilizar para desarrollar un programa que me ayude con la siguiente sitaciòn:
Tengo una maquina a la cual le hago muchos montajes, algunas veces estos montajes son muy demorados si la referencia es muy diferente, y pueden ser muy rapidos si las referencias se parecen. Necesito desarrollar un programa que me permita evaluar las diferentes variables de montaje de las referencias que necesito prducir y que me diga cual es la mejor secuencia de programaciòn para que el montaje sea lo menos demorado posible.
MUCHA GRACIAS A QUIEN ME PUDA AYUDAR!!!!!!!

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Quien Me Pueda Ayudar
« Respuesta #1 en: Viernes 29 de Junio de 2007, 08:29 »
0
No estoy seguro de a qué llamas montaje..
Si es de hardware, no veo que la programación pueda ayudarte, pués son cosas físicas...

Y si es de instalación de software, el S.O. (al menos el de Mocosoft admite lo que se conoce como 'instalación desatendida' lo que en la práctica equivale a indicar en un fichero las respuestas de las opciones que va preguntando durante la instalación. En la práctica sólo resulta útil cuando la instalación debe realizarse en muchos equipos , de otro modo no sale rentable, el tiempo invertido busca en google algo como ''Microsoft'' ''unnatended install'', o bien en español...

Si no es esto lo que necesitas entonces explícate con mayor claridad para entender mejor que es lo que realmente haces y quieres hacer... no entiendo tampo a qué llamas referencias, de algún modo es una clave que para ti tiene sentido pero que para el resto no nos indica nada, seguro que hay un modo mejor de indicarlo sin que tengas que explicar lo que no quieres....
«Ma non troppo»
----> ModoVacaciones = False<----

erojasb

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Quien Me Pueda Ayudar
« Respuesta #2 en: Miércoles 4 de Julio de 2007, 05:08 »
0
Hola Nebire.
A lo que me refiero es que tengo una maquina industrial en la que hago productos fìsicos. Es decir, tengo una maquina que me produce bolsas para empacar, bolsas comunes y corrientes como en la que se empacan unas galletas. Cada bolsa es una referencia, y cada montaje es los cambios que le tengo que hacer a mi maquina para proucir una bolsa diferente a la que estaba produciendo.
El programa que necesito desarrollar es para ayudarme en la programaciòn de la producción de mi planta, pues estoy siendo muy ineficiente al no programar una secuencia de referencias que sean lo suficientemente similares entre si para que no tenga que realizar muchos cambios en el montaje.
Me explique bien? Ojala que si lo haya hecho y que me puedan ayudar.
Gracias.

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Quien Me Pueda Ayudar
« Respuesta #3 en: Miércoles 11 de Julio de 2007, 16:34 »
0
Cita de: "erojasb"
Hola Nebire.
A lo que me refiero es que tengo una maquina industrial en la que hago productos fìsicos. Es decir, tengo una maquina que me produce bolsas para empacar, bolsas comunes y corrientes como en la que se empacan unas galletas. Cada bolsa es una referencia, y cada montaje es los cambios que le tengo que hacer a mi maquina para proucir una bolsa diferente a la que estaba produciendo.
El programa que necesito desarrollar es para ayudarme en la programaciòn de la producción de mi planta, pues estoy siendo muy ineficiente al no programar una secuencia de referencias que sean lo suficientemente similares entre si para que no tenga que realizar muchos cambios en el montaje.
Me explique bien? Ojala que si lo haya hecho y que me puedan ayudar.
Gracias.
Hola... ahora ya te has explicado mejor.

Mira para eso que necesitas existe lo que se llaman clases (class), pero te recomiendo que uses el Vb.net que es más claro y conciso para esos propósitos.

Te explico un poco por encima.

Una clase es (para que lo entiendas) un modelo básico de un elemento cualquiera, lo que podríamos llamar una plantilla básica.

A diferencia de una plantilla física (que sólo te vale para una forma determinada, la que adquiere la plantilla), en programación se lo hace lo más abstracta (genérica) posible a fin de que pueda adaptarse a muy diferenctes casos.

supongamos que voy a fabricar tipos de pastas, tengo una maquinaria que admite programas .exe (que no tienen que ser específicamente programados) de windows... y lo interpreta corectamente (que es compatible con el software).

entonces (abreviadamente) se crearía una clase básica de pasta (la clase es lo que tu de alguna manera has dado en llamar referencia). La clase más básica de pasata incluye las siguientes partes que iremos bosquejando:
ingredientes que lo forman
forma y tamaño
presentación de lotes y embalado
pasar los datos a la máquina
crear diferentes pastas partiendo de la básica abrirlas y guardarlas

Todo esto es lo que vamos a hacer con nuestra clase. Empezamos por crear un proyecto nuevo, este proyecto lo llamaremos FabricaPastas, automáticamente aparece un formulario que será con el que luego que creemos nuestro molde de pasata básica, utilizaremos para crear más pastas, guardarlas e introducir los datos de creació de una pasta a las máquinas.

sin embargo antes de hacer nada en el formulario, vamos a crear nuestra pasta básica, el molde simple pero completo....elegimos añadir un nuevo tipo de elemento al proyecto, de los componentes que se ofrecen elegimos uno que se llama clase (con Vb.net generar clases es más sencillo y rápido y es más claro la sensación de objeto que con VB6). menú proyecto: add Class

hoy te explico la parte de los ingredientes, como sería esto en la clase, como se crean y para qué... y crear esta primera pasta, otro día te explicaré como crear pastas diferentes a partir de esta básica y así en sucesivos días otras partes más...

Es lógico que las pastas se compongan de diferentes ingredientes, como queremos que nuestra plantilla sirva para que las maquinarias puedan hacer muy diferentes tipos de pastas, cuanto más amplio sea el repertorio de ingredientes, más facilidad habrá para esa diversidad, no obstante en este ejemplo vamos a considerar un número limitado de los mismos para que no sea excesivamente extenso, pero lo suficientemente largo para que los distribuyamos en categorías.
pego el código que de momento generaríamos y luego te comento cada parte, qués qué hace, para qué sirve...

Código: Text
  1. Public Class Pasta
  2.     Public Structure info
  3.         Public producto As String
  4.         Public cantidad As Integer
  5.     End Structure
  6.     Public Enum otrosEdulcorantes
  7.         miel = 1
  8.         aspartame = 2
  9.     End Enum
  10.  
  11.     Public Enum ingredientesSecretos
  12.         canela = 1
  13.         anis = 1
  14.         piña = 2
  15.     End Enum
  16.  
  17.     Public Enum otrosIngredientes
  18.         limon = 1
  19.         naranja = 2
  20.         calabaza = 3
  21.         ajo = 4
  22.         tomate = 5
  23.         cocacola = 6
  24.         chococalte = 7
  25.         coco = 8
  26.         nataMontada = 9
  27.         caramelo = 10
  28.     End Enum
  29.  
  30.     Public Enum ingredientesBase
  31.         agua = 1
  32.         aceite = 2
  33.         sal = 3
  34.         azúcar = 4
  35.         harina = 5
  36.         alcohol = 6
  37.     End Enum
  38.     Public Enum formas
  39.         irregular = 0
  40.         redonda = 1
  41.         oval = 2
  42.         triangular = 3
  43.         rectangular = 4
  44.         estrellada= 5
  45.     End Enum
  46.  
  47.     Public Structure ingredientes
  48.         Public base() As info
  49.         Public edulcorantes() As info
  50.         Public secretos() As info
  51.         Public otros() As info
  52.     End Structure
  53.     Public Structure dimensiones
  54.         Public largo As Short       'en milímetro
  55.         Public ancho As Short       'en milimetro
  56.         Public grueso As Short      'en milimetros
  57.         Public superficie As Short  'en cm cuadrados
  58.     End Structure
  59.     Public Structure empaquetado
  60.         Public tamañoCaja As dimensiones
  61.         Public cantidad As Short
  62.         Public precio As Short
  63.         Public peso As Short
  64.     End Structure
  65.  
  66.     Public numIngredientes As Short
  67.     Public partesTotales As Integer
  68.     Public forma As formas
  69.     Public tamaño As dimensiones
  70.  
  71.     'genera una pasta básica
  72.     Public Sub New()
  73.  
  74.     End Sub
  75.  
  76. End Class
  77.  

Lo primero que hemos creado es una estructura, un estructura es en si una miniclase, puede contener funciones y rutinas al iigual que una clase, pero con la salvedad de que las estructuras se quedan en memoria, por eso no hay que abusar de ellas, las clases se cargan y descargan de memoria según se soliciten..
La estructura sirve para contener en un mismo recipiente diversas cosas pero que las vemos como un conjunto, así a la primera estructura la hemos llamado info (el nombre no es muy ilustrativo, pero se lo he dado para que veas que un nombre no muy ilustrativo a la larga puede dar problemas. (nota las estructuras es lo que en VB6 se llamaban type, pero aquí tienen mayor funcionalidad).

Esta estructura tiene 2 elementos, producto y cantidad producto es una cadena de texto y cantidad una cifra (integer en vb.net es una cifra muy grande, en VB6 sólo llegaba hasta 32767) Esta estrucutra la usaremos para relacionar cada ingrediente utilizado, si por ejemplo usamos el ingrediente(4), entonces la forma ingrediente(4).producto   nos indica el nombre del mismo y la forma ingrediente(4).cantidad el peso en que inteviene para hacer una única pasta.

Luego hemos creado enumeraciones. Las enumeraciones son básicamente listados, es una forma de que si doy a un usuario a elegir una cifra no elija una que no se correponda con lo que tenemos disponible... imagina que vas a un bar y pides una cerveza negra de marga Groug de medio litro, te dirán , lo sentimos tenemos un problema, no tenemos esa cerveza... un modo de solucionarlo (en parte) consiste en exponer una carta con las cervezas disponibles, si no figura en la carta, no la tienen, si figura, está (en el bar esto es sólo teoría pero en nuestro caso es distinto). Además una enumeración es una forma doble de llamar a algo, puedo llamar inditintamente al azúcar por su nombre o utilizar el valor que le representa el 4, es el valor que nos ha dado la gana darle, al igual que en la carta de cervezas uno podría decir dame una 'guau 5 estrellas' o decir dame la número 8...

Como ves hemos creado varias enumeraciones, una para los ingredientes base estos queremos que entren siemopre en cada pasta, con mayor o menos medida, digamos que son los productos imprescindibles, la pasta más básica. Hemos creado uno de edulcorantes, miel, aspartame... podríamos haber incluído allí el azú car pero suponemos que al menos en una pasta siempre debe haber algún adulcorante, más adelante podremos definir si lo deseamos si al introducir un edulcorante dejamos fuera (sustituye completamente) al azúcar o no.

Hemos puesto también una enumeración de ingredientes secretos.... como mera cursiosidad de que la personalización puede levarse a extremos.
..y hemos añadido también una enumeración para la forma de las pastas creadas, puede tener cualquiera de las formas allí indicadas (en otra ocasión ya le indicaremos a la máquina como se hace cada forma, ahora baste saber que esto es lo que queremos para nuestra pasta. Las enumeraciones las puedes aumentar tanto como quieras y puedes cambiarlas de sitio, sólo hay 2 premisas a la hora de programarlo, debes indicarlas en orden correlativo, pueden indicar cifras negativas también... y no puedes repetir el nombre a ninguna (ni la cifra).

En tu caso deberías hacer una enumeración de los diferentes tipos de bolsas, si las bolsas están divididas en grupos y luego cada grupo tieien su lista, entonces cada grupo lo describes como una estruuctura y creas una enumeración por cada grupo ... ahora vamos a esa parte ...

analizando la estructura de ingredientes:
Código: Text
  1. Public Structure ingredientes
  2.         Public base() As info
  3.         Public edulcorantes() As info
  4.         Public secretos() As info
  5.         Public otros() As info
  6.     End Structure
  7.  
  8.  
verás que es como te he sugerido para tus grupos de bolsas...
cada uno de los miembros de esta estrucutura en una matriz de elementos del tipo info es decir que finalmente nuestro azúcar no es ingrediente(4).producto como sería si solo hubieramos concebido los productos básicos, como esta clase es un modelo base es deseable que lo formen más elementos para que teneiendo una gran variedad, no sirva sólo para 2 o 3 pastas sino una variedad mucho mayor. entonces nuestra pasta básica aún no ha sido creada, tenemos los elementos pero aún hay que crearla, esto se hace desde la rutina llamada new(), en vb.net esto se llama constructor. Un constructor es la base y el origen de creación de un objeto cualquier clase creada necesita ser construída. Si no tienen un new, el sistema asigna uno automáticamente pero no hace nada, aquí es donde le diremos que es una pasta básica.

Nota que vamos a dividir o separar lo que es diseñar una pasta nueva de fabricarla, es decir serán 2 actos distintos, eso quiere decir que al invocar el new() lo que hacemos es diseñar , luiego para fabricar la pasta crearemos otras funciones. Crearemos incluso una función que al tiempo que se diseña también se crea, es decir reune las partes, las prepara, las mezcla, las lleva al horno, las saca y las empaqueta. Pero esta la haremos al final, priemro hay que definir parte a parte del mecanismo.

Falta por hoy explicar 3 cosas más:
1 el constructor lo hemos dejado vacío, en otra ocasión lo completamos para que veas como será nuestra pasta básica.
2 la estructura ingredientes será una parte fundamental de esa rutina  
3 hay otros elementos fuera de las estructuras y de las clases:
 
Código: Text
  1.  
  2.     Public numIngredientes As Short
  3.     Public partesTotales As Integer
  4.     Public forma As formas
  5.     Public tamaño As dimensiones
  6.  

Cada uno de estos se puede interpretar como una estructura de un único elemento, o bien al revés las estructuras son como estos pero compuestos de varios elementos. Estos básicamente los usaremos para informar, y para usar en otras partes que nos las pedirán. numIngredientes, contará el número de ingredientes que se usarán para cada pasta, esto será necesario saberlo para que cuando la máquina se ponga a reunir los ingredientes y mezclarlos, sepa cuantos nos hacen falta cuantas veces tendrá que volcar el recipiente que lo conteiene y batir, cuantas veces tendrá que pesar, etc... por tanto será necesario crear una función que descubra y calcule dada una pasta en concreto cuanto ingredientes tiene. De igual modo partes totales nos informa de las proporciones en que entra cada ingrediente, si le pidiéramos fabricar 1234 pastas necesitarémos saber cuanto azúcar, agua , huevos o sal necesitáremos..., si se dispone de una máquina que pesa y toma la cantidad necesaria necesitaremos pasarle este dato para cada ingrediente, para que la fórmula sea la misma sea cual sea el número de pastas a fabricar, la forma es capricho y estética, de igual modo el tamaño de cada pastadecide cuanto volumen se precisa para completar x piezas, si una pasta tiene el tamaño de una caja de cerillas no empleará el mismo material que si tiene el tamaño de la palma de la mano, entonces 1000 piezas de diferente tamaño tienen diferentes cantidades...

por hoy vale....
«Ma non troppo»
----> ModoVacaciones = False<----