Mensajes recientes

Páginas: 1 2 [3] 4 5 ... 10
21
STX8180 / Re:Creacion archivo bin despues de un log
« Último mensaje por Miguel Gomez junio 22, 2022, 22:41:39 pm »
Hola que tal,
Implemente el reemplazo de la linea para poder tener el nombre del archivo bin con YYYYMMDD, pero aún lo veía y se descrgaba como vinxxx.bin,  creo es asunto de actualizar en el codigo de las paginas web, correcto?

Y creo que respondi en otro mensaje, pero si puedes ayudarnos a ejemplificar la escritura de archivo a tarjea con un link al log.

saludo cordial
22
STX8180 / Re:Relación SAMPLER BUFF SIZE con segundo de adquisición en DiskSamplerLog4
« Último mensaje por Soporte junio 22, 2022, 18:15:29 pm »
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.

Hola Miguel.

Cuando el PLC muestrea a 200 muestras por segundo, esto es, una muestra cada 0.005 segundos, el PLC no las escribe inmediatamente en el archivo binario, sino que espera que se llene un buffer interno, que en este caso tiene el tamaño SAMPLERS_BUF_SIZE = 127.

Entonces, transcurren 0.005 * 127 = 0.635 segundos antes de que se escriban las muestras a un archivo (en este momento se llama al evento @OnVinBufFullA() en "Samplers.p", y escribe las muestras con DiskLogAddArray()).

Por lo tanto, supongamos que se comienza a muestrear justo en el segundo exacto "0", tendremos el siguiente log cada 0.635 segundos:

  • 0.635 segundos: se escriben 127 muestras
  • 1.27 segundos: se escriben 127 muestras
  • 1.905 segundos: se escriben 127 muestras
  • 2.54 segundos: se escriben 127 muestras
  • 3.175 segundos: se escriben 127 muestras
  • 3.81 segundos: se escriben 127 muestras
  • 4.445 segundos: se escriben 127 muestras
  • 5.07 segundos: se escriben 127 muestras

Notar como las líneas marcadas en rojo pertenecen al mismo segundo, porque el log estuvo espaciado cada 0.635, y la sumatoria hace que algunos logs queden en el mismo segundo, pero el espacio de tiempo siempre es el mismo. En esos casos, verá 127+127 = 254 muestras asociadas a un mismo segundo.

Como la menor unidad de tiempo para fecha/hora es el segundo en el reloj del PLC, el tiempo asociado solo contiene el segundo, pero no las milésimas de segundo. Sin embargo, el muestreo es correcto, el espaciado entre cada muestra es de 0.005 segundos.

Si no se entiende la explicación, me avisa.

Saludos!
23
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
24
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!

25
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
26
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
27
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!
28
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!


29
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



30
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
Páginas: 1 2 [3] 4 5 ... 10