Filtro Digital B

  • 13 Respuestas
  • 5293 Vistas

Mariano

  • Avanzado
  • ***
  • Mensajes: 106
Filtro Digital B
« : marzo 06, 2016, 12:04:08 pm »
Buenas:

Boris, el compilador me detecta como error cuando quiero incluír en el código las sentencias de activación / desactivación del filtro digital B:

                VinFilterBOn(200,2000);
      V_alim_sens= Float: VinReadVolt(4);
      VinFilterBOff();

En el programa también tengo el siguiente código

      VinFilterAOn(200,2000);
      Corriente = Float: VinToCurrent(1, 100);
      VinFilterAOff();

El cual activa sin problemas el filtro A.

El error que tira es:

Error del compilador PAWN: PlcMain.p(53) : error 017: undefined symbol "VinFilterBOn"

Saludos

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re:Filtro Digital B
« Respuesta #1 : marzo 06, 2016, 12:11:12 pm »
Buenos dias Mariano,

Si es natural, ya que no existe filtro B para el modelo STX8091.

Cuando activas el filtro A, el filtro se aplica en todas las entradas analógicas.

Tip: El filtro puede activarse una vez al inicio del proyecto y luego queda activado siempre hasta que se desactive.

Quedo a disposicon.

Saludos
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.

Mariano

  • Avanzado
  • ***
  • Mensajes: 106
Re:Filtro Digital B
« Respuesta #2 : marzo 06, 2016, 12:42:56 pm »
Gracias por la rápida respuesta Boris.

Mirá te dejo el código completo de PLCmain:

Código: (Pawn) [Seleccionar]
new Float: Corriente = 0;
new Float: V_alim_sens = 0;

PlcMain()
{
   // Inicializar Web Server.
   WebServerInitialize();

   // Configuro rango Vin1 de 0 a 5 volt
VinSetRange(1, VIN_RANGE_5V); /// ver bien esto
VinSetRange(8, VIN_RANGE_10V); /// ver bien esto
VinFilterAOn(200,2000);

   for(;;)
   {
      // Loop principal.
   
  // Leer corriente de VIN1 y almacenar en variable "Current".
// 1Utilizar un resistor de 100 ohms como sensor de corriente.

Corriente = Float: VinToCurrent(1, 100);
V_alim_sens= Float: VinReadVolt(8);

VinFilterAOff();

   }

   // Retorno.
   return 0;
}


Entiendo entonces que Filter A se activa para las entradas 1 a 8 análogicas.

Lo que intento hacer es, activado el servidor en el PLC, mostrar vía web la información del valor del voltaje de alimentación de un sensor de presión. Dicho voltaje está en 16V... Fue chequeado con un osciloscopio y no tiene ruido de alta frecuencia ni nada raro... se mantiene constante todo el tiempo.

El problema es que accediendo al servidor, la mayoría de las veces muestra los 16.0 pero en algunos casos muestra un valor muy lejano y al parecer aleatorio como por ejemplo 15.2 o 17.1... después vuelve a 16.0 - 16.0 - (durante 3 o 4 accesos seguidos )... te dejo la IP de acceso para que lo veas:(te la paso a tu mail)  Lá página se recarga automáticamente cada 10 segundos. El equipo está conectado y funcionando.

Eléctricamente, el circuito consta de un  trafo de 220 a 12 - puente de diodos y un regulador lm317. No sé si habrá que realizar alguna conexión a tierra de... por ejemplo el negativo de dicha "fuente" o algo así... al parecer es ruido de algún tipo.

Saludos



« Última Modificación: marzo 06, 2016, 13:01:13 pm por Soporte »

Mariano

  • Avanzado
  • ***
  • Mensajes: 106
Re:Filtro Digital B
« Respuesta #3 : marzo 06, 2016, 12:48:06 pm »
Ahí le acabo de quitar la sentencia

VinFilterAOff();
 dentro del Loop principal pero el problema persiste.


Mariano

  • Avanzado
  • ***
  • Mensajes: 106
Re:Filtro Digital B
« Respuesta #4 : marzo 06, 2016, 13:01:25 pm »
Te agrego algo:

Para ingresar al PLC por la entrada 8... hay un divisor resistivo para reducir el voltaje.
Antes de mostrarlo por el servidor es multiplicado por 12.25 para escalarlo.

Te dejo el código que tengo en la página y en el evento On Print Event.p

Vol_T.shtml:
////////////////////////////////////////////////////////////////////////////////////////////////

$!+ /header.html $

<h2>COSP Oliva - División Agua Corriente</h2>

<center>

<table id="t_VT">
   <tr>Volumen en Tiempo Real </tr>
      <th>Volúmen [Lt]</th>
      <td>$! PrintStr 30 $</td>
   <tr>
      <th>Vcc_Sensor[V]</th>
      <td>$! PrintStr 31 $</td>
   </tr>
</table>

<br>
</center>
<meta http-equiv="Refresh" content="10">
<!-- Recarga automáticamente la página Vol_T cada 10 segundos-->

<center>
   <h3>Volver a <a href="/">pagina principal</a>.</h3>
