Anda di halaman 1dari 22

18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

Más Siguiente blog» Crear un blog Acceder

3 de octubre de 2011
Accediendo a un PLC Simatic a través de ethernet con Libnodave Sobre mí
En esta entrada usé la biblioteca libre Libnodave para acceder a un PLC S7-300 desde Visual Basic a GR
través de un adaptador serie/MPI. Varios lectores me hicieron consultas sobre si era posible usarla VIGO, PONTEVEDRA, S PAIN
para acceder a un PLC S7-300/400 a través de ethernet, pero al no tener disponible un controlador
adecuado para hacer pruebas pues no tenía respuesta. Sin embargo, de la entrada anterior tengo Ingeniero Técnico Industrial
preparada una máquina virtual con WinAC RTX y su puerto ethernet como puerto de comunicaciones, en Electricidad, intensificación
que creo que es un banco de pruebas ideal para hacer pruebas con Libnodave.
en Automática y Electrónica.
Lo primero que voy a hacer es un proyecto en Step7 con un único DB, por ejemplo el DB10, con un Me dedico profesionalmente a la
único dato de formato BYTE. Lo transferiero al WinAC y pongo el PLC software en modo Run. Me programación de maquinaria industrial.
pongo on line y monitorizo la variable.
Ver todo mi perfil

En el PLC no voy a tocar nada más. A continuación lo que haré será una aplicación en Visual Basic,
usando la biblioteca Libnodave a través de ethernet, que se conectará al PLC y leerá y escribirá en esa
variable como prueba que el sistema funciona.

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 1/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

El aspecto que tendrá mi aplicación puede ser algo tan sencillo como esto:

Licencia / Contacto

Licenciado bajo Creative


Commons Reconocimiento-No comercial
3.0 España License.

Todas las marcas y nombres comerciales


son propiedad de sus respectivos titulares.

Si quieres contactar conmigo escribe a


Para realizar la conexión es nesaria una dirección IP (en mi caso la de la máquina virtual donde tengo
notasdeautomatizacion@gmail.com
el WinAC), un número de puerto (que según la documentación de Libnodave debe ser el 102), un
número de rack (lo habitual aquí es un cero) y un número de slot (que será el número de slot donde
tengamos configurado el PLC, lo podemos ver en la configuración hardware, en mi caso el dos). La
programación en Visual Basic va ser muy parecida a la que hice en esta entrada, uso la misma
biblioteca de la misma forma así que no repito aquí el procedimiento para incluirla en el proyecto. He
adaptado la clase que creé en su momento para encapsular las funciones de acceso al PLC a través de
ethernet, quedando de la siguiente manera: Archivo del blog

Public Class Libnodave_WinAC ► 2017 (3)


Dim daveSerie As libnodave.daveOSserialType
► 2014 (1)
Dim daveInter As libnodave.daveInterface
Dim daveConex As libnodave.daveConnection
► 2013 (4)
Public BufferLectura(1000) As Byte
http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 2/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave
Public BufferEscritura(1000) As Byte ► 2012 (13)

Public Conectado As Boolean = False ▼ 2011 (22)


Public Mensaje As String
► diciembre (2)

Public Function Conectar(Optional ByVal Puerto As Integer = 102, _ ▼ octubre (3)


Optional ByVal IP As String = "192.168.65.18", _
Tres maneras de generar pulsos en
Optional ByVal Rack As Integer = 0, _
Optional ByVal Slot As Integer = 2) As Boolean un controlador L...
If Conectado Then
Comunicación OPC con un PLC
Mensaje = "Conexión abortada, ya existe una conexión."
Conectar = False Logix5000 desde Visual...
Exit Function
Accediendo a un PLC Simatic a través
End If
de ethernet c...
Dim Respuesta As Integer
► septiembre (3)
Mensaje = "Abriendo una conexión serie..."
daveSerie.rfd = libnodave.openSocket(Puerto, IP) ► agosto (4)
daveSerie.wfd = daveSerie.rfd
► junio (2)
If daveSerie.rfd > 0 Then
► mayo (1)
Mensaje = "Conexión OK, creando interface..."
► marzo (5)
daveInter = New libnodave.daveInterface(daveSerie, "", _
0, _ ► febrero (1)
libnodave.daveProtoISOTCP, _
libnodave.daveSpeed187k) ► enero (1)

