2012-04-27 437 views
6

Estoy ejecutando un proceso en un S7-1200 plc y lo necesito para enviar una señal de inicio a mi script python, después de que el script se ejecute debe enviar algo nuevamente al PLC para iniciar la siguiente fase. Ah, y tiene que hacerse en escalera.¿Cómo puedo comunicarme entre un Siemens S7-1200 y Python?

¿Hay alguna manera rápida y sucia de enviar cosas por encima del profibus o me conviene usar solo una cosa RS232?

+0

¿lo hiciste? esto puede ayudar a http://scorpion.tordivel.no/help/Python/Unsupported%20Modules/OPCModule.htm – sinelaw

+0

. Tenía la esperanza de poder hacerlo sin un servidor opc. – Megimoo

Respuesta

3

Después de fallar con libnodave y OPC, creé una cosa de comunicación TCON, TSEND y TRECV. Transmite un byte sobre TCP y funciona.

1

Bueno, un google rápido de 'python rs232' apareció some site hablando de hacer controles de robótica a través de rs232 usando pySerial. Entonces, si sabes cómo enganchar tu widget a rs232, puedes ir por esa ruta.

3

Yo usaría libnodave en el lado de la PC para cambiar el valor de alguna etiqueta M o una etiqueta DB en un PLC. Puede hacer fácilmente un peldaño de escalera que controlará esta etiqueta y ejecutará más acciones. Aunque libnodave no es compatible con Python de forma nativa, puede encontrar un contenedor de Python here.

+0

Supongo que no tiene un ejemplo de la envoltura en uso? – Megimoo

+0

He intentado varias soluciones con libnodave y todas ellas devuelven en -1 desde connectPLC(). Alguien en Internet afirma que se debe a un cambio en la capa S7-1200 TCP, y no conozco suficiente C para cambiar eso en la dll. – Megimoo

+0

Si recuerdo bien, el testISO_TCP.exe estaba funcionando bien. No sé sobre otros métodos de conexión. Solo estaba al tanto del envoltorio de Python, no lo usé. Utilizo libnodave con gran éxito en Linux (GCC y FreePascal) y en Windows (Delphi, Lazarus/FPC). No tengo ningún S7 1200 para probarlo de nuevo, pero alguien ya lo hizo con Android: http://www.automation-se.de/index.php/s7droid/s7droidlite. – avra

0

No hay forma de que pueda comunicarse con la CPU del PLC S7-1200 sin OPC. De libnodave está hecho para S7-300 y S7-400, no para S7-1200 basado en símbolos.

Puede comprar un ODK de Siemens o utilizar un OPC. El backdraw de un OPC es una sobrecarga, pero también que el uso de memoria en el S7-1200 aumentará porque los nombres simbólicos no funcionan en este momento para OPC.

+0

"No hay forma de que pueda comunicarse con la CPU del PLC S7-1200 sin OPC" No es verdad. Ver mi respuesta – user1847129

+1

Somos dos versiones de firmware más allá de cuando se realizó esta respuesta. OPC finalmente se lanzó oficialmente para el S7-1200 con acceso no optimizado solamente. – CJD

2

Existe una biblioteca comercial llamada "S7connector" por Rothenbacher GmbH (obviamente no es el "conector s7" en sourceforge). Es para .NET framework, por lo que podría usarse con IronPython.

Funciona con los PLC S7-1200. Simplemente debe asegurarse de que un DB que desea leer/escribir no sea un DB de estilo S7-1200 optimizado, sino uno compatible con S7-300/400, una opción que puede establecer al crear un DB en el portal de TIA. Esta lib también permite leer y escribir todos los puertos de E/S, los "registros en la sombra" (no estoy seguro de cómo se llaman oficialmente) y también directamente, anulando el primero.

Cuestiones relacionadas