</center>

$!+ /footer.html $


////////////////////////////////////////////////////////////////////////////////////////////////

OnPrintEvent.p
////////////////////////////////////////////////////////////////////////////////////////////////

// --------------------------------------------------------------------------------
// Archivo     : OnPrintEvent.p
// Descripcion : Rutinas para procesar el evento @OnWebServerPrint().
// --------------------------------------------------------------------------------

// ********************************************************************************
// Funcion     : OnWebServerPrint()
// Descripcion : Evento llamado cuando el Web Server necesita imprimir una cadena
//               al cargarse una pagina dinamica.
//               Se deberia retornar lo antes posible de este evento, ya que
//               se procesa mientras la pagina se carga en el navegador.
// ********************************************************************************

@OnWebServerPrint()
{   
   //
   // Obtener e imprimir el numero de cadena solicitada por el servidor.
   //
   
   switch(WebServerGetPrintNum())
   {
      //
      // Procesar cadenas relacionadas a inputs.shtml
      //
      
      case 10:
         WebServerPrintStr("%d", DinValue(DIN1))
      case 11:
         WebServerPrintStr("/l%d.gif", DinValue(DIN1))
         
      // código agregado por mi para prueba   
      case 30:
         //WebServerPrintStr("%3.3f", Corriente*12558)// Así lo muestra con 3 decimales
         WebServerPrintStr("%3.0f", Corriente*12558000)// Así lo muestra sin decimales
      case 31:
         //{
         WebServerPrintStr("%3.1f", V_alim_sens*12.25) //%f muestra un float con 1 decimales por defecto. Pág 67 de AN030
         //cont_prom=1;
         //V_alim_prom=0;
         //V_alim_sens=0;
         //}
      
      //
      // Procesar cadenas relacionadas a outputs.shtml
      //
      
      //         Bomba 1
      case 20:
         if(DoutValue(DOUT1) == 0)
         {
            WebServerPrintStr("checked")
         }
      case 21:
         if(DoutValue(DOUT1) == 1)
         {
            WebServerPrintStr("checked")
         }
      //         Bomba 2
      case 22:
         if(DoutValue(DOUT2) == 0)
         {
            WebServerPrintStr("checked")
         }
      case 23:
         if(DoutValue(DOUT2) == 1)
         {
            WebServerPrintStr("checked")
         }
      //         Bomba 3
      case 24:
         if(DoutValue(DOUT3) == 0)
         {
            WebServerPrintStr("checked")
         }
      case 25:
         if(DoutValue(DOUT3) == 1)
         {
            WebServerPrintStr("checked")
         }
      //         Bomba 4   
      case 26:
         if(DoutValue(DOUT4) == 0)
         {
            WebServerPrintStr("checked")
         }
      case 27:
         if(DoutValue(DOUT4) == 1)
         {
            WebServerPrintStr("checked")
         }
      //         Bomba 5   
      case 28:
         if(DoutValue(DOUT5) == 0)
         {
            WebServerPrintStr("checked")
         }
      case 29:
         if(DoutValue(DOUT5) == 1)
         {
            WebServerPrintStr("checked")
         }
      
      case 40:
      WebServerPrintStr("/l%d.gif", DoutValue(DOUT1))
      case 41:
      WebServerPrintStr("/l%d.gif", DoutValue(DOUT2))
      case 42:
      WebServerPrintStr("/l%d.gif", DoutValue(DOUT3))
      case 43:
      WebServerPrintStr("/l%d.gif", DoutValue(DOUT4))
      case 44:
      WebServerPrintStr("/l%d.gif", DoutValue(DOUT5))
   }
}

// --------------------------------------------------------------------------------
// EOF
// --------------------------------------------------------------------------------

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re:Filtro Digital B
« Respuesta #5 : marzo 06, 2016, 13:06:56 pm »
Que voltaje le llega a la entrada ? 16V?.

Recorda que el máximo de operación es 10V, mas de eso, podes dañarla si permanece en periodos prolongados o leer valores erroneos.

http://slicetex.com/hw/stx8091/docs/STX8091-DS-AX_BX_CX_DX.pdf

Accedo al server y veo 16V.
« Última Modificación: marzo 06, 2016, 13:10:57 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.

Mariano

  • Avanzado
  • ***
  • Mensajes: 106
Re:Filtro Digital B
« Respuesta #6 : marzo 06, 2016, 13:14:02 pm »

Para ingresar al PLC por la entrada 8... hay un divisor resistivo para reducir el voltaje.
Antes de mostrarlo por el servidor es multiplicado por 12.25 para escalarlo.

Slds



Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re:Filtro Digital B
« Respuesta #7 : marzo 06, 2016, 13:17:21 pm »
La masa de la fuente de la señal (referencia), la conectas a AGND del PLC también?.
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.

Mariano

  • Avanzado
  • ***
  • Mensajes: 106
Re:Filtro Digital B
« Respuesta #8 : marzo 06, 2016, 13:20:11 pm »
Si... está conectada junto a la masa de AGND e incluso hay un cable conectado desde el negativo de la fuente de alimentación del PLC a AGND.