daveInter.setTimeout(1000000) 'Make this longer if you have a very long response time ► 2010 (21)

Mensaje = "Inicialización del adaptador OK, creando conexión..." ► 2009 (31)


daveConex = New libnodave.daveConnection(daveInter, 0, Rack, Slot)
Respuesta = daveConex.connectPLC()

If Respuesta = 0 Then Buscar en Notas de automatización


Mensaje = "Conexión correcta, lista para operar."
Conectado = True Buscar
Else
libnodave.closeSocket(daveSerie.rfd)
Mensaje = "Error al abrir la conexión [" & _ Etiquetas
libnodave.daveStrerror(Respuesta) & "]"
Conectado = False Beckhoff Cursos DeviceNet Festo HMI Logix
End If Omron OPC Rexroth Rockwell Seguridad

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 3/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

Else
servomotor Siemens simotion
Mensaje = "Error al abrir la conexión" sinamics Step5 Step7 TIA Portal Visual
Conectado = False Basic Visual Basic Script WinAC RTX WinCC
End If Flexible

Conectar = Conectado
Enlaces
End Function
Beckhoff Automation Technology
Public Function Desconectar() As Boolean
Bosch Rexroth
If Conectado Then
daveConex.disconnectPLC() Festo
libnodave.closeSocket(daveSerie.rfd)
Conectado = False IBHsoftec
Mensaje = "Conexión correctamente terminada." Keyence
Desconectar = True
Else Omron
Mensaje = "No existe conexión activa."
Pepperl-Fuchs
Desconectar = False
End If Pro-face
End Function
Rockwell Automation
Public Function LeerBytesDB(ByVal NumDB As Integer, _ Sew Eurodrive
ByVal Dir As Integer, _
ByVal NumBytes As Integer) As Boolean Siemens Service & Support

REEA
Dim Respuesta As Integer
Blog Motion Control
Respuesta = daveConex.readBytes(Libnodave.daveDB, NumDB, Dir, NumBytes, BufferLectura)
Blog Programación Siemens
If Respuesta = 0 Then PLC dev
Mensaje = "Leídos " & NumBytes & " bytes a partir de la dirección " & _
Dir & " en el DB " & NumDB Foro Autómatas
LeerBytesDB = True
Foros de electrónica
Else
Mensaje = "Error al leer " & NumBytes & " bytes a partir de la dirección " & _ Foro de InfoPLC
Dir & " en el DB " & NumDB
Foro OPC Foundation
LeerBytesDB = False
End If Foro técnico de Siemens

End Function

Public Function EscribirBytesDB(ByVal NumDB As Integer, _


Seguidores

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 4/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave
ByVal Dir As Integer, _ Seguidores (75) Siguiente
ByVal NumBytes As Integer) As Boolean
Dim Respuesta As Integer

Respuesta = daveConex.writeBytes(Libnodave.daveDB, NumDB, Dir, NumBytes, BufferEscritura)

If Respuesta = 0 Then
Mensaje = "Escritos " & NumBytes & " bytes a partir de la dirección " & _
Dir & " en el DB " & NumDB
EscribirBytesDB = True Seguir
Else
Mensaje = "Error al escribir " & NumBytes & " bytes a partir de la dirección " & _
Dir & " en el DB " & NumDB
Twitter
EscribirBytesDB = False
End If
Tweets por @notasdeautom
End Function

End Class GR @notasdeautom


Nueva entrada en el blog: "Una
Lo que he hecho es cambiar el protocolo serie por el protocolo ethernet. Su uso es muy sencillo, a la función de bloque (FB) para el
función Conectar se le pasan la dirección IP, el puerto, el rack y el slot. Si no hay error, con las registro de datos en PLC
funciones LeerBytesDB y EscribirBytesDB accedemos a datos almacenados en cualquier DB de la Siemens"notasdeautomatizacion.
memoria del PLC (son exactamente las mismas funciones que en la versión serie). Al acabar debemos
blogspot.com.es/2017/05/una-
desconectarnos con la función Desconectar. La clase se podría completar con funciones para acceder
a otras zonas de memoria permitidas por Libnodave. fu…

