Data logging with snap7 and python #1 SIEMENS PLC conectivity

In this tutorial you can learn how to exchange data with Siemens PLC, in a free way (except the cost of your working time). To avoid you waste these valued time, here you can find this tutorial, here I explain how you can start with these subject using python and snap7 in order to read a DB in a Siemens CPU, via TIA PORTAL.

Пікірлер: 90

  • @franklinmalavert2515
    @franklinmalavert25159 ай бұрын

    Gracias!!! he realizo con plc 1500 y funciona bien.

  • @martintorres5829
    @martintorres5829 Жыл бұрын

    buenisimo hace rato buscaba esta informacion. Para plc que no cuenten con opcua, que creo los plc de siemens 300 mas viejos no tienen

  • @Jhonatan_Quispe
    @Jhonatan_Quispe10 ай бұрын

    gracias por la info

  • @CapitalinoInventivo
    @CapitalinoInventivo3 жыл бұрын

    hola muchas gracias, realizare la prueba y regreso a hacer mas comentarios gracias por la info, creo que es suficiente, me gustaria hacer la prueba para escritura de los datos desde el python hacia el plc

  • @TransferToPLC

    @TransferToPLC

    3 жыл бұрын

    Muchas gracias por comentar Raúl. Seguire subiendo info de este tema que creo que es interesantisimo y ofrece muchas posibilidades.

  • @fabianbano4452
    @fabianbano44523 жыл бұрын

    Gracias crack nuevo sub, espero puedas subir videos de cinematica o dinamica de robots manipuladores

  • @TransferToPLC

    @TransferToPLC

    3 жыл бұрын

    Muchas gracias Fabian. Bueno en robotica tengo mas experiencia en los robots mas comerciales como ABB, donde esta parte es mas ejecutar rutinas que ya incorporan para calcular las cargas, pero tengo muchas ganas de meterme mas a fondo. Tambien con ROS que creo que es tambien obligado de cara a un futuro.

  • @emanuelrodriguez6573

    @emanuelrodriguez6573

    2 жыл бұрын

    @@TransferToPLC hola, pregunta, los ABB se programan en RAPID, no? Es similar a la programación que se hace con FANUC?

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola Emanuel, efectivamente el lenguaje de programación de los robots ABB se llama RAPID. En Fanuc no se usa el mismo lenguaje, su lenguaje es KAREL. Si conoces un lenguaje tampoco es demasiado costoso aprender otro, en este sentido cada fabricante ha ido por su cuenta y no está tan estandarizado como para programar PLC. No obstante espero que en un futuro todos tiendan a lenguajes más universales, he visto que algún robot se puede programar por ejemplo en JAVA, el IWA de KUKA también se programa en un lenguaje que también es similar a JAVA

  • @elbouzidiidris4511
    @elbouzidiidris45112 жыл бұрын

    muchas gracias por video Snap 7 funciona con S7_1200

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola, gracias por comentar. Si funciona con todos los PLCs de Siemens con protocolo de comunicación STEP7. S7-300, S7-1200 y S7-1500 (el S7-200 y el Logo no los he probado, aunque LOGO si que parece que con cierta configuración se puede comunicar). Eso si sólo funciona a través de ethernet.

  • @elbouzidiidris4511

    @elbouzidiidris4511

    2 жыл бұрын

    @@TransferToPLC muchas gracias , intentaré trabajar en S71200

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Perfecto, en 1200 y 1500 a diferencia de la 300 es que tienes que tener en las propiedades del DB bien puesto el acceso optimizado al bloque y tener los permisos de PUT/GET en las propiedades de la CPU.

  • @elbouzidiidris4511

    @elbouzidiidris4511

    2 жыл бұрын

    @@TransferToPLC muchas gracias Tomaré esta nota en consideración

  • @elbouzidiidris4511

    @elbouzidiidris4511

    2 жыл бұрын

    @@TransferToPLC hola señor, gracias por su orientación sobre la posibilidad de conectar un PLC s71200 con python. vinculé mi PLC (s71200) con python (biblioteca snap7).

  • @user-bu7ls1zf3y
    @user-bu7ls1zf3y9 ай бұрын

    Muchas gracias por el tutorial pero tengo problemas para conectar mi PLC 1515, ya que me sale el siguiente error. RuntimeError: b' TCP : Connection refused' Ya estuve revisando ayudas y eso y recomiendan quitar la optimizacion de los db y ademas de activar el put/get tambien. Y aun con esa configuracion mantiene ese error. Te sucedio ese problema cuando tu intentaste la conexion. De antemano gracias.

  • @leonelrondon8037
    @leonelrondon80372 жыл бұрын

    Buenas noches amigo muy bueno su aporte, estoy viendo sus videos y explica muy bien, tengo una pregunta, este protocolo snap 7 sirve para métodos de conexión serial para los plc siemens? la cual es una conexion distinta a tcp/ip, tengo un plc siemens s7-300 cpu 312c y no tiene el puerto ip, solo el puerto de cable serial. Gracias de antemano

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola Leonel. Muchas gracias, me alegra que sean practicos los videos. No conozco como conectarlo por mpi. Si encuentro algo lo compartiré. Podrias usar conversores de mpi a ethernet o una cp343-1 lean. Aunque ambos casos son costosos aqui en españa cuesta entre 500 y 700€ estos equipos

  • @leonelrondon8037

    @leonelrondon8037

    2 жыл бұрын

    @@TransferToPLC ok entiendo, yo tengo un convertidor mpi de rs-485 a puerto usb, habia investigado sobre el protocolo de comunicación modbus para conectar el plc a mi codigo de Python, pero se me ha hecho complicado, tiene algun conocimiento sobre el tema? Gracias de antemano

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola Leonel. No he hecho nunca nada comunicado a python sin ser a traves de puerto ethernet. Encontre esto no se si te pueda servir, indica que tiene funciones de servidor modbus rtu, pymodbus.readthedocs.io/en/latest/readme.html

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    En este canal veo que explican tambien ademas conexiones por modbus rtu y opc kzread.info

  • @leonelrondon8037

    @leonelrondon8037

    2 жыл бұрын

    @@TransferToPLC muchas gracias lo revisaré

  • @SoyKevin98
    @SoyKevin982 жыл бұрын

    gracias. con el simulador PLSIM puede funcionar o tiene que ser con PLC físico?

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    No lo he probado. Con PLCsim profesional puede que funcione, ya que se le configura una ip como si fuese el propio equipo, el resto no creo ya que no usan comunicacion fisica con el pc sino que virtualizan el puerto.

  • @jorgelb573
    @jorgelb5739 ай бұрын

    Lo primero decirte que gran vídeo y gracias. Tengo una duda, se podría simular? O se necesita tener el plc físico?

  • @TransferToPLC

    @TransferToPLC

    9 ай бұрын

    Hola Jorge. Se puede usar netToPlc o plcsim profesional. Para nettoplc hay un video en el curso de step7 de este mismo canal, tambien funciona con tiaportal.

  • @jorgemauriciocallejasestev8085
    @jorgemauriciocallejasestev80852 жыл бұрын

    hola gracias .... se puede por ejemplo obtener los datos de un proceso simple como "control de temperatura".... digamos cada 30 minutos ... es decir recopilar estos datos desarrollado con un programa en escalera... espero tu resp gracias

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Buenos días Jorge. Si se podría hacer un programa que capture los datos con la frecuencia que te interese y los registre posteriormente. En python también hay módulos que permiten conectar con bases de datos y podrías hacer el registro por ejemplo de ese dato.

  • @jorgemauriciocallejasestev8085

    @jorgemauriciocallejasestev8085

    2 жыл бұрын

    @@TransferToPLC muchas gracias por tu respuesta siempre atento y tus videos muy claros

  • @Window7010
    @Window70102 жыл бұрын

    Una consulta, sirve para extraer info de plc con protocolos Profinet?

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola Cristobal, Snap7 no usa protocolo Profinet, trabaja usando el protocolo STEP7, por resumir, Profinet es un protocolo en tiempo real donde la cantidad de información a intercambiar en modo MASTER/SLAVE es fija. STEP7 es un protocolo asíncrono donde en cada momento se decide que información intercambiar. Por resumir el protocolo STEP7 es el que usamos para ponernos online con el PLC o cargar el programa, es un concepto totalmente distinto de Profinet (y sí para aplicaciones que requieran potencia y seguridad se queda corto)

  • @mouadyoussefi7619
    @mouadyoussefi76193 ай бұрын

    ¡Hola! En primer lugar, muchas gracias por este video, tengo una pregunta sobre si está usando un plc real o una simulación virtual con plscim

  • @TransferToPLC

    @TransferToPLC

    3 ай бұрын

    Hola. Pues no lo recuerdo bien, creo que en este caso era plc real. No obstante se puede hacer con plcsim, bien con la version profesional para que de una ip distinta del localhost o bien con net to plc, te dejo enlace a un video que explica como hacerlo. Conectividad 🧩 #5 Net to PLC CONVIERTE PLCSIM en un PLC real kzread.info/dash/bejne/iaKTm5iqZ9fcYpM.html

  • @mouadyoussefi7619

    @mouadyoussefi7619

    3 ай бұрын

    @@TransferToPLC Gracias por este tutorial. Es realmente útil 👍👍👍

  • @user-kb1hw2lc1e
    @user-kb1hw2lc1e9 ай бұрын

    Buenos días, esta libreria puede funcionar para PLC de otra marcas o compañías, o directamente esta ligado a Siemens? Gracias

  • @TransferToPLC

    @TransferToPLC

    9 ай бұрын

    Buenos dias. Es solo para el protocolo step 7 mediante conexion ethernet. Para otros protocolos habria que buscar librerias adecuadas para esos protocolos.

  • @RobertoPreziuso
    @RobertoPreziuso Жыл бұрын

    Hola David, estoy viendo tus videos me paracen muy interesante, pero como estoy comenzado a programar LOGO! 8 quiero preguntar como puedo con Python crear unos comandos para tener una entrada de red y activar una salida.

  • @TransferToPLC

    @TransferToPLC

    Жыл бұрын

    Hola Roberto. Con logo no he hecho nada. Te paso un documento donde explica como comunicarle con snap7, espero te sea de ayuda. snap7.sourceforge.net/logo.html

  • @RobertoPreziuso

    @RobertoPreziuso

    Жыл бұрын

    Muchas gracias por tu respuesta. Voy a ver a documento que me recomendas

  • @braincrackz
    @braincrackz Жыл бұрын

    hello there. i tried to add values from valor 1 int, valor 2 int, valor 3 int. when i put some values in any of the value the display results in python is not the same as what displays in tia portal. have u tried it adding some valor values? product_value_1 = int.from_bytes(db[256:257],byteorder='big') print(f'Product Value 1: {product_value_1}') product_value_2 = int.from_bytes(db[258:259],byteorder='big') print(f'Product Value 2: {product_value_2}') product_value_3 = int.from_bytes(db[260:261],byteorder='big') print(f'Product Value 3: {product_value_3}')

  • @TransferToPLC

    @TransferToPLC

    Жыл бұрын

    Hello. Int values are two bytes values. As the data is exchanged in binary words it is possible that the high weight byte and the low weight byte are just the opossite in tia portal and python. Try to switch the bytes either in tia or in python to see the same value.

  • @edisonaltamirano618
    @edisonaltamirano6182 жыл бұрын

    Buen dia, una duda, el snap 7 requiere una conexion a una red obligatoriamente, es que veo que ocupa una IP?

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola Edison. Si, snap 7 solo funciona con protocolo ethernet, por mpi o profibus no se puede acceder con esta libreria

  • @edisonaltamirano618

    @edisonaltamirano618

    2 жыл бұрын

    Muchas graciasss

  • @Jarito1903
    @Jarito19033 жыл бұрын

    se puede hacer tambien con Step 7?

  • @TransferToPLC

    @TransferToPLC

    3 жыл бұрын

    Si, funciona exactamente igual. No cambia nada en el codigo.

  • @filipponardi9375
    @filipponardi93752 жыл бұрын

    Thanks for the tutorial Have you ever tried to read a real?

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Thanks Filippo. I have never tried to read a real, I guess you need to read words or bytes and after it make the conversion to float with python code.

  • @abrahamgavilanez1202
    @abrahamgavilanez12022 жыл бұрын

    Hola, alguien me pudiera ayudar? Tengo este error b' TCP : Unreachable peer'

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola Abraham. Este error aparece cuando no logra comunicar con el PLC. Asegúrate que el PLC tenga la IP que indicas en el programa de Python y que el PC donde le ejecutas este en el mismo rango de red .

  • @engelsmachinery
    @engelsmachinery2 жыл бұрын

    Saludos usted tiene un sito web donde me pueda comunicar con usted

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Buenos días Machine. Mi email es automatizacion.industrial.dgr@gmail.com.

  • @weblabaicursosonline5335
    @weblabaicursosonline53353 жыл бұрын

    ¿el código se puede aplicar a otro plc que no sea siemens ?

  • @TransferToPLC

    @TransferToPLC

    3 жыл бұрын

    Hola Weblabai. No creo, snap7 lo que hace es comunicar con protocolo step7, por lo que aunque no lo he intentado no creo que funcione en otro plc. No obstante hay tambien opciones de trabajar con sockets que es mas abierto, y tambien he visto algun modulo para comunicar con protocolo modbus. Imagino que indagando habra seguramente opciones para muchos mas protocolos. Mi idea es ir explorando y todo lo que descubra lo compartire en el canal.

  • @weblabaicursosonline5335

    @weblabaicursosonline5335

    3 жыл бұрын

    @@TransferToPLC ese código es en bajo nivel 1 y 0?

  • @TransferToPLC

    @TransferToPLC

    3 жыл бұрын

    No, el modulo snap7 esta programado en python, es de alto nivel, es un lenguaje orientado a objetos.

  • @weblabaicursosonline5335

    @weblabaicursosonline5335

    3 жыл бұрын

    @@TransferToPLC me puedes indicar quien esta trabajando con modbus que es el protocolo con el que tengo mas experiencia por favor

  • @TransferToPLC

    @TransferToPLC

    3 жыл бұрын

    No he probado nada similar con modbus, en cuanto termine con la parte de step7 investigo un poco para ver que encuentro al respecto.

  • @TECHFLUX.
    @TECHFLUX.2 жыл бұрын

    hola muy buenas no se pero me da este tipo de error no se si alguien me pueda ayudar(Traceback (most recent call last): File "c:\Users\BAZQUICH\Desktop\PROGRAMAS_PY_YASSINE\snap7.py", line 5, in import snap7 File "c:\Users\BAZQUICH\Desktop\PROGRAMAS_PY_YASSINE\snap7.py", line 16, in plc = snap7.client.Client() AttributeError: partially initialized module 'snap7' has no attribute 'client' (most likely due to a circular import) PS C:\Users\BAZQUICH\Desktop\PROGRAMAS_PY_YASSINE> )

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola 777TB, creo que has llamado a tu programa snap7.py que es el mismo nombre del programa que importas. Prueba a darle otro nombre, porque posiblemente el problema es que no está importando la librería snap7.py sino que está tratando de importarse a si mismo.

  • @TECHFLUX.

    @TECHFLUX.

    2 жыл бұрын

    @@TransferToPLC aún así me sigue dando ese fallo, ns me da el línea 5 y la 16 q son las dos líneas q aparece la librería snap7, ns si me podrían echar una mano

  • @victorgalaz86
    @victorgalaz862 жыл бұрын

    Hola Snap 7 funciona con logo v8

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola Victor. No he probado con logo, para ser sincero no he trabajado demasiado con este modelo. Por lo que he leido se puede pero hay que hacer cierta configuracion. En este enlace lo explican snap7.sourceforge.net/logo.html

  • @victorgalaz86

    @victorgalaz86

    2 жыл бұрын

    @@TransferToPLC Lo probaré y te comento

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Genial. Muchas gracias. Si me hago con un logo en alguna ocasion procurare hacer contenido

  • @angelalejandroarreolafavel1579

    @angelalejandroarreolafavel1579

    2 жыл бұрын

    @@victorgalaz86 Pudiste probarlo?

  • @andresfmg
    @andresfmg3 жыл бұрын

    Podrías compartir el código de python?

  • @TransferToPLC

    @TransferToPLC

    3 жыл бұрын

    Por supuesto. En cuanto este delante del portatil lo pego en la descripcion y os aviso

  • @TransferToPLC

    @TransferToPLC

    3 жыл бұрын

    Está ya el código en la descripción del video.

  • @andresfmg

    @andresfmg

    3 жыл бұрын

    Gracias!

  • @gabrieldelima4377
    @gabrieldelima43772 жыл бұрын

    Como faço para ler um número real?

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola Gabriel, en principio, que yo sepa, no se puede leer directamente como real, lee por bytes. Tendrías que leer los bytes que formal el real y luego hacer el código en python para unirlos y obtener el resultado como número real.

  • @gabrieldelima4377

    @gabrieldelima4377

    2 жыл бұрын

    @@TransferToPLC ok, gracias amigo 👊

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Muchas gracias a ti Gabriel.

  • @victorciudad6566
    @victorciudad65662 жыл бұрын

    Excelente descubrimiento para mí, solo queda que me funcione, lo he probado a modo real y me da error, como si no viese el PLC en la red y la IP está mega-revisada y contesta al ping perfectamente, lo he probado con w10 home y con w10 pro, python versión 3.10.2, python snap 7 1.1, he insertado el archivo snap7.dll en system 32, vs code 1.64.2, igual le tengo que agregar a vs code alguna extensión para reconocer los comando del programa, si algún master me puede dar su opinión se lo agradecería. Dejo el texto que me aparece cuando pongo en run el programa "Run Pyton File in Terminal" Thanks. "Windows PowerShell Copyright (C) Microsoft Corporation. Todos los derechos reservados. Prueba la nueva tecnología PowerShell multiplataforma aka.ms/pscore6 PS C:\Users\Usuario\Desktop\Python> & C:/Users/Usuario/AppData/Local/Programs/Python/Python310/python.exe c:/Users/Usuario/Desktop/Python/Siemens.py b' TCP : Unreachable peer' Traceback (most recent call last): File "c:\Users\Usuario\Desktop\Python\Siemens.py", line 14, in plc.connect(IP, RACK, SLOT) File "C:\Users\Usuario\AppData\Local\Programs\Python\Python310\lib\site-packages\snap7\client.py", line 26, in f check_error(code, context="client") File "C:\Users\Usuario\AppData\Local\Programs\Python\Python310\lib\site-packages\snap7\common.py", line 92, in check_error raise Snap7Exception(error) snap7.exceptions.Snap7Exception: b' TCP : Unreachable peer' PS C:\Users\Usuario\Desktop\Python> "

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Gracias Victor. El error unreacheable peer se refiere a que no conecta con el plc. Asegurate que tu plc tiene activado el permiso para put/get. Y tambien importante que el slot este escrito en =2 y el rack =1en el programa de python.

  • @victorciudad6566

    @victorciudad6566

    2 жыл бұрын

    Gracias por su respuesta, he corregido la activación de comunicaciones put/get que no lo tenía activado, en mi caso utilizo un 1200 como sabemos es un plc compacto que al agregarlo a la red solo se puede colocar en el Slot 1 y el rack automáticamente se crea como 0, de primeras en el código python utilizo esa configuración y el resultado es este: PS C:\Users\Usuario\Desktop\Python> & C:/Users/Usuario/AppData/Local/Programs/Python/Python310/python.exe c:/Users/Usuario/Desktop/Python/Siemens.py b'CPU : Item not available' NO DISPONIBLE He probado a introducir todas las combinaciones posibles en el código python del 0 a 2 para los argumentos rack y slot, incluida la que me has recomendado rack = 1 slot = 2 aunque la realidad no sea esta y el resultado es este otro resultado: PS C:\Users\Usuario\Desktop\Python> & C:/Users/Usuario/AppData/Local/Programs/Python/Python310/python.exe c:/Users/Usuario/Desktop/Python/Siemens.py b' ISO : An error occurred during recv TCP : Connection timed out' TIEMPO SOBREPASADO SIN RESPUESTA ENTIENDO No sé, estoy pensando en hacer un proyecto virtual con una cpu que esté en el slot 2 y rack 1 para probar y a ver, debo estar cerca pero se quiere resistir, por perseverancia y lógica no será. Master si se te ocurre algo soy todo oidos. Un saludo

  • @victorciudad6566

    @victorciudad6566

    2 жыл бұрын

    Cuando el error es Item not available, quiero entender que estable enlace con la CPU pero no muestra información, igual me equivoco. He probado lo del proyecto virtual con una 315 de profinet en el slot 2 y no funciona, al tener un proyecto corriendo bajo PLCSIM se anulan todos los ajustes de interface físicos y entonces no podemos comunicar, bueno tenía que probar

  • @TransferToPLC

    @TransferToPLC

    2 жыл бұрын

    Hola Victor, existe una manera de usar PLC sim y que se comunique. Te dejo enlace a un video donde lo explico con STEP7, pero en TIA portal funciona también. Es un programita muy sencillo kzread.info/dash/bejne/iaKTm5iqZ9fcYpM.html

  • @victorciudad6566

    @victorciudad6566

    2 жыл бұрын

    @@TransferToPLC Gracias, acabo de ver el vídeo recomendado muy curioso, lo probaré. Muchas gracias. A ver si hago funcionar el snap 7 que le metí bastantes horas y al final no comuniqué, tengo curiosidad.