Mensajes recientes

Páginas: 1 ... 5 6 [7] 8 9 10
61
STX8180 / Re:Creacion archivo bin despues de un log
« Último mensaje por Miguel Gomez junio 22, 2022, 17:44:01 pm »
Puedes ejemplificar  para ver el listado de archivos bin generados y se pueda accesar?

saludos
62
STX8180 / Re:Creacion archivo bin despues de un log
« Último mensaje por Soporte junio 22, 2022, 17:30:20 pm »
Tomando como ejemplo Disksample3, para el muestreo de canales (hasta 200 muestras/s), ¿es posible que se creen archivos bin por cada evento con el titulo de la fecha y hora enque se creo el log para ese evento en específico? digamos que cada el evento dure de 30 a 60 segundos. algo como
                 h  m  s
log220622_113915
log220630_120012

Buenas tardes Miguel,

Los nombre de archivos tienen un límite de 8 caracteres en el PLC, por lo tanto no tiene la longitud suficiente para poder colocar fecha y hora en el log en el nombre del archivo.

Lo que puede hacer es que tenga fecha, mes y día el nombre, por ejemplo: "YYYYMMDD.bin"
Donde YYYY=Año, MM=Mes y DD=Día.

Para configurarlo de ese modo, en DiskSamperLog3, vaya al archivo "Samplers.p" y busque la línea:

Código: (Pawn) [Seleccionar]
DiskLogInit(1, "vin", "bin", "/web", 10000, 500, DISKLOG_OPT_PPPPPXXX|DISKLOG_OPT_CIRCULAR|DISKLOG_OPT_FAST_WRITE)

Remplácela por:

Código: (Pawn) [Seleccionar]
DiskLogInit(1, "", "bin", "/web", 10000, 1, DISKLOG_OPT_YYYYMMDD|DISKLOG_OPT_CIRCULAR|DISKLOG_OPT_FAST_WRITE)

La nueva constante utilizada es: DISKLOG_OPT_YYYYMMDD que le da el nombre de archivo el año, mes y día.
En el segundo argumento colocamos "" (sin prefijo de nombre de archivo), y en el sexto argumento '1' ya que se genera un solo archivo por día.

y se puedan observar en el webpage

¿Un listado en la página con todos los archivos "YYYYMMDD.bin" generados?.

Se me ocurre que una forma de realizarlo, es que cada vez que se genere un log por día nuevo, se escriba un archivo en la tarjeta con un link al log. Luego al cargar una página web, se cargue este archivo que muestre la lista.

Si esto busca, puedo ejemplificarle.

Saludos!

63
STX8180 / Relación SAMPLER BUFF SIZE con segundo de adquisición en DiskSamplerLog4
« Último mensaje por Miguel Gomez junio 22, 2022, 13:54:28 pm »
Que tal.
Hemos usado el disksample4 con un total de 7 canales como entrada (VIN), activando el log y convirtiendo el archivo bin. Observamos en el log ya en excel que en 1 segundo hay un total de 127 ineas y en otro segundo vemos 254 lineas, es aleatorio. Pudieses ampliarnos el tema del buffer size? Queremos tener claro puesto que el usuario final esperaria, si le digo que muestreo 200 x segundo, ver en el log las 200 muestras del segundo. Para tener bien el argumento del funcionamiento.

saludo
64
STX8180 / Creación de archivo bin de log con fecha en el nombre
« Último mensaje por Miguel Gomez junio 22, 2022, 13:45:56 pm »
Hola que tal.
Tomando como ejemplo Disksample3, para el muestreo de canales (hasta 200 muestras/s), ¿es posible que se creen archivos bin por cada evento con el titulo de la fecha y hora enque se creo el log para ese evento en específico? digamos que cada el evento dure de 30 a 60 segundos. algo como
                 h  m  s
log220622_113915
log220630_120012

y se puedan observar en el webpage
65
STX8180 / Re:Calibrar voltajes analógicos de entradas flotantes
« Último mensaje por Soporte junio 20, 2022, 21:06:55 pm »
Simulando el rango bajo en los canales 1 y 3 El resultado en el archivo SCV  es:
1   20/06/2022   10:33:18   1.0107   0.5518   0.874   0.5444   0.5469
como puedo obtener 0 en los otros canales que no se usan y si estos se pueden calibrar

Hola Víctor,

Te edité el título y una parte del contenido del mensaje, ya que la consulta estaba duplicada respecto a la conversión de unidades de ingeniería, que fue respondida en otro hilo de mensajes.

Para mantener cierto orden, favor de realizar consultas en diferentes hilos cuando los temas de consultas sean muy diferentes entre sí. También, puede modificar sus mensajes y editar el texto sin necesidad de duplicarlos en caso de querer corregir algo.

Volviendo a la consulta, si necesitas calibrar un valor, lo que te conviene hacer es sumar o restar un "offset" al valor medido. Esto lo podés hacer al convertir el archivo CSV desde Visual C#, ya que allí obtenés el voltaje y podés hacer la corrección hasta lograr el valor deseado.