4 may. 2017
Ejecuto mi aplicación, pongo los parámetros de conexión y pulso Conectar. Si todo va bien me
pondrá un mensaje que el enlace está realizado. Con los botones de lectura y escritura puedo ver
como modifico y leo el contenido del DB10 en mi PLC. GR @notasdeautom
Nueva entrada en el blog:
Gráfica X/Y en HMI Siemens a
partir de puntos almacenados en
un bloque de datos
(DB)notasdeautomatizacion.blog
spot.com.es/2017/04/repres…

24 abr. 2017

GR @notasdeautom
Nueva entrada en el blog: "Unas
notas sobre las novedades para
programar controladores S7-
http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 5/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave
programar controladores S7
1500 en TIA
Portal"notasdeautomatizacion.bl
ogspot.com.es/2017/04/unas-n…

11 abr. 2017

GR @notasdeautom
El aspecto del blog ligeramente
renovado, después de 3 años
totalmente abandonado ya
tocaba. ¡Pronto material nuevo!
notasdeautomatizacion.blogspot.
com.es

6 b 2017
Insertar Ver en Twitter
Si nos equivocamos al dar la dirección IP o el puerto, nos dará error. Sin embargo si ponemos un rack
o slot incorrectos, puede que nos diga que la conexión está correcta, pero evidentemente no
lograremos leer ni escribir nada.
Visitas
Si quieres ver el código completo de este sencillo proyecto, lo tienes aquí. Si además quieres echar un
vistazo a la configuración de Step7 que he usado, descárgate este proyecto. 944525
Aunque esta prueba está hecha sobre un WinAC en una máquina virtual, pienso que el código servirá
para acceder a un PLC S7-300/400 con puerto ethernet. Si algún lector hace la prueba, le agradeceré
una reseña en los comentarios.

Este es un ejemplo muy sencillo, símplemente para comprobar que Libnodave funciona y es sencillo
de usar. Ahora mismo se me ocurren un par de antiguos proyectos en los que podría haber usado
Libnodave, consiguiendo abaratar su coste, al ahorrarnos licencias. Sin embargo no debemos olvidar
que Libnodave, a pesar de su buen desempeño, no tiene una empresa detrás que nos de garantía o
soporte, y que si lo usamos es por nuestra cuenta y riesgo.

Como siempre, agradeceré cualquier comentario.


Publicado por GR
Etiquetas: Comunicación, Industrial Ethernet, libnodave, Siemens, Step7, Visual Basic

59 comentarios:

JCD 3 de octubre de 2011, 13:11


http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 6/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

Gracias de nuevo por tus articulos !

Conocí LIBNODAVE gracias a ti, pero siempre he tenido un problema, la libreria dll de libnodave
no puedo compilarla al crear el "instalador" desde visual basic, tienes alguna solucion ?

Gracias de nuevo
Responder

Respuestas

Anónimo 2 de noviembre de 2012, 19:48


Puedes ponerla en el directorio system32 de windows. y no necesitas compilarla para
usarla en tu equipo local
Para una instalación puedes añadirsela manualmente en el proceso de crear el setup y
te la pondra en dicho directorio

Responder

GR 3 de octubre de 2011, 14:09


Cuando tengo problemas de una dll lo que hago es ponerla en el mismo directorio donde está el
ejecutable. Lo ideal sería que un instalador te la metiese en el sistema para no tener que ir
arrastrándola.
Este sitio emplea cookies de Google para prestar sus servicios, para personalizar anuncios y para analizar el
tráfico. Google recibe información sobre tu uso de este sitio web. Si utilizas este sitio web, se sobreentiende que
Creo que te refieres a eso.
aceptas el uso de cookies.
Un saludo y gracias por el interés. MÁS INFORMACIÓN ENTENDIDO
Responder

ragundo 8 de octubre de 2011, 11:22


Hola

Madre mia parece que me leyeras el pensamiento.

Precisamente tengo que generar unos informes en excel de datos de produccion contenidos en
un DB.

