Saltar al contenido

Conectando SolidWorks y MATLAB

  • TUTORIAL

En la publicación Conectando Pro/ENGINEER y MATLAB explicaba cómo vincular dichos programas para poder caracterizar y diseñar el control de modelos mecánicos hechos en Pro/ENGINEER. Teniendo en cuenta que además de Pro/ENGINEER hay otros programas dedicados a diseño y que se pueden conectar con MATLAB, he decidido hacer esta publicación en la que explicaré el proceso de conexión de SolidWorks con MATLAB.

Para comenzar debemos descargar las librerías que vincularán los dos programas, vamos a SimMechanics Link y luego de ingresar algunos datos escogemos el archivo que mejor se ajuste a la versión y a la arquitectura del MATLAB y del SolidWorks que están instalados en el computador. Para mi caso descargo la última versión de win64 ya que estoy trabajando con la versión 2012a de MATLAB y con la versión 2012 de SolidWorks sobre Windows 7 de 64bits.

Luego de descargar el archivo lo extraemos en la carpeta donde está instalado MATLAB, en mi caso sería en C:\Program Files\MATLABR2012a\, nos preguntará si queremos sobrescribir algunos archivos a lo que diremos que sí, seguidamente nos dirigimos a MATLAB y seleccionamos File > Set Path > Add with Subfolders, buscamos la carpeta C:\Program Files\MATLABR2012a\toolbox\physmod\smlink\, luego seleccionamos, aceptamos y para finalizar damos Save.

En la Command Window escribiremos smlink_linksw, luego aparecerá una alerta y preguntará si deseamos ejecutar una función privilegiada de MATLAB a lo que diremos que sí, al final saldrá un aviso informando que una dll ha sido agregada al registro.

Luego corremos SolidWorks y nos dirigimos a Herramientas > Complementos y seleccionamos el SimMechanics Link, de esta manera ya se podrán exportar los modelos de SolidWorks a MATLAB.

Ahora solo es necesario probar que las dos aplicaciones hayan quedado conectadas correctamente, así que buscamos un ensamble que hayamos hecho con anterioridad, para este caso usare el modelo del robot bípedo que aparece al inicio de esta publicación. En SolidWorks vamos a Archivo > Guardar como… y en tipo escogemos SimMechanics Link (*.xml), luego de guardar deberán aparecer algunos archivos .stl en la carpeta donde se guardó el archivo .xml.

Nos dirigimos a MATLAB y en la Command Window escribimos mech_import lo que nos abrirá un cuadro de dialogo en el que podemos buscar el archivo XML creado anteriormente, luego veremos el diagrama de bloques en Simulink y ya podremos dedicarnos a las tareas exactas de modelado y control.

Sí ejecutamos el diagrama de bloques veremos que en la simulación no aparecerán solo barras simulando los eslabones, sino que aparecerán los cuerpos tal como los diseñamos.

Si tienes alguna inquietud no dudes en comentar.

