Registro Caudal Agua y Acceso Web

  • 24 Respuestas
  • 1209 Vistas

Ronald

  • Novato
  • *
  • Mensajes: 11
Re:Registro Caudal Agua y Acceso Web
« Respuesta #15 : agosto 20, 2017, 09:52:16 am »
Buenos días,

Boris, no puedo ver la web del ejemplo modificado del proyecto original, ya que me solicita usuario y clave y al colocar la que le tengo me dice que es invalida, si cambiaste la clave y el usuario por favor pasame los datos,

Por otro lado, quiero leer varios caudales al mismo tiempo, ejemplo:

Quiero leer el caudal de las entradas DIN 1, 2,3,4,5,6,10,12 al mismo tiempo, que función utilizaría o si hago un espejo de la función ya enviada.

Gracias por la colaboracion

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1848
  • Soporte Técnico
Re:Registro Caudal Agua y Acceso Web
« Respuesta #16 : agosto 22, 2017, 10:05:04 am »
Buenos dias,

Boris, no puedo ver la web del ejemplo modificado del proyecto original, ya que me solicita usuario y clave y al colocar la que le tengo me dice que es invalida, si cambiaste la clave y el usuario por favor pasame los datos,

No recuerdo que cambiáramos la clave, pero intenta usuario: slicetex contraseña: slicetex

Igualmente, podes desactivar la clave o cambiarla desde menú "Herramientas > Generar Código > Web Server", opción  "Activar Autentificación".

Luego compilas y cargas programa nuevamente.

Por otro lado, quiero leer varios caudales al mismo tiempo, ejemplo:

Quiero leer el caudal de las entradas DIN 1, 2,3,4,5,6,10,12 al mismo tiempo, que función utilizaría o si hago un espejo de la función ya enviada.

Gracias por la colaboración

Fue respondido en su consulta anterior, favor leer nuestra respuesta anterior, donde habíamos subido un ejemplo completo que lee los caudales de todas las entradas (DIN1 hasta DIN12), ver también imágenes descriptivas.

Saludos
« Última Modificación: agosto 22, 2017, 10:18:00 am por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Ronald

  • Novato
  • *
  • Mensajes: 11
Re:Registro Caudal Agua y Acceso Web
« Respuesta #17 : agosto 28, 2017, 20:34:30 pm »
Buenas noches,

Boris, disculpa que siga molestando, pero repito que esto se debe a mi novatada.


he venido adaptando el ejemplo que me enviaste a lo que necesito, y todo va bien, ahora estoy tratando de mantener las lecturas de todas de las entradas DIN. osea hace un contador por entrada DIN

EJEMPLO: Cuando un caudal de agua en la entra el la entrada din 4, este lo lee en el registro de todas las entradas DIN4, pero regresa a cero, mi idea es que ese valor se mantenga y luego al pasar otro caudal, este se sume con el valor antes mostrado y así sucesivamente.

esto lo había hecho cuando utilizábamos 1 sola entrada

// Activar contador DIN7/COUNT1 para cuenta por flanco ascendente.
   Count1Enable(COUNT_EDGE_RISING)
   
   // Crear Variable para almacenar Lectura de pulsos de DIN7 (acumulador)
   new Float: fb = 0
   
   //Obntener cuenta del contador 1
   fb = IntToFloat(Count1GetEventCnt())

utilizando y adaptando esa función no logro resultados positivos.

reitero mis disculpa y agradezco tu colaboración

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1848
  • Soporte Técnico
Re:Registro Caudal Agua y Acceso Web
« Respuesta #18 : agosto 29, 2017, 09:25:26 am »
Buenos días Ronald,

he venido adaptando el ejemplo que me enviaste a lo que necesito, y todo va bien, ahora estoy tratando de mantener las lecturas de todas de las entradas DIN. osea hace un contador por entrada DIN

EJEMPLO: Cuando un caudal de agua en la entra el la entrada din 4, este lo lee en el registro de todas las entradas DIN4, pero regresa a cero, mi idea es que ese valor se mantenga y luego al pasar otro caudal, este se sume con el valor antes mostrado y así sucesivamente.

