Mensajes recientes

Páginas: 1 ... 5 6 [7] 8 9 10
61
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!
62
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!


63
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



64
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
65
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.
66
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


67
STX8180 / Lectura de voltaje analógico con valor 2.2V sin conexión
« Último mensaje por Soporte junio 16, 2022, 10:26:40 am »
Miguel nos consulta:

Citar
Estamos probando y conociendo el equipo..ya nos conectamos y probamos el proyecto disklog3..descargamos el archivo bin y lo pasamos a csv..  de momento no le conectamos nada....y lo que observamos en el log en todas las lineas   y columnas  el valor 2.2 ... despues en el canal 2 simulamos un a señal de 3.2+ V en el entendido q la variables están en el rango -5 a 5v  y al correr el log nuevamente  observamos que en la columna 2 (canal 2) el mismo valor 2.2, bueno en todos los canales.

Estamos siguiendo el manual en cuanto a las conexiones en este caso,  vin2  el positivo de los 3.2 v simulados u en AIG el negativo.

Eseperabamos en el log el valor de 3.2 v pero no fue asi.

Saludos
Miguel


Buenos días Miguel,

El valor 2.2V en realidad significa que la entrada está flotante, es decir, que no tiene conectada ningún voltaje, y por lo tanto mide un voltaje no definido. Pero este valor no es fijo, cuando una entrada analógica no tiene conexión, la medición puede ser cualquier valor ya que no hay referencia.

Te recomiendo que hagas de nuevo la prueba con el voltaje bien conectado, quizás estás mirando un log viejo o el cable en los terminales no hace buen contacto.

Fijáte que en la página web del ejemplo " DiskSamplerLog3" hay un botón que dice "Reiniciar log a 0". Tocálo antes de hacer la medición, así borras todo lo anterior, y solo te concentrás en el último muestreo.

Para conectar la señal, podés conectar 3.2V a VIO2 y la masa de ese voltaje al terminal A1G, como te muestro en la siguiente imagen. Revisá que haga buen contacto el cable en los terminales. El registro del log debería mostrarte 3.2V en ese canal. También podés probarlo en el canal VIO1 a VIO5 para el ejemplo mencionado.



Avísame si luego de revisar y repetir la medición continua sin leer el voltaje.

Saludos!
68
STX8091 / Re:Valores de corriente lazo 4-20 mA
« Último mensaje por maxi1978 junio 06, 2022, 10:10:29 am »
Gracias, compiló bien.
Ahora lo pruebo y comento.

mil gracias!!!!
69
STX8091 / Re:Valores de corriente lazo 4-20 mA
« Último mensaje por Soporte junio 03, 2022, 16:33:53 pm »
tengo una consulta: puedo leer presión diferencial mediante el lazo de 4-20 mA, el tema es que quiero medir velocidad y tendría que calcular Raiz(Velocidad)= 2*presión diferencial/densidad .Mi pregunta es si hay una función especifica del pawn para hacer raíces o se debe recurrir a un método iterativo.

Buenas tardes Maximiliano.

Si, hay una función para calcular raíces, se llama Sqrt().

Ejemplo:

Código: (Pawn) [Seleccionar]

new Float: Velocidad
new Float: Raiz

// Calcular la raiz cuadrada de "Velocidad" y guardar resultado en "Raiz"
Raiz = Float: Sqrt(Velocidad)

También existen LogN(x) y Log10(x) para calcular el lograritmo natural y en base 10 de "x".

Saludos!

70
STX8091 / Re:Valores de corriente lazo 4-20 mA
« Último mensaje por maxi1978 junio 03, 2022, 14:09:57 pm »
Buenas tardes ,Boris :

tengo una consulta: puedo leer presión diferencial mediante el lazo de 4-20 mA, el tema es que quiero medir velocidad y tendría que calcular Raiz(Velocidad)= 2*presión diferencial/densidad .Mi pregunta es si hay una función especifica del pawn para hacer raíces o se debe recurrir a un método iterativo.

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