Parece ser que se corrigió Boris

La máxima variación que le veo ahora es un 15.8...
No obstante, me gustaría saber a que se debería ya que el voltaje siempre está en 16.04...

Gracias por responder (Teniendo en cuenta que es Domingo)

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re:Filtro Digital B
« Respuesta #9 : marzo 06, 2016, 13:27:47 pm »
Si el filtro estaba activado, es probable que tenias algún ruido externo, me atrevo a decir de masa, cables sueltos quizás.

También puede ser que si convertís con un trafo, y luego rectificas, quizas tenes los capacitores de filtrados muy pequeños, y no terminan de "filtrar bien" y hacer una continua "suave". Proba aumentar los capacitores de filtrado (470 uF a 2200 uF).

Muchas veces con el tester no se ve, fijate de ver con osciloscopio si lo tenes a mano.

Te recomiendo agregar un Delay al Loop principal para activar/desactivar el LedToggle, que indique actividad, como te muestro a continuación:

Código: (Pawn) [Seleccionar]
PlcMain()
{
   // Inicializar Web Server.
   WebServerInitialize()

   // Configuro rango Vin1 de 0 a 5 volt
VinSetRange(1, VIN_RANGE_5V); /// ver bien esto
VinSetRange(8, VIN_RANGE_10V); /// ver bien esto
VinFilterAOn(200,2000);

   for(;;)
   {
      // Loop principal.
   
  // Leer corriente de VIN1 y almacenar en variable "Current".
// Utilizar un resistor de 100 ohms como sensor de corriente.

Corriente = Float: VinToCurrent(1, 100);
V_alim_sens= Float: VinReadVolt(8);
     
      // Delay Led.
      DelayMS(250)
      LedToggle()
   }

   // Retorno.
   return 0;
}

Saludos
« Última Modificación: marzo 06, 2016, 13:30:02 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.

Mariano

  • Avanzado
  • ***
  • Mensajes: 106
Re:Filtro Digital B
« Respuesta #10 : marzo 06, 2016, 13:41:15 pm »
Efectivamente, tengo un capa de 470... voy a probar llevarlo a 2200 y mañana te comento.
No obstante con un osciloscopio no veo ningún ruido extraño.
Voy a probar también referenciar la masa al cuerpo metálico del tablero también y conectar este a tierra... de ser posible con una jabalina.
Voy a incluír el toggle del led como me indicás.

Mañana o pasado te comento cómo fue.

Saludos





Mariano

  • Avanzado
  • ***
  • Mensajes: 106
Re:Filtro Digital B
« Respuesta #11 : marzo 07, 2016, 14:17:33 pm »
Hola Boris.....

Al parecer se soluciono este problema referenciando el negativo de la fuente al cuerpo metalico del tablero. Ahora cada vez que entro al server estan  los 16.0 V exactos. Perfecto... una barbaridad este equipo....

Ahora (teniendo en cuenta que el tablero esta conectado el negativo de continua) quisiera saber tu opinion sobre lo siguiente: sera conveniente conectar la puesta a tierra de la alimentacion general del cuadro (220 V) tambien al "chasis" del tablero? Pregunto ante la duda de una posible fuga a tierra de 220V por ejemplo en el ups que alimenta al cuadro. O bien generada en el cuadro mismo.

Saludos

Enviado desde mi SM-J110M mediante Tapatalk


Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re:Filtro Digital B
« Respuesta #12 : marzo 07, 2016, 19:02:28 pm »
Buenas tardes Mariano.

Citar
Ahora (teniendo en cuenta que el tablero esta conectado el negativo de continua) quisiera saber tu opinion sobre lo siguiente: sera conveniente conectar la puesta a tierra de la alimentacion general del cuadro (220 V) tambien al "chasis" del tablero? Pregunto ante la duda de una posible fuga a tierra de 220V por ejemplo en el ups que alimenta al cuadro. O bien generada en el cuadro mismo.

Las masas de continua se recomiendan conectarlas a tierra (con jabalina directo en el lugar, lo mas cercano posible) así todos lo equipos comparten
la misma referencia y evitas mejor los ruidos. Las instalaciones que he visto, ponen a tierra todo (chasis, tableros, masa de motores, cable de tierra de alterna, mallado de cables, etc), a veces con  cables separados para llevar a tierra por caminos diferentes. Si la tierra realmente esta bien colocada, con potencial muy bajo, debería ser una ventaja desde un punto de vista electrico.

En caso que un cable de 220 de "pegue" al tablero, debería irse a tierra la corriente y no afectar los equipos, pero eso también deberías analizar con mas cuidado usando las protecciones eléctricas necesarias de seguridad.

Saludos





SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.

Mariano

  • Avanzado
  • ***
  • Mensajes: 106
Re:Filtro Digital B
« Respuesta #13 : marzo 07, 2016, 21:18:40 pm »
Ok Boris. Gracias por el soporte. Si, para 220 colocare el disyuntor correspondiente y voy a conectar la puesta a tierra como me lo indicas al detalle.

Enviado desde mi SM-J110M mediante Tapatalk