Ya conocia la libreria pero nunca la habia usado y no sabia si funcionaria por Ethernet.

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 7/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

De todas maneras, hay otra libreria que incorpora libnodave y que viene con bastante
documentacion y ejemplos en .NET (yo soy mas de C#)

http://siemensplctoolboxlib.codeplex.com/

Esta es la que voy a usar proximamente.

PD: Por cierto que luego he visto la otra entrada de OPC con RS Logix y adivina que tengo que
hacer tambien....

Pues eso generar los mismos informes Excel usando OPC y el RSLInx Classic :)))))

Un saludo y como siempre los articulos geniales.


Responder

GR 8 de octubre de 2011, 22:32


Hola Ragundo, me alegra que lo que escribo te sea de utilidad. Y gracias por el enlace, le echaré
un vistazo.
Responder

Anónimo 13 de octubre de 2011, 11:37


PODRIAS ACLARAR MAS AL DETALLE LO DEL RACK Y LO DEL SLOT, PORQUE LO DEL RACK ME
SUENA A LOS ARMARIOS DE TELECOMUNICACIONES, Y EN ESTE CASO HABLAMOS DE PLC,
MUCHAS GRACIAS. JG
¿¿¿¿¿¿¿¿
un número de rack (lo habitual aquí es un cero) y un número de slot (que será el número de slot
donde tengamos configurado el PLC, lo podemos ver en la configuración hardware, en mi caso el
dos) ??????
Responder

GR 13 de octubre de 2011, 13:15


Cuando realizas la configuración hardware de un proyecto de Step7, el primer paso es añadir un
bastidor. Entiendo que el número de rack es el número de bastidor, y como lo habitual es tener
solamente uno (nunca me he topado con un proyecto con múltiples bastidores), le
corresponderá el número cero.

Dentro de cada bastidor hay una serie de huecos donde poner los distintos componentes. Cada

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 8/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

uno de estos huecos es un slot. El slot uno suele estar reservado para una fuente de
alimentación y en el dos suele colocarse el PLC.

Espero haber aclarado tu duda, un saludo.


Responder

Anónimo 14 de octubre de 2011, 20:01


ACLARADO, MUY BIEN.
SENCILLEZ, CLARIDAD, CALIDAD, BUENOS ARTICULOS.
MUCHAS GRACIAS. JG
Responder

Anónimo 27 de octubre de 2011, 21:53


Por si ha alguien le resulta interesante, he logrado leer y escribir datos a un S7-1200 utilizando
la libreria Libnodave y el código expuesto en este articulo.
No hay que hacer modificación alguna al código en VB, simplemente configurar el Rack = 0 y el
Slot = 1. Respecto al PLC, en el STEP 7 BASIC hay que controlar que los DBs que vayamos a
leer o escribir NO hayan sido creados "solo para acceso simbólico".
Espero mi comentario sea de utilidad.

Gracias por artículos tan buenos como estos!

Saludos.
Responder

Respuestas

David Bonilla 21 de noviembre de 2013, 18:47


hola, me llamo mucho la atención tu comentario, estoy programando un s7 1200 y
utilizando la librería que amablemente nos compartió GR, ya puedo conectar el PLC
pero aun no me es posible recibir ni enviar ningún dato, con respecto a lo que dices de
los DB no encuentro esa opción "solo para acceso simbólico" supongo ese es lo que
ocasiona no pueda leer ni escribir datos, estoy utilizando TIA PORTAL v12, lo que
quisiera hacer es que los datos de una señal analógica los pueda guardar en excel o
cualquier otro programa, espero tu ayuda ya que soy nuevo en esto.. saludos cordiales

Responder

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 9/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

GR 28 de octubre de 2011, 10:58


Muchas gracias amigo anónimo por tu aporte, estoy seguro de que a más de uno le resultará de
utilidad.
Responder

Anónimo 28 de octubre de 2011, 20:34


ANONIMO DIJO:

hay que controlar que los DBs que vayamos a leer o escribir NO hayan sido creados "solo para
acceso simbólico".

SI SE PONE:

L valores.N1

Acceso simbólico a la variable