Por otro lado, si la entrada está desconectada, sin conexión, y querés que el valor esté fijo en un valor cercano a 0V, lo que podés hacer es colocar un resistor (resistencia) de 100K a 1Mega Ohm, entre el terminal VIO y A1G, como te muestro en la siguiente figura:



El resistor "R" mostrado en la imagen superior permitirá tener un voltaje cercano a 0V cuando no haya señal conectada en VIO2. Esto debe repetirse por cada canal.

En mi opinión, a menos que sea necesario, no debería hacerte falta, ya que siempre le conectarás una señal de entrada al canal VIO para el cliente final, sería lo correcto. Si el cliente no usa una entrada, pero la quiere tener disponible, desde Visual C#, deberías darle la opción a que no imprima en el archivo CSV las mediciones de un canal determinado, evitando que vea mediciones de entradas desconectadas. De esta manera te ahorrás conexionado extra.

Saludos!
66
STX8180 / Re:Convertir voltaje a unidades de ingeniería
« Último mensaje por Soporte junio 20, 2022, 20:46:48 pm »
Ya revisamos las opciones y queremos hacerlo a través de la aplicación SampleBinToText editandolo con visual studio  para que en el archivo CSV ya aparezcan los rangos de los canales en unidades de ingeniería, primero de 0 a 100% como primera práctica y después quisiéramos implementar que estos rangos sean editados a través del programa SampleBinToText para que cada canal pueda tener diferente rango y se pueda modificar rápidamente.

Buenas tardes Víctor,

Convertir a unidades de ingeniería en el programa "SampleBinToText" es fácil, ya que tenés el valor de voltaje.

Lo primero que debés realizar es un escalamiento matemático, es decir, convertir por ejemplo valores de voltaje de 0 a 10V a temperatura de 0 a 100 °C.

Para ello podés utilizar crear la siguiente función (método se le dice) en Visual C#:

Código: (C#) [Seleccionar]
        private float MathScale(float InValue, float InMin, float InMax, float OutMin, float OutMax)
        {
            float ScaledValue;

            // Convertir valor utilizando la ecuación de la recta que pasa por dos puntos.
            ScaledValue = ((((InValue) - InMin) / (InMax - InMin)) * (OutMax - OutMin) + OutMin);

            // Return.
            return ScaledValue;
        }

El método escala el valor 'InValue" entre 'InMin' y 'InMax' para el rango de salida especificado por 'OutMin' y 'OutMax'.
Donde "InValue" es el valor de voltaje.

Por ejemplo, volviendo al ejemplo de temperatura, si los valores de voltaje de 0 a 10V corresponden a temperatura de 0 a 100 °C, hacemos:

Código: (C#) [Seleccionar]
MathScale(VoltajeActual, 0, 10, 0, 100)

Y el método MathScale() devolverá la temperatura correspondiente entre 0 y 100 °C, para un voltaje entre 0 y 10V.
Una forma rápida de entenderla, es que a 0V le corresponden 0°C y a 10V le corresponden 100°C. Podés utilizarla para cualquier tipo de unidad de ingeniería (temperatura, presión, etc) y valor de entrada (voltaje o corriente).

Entonces, ahora que ya tenemos el método de conversión a unidades de ingeniería vamos al código del programa "SamplesBinToText" y buscamos la parte dónde obtenemos el voltaje (señalado en rojo):

    // Convertir muestra de canal de binario a analógico (float).
    // Nota: Cada muestra de canal está separada a SamplersBufSize*4 bytes del canal actual.
    Value = BitConverter.ToUInt32(LogEntryData, (int)(DataIndex + Ch*SamplersBufSize*4));
   
    VinValue = VinBinaryToVoltage(Value, VinRangeSelected, false);

    // Agregar a la línea de texto.
    // Nota: Imprimir valor con máximo 4 decimales.
    TextLines.AppendFormat(";{0:0.####}", VinValue);


El valor "VinValue" es el voltaje y le aplicamos el método MathScale() para convertir a unidades de ingeniería:

Código: (C#) [Seleccionar]
EngValue = MathScale(VinValue, 0, 10, 0, 100)

El valor EngValue será un valor entre 0 y 100, que es la temperatura correspondiente a 0 y 10V. Este valor ahora se guarda en el archivo CSV.

Para simplificar, te paso el ejemplo modificado, deberías ver una pantalla similar a la siguiente:



Observar en la imagen superior, la parte resaltada en amarillo, como podés configurar cada canal VIN, en este caso se muestra que -3V corresponde a 0, y 3V corresponde a 100.

Luego en el código fuente se toman estos valores de configuración para MathScale() para cada canal VIN.

Podés descargar desde este mensaje el código del proyecto modificado: SampleBinToTextEngUnits_v001.zip

Avisáme si hay algo puntual que no se entienda en el programa.

Saludos!


67
STX8180 / Calibrar voltajes analógicos de entradas flotantes
« Último mensaje por Victor Olguin junio 20, 2022, 13:17:26 pm »
Buen día iniciamos el tema con Rango de canales STX8180

Tengo un rango de 0 a 10 v configurado en el PLC pero el rango de voltage que me maneja el otro equipo que manda las mediciones es de 1 a 5 v. Simulando el rango bajo en los canales 1 y 3 El resultado en el archivo SCV  es:

1   20/06/2022   10:33:18   1.0107   0.5518   0.874   0.5444   0.5469

como puedo obtener 0 en los otros canales que no se usan y si estos se pueden calibrar

De antemano le agradecemos su apoyo estamos pendientes por este chat



68
STX8180 / Re:Convertir voltaje a unidades de ingeniería
« Último mensaje por Victor Olguin junio 20, 2022, 13:09:30 pm »
Buen día

Soy del mismo Equipo de Isac y Miguel  y ya revisamos las opciones y queremos hacerlo a través de la aplicación SampleBinToText editandolo con visual studio  para que en el archivo csv  ya aparezcan los rangos de loas canales en unidades de ingeniería, primero de 0 a 100% como primera practica y después quisiéramos implementar que estos rangos sean editados a través del programa SampleBinToText para que cada canal pueda tener diferente rango y se pueda modificar rápidamente.

Ya hemos hecho practicas con visual studio, pero aun no hemos logrado un resultado.

De antemano le agradecemos su apoyo estaré al pendiente por mi chat gracias
69
STX8180 / Re:Convertir voltaje a unidades de ingeniería
« Último mensaje por Soporte junio 17, 2022, 18:20:47 pm »
Buenas tardes Isaac,

En el ejemplo DiskSamplerLog4, el PLC al muestrear los canales analógicos almacena las lecturas en valores de voltaje con formato binario. Como la visualización final es a través de un archivo CSV que convertís de binario a texto con la computadora, no tiene sentido hacer la conversión a unidades de ingeniería en el PLC.

Lo que conviene es realizarlo en la utilidad de conversión "SampleBinToText". Esto además trae otra ventaja, y es que el PLC no tiene que hacer cálculos extras liberándolo para que aproveche todo el procesador en muestrear y guardar en memoria.

Ahora, hay varias formas de encarar lo que querés hacer.

Una es modificando la aplicación SampleBinToText con Microsoft Visual Studio para convertir voltaje a temperatura al hacer la conversión para obtener el CSV.

La otra opción, es que si es temperatura lo que necesitás leer, al ser una señal lenta, no veo que sea necesario que le apliques un muestreo rápido de 200 muestras por segundo, con que lo hagas a una muestra por segundo es más que suficiente. En ese caso, podés almacenar directamente la temperatura por separado en otro archivo CSV con el PLC, sin necesidad de usar la aplicación de conversión (ya que lo almacenás como texto, no en binario). En este caso utilizarías otro canal DiskLog.

Por ejemplo, si tenés señales rápidas en los canales VIN1 a VIN3, y otras señales lentas en los canales VIN4 a VIN6, podés por un lado aplicar el muestreo de 200 muestras por segundo a VIN1:VIN3 y almacenar en un archivo binario, y por otro lado un muestreo lento a VIN4:VIN6 que almacenás en un archivo de texto CSV directamente. Esto ahorra también memoria en la tarjeta Micro-SD ya que el muestreo rápido genera muchos datos de almacenamiento.

Avisáme qué opción te parece mejor, si almacenar por separado la temperatura, o todo junto y convertir desde Visual Studio, y te guío para que puedas hacerlo.

Saludos!

PD: El ejemplo DiskSamplerLog4 es al más avanzado y complejo de todos los ejemplos, quizás te conviene partir del ejemplo DiskSamplerLog3 que es más simple y específico.
70
STX8180 / Convertir voltaje a unidades de ingeniería en C#
« Último mensaje por Isaac junio 17, 2022, 16:41:58 pm »
De acuerdo  al ejemplo DiskSamplerLog4 que nos mandado.

-¿Cómo podemos cambiar de valores analógicos (Ej. 0 - 10v) a valores de ingeniería de rango (Ej. 0 a 100°C) para que se refleje en el archivo .CSV?

Porque nos da los valores en voltaje pero queremos cambiarlos a unidades de ingeniería

Ej.:
17/06/2022   11:39:04 a. m.   4.9976   0.5518
Encontramos en el foro un ejemplo (http://www.slicetex.com/foro/smf/index.php?topic=128.0):
gi_SampleScaled = ((gi_Sample*100)/1023) * 800
gi_SampleScaled = gi_SampleScaled / 100

Pero en nuestro programa como podemos hacerlo  ya que se usa Arrays  para almacenar los valores de las muestras como se muestra a continuación.
for(new Ch=1; Ch <= SAMPLERS_CH; Ch++)
   {
      VioInitVin(Ch, VIO_TYPE_VIN_SINGLE, VIO_VIN_RANGE_0V_10V, VIO_VIN_SAMPLES_NONE
   }
DiskLogAddArray(1, VinBuf, 0, SAMPLERS_BUF_SIZE*SAMPLERS_CH)

Adjuntamos el programa


Páginas: 1 ... 5 6 [7] 8 9 10