El código lee todas las entradas midiendo el caudal instantáneo, es decir el caudal que esta presente en la entrada [L/min], y es el que se muestra en la página all.shtml, tal como pedía la consigna que habías solicitado.

¿Que necesitas hacer? ¿Cuando regresa a cero el caudal que lees? ¿Bajo que condición harías la suma de caudales?

Detallar estos puntos así podemos ayudarte.

Saludos
« Última Modificación: agosto 29, 2017, 09:27:04 am por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Ronald

  • Novato
  • *
  • Mensajes: 11
Re:Registro Caudal Agua y Acceso Web
« Respuesta #19 : agosto 29, 2017, 13:09:39 pm »
Necesito que si por el caudalimetro de la entrada 5 pasan 2 litros, estos se me reflejen en la DIN 5 de la pagina all.shtml, y que no regrese a cero, osea que se mantenga en la pagina all.shtml esos 2 litros, luego si pasan 3 litros mas, la pagina me muestro los 5 litros. así en todas las entradas. si esta lectura llega a un valor muy grande y no es recomendable para el plc, quisiera poder hacer un reset individual por lineas.

Gracias

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1848
  • Soporte Técnico
Re:Registro Caudal Agua y Acceso Web
« Respuesta #20 : agosto 29, 2017, 20:10:53 pm »
Buenas tardes Ronald,

Necesito que si por el caudalimetro de la entrada 5 pasan 2 litros, estos se me reflejen en la DIN 5 de la pagina all.shtml, y que no regrese a cero, osea que se mantenga en la pagina all.shtml esos 2 litros, luego si pasan 3 litros mas, la pagina me muestro los 5 litros. así en todas las entradas. si esta lectura llega a un valor muy grande y no es recomendable para el plc, quisiera poder hacer un reset individual por lineas.

Ningún problema.

Te adjunto un proyecto que te muestra el caudal acumulado en Litros en todas las entradas din en la página all.shtml.

Te pido que lo pruebes, ya que lo modifiqué para mostrar la cantidad de litros acumulados, pero no lo probé en laboratorio por cuestión de tiempo.



Te explico que modifiqué:

El programa muestra en la página all.shtml los litros acumulados llamando a la función FlowGetAccumulatedLitres(Din) desde el archivo OnPrintEvent.p (que es la encargada de procesar la página web).

La función FlowGetAccumulatedLitres(Din) esta definida en archivo Flow.p con el siguiente código:

Código: (Pawn) [Seleccionar]
Float: FlowGetAccumulatedLitres(Din=7)
{
   new Float: TotalLitres
   
   // Calcular litros acumulados, teniendo en cuenta que 450 pulsos equivalen a un litro.
   TotalLitres = IntToFloat(DinCounterGetValue(Din)) / 450.0
   
   return TotalLitres 
}

Como podes ver, devuelve la cantidad de litros haciendo el siguiente calculo:

LitrosAcumulados = PulsosAcumulados / 450.0

Donde: 450 pulsos/min = 1 L/min

Para afinar el cálculo, podes modificar dicha constante numérica en esa función.

En el argumento de la funcion FlowGetAccumulatedLitres(Din), pasas el número de entrada que deseas leer los litros/min acumulados.

Ejemplo, para entrada DIN4: FlowGetAccumulatedLitres(4)



Esta versión acumulará el caudal hasta que se llenen los contadores y se rebalsen en un numero enorme, pero podemos hacer otra versión en que se fije un limite de litros y se resetee automáticamente (para evitar números excesivos).

Pero por ahora, proba si esto es lo que estas buscando en cuanto a la acumulación de litros, para luego decirme y vemos el otro paso.

Saludos
« Última Modificación: agosto 29, 2017, 20:14:13 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Ronald

  • Novato
  • *
  • Mensajes: 11
Re:Registro Caudal Agua y Acceso Web
« Respuesta #21 : agosto 29, 2017, 22:14:52 pm »
Si eso es exactamente lo que busco. muchas gracias

Referente a lo del reset, mas que resetear las lineas automáticamente, seria poder hacer la limpieza de registros de cada linea individualmente, asi como se hace en el icono de CONTROL.

MuCHAS GRACIAS

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1848
  • Soporte Técnico