n1. “valores” es el nombre simbólico
del DB que contiene dicha variable.

ENTONCES QUEDARIA ASI ?

L N1

Acceso a la variable n1.

PUEDEN DEFINIRLO MAS CLARAMENTE, GRACIAS.JG


Responder

CH4V3Z 26 de noviembre de 2011, 6:20


Saludos,

me dejaron un proyecto que me parecia colosal hasta que encontré tu ejemplo, te lo agradezco
mucho.

veras actualmente leo y escribo el plc desde una película flash empotrada en mi vb.
yo realmente no se mucho de plc solo he recibido un curso de LOGO de siemens por con esto he
leido y escritro las entradas fisicas de maravilla.

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 10/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

tengo una pregunta. quisiera poder llevar mas lejos y tener lecturas analogicas, save si debería
diferir en algo o me puedes orientar??
Responder

GR 26 de noviembre de 2011, 13:53


Hola CH4V3Z,

No veo ningún inconveniente en tener lecturas analógicas, de hecho con libnodave puedes leer
del área de entradas directamente.

Un saludo.
Responder

Jorge 14 de diciembre de 2011, 10:54


Hola me parece genial tu trabajo. Lo estoy probando pero tengo un pequeño problemilla.

Quiero hacer la conexión con un PLC en remoto mediante una VPN. Levanto la VPN y establezco
correctamente la comunicación con el automata, el problema es cuando quiero leer de un DB
que no lo consigo, me da error y no obtengo los datos.
Responder

GR 15 de diciembre de 2011, 11:55


Si en conexión directa te funciona bien quizá exista alguna incompatibilidad. Nunca he usado
una VPN y lamento no poder resultar de ayuda.

Un saludo.
Responder

Jorge 21 de diciembre de 2011, 13:31


Hola GR ya he conseguido que funcionará a través de una VPN. Como aporte decir que si
levantas una VPN contra el autómata a través de dos routers con el ejemplo que ha aportado
nuestro amigo GR puedes obtener los datos del PLC remotamente.

Tan sólo tengo una pregunta porque me pasa algo curioso y es lo siguiente.

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 11/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

Estoy leyendo varias variables de un bloque de varios DBs, el buffer de lectura lo tengo con 200
posiciones por ejemplo, la primeras veces lee bien pero tras varias repeticiones deja de leer y la
respuesta da el código -1025 que no he logrado interpretar que es. Yo creo que es como si se
llenará el buffer pero corrígeme si me equivoco en cada lectura se sobrescriben los datos o se
guardan al final del último dato existente en el buffer.
Otra cosa que me llama la atención es que si cierro la conexión después de una lectura y la abro
antes nunca falla.
Responder

GR 22 de diciembre de 2011, 13:15


Según lo he programado, en cada lectura guarda los datos desde el principio del buffer. Prueba
a ampliar el buffer, no vayas a estar leyendo más bytes de los que caben.

Un saludo.
Responder

jaarango 24 de marzo de 2012, 16:30


GR, si quisiera hacer mi propio programador de PLC es decir enviar el archivo con el código awl
podría hacerlo usando esta libreria?
Responder

Respuestas

GR 29 de marzo de 2012, 19:49


Según pone en la página de libnodave: Can load program blocks into 300/400 CPUs

Así que lo que planteas es posible, pero nunca le he intentado.

Un saludo.

Responder

Nestor 30 de marzo de 2012, 20:32


Amigo tengo problemas para conectar con un Logo Oba7, puedes ayudarme porfavor
Responder
http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 12/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

Respuestas

GR 1 de abril de 2012, 10:40


No tengo experiencia con los Logo. Prueba a poner tu consulta en
http://www.infoplc.net/foro/ o http://automatas.org/foro/, eso sí, explica los detalles
de tu problema. En estos foros suele haber gente dispuesta a echar una mano.

Un saludo.

Responder

atomic 11 de abril de 2012, 13:13


Hola, lo primero gracias por el aporte y te quería preguntar como se podrían leer y escribir
variables reales o booleanas mediante esta libreria; no tengo mucha idea como te puedes dar
cuenta jaja. graias de antemano
Responder

Respuestas