50 comentarios en «Conectando SolidWorks y MATLAB»

    1. Hola Anthony, es un error en la publicación que ya está corregido, en la parte en la que menciono que se deben agregar las subcarpetas digo de que debe ser la C:\Program Files\MATLABR2012a\toolbox\physmod\smlinkcad_systems ahí está el error, debe ser C:\Program Files\MATLABR2012a\toolbox\physmod\smlink sin el cad_systems. Corregido eso MATLAB ya debe aceptar ese comando.

      Un saludo

  1. Hola,
    Yo he obtenido los bloques en SimMechanics como has explicado, pero mi problema es que cuando los simulo obtengo cuerpos nada realistas que distan mucho de sus dimensiones y cotas reales. ¿A qué puede ser debido? ¿Será algún problema de visualización?
    Saludos,
    Luis.

    1. Hola Luis, cuando Solid exportó el modelo a MATLAB creo un archivo .xml con el nombre del ensamble y algunos .stl con el nombre de las piezas del ensamble, para que SimMechanics los tome debes ir a la pantalla principal de MATLAB en la caja ‘Current Folder’ abres la carpeta donde están los archivos .stl, das click derecho en la caja, seleccionas Add to Path > Current Folder. Ahora si se deberían ver bien las piezas.

      Saludos

      1. Hola Palma, gracias por tu respuesta, me lo ha solucionado. Tengo ahora otra pregunta. Me gustaría saber si existe algún tipo de restricción en cuanto a formato de archivos en el proceso de puenteado de Solid a Simechanics. Más concretamente, saber si es necesario tener el ensamblaje en Solid para pasarlo a Simulink o se puede hacer desde un *.STEP por ejemplo. Mi problema es que tengo un CAD de un brazo robot que me viene diseñado de fábrica en un *.STEP y no sé si se pierden datos de joints entre piezas, contactos, inercias…
        Es que cuando exporto el CAD de un brazo robótico (en serie) de 6 grados de libertad, me hace un diagrama de bloques que no está en serie y es muy malo. Igual hay algún tipo de “regla” a seguir en cuanto a extensiones para el puente Solid Matlab…
        Saludos,
        Luis.

        1. Hola Luis, es mejor que utilices archivos nativos de SolidWorks o que por lo menos el ensamble sea hecho en Solid ,así las piezas sean STEP O IGES. Perdón por la tardanza en la respuesta.

          Saludos

      1. soy anónimo lo que pasa es que donde dice otros complementos no me sale el SimMechanics Link ,no se si podrá ser por que mi matlab es 2009a y tengo solidWorks 2011 o eso no tiene que ver con mi problema.
        GRACIAS POR TU RESPUESTA RÁPIDA A MI ANTERIOR MENSAJE.

        1. Hola anónimo, ese puede ser tu problema, la segunda imagen de esta publicación es la captura de pantalla de la pagina de Mathworks en la que mencionan la compatibilidad del software. Debes dirigirte allá y descargar los archivos compatibles con tu version de MATLAB.

          Saludos

  2. palma…
    me surgió un problema que no se como resolver. seguí el tutorial a pie de letra y todo funciono sin ningún inconveniente pero cuando fui a solidworks e intente guardar mi modelo este no me dejo guardar con la extencion de simmechanics. ya comprobé y el complemento aparece como activo pero no me deja usar la extencion .xml; se te agradecería mucho tu ayuda

  3. hola palma, realice todas las instrucciones hasta introducir el comando smlink_linksw me aparece este error: (Registering dll: regsvr32 “C:\Program Files\MATLABR2009a\bin\win32\cl_sldwks2sm.dll”) no ce que hice mal o porque pasa.
    otra pregunta es si se puede importar con el solidworks 2012 y matlab 2009, espero tu respuesta, muchas gracias.

    1. Hola Miguel, no es un error, ese mensaje debe aparecer, ahora deberías continuar con el proceso sin ningún problema. Por otro lado, no creo que haya problema con trabajar con SolidWorks 2012 y MATLAB 2009.

      Saludos

      1. hola palma, disculpa la molestia pero después de introducir el comando smlink_linksw me aparece este mensaje: ( se cargo el modulo “C:\Program Files\MATLABR2009a\bin\win32\cl_sldwks2sm.dll” pero se produjo un error en la llamada a DLL RegisterServer(Codigo de error: 0x80070005)).
        y en solidworks me sigue sin aparecer el complemento SimMechanics Link. espero tu respuesta, muchas gracias por tu ayuda.

  4. Hola Palma, he hecho todos los pasos que describes pero a la hora de guardar el ensamblaje en .xml no me aparece en la lista, ¿me podrías ayudar con ese problema?, mi versión de Solidworks es 2013 y la de Matlab es 2012b.

    Gracias.

  5. Me aparece este error “MATLAB:dispatcher:loadLibrary Can’t reload ‘C:\Program Files\MATLABR2012a\bin\win64\pmi_mli.dll’.” alguien sabe como solucionarlo? Me aparece cuando elijo el archivo en el matlab.

  6. Hola palma he seguido todos tus pasos hasta la parte donde activo el complemento..pero cuando voy a guardar como, el formato .xml no aparece como opcion para guardarlo(tengo matlab r2013a y solidwoks 2010 academico)cual podría ser el problema y su solucion.

    Gracias.

  7. Hola que tal…!!! al instalarlo me aparece este error:

    ??? Invalid MEX-file ‘C:\Windows\system32\version.dll’: .

    Error in ==> install_addon at 42
    matlab_rel = version(‘-release’);

    si alguien sabe como solucionarlo lo agradeceria mucho.

  8. Para las ultimas versines de solid works no tienen que poner guardar como simplemente en la pestaña que les sale de simmechanics link>export>SimMechanics first generation. ahi guardan su solido como archivo .xml suerte 😉

  9. Hola que tal, todo excelente hasta la parte donde se debe de introducir la instrucción “smlink_linksw”. Aparece un error que dice:

    “No se puede cargar el modulo “cl?sldks2sm.dll”. Asegurese de que el archivo binario esté almacenado en la ruta de acceso especificado o depúrelo para comprobar si hay problemas en el archivo binario o los archivos .DLL dependientes.

    No se puede encotnrar el módulo especificado”.

    Te agradeceré su respuesta. Gracias.

  10. Hola que tal, muy bueno el aporte, y pues al igual que el amigo Alvaro, todo me va bien pero al guardar el ensamble de solidworks con la extención .xml no me aparece en las opciones ese tipo de formato, alguna sugerencia de que pueda o deba hacer?, tengo instalado solidworks 2013 y matlab r2013a y tengo acctivadas las casillas de simmechanics link. de antemano agradezco tu atención… Saludos

  11. Hola que tal, todo excelente hasta la parte donde se debe de introducir la instrucción “smlink_linksw”. Aparece un error que dice:

    “No se puede cargar el modulo “cl?sldks2sm.dll”. Asegurese de que el archivo binario esté almacenado en la ruta de acceso especificado o depúrelo para comprobar si hay problemas en el archivo binario o los archivos .DLL dependientes.

    No se puede encotnrar el módulo especificado”.

    Te agradeceré su respuesta. Gracias.

  12. hol QU TAL TENGO UN INCONVENIENTE q AL EXPORTAR A SIMULINK NO M PASAN TODAS LAS CONFIGURACIONES ME SALEN ADVERTENCIAS DE CONTRASTES Y NO SE SIMULA COMO ESTA EN SOLIDWORK ME FALTA COLOR EN LAS PIEZAS

  13. Hola, buen día.

    Estoy desarrolando un proyecto y ps quiesierasaber si es necesario que ambas versiones tanto de Matlab como de Solidworksean del mismo año, me explico, tengo matlab 2017b,debo tener Solidworks 2017? o puedo trabajar conunaversión anterior de Solidworks.

    Muchas gracias.

    1. Hola Diego, en el primer enlace, de donde se descargan los archivos de conexión entre MATLAB y SolidWorks aparece un cuadro de compatibilidad y soporte entre versiones. Con ese cuadro se puede saber si es necesario que las versiones sean del mismo año o no, para el momento en que escribí esta entrada eran así, pero ahora desconozco si el soporte se ha ampliado.

      Saludos

  14. Hola, tengo instalados matlab 2012a y solidworks 2014, ya hice todos los pasos para tener disponible el complemento de “simMechanics link”, y poder exportar en primera generación. El detalle es que, no me aparece la opción “export”. Alguien podría ayudarme para hacer que aparezca la opción, por favor.

    1. Hola Circe, por comentarios anteriores tengo entendido que la forma de exportar cambia dependiendo de la versión del Solidworks. Una forma de hacerlo para Solidworks 2015 es ir al Menu Principal > Herramientas > SimMechaniks Link > Export. Te recomiendo probar este método y que nos informes si funciona.

      Saludos

  15. Buenas amigo, te queria hacer una consulta.
    Por medio de simmechanical puedo comunicar a matlab con solidworks para realizar una simulación dinamica con un tipo de controlador. Es decir, darle la entrada al sistema y demas a la planta?

    1. Hola Daniel, originalmente SimMechanical permite exportar los ensambles desde Solidworks a Simulink. Cuando los exporta crea los archivos STL para visualizar el ensamble en la simulación de MATLAB, y también exporta un archivo de Simulink donde aparece el esquema de las articulaciones y conexiones del ensamble. En este archivo de Simulink se podría programar un controlador, cuya salida se conectaría a la entrada de las articulaciones. Desconozco si actualmente hay una integración entre los dos programas que permita controlar los ensambles de Solidworks directamente desde Matlab.

      Saludos

Deja un comentario