22 de febrero de 2010

Cursos on line de autoaprendizaje de Siemens

Navegando por la web de automatización de Siemens me he encontrado con una interesante sección llamada "Zona de Autoestudio", que son cursos on line sobre varios de sus productos. La temática es variada: PLC, HMI, buses de campo y accionamientos. Están orientados a gente que quiera iniciarse en el campo de la automatización industrial y son un complemento al programa de formación SITRAIN.

Se puede acceder a los cursos desde este enlace, pero si no usamos una versión actualizada de Internet Explorer y Flash nos denegará el acceso. Sin embargo yo he accedido sin problemas desde Firefox a través los enlaces que están a continuación.

Los cursos en español son:

Conocimientos básicos de LOGO!
Tutorial de LOGO! Soft Comfort.
Proyectos con LOGO!

Introducción al SIMATIC S7-200.


Introducción a los PLC, basado en los autómatas programables SIMATIC S7-300 / S7-400.

Conocimientos básicos sobre arquitectura y protocolos de comunicación de una red Profibus.


Curso gráfico sobre el accionamiento Micromaster 420 (configuración hardware, montaje, instalación y parametrización).

También están disponibles los siguientes cursos en inglés:

Introducción a la red Profinet.

Introducción a la red Industrial Ethernet.

WinCC Flexible para nuevos usuarios.


Tutorial sobre la configuración, hardware, montaje y parametrización del accionamiento SINAMICS G120.


Está anunciado, pero aún no disponible, un curso sobre los nuevos PLC SIMATIC S7-1200.

Ya fuera de la temática de los cursos, Siemens tiene disponible para su descarga toda su colección de manuales SIMATIC en este enlace (visto en InfoPLC). Eso sí, hay que tener paciencia porque ocupa más de cuatro gigabytes.

17 de febrero de 2010

Comunicación serie en un PLC Beckhoff CX9010 (interfaz CX9010-N030)

Si necesitamos implementar comunicación serie RS-232 en un PLC CX90x0 de Beckhoff tenemos dos opciones: añadir una interfaz CX90x0-N030, que trae dos puertos RS232 con conector SUB-D, o la opción de una tarjeta EL6001 de terminales enchufables. En mi caso he optado por la primera opción; estas notas describen como configurar y programar una comunicación serie con una interfaz CX9010-N030.

El primer paso será incluir el puerto serie en la configuración, así que abrimos el TwinCAT System Manager y vamos en nuestro proyecto a 'Configuración E/S -> Dispositivos de E/S' con el botón derecho del ratón y seleccionamos 'Agregar dispositivo...'


En la ventana de 'Insertar dispositivo de E/S' seleccionamos 'Micelánea -> Puerto de comunicación serie' y pulsamos OK.

8 de febrero de 2010

Comunicación entre un PLC Beckhoff y Visual Basic

En una aplicación reciente he tenido que comunicar a través de Ethernet un PLC Beckhoff CX9010 con una aplicación programada en Visual Basic 2008 Express. Para realizar esta conexión tenemos a nuestra disposición de manera gratuita controles OCX y DLL de comunicación. Estas son las notas que resumen las pruebas que hice para obtener una comunicación óptima.

La comunicación entre el PLC y Visual Basic se realiza mediante el protocolo ADS (Automation Device Specification) y funciona sobre los protocolos TCP/IP o UDP/IP. En el PLC no es necesario realizar ninguna configuración especial. Simplemente se deben tener claras las variables que necesitamos comunicar para poder agruparlas y leerlas y/o escribirlas en una única operación. Mis primeras pruebas leían y escribían variables individualmente, pero al pasar de un pequeño número de operaciones de lectura/escritura el programa se ralentizaba. Entonces opté por agrupar todas las variables necesarias en dos estructuras, una con los datos que se van a leer desde la aplicación en Visual Basic (estructura de lectura) y otra con los datos que la aplicación podrá modificar (estructura de escritura). Como ejemplo pondré estas dos estructuras declaradas en 'Data types':

27 de enero de 2010

Remanencia de datos en un Beckhoff CX9010