atomic 11 de abril de 2012, 16:45


Ya está resuelto

Responder

atomic 11 de abril de 2012, 18:59


Hola queria hacerte otra pregunta: ¿como puedo acceder al bit M0.0 de un bloque por ejemplo
OB1? Creo haber visto que se puede hacer algo con daveFlags pero no se muy bien como
utilizarlo. Gracias
Responder

Respuestas

GR 21 de abril de 2012, 20:06


Creo que no tienes muy claro el direccionamiento en Step7. Las marcas como la M0.0
no pertenecen a ningún OB, son accesibles desde cualquier parte de programa. Y sí,
http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 13/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

con libnodave puedes acceder al área de marcas con la opción daveFlags.

Un saludo.

Responder

S7 1200 19 de abril de 2012, 22:48


Este comentario ha sido eliminado por el autor.
Responder

Respuestas

GR 21 de abril de 2012, 20:10


En la web de libnodave mencionan que están trabajando en una biblioteca java, pero
no dan mucha información.

Un saludo.

Responder

S7 1200 25 de abril de 2012, 17:38


ok
Responder

S7 1200 25 de abril de 2012, 17:39


Saludos
Responder

Daniel Torres 10 de julio de 2012, 20:36


GR, muchas gracias por tus respuestas y el tiempo que te tomas en redactarlas y transmitirlas.
Puedes por favor ayudarme con esto?: Como hago para leer o escribir una variable en el PLC,
digamos por ejemplo MD0, ya se que la sentencia

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 14/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

-> Respuesta = daveConex.writeBytes(Libnodave.daveFlags, NumDB, Dir, NumBytes,


BufferEscritura) <-
intercambia datos con el PLC, pero como se que valores poner en NumDB y Dir ?

Te agradecería mucho cualquier explicación básica que pudieras darme...

Un saludo cordial!
Responder

Respuestas

GR 20 de julio de 2012, 11:45


En mi ejemplo solo leo de bloques de datos (DB). Si quieres leer la MD0 tienes que
modificar el código para que lea del área de marcas.

Otra opción es copiar la MD0 a una variable dentro de un DB y acceder a esta.

Un saludo.

Responder

Daniel Torres 24 de julio de 2012, 17:18


GR, muchas gracias, lo solucione copiando MD0 a una variable dentro de un DB, como lo
mencionas en tu respuesta. Es mas fácil acceder a los datos del plc de esta forma.
Responder

Gabbi Atendimento 27 de agosto de 2012, 22:33


GR é possível converter o software WinAC para Visual Studio 2008 e me enviar???
Gostaria de comunicar com S7-1200 (Ethernet)!!
Por favor, ajude-me!!
Responder

Respuestas

GR 29 de agosto de 2012, 8:46

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 15/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

Con el código de esta entrada no deberías tener problemas. Yo nunca he comunicado


con un 1200, pero en un comentario de esta misma entrada un lector nos cuenta que
funciona.

Un saludo.

Anónimo 2 de noviembre de 2012, 19:51


Usa el modo de conexion ISO TCP para un autómata de la serie 1200. Yo lo he probado
con uno nuevo V3.0 de firmware y funciona

Responder

Lluc Valério 2 de octubre de 2012, 11:17


Hola, queria hacer una pregunta referente a la comunicación con un S300. He usado libnodave
para comunicar con un S315 por ethernet y no he tenido problema.
El problema lo encuentro al leer. La lectura la hace por bytes almacenandolo en el buffer; si la
información en el DB ocupa mas de un byte, puedo leer mas de un byte de golpe para mantener
el valor total?
Por ejemplo,un decimal con valor 1300, como puedo interpretar al leer los dos bytes que ocupa
que el 5 del primer byte y el 20 del segundo byte es una word con valor 1300?
Gracias por adelantado!
Responder

Respuestas

GR 3 de octubre de 2012, 16:30


Hola Lluc, entiendo que lo único que te queda por hacer es la siguiente operación: 5 *
256 + 20 = 1300 (5 es el valor del byte alto y 20 el valor del byte bajo).

Un saludo.

Anónimo 2 de noviembre de 2012, 19:55


