Acceder a la memoria de un S7-300 es bastante sencillo utilizando las librerías libnodave. Vamos a hacer un pequeño programa en VisualBasic.
Aunque tenemos la opción de utilizar casi cualquier otro lenguaje de programación, existen versiones de libnodave para Windows y para Linux, e incluso una versión en Java para poder implementarla en un teléfono móvil.
Tomamos como punto de partida el ejemplo que viene en la carpeta «Excel And VB» del archivo que hemos bajado de la web. Creamos un nuevo proyecto en VB e insertamos las cabeceras que aparecen en el fichero Modul12.bas en nuestro programa. También hay que poner en algún lugar accesible (la carpeta del programa, o un directorio del PATH) el fichero libnodave.dll.
Despues de inicializar en el Form_Load la conexión, estamos listos para comunicarnos con el PLC. En este caso utilizamos el cable que está configurado en el Step-7 (revisar la documentación para cada tipo de enlace)
ph = openS7online("/S7online") If (ph >= 0) Then di = daveNewInterface(ph, ph, "IF1", 0, daveProtoS7online, daveSpeed187k) Call daveSetTimeout(di, 500000) res = daveInitAdapter(di) If res = 0 Then MpiPpi = 2 ' Dirección autómata dc = daveNewConnection(di, MpiPpi, Rack, Slot) res = daveConnectPLC(dc) If res = 0 Then Initialize = 0 End If End If
Obtener el valor de una entrada es tan simple como hacer una llamada a la función daveReadBytes, aquí leemos un byte en la dirección dada por la variable direc:
res = daveReadBytes(dc, daveInputs, 0, direc, 1, 0) entrada = daveGetU8(dc)
Cuando terminemos el programa, el Form_Unload cerramos la conexión para no tener problemas.
If dc <> 0 Then res = daveDisconnectPLC(dc) Call daveFree(dc) dc = 0 End If
Eso es todo. Con esto podemos leer cualquier entrada de la imagen de entradas (PAE) del autómata y como veremos más adelante, mandarla al teléfono por el enlace Bluetooth.
Programa de ejemplo sólo para usuarios registrados
1 ping
[…] Artículo anterior MeneameDivúlgameDivobloggerBitacorasRedditDeliciousGoogle BuzzFacebookTwitter […]