Mostrando entradas con la etiqueta Beckhoff. Mostrar todas las entradas
Mostrando entradas con la etiqueta Beckhoff. Mostrar todas las entradas

7 de octubre de 2012

Comunicación entre un PLC Beckhoff BC8150 y un panel Pro-face GP4105

En las entradas anteriores me preparé para la programación de un PLC Beckhoff BC8150. Al puerto serie de este PLC, haciendo la función de HMI, voy a conectar un panel táctil Pro-Face GP4105. En esta entrada voy a explicar los pasos que he dado para comunicar ambos dispositivos.


El protocolo de comunicación que se va a utilizar es Modbus RTU. En el PLC simplemente hay que darle una dirección entre 40 y 59 en los interruptores rotatorios que tiene en el frontal (con una dirección superior a 40 el PLC se configura automáticamente en Modbus RTU).

El cable de comunicación tendrá por un extremo un conector DB9 macho para el PLC y el otro lo embornaremos en el panel, con el siguiente conexionado:

4 de octubre de 2012

Mapeado de entradas/salidas y configuración para un PLC Beckhoff 8150

En la entrada anterior preparé la comunicación con el PLC y, partiendo de ahí, voy a realizar el mapeado de entradas/salidas y la configuración del PLC para dejarlo listo para empezar a programar.

NOTA: La versión de TwinCAT que estoy utilizando es la 2.11.2220

El primer paso será ejecutar el TwinCAT PLC Control y generar un nuevo proyecto.


Nos pedirá el tipo de comunicación con el PLC y, según la tenemos configurada, deberemos marcar BCxx50 or BX a través de AMS.

3 de octubre de 2012

Preparativos para programar un PLC Beckhoff BC8150

Tengo entre manos un proyecto para el que hemos seleccionado un PLC Beckhoff BC8150. Es un PLC económico de gama baja que lleva incorporado un puerto serie RS232. En esta entrada voy a describir los pasos que tuve que dar para configurar la comunicación para programarlo.


En esta ocasión he instalado el software de programación TwinCAT (descargable gratuitamente desde aquí) en una máquina virtual. La conexión con el PLC será a través de un cable de programación serie, que ya tenía de proyectos anteriores. Mi portátil viene con puerto serie integrado, pero he notado que de vez en cuando pierde la comunicación, no recuperándola hasta reiniciar la máquina virtual. Sin embargo, usando un adaptador serie/USB con chipset Prolific el funcionamiento ha sido óptimo.

El BC8150 tiene dos ruedas numeradas donde se selecciona el protocolo y la dirección de comunicación. Si la dirección está entre 0 y 39 el protocolo será autoconfigurable. Entre 40 y 59 el protocolo será Modbus RTU. Para programar será necesario que la dirección sea inferior a 40 (más información aquí).

NOTA: Aunque físicamente hay dos conectores serie (el superior para programación con el cable de Beckhoff y el inferior para la conexión de dispositivos), internamente deben ser el mismo. Esto implica que si tenemos un dispositivo conectado al puerto DB9, para poder programar deberemos desconectarlo.

Con mi PLC alimentado y el cable serie conectado puedo empezar a configurar la comunicación. Sobre el icono de TwinCAT, con el botón derecho, pulso sobre Properties.

8 de marzo de 2010

Preparar un PC para comunicar con un PLC Beckhoff a través de Ethernet

Supongamos la siguiente situación: tengo un PLC Beckhoff con el que realizo intercambio de datos para mostrarlos en una aplicación hecha en Visual Basic (o .NET) a través de Ethernet (ver esta entrada). En el ordenador con el que he hecho la programación no hay problemas, la comunicación es impecable, pero si nos llevamos el ejecutable del programa (con sus respectivas bibliotecas DLL y similares) a otro PC nos vamos a encontrar con que no funciona.

El motivo es que la comunicación con el PLC se hace a través de un enrutado propio de Beckhoff: AMS Router. Por lo tanto es imprescindible instalar TwinCAT en todos los PC que vayan a ejecutar la aplicación. En el proceso de instalación es suficiente con seleccionar la opción TwinCAT CP, que es el controlador de Beckhoff para paneles de control (Control Panels).

Advertencia: es imprescindible que el sistema operativo del PC sea de 32 bits, yo lo he probado con éxito sobre un Windows 7 Starter.

Una vez instalado reiniciamos el PC y en el arranque aparecerá la siguiente pantalla (que hasta donde yo sé, no se puede ocultar):

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.

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'.

3 de agosto de 2009

Mapeado de entradas/salidas en un PLC Beckhoff BC3100

[ACTUALIZACIÓN: Alguien de Beckhoff ha leído el blog y el departamento comercial se ha puesto en contacto conmigo para hacer alguna aclaración. Entiendo por lo que me cuenta que es normal que el KS2000 no haga bien la configuración con el BC3100, ya que no está soportada esta función, y aclara que "la serie BC3100 fue de los primeros PLCs con I/F PROFIBUS DP y que actualmente el BC3150 soporta el System Manager para poder vincular sus variables globales a E/S físicas del PLC." De todas formas no me gustaría que quedase la impresión de que no me ha gustado programar en Beckhoff, tan sólo he usado el PLC para una función muy concreta y ha funcionado perfectamente.]

En mi primera entrada conté como se realizaba la comunicación Profibus entre un PLC Beckhoff BC3100 y un Siemens S7-300; las pruebas las hice con un técnico de Beckhoff y claro, con su ayuda todo salió rodado. Ahora me he puesto yo solo contra el BC3100 y no ha salido todo tan bien. Este PLC es un poco particular con el mapeado de entradas/salidas, ya que no solo depende de la posición de las tarjetas en el bastidor, si no que también importa el tipo de tarjeta. En teoría, si nos conectamos con la aplicación KS2000 de Beckhoff al PLC con todos sus módulos conectados debería leer el mapeado y mostrárnoslo... pero por lo visto, al menos con este PLC, falla:

7 de julio de 2009

Comunicación PLC Siemens S7-300 con PLC Beckhoff BC3100 a través de Profibus

Hace unos días estuve con técnico de Beckhoff para hacer pruebas de comunicación Profibus entre un autómata de Siemens 313C-2DP y un Beckhoff BC3100.

Esta es mi primera toma de contacto con un Beckhoff y tiene buena pinta. Lo primero es conocer la peculiaridades de direccionamiento de Beckhoff. En la pruebas que hice tenía el autómata configurado con:
  • una tarjeta de 8 entradas digitales
  • una tarjeta de 8 salidas digitales
  • una tarjeta de entrada analógica
  • una tarjeta de salida analógica
Lo primero a tener en cuenta es que el direccionamiento no depende totalmente de la posición física de los módulos en el bastidor del autómata. El mapeado se realiza de izquierda a derecha, pero dando prioridad a los módulos analógicos.