res2 = daveReadBytes(Dc, daveFlags, 0, Direccion, 2, 0)
If res2 = 0 Then
v1 = daveGetS16(Dc)

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 16/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

con esto te devuelve en v1 el valor de dos bytes directamente P.E. Una memoria de
palabra (MW)
En direccion le pones el bloque a leer p.e. 60 para la %M60 y te devolvera los 1300 de
marras

Anónimo 5 de noviembre de 2012, 19:21


Me colé hasta la oreja.
Lo que debia haber puesto es:
res2 = daveReadBytes(Dc, daveFlags, 0, Bloque de memoria(MW), 2, 0)
If res2 = 0 Then
v1 = daveGetU8(Dc)
v2 = daveGetS8(Dc)
resultado = v1 * 256 + v2
end if

Responder

Lluc Valério 3 de octubre de 2012, 18:05


Hola de nuevo.

GR, entiendes perfectamente. Y es mucho mejor solución que la opción que estaba probando de
convertir los dos bytes a binario, juntarlos y volverlos a pasar a decimal (estoy leyendo datos
desde una aplicación de visual - me olvidé comentarlo), porqué aunque funcionaba, bueno... no
hay comparación; eso demuestra la importancia de atender en clase!

Muchísimas gracias por tu ayuda.


Un saludo!
Responder

Gabbi Atendimento 16 de octubre de 2012, 23:01


Este comentario ha sido eliminado por el autor.
Responder

Anónimo 5 de noviembre de 2012, 19:54

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 17/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

Solo tengo una pregunta (de momento)

Como diantres funciona el davesetbit y daveclrbit? No consigo que funcionen (al menos en un
1200)
El resto de funciones principales grosso modo funcionan bien.

Muchas gracias de antemano


Responder

Anónimo 20 de mayo de 2013, 0:27


como puedo cargar directamente un Word a una variable o campo de texto? y después mandarlo
al PLC?

muchas gracias por el aporte


Responder

Juan José Rosas García 15 de junio de 2013, 0:16


Muy buen aporte GR !! Me basé en tu programa y en el ejemplo simpleISO_TCP para acceder a
la memoria imagen de un S7-1200 vía Ethernet.
Responder

Alejandro SanCano 18 de junio de 2013, 20:08


Muchas gracias por el aporte, en estos momentos estoy trabajando con la entrada anterior (vía
MPI) el problema va a ser la velocidad y el costo del adaptador (si quiero hacerlo para más de
una máquina), así que esta solución me parece más viable, pero no entiendo bien algo, la
comunicación es con un módulo de ethernet como el CP 343?

Saludos cordiales y muchas gracias por su respuesta.


Responder

david89pr 27 de agosto de 2013, 18:33


Buen dia, me ha sido muy util tu articulo, estoy programando una aplicacion en VB pero tengo
una pregunta, como puedo leer un valor real? con los booleanos no tube problemas pero no he
visto como leer los reales, si me pudieras orientar te lo agradeseria muchisimo.

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 18/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

Responder

Anónimo 20 de diciembre de 2013, 20:56


Saludos, tengo una consulta puedo usar el libnodave para comunicarme con un plc s7-1200 a
traves de excel usando VBA? gracias.
Responder

Anónimo 25 de agosto de 2014, 21:27


SALUDOS UNA PREGUNTA COMO O QUE CODIGO PONDO EN VISUAL BASIC PARA PODER
ESCRIBIR EN LA SALIDAS DEL PLC S7-1200 QUIERO CONTROLAR LAS ENTRADAS Y SALIDAS
PARA PODER MANIPULAR DESDE VISUAL BASIC..TOME EL EJEMPLO CON LAS LIBRERIA
LIBNODAVE PERO NO SE QUE CODIGO DEBO PONER EN VISUAL PARA ENCENDER LA Q0.0 DEL
PLC POR FA ALGUIEN ME PUDE AYUDAR LO NECESITO DE URGENCIA
Responder

Respuestas

Anónimo 23 de septiembre de 2014, 0:55


Hola, supongo que podrías definir una variable de tipo booleana en tu DB, esta variable
la escribes desde VB (con un botón por ejemplo) y en tu programa del PLC la utilizas
para activar la salida.
Saludos!

