Leer estado de entradas desde pagina web en servidor web remoto

  • 1 Respuestas
  • 2261 Vistas

Esteban E

  • Aprendiz
  • **
  • Mensajes: 96
Leer estado de entradas desde pagina web en servidor web remoto
« : noviembre 28, 2017, 18:26:35 pm »
Buenas tardes Ing. Boris:

Quiero desde mi pagina web que esta montada en la misma red que el PLC quiero poder ver el estado de una entrada y comandar una salida, en algun lado vi que eso se podia hacer pero no lo encuentro. Yo utilizo vb.net con asp para programar la pagina web.

Y lo que necesito es cuando pulsen un pulsador le envian la señal al plc y el otro operador la puede visualizar en la pagina web de la empresa y puede si lo desea activar una salida.


Saludos.

Esteban
« Última Modificación: noviembre 29, 2017, 10:59:47 am por Soporte »

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2326
  • Soporte Técnico
Re: Leer estado de entradas desde pagina web en servidor web remoto
« Respuesta #1 : noviembre 29, 2017, 10:59:26 am »
Quiero desde mi pagina web que esta montada en la misma red que el PLC quiero poder ver el estado de una entrada y comandar una salida, en algun lado vi que eso se podia hacer pero no lo encuentro. Yo utilizo vb.net con asp para programar la pagina web.

Y lo que necesito es cuando pulsen un pulsador le envian la señal al plc y el otro operador la puede visualizar en la pagina web de la empresa y puede si lo desea activar una salida.

Buenos días Esteban,

Lo que te recomiendo es usar el PLC como servidor web también, de tal forma de poder comunicarte con el mismo de forma natural desde el otro servidor web de la PC.

Obtener datos del PLC (Servidor Web) desde PC (Servidor Web)

En este caso, por ejemplo podrías utilizar el formato de archivo JSON que es bastante conocido, generalmente se usa con Javascript desde la página web, pero en VB.Net también es posible como muestra este link.

En el servidor web del PLC debes crear un archivo JSON con los valores de las entradas DIN, como muestra el ejemplo para descargar en la nota de aplicación:

http://slicetex.com/docs/an/an030/files/WebServerPawn4.zip

Si abrís el proyecto, podrás ver un archivo llamado din.json:

Código: (DIN.JSON) [Seleccionar]
{
  "Din":
  [
{"Value": "$! PrintStr 1 $", "Image": "$! PrintStr 2 $" },
{"Value": "$! PrintStr 3 $", "Image": "$! PrintStr 4 $" },
{"Value": "$! PrintStr 5 $", "Image": "$! PrintStr 6 $" },
{"Value": "$! PrintStr 7 $", "Image": "$! PrintStr 8 $" }
  ]
}

Cada "$! PrintStr x $" es un comando CGI que es reemplazado por un valor de texto (por ejemplo estado de entrada DIN) cuando lo accedes desde un navegador o lo pedís desde una conexión. Es decir, es una página dinámica con formato JSON.

Entonces, por ejemplo, si cargás el ejemplo en el PLC y accedes con el navegador a la página JSON:

http://192.168.1.81/din.json

Obtenés:

Código: (DIN.JSON) [Seleccionar]
{
  "Din":
  [
{"Value": "0", "Image": "/l0.gif" },
{"Value": "0", "Image": "/l0.gif" },
{"Value": "0", "Image": "/l0.gif" },
{"Value": "0", "Image": "/l0.gif" }
  ]
}

Notar como cada línea representa el estado de una entrada DIN (DIN1, DIN2, DIN3 y DIN4) y los comandos "$! PrintStr x $" fueron remplazados por su valor equivalente.
El campo Value tiene el valor de la entrada, y el campo Image una imagen asociada (led activado/desactivado).

Si activas una entrada Value será "1".

Este formato JSON podes procesarlo fácilmente desde tu Servidor Web en VB.NET.

Te recomiendo cargar el ejemplo al PLC e intentar obtener desde VB.NET el archivo din.json del PLC, procesarlo y mostrar en tu página el resultado. Podes cada 1 segundo pedir el archivo o realizar un refresco.

En el PLC luego podes crear diferentes archivos JSON con valores dinámicos de diferentes grupos.

Te dejo un link a JSON:

https://geekytheory.com/json-i-que-es-y-para-que-sirve-json/

https://msdn.microsoft.com/es-es/library/bb412179(v=vs.110).aspx

Enviar desde PC (Servidor Web) a PLC (Servidor Web)

En este caso también podes usar el servidor web del PLC y cargar el ejemplo 2 (que es más simple de entender):

http://slicetex.com/docs/an/an030/files/WebServerPawn2.zip

Para enviar datos al PLC debes usar una petición POST al PLC de la misma forma que harías con cualquier otro servidor web para enviar un formulario web con datos.

En el ejemplo, los campos usados para activar/desactivar con un formulario POST, son:

Form = Outputs (Para indicar formulario que activa salidas, esto de acuerdo al ejemplo)
DO1 = X (donde X es 1 o 0, para el valor de la salida DO1)

Y así para DO2, DO3 y DO4.

En HTML desde tu servidor web podrías hacer un formulario HTML simple (ejemplo out.html en tu server):

Código: (HTML) [Seleccionar]

<html>
<body>

<form action="http:/192.168.1.81/outputs.shtml" method="post">
<input type="hidden" name="Form" value="Outputs">
<table id="tOutputs">
  <tr>
    <th>SALIDA</th>
    <th>VALOR</th>
  </tr>
  <tr>
    <td>DOUT1</td>
    <td>
      <input type="radio" name="DO1" value="0" checked> OFF
      <br>
      <input type="radio" name="DO1" value="1"> ON
    </td>
  </tr>
</table>
<br>
<input type="submit" value="Actualizar" class="update">
<br>
</form>

</body>
</html>


Esto te crea un formulario botón tipo "radio", que cuando lo envias al PLC, hace una una peticion post (ver en código arriba que se conecta a página del PLC "http:/192.168.1.81/outputs.shtml"), y envia dos campos: Form = Outputs y DO1 = 1.

Con VB.NET también podes hacer peticiones POST y enviar campos:

https://msdn.microsoft.com/es-es/library/debx8sh9(v=vs.110).aspx

No utilizo VB.NET ni ASP, pero te pase los primeros links que encontré sobre el tema.

Saludos





« Última Modificación: noviembre 29, 2017, 11:12:55 am por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com