El Beckhoff CX9010 es en realidad un PC embebido con procesador ARM que ejecuta Windows CE. Esta configuración le otorga ventajas frente a un PLC convencional, entre las que destacan una mayor conectividad y accesibilidad. Sin embargo también existen inconvenientes. Cuando apagamos un PLC no nos preocupa qué pasará si hay un corte de corriente, es algo con lo que se cuenta en su diseño. Sin embargo un PC requiere un apagado de forma controlada, para evitar pérdida de datos. Si el CX9010 sufre un corte de alimentación puede que los últimos datos que estemos manejando se pierdan... si no tomamos las precauciones adecuadas.

Para realizar la remanencia de datos en el CX9010, Beckhoff nos ofrece dos alternativas. La primera es escribir en la memoria flash que usa a modo de disco duro. Mediante el bloque de función FB_WritePersistentData podremos almacenar nuestras variables. El inconveniente es que si se produce una caída de tensión en medio de un proceso de escritura puede haber corrupción de datos, además de tener en cuenta que no podemos abusar de la escritura en memoria flash ya que puede sufrir desgaste por machacar demasiado la misma zona de memoria. La segunda alternativa, que será la que desarrolle a continuación, consiste en usar el dispositivo NOV/DP-RAM que viene integrado en el CX9010.

11 de enero de 2010

Comunicación Profibus entre un Beckhoff CX9010 y un servomotor Festo MTR-DCI (parte 2ª)

Teniendo el servomotor configurado y comunicando en la primera parte, vamos ahora con la programación.

En el CD que acompaña al servomotor viene un ejemplo de programación para Step7 y no dice nada de Beckhoff (ni de ningún otro fabricante). Explorando un poco el ejemplo veo que el control se hace a través de un FB escrito en lista de instrucciones (AWL), que afortunadamente no está protegido y puedo analizarlo: lo que se hace es leer 8 bytes de entrada a través de Profibus, se interpretan según el modo de funcionamiento del servomotor, se codifican los posibles comandos al servomotor en 8 bytes de salida y finalmente se transmiten por Profibus. Lo que voy a hacer es 'traducir' el código en AWL de Step7 a lenguaje ST para el CX9010.

ADVERTENCIA: El código que presento a continuación lo he probado únicamente utilizando el servomotor en posicionamiento absoluto. Para los demás modos de funcionamiento debería funcionar, he procurado ser meticuloso a la hora de transcribir el código, pero puede haber errores. Si usas este código y te funciona, si le haces modificaciones o si encuentras un error te agradecería que me lo comuniques.

Para empezar voy a declarar los tipos de datos necesarios. He intentado respetar al máximo la programación hecha en Step7 por Festo, los nombres de las variables son un calco y su funcionalidad idéntica.

7 de enero de 2010

Comunicación Profibus entre un PLC Beckhoff CX9010 y un servomotor Festo MTR-DCI (parte 1ª)

En mi PLC Beckhoff CX9010 tengo pinchada una tarjeta maestra de Profibus EL6731. Con ella voy a controlar un servomotor Festo MTR-DCI, exactamente el mismo modelo que probé en esta entrada, solo que en aquella ocasión el control lo hacía desde un Siemens S7-300.

Empecemos por instalar los ficheros de configuración GSD del servomotor. Para ello vamos al CD que viene con el servomotor (o en la web de Festo) y los copiamos al directorio C:\TwinCAT\Io\Profibus (la ruta depende de donde hayamos instalado el TwinCAT).


NOTA: Voy a suponer que el servomotor tiene dirección Profibus 6 y una configuración similar a la mostrada en esta entrada.

Ahora voy a configurar la red Profibus para comunicarme con el servomotor. En el TwinCAT System Manager, selecciono:
Configuración E/S => Dispositivos de E/S => Dispositivo 4 (EL6731)
y voy a la pestaña 'EL6731'.


Dejo la dirección Profibus 1 para la tarjeta EL6731 y ajusto la velocidad a 12 megas (el servomotor la ajusta automáticamente), el resto de parámetros los dejo tal y como están.