Responder

tecnoguadalerzasjp 17 de marzo de 2015, 23:43


Hola, gracias, me ha resultado muy útil. Una pregunta, que a lo mejor es trivial, si se
interrumpe la conexión ¿Cómo detecto esta situación antes de leer o esribir?. Muchas gracias
Responder

Respuestas

Jorger 18 de diciembre de 2015, 16:51


Hola Tecno, yo lo que hago es usar una marca que contiene un Entero, el cual corre de
cero a 15 como tiempo establecido máximo de una conexión de la CPU con un sistema
http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 19/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

SCADA, este entero nunca puede ser llegar a 15,por lo que yo en mi programa VB2010
lo que he hecho es añadir un TIMER con una latencia de 1 seg. en el cual programo la
lectura dicha marca de la CPU y verifica que nunca esta por encima 15 y que ha
variado cada 2 segundos, en cuanto estos estados no se cumplen genero una
desconexión del programa y usu un MSGBOX para comunicarselo al usuario, funciona
bastante bien. Espero haberte sido de ayuda,aunque llegue algo tarde ;)

Responder

Julian Barahona 10 de noviembre de 2015, 21:47


Saludos a todos;

soy principiante en esto de programación de PLC's siemens, al momento estoy con un proyecto
para conectar un HMI Brainchild 450 a un PLc Siemens S7 1200 vía ethernet y no lo consigo, en
el manual de la pantalla hay un ejemplo de comunicación con siemens pero no funciona en mi
proyecto.

alguien tal vez sabe que sucede...?, estoy usando El tia portal V13 y el panel studio.

muchas gracias amigos.


Responder

Jorger 18 de diciembre de 2015, 16:45


Hola GR. Muchas gracias por el aporte, me ha ayudado muchísimo. Lo he usado para un
proyecto en VB 2010 que modifica ciertas variables en distintas CPUs s400 y va de cine. Mi
pregunta es, ¿Seria posible realizar una conexión simultánea a varios autómatas? Quiero crear
con VS2010 un pequeño sistema SCADA de la instalación en la que trabajo y seria interesante
poder mantener comunicación con todas las CPUs que tengo. Muchas gracias.
Responder

Jesus Miguel Figueroa Sosa 11 de febrero de 2016, 19:37


Estoy iniciando en el desarrollo para aplicaciones para PLC, usu TIA Portal V13 como debo
configurar el bloque de datos para que sean accesibles unas variables de entradas análogicas
desde VB.NET
Responder

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 20/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

Respuestas

Jesus Miguel Figueroa Sosa 11 de febrero de 2016, 19:40


Es un PLC S7 1200

Responder

marc poveda 31 de agosto de 2016, 8:04


Gracias por el ejemplo me ha sido de mucha utilidad. Funciona ok con S7-1200
Responder

Respuestas

Anónimo 18 de noviembre de 2016, 19:53


Hola marc disculpa que te moleste, podras poner un ejemplo pequeño de como lo has
logrado, estoy hace tiempo intentando y no he conseguido nada.
Gracias

Responder

Unknown 29 de marzo de 2017, 18:55


que tal yo soy principiante y estoy trabajando con la libreria solo que necesito leer un valor
string del plc con esta libreria me podrian ayudar hasta ahora ya puedo leer pero puro valor
entero.
Responder

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 21/22
18/2/2018 Notas de automatización: Accediendo a un PLC Simatic a través de ethernet con Libnodave

Introduce tu comentario...

Comentar como: Unknown (Goo Cerrar sesión

Publicar Vista previa Avisarme

Por favor, no pidas copias de programas comerciales, licencias o números de serie.

Meliá Alicante
Desde 99€

Entrada más reciente Página principal Entrada antigua

Suscribirse a: Enviar comentarios (Atom)

Notas de automatización by notasdeautomatizacion@gmail.com is licensed under a Creative Commons Reconocimiento-No comercial 3.0 España License.
---

http://notasdeautomatizacion.blogspot.com.es/2011/10/accediendo-un-plc-simatic-traves-de.html 22/22

Anda mungkin juga menyukai