Re:Registro Caudal Agua y Acceso Web
« Respuesta #22 : agosto 30, 2017, 18:24:33 pm »
Buenas tardes,

Si eso es exactamente lo que busco. muchas gracias

Referente a lo del reset, mas que resetear las lineas automáticamente, seria poder hacer la limpieza de registros de cada linea individualmente, asi como se hace en el icono de CONTROL.

MuCHAS GRACIAS

Le adjunto versión del proyecto donde es posible en la página control.shtml volver a cero y limpiar todos los registros o cuentas manualmente, tocando el interruptor "LIMPIAR/BORRAR REGISTROS".

Cuando ese interruptor se toca, se llama a la función FlowFlushCounters() desde archivo OnPostEvent.p.

La función FlowFlushCounters() resetea la cuenta de todos los contadores para entradas DIN, y la misma esta definida en el archivo flow.p:

Código: (Pawn) [Seleccionar]
FlowFlushCounters()
{
   // Resetear a 0 cuentas acumuladas para todos los contadores.
   for(new i=1; i <= 12; i++)
   {
      DinCounterClear(i)
   }
}

Notar que se llama a DinCounterClear() para cada entrada DIN en el loop for.

Los contadores pueden contar hasta el numero 2147483647, luego si no son reseteados, vuelven automáticamente a 0.

Es importante que entienda los cambios, así puede realizar modificaciones.

Saludos

« Última Modificación: agosto 30, 2017, 18:35:21 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Ronald

  • Novato
  • *
  • Mensajes: 11
Re:Registro Caudal Agua y Acceso Web
« Respuesta #23 : septiembre 21, 2017, 19:52:56 pm »
hola boris,

Sigo molestando, estoy con el reset individual por lineas del programa, tengo los botones de cada linea en control.shtml.
<td>LIMPIAR/BORRAR REGISTROS LINEA 1</td>
    <td> <img id="FlushSamplesSwitch1" src="/switch0.png" width="48" height="48"> </td>
    <td>LIMPIAR/BORRAR REGISTROS LINEA 2</td>
    <td> <img id="FlushSamplesSwitch2" src="/switch0.png" width="48" height="48"> </td>   
    <td>LIMPIAR/BORRAR REGISTROS LINEA 3</td>
    <td> <img id="FlushSamplesSwitch3" src="/switch0.png" width="48" height="48"> </td>

En OnPostEvent.p.     con FlowFlushCounters(1)   mando a resetear la linea 1

y en flow.p
FlowFlushCounters(Din=1)
{
     
   // Resetear a 0 cuentas acumuladas para el contadores.
   for(new i=1;  i <= 12; i++) 
 
   
   {
      DinCounterClear(1)

y me funciona perfecto para la entrada 1,

el tema es que cuando quiero hacerlo para las siguientes lineas y que me funcionen en simultaneo, osea que pueda limpiar los registros de la linea que yo quiera sin modificar el registro de otra linea, no me esta funcionando

esperando tu colaboracion.

reitero mi disculpas.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1848
  • Soporte Técnico
Re:Registro Caudal Agua y Acceso Web
« Respuesta #24 : septiembre 21, 2017, 21:35:19 pm »
Buenas noches Ronald,

Por cada reset-individual que pongas en la página, deberías tener en OnPostEvent.p un "if" que lo procese.

Fijate, para el del ejemplo tenes en OnPostEvent.p :

Código: (Pawn) [Seleccionar]
if(WebServerCheckFieldValueStr("Form", "FLUSH") == 1)
{
      // Obtener el valor Bool del campo FLUSH.
      if(WebServerGetFieldValueBool("Value"))
      {
         // Vaciar registro de muestras.
         FlowFlushSamples()
         
         // Resetear a 0 la cuenta de todos los contadores para entradas DIN.
         FlowFlushCounters()
      }
      else
      {
         // Nada
      }

      // Retornar de evento inmediatamente.
      return
}

Luego desde ese "if", llamarías a cada reset de contador individualmente: DinCounterClear(1), DinCounterClear(2), DinCounterClear(3)....y asi.

También nota como en control.shtml se indica o se identifica el switch del ejemplo con "FLUSH". Si agregas diferentes "switchs", debes ponerle diferentes nombres.

Saludos
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com