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.

4 de enero de 2010

Conectando con un Beckhoff CX9010 a través de ethernet

El PLC Beckhoff CX9010 se programa a través de unos de los dos puertos ethernet que trae. Programar a través de ethernet solo tiene ventajas: es rápido, prácticamente cualquier ordenador sirve y sin problemas de tierras.

El CX9010 no es un PLC propiamente dicho, es un PC embebido (con procesador ARM) que lleva como sistema operativo Microsoft Windows CE y ejecuta un PLC virtual (soft PLC). Para conectarse a él existen varios métodos. Al tener un Windows CE lo podemos integrar en una red y programarlo desde donde queramos, incluso a través de internet. Cutre-foto con mi móvil:


En mi caso me voy a conectar directamente con un cable ethernet cruzado. Lo primero es ir a la conexión de red de nuestro PC a las propiedades de la conexión TCP/IP y marcar la casilla 'Obtener dirección IP automáticamente'.