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.zipSi abrís el proyecto, podrás ver un archivo llamado
din.json:
{
"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.jsonObtenés:
{
"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).aspxEnviar 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.zipPara 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):
<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).aspxNo utilizo
VB.NET ni
ASP, pero te pase los primeros links que encontré sobre el tema.
Saludos