Pregunta

Estamos utilizando Matlab Simulink para el desarrollo de modelos (y la codificación automática de Real-Time Workshop) dentro de un equipo de varios desarrolladores.

Actualmente usamos Visual Source Safe (sí, sé que es terrible) para el control de versiones, usando bloqueos para evitar cambios conflictivos.

Nos gustaría migrar nuestro programa a un sistema de control de versiones diferente (svn, hg o git), pero nos preocupa realizar fusiones y diferencias en archivos .mdl de Simulink.

¿Alguien tiene experiencia útil en la realización de fusiones en archivos de Simulink?

¿Fue útil?

Solución

fusión de texto de los archivos de modelos de Simulink será difícil. He aquí un artículo que da un poco de información sobre la gestión de configuración cuando usando Simulink.

En cuanto a las diferenciaciones, hay una herramienta de diferenciación en el generador de informes de Simulink a partir Creo en R2008b +. He aquí un enlace al doc para esa función .

Mike

Otros consejos

SimDiff hará lo que usted necesita. Puede sincronizarlo con cualquier sistema de control de gestión de configuración de software / versión que te gusta.

En el documento se hace referencia SAE 2007 por Mike fue escrito antes de SimMerge (más tarde rebautizado a SimDiff 4) estaba disponible. Ahora se puede utilizar un sistema de gestión de configuración de software moderno como AccuRev o IBM Unificado de Gestión del Cambio para sus proyectos de Simulink.

Existen al menos dos nuevos documentos que reemplazan el documento de 2007. El de espectáculos Xilinx exactamente cómo integrar SimDiff con SVN / Subversion.

Divulgación:. Yo estaba involucrado en el desarrollo de SimDiff a partir 2005-2015

Como se ha mencionado Mathworks están trabajando en herramientas de diferenciación para Simulink, básicamente exportarlos a archivos XML y luego compararlos. Aunque no creo que le ayudará en la fusión de los archivos más que cualquier otro sistema de control de versiones existentes pueden.

He empezado a utilizar Mercurial de nuestro código MATLAB y modelos de Simulink. Funciona bien y rápido en algunas bastante grandes modelos de Simulink, sino como un único promotor no he tenido que hacer frente a cualquier fusión complicadas aún. Un simple diff y de combinación generalmente arroja varios conflictos que no son más que cambios de sintaxis, por lo general los sellos de fecha y números de versión.

Mi sugerencia sería, si es posible, utilizar referencias de los modelos. Tengo una gran maqueta que básicamente vincula media docena de modelos sub utilizando el modelo de referencia. Cada modelo sub está bajo el control de versiones y sólo un desarrollador es responsable de un modelo sub entonces los pasos secundarios de muchos de los problemas en la fusión de diferentes modelos de Simulink.

The Mathworks recomendamos utilizar Proyectos de Simulink, que es nuevo en R2011b. Vea la Seth de Simulink el blog para más detalles.

Proyectos Simulink integrará el MATLAB / Simulink con el sistema de control de versiones, así como proporcionar características adicionales.

En cuanto a la fusión de Simulink va, yo creo que la mejor práctica actual es evitar tanto como sea posible. Esto se puede hacer utilizando referencias modelo y enlaces de la biblioteca, en su caso, para asegurar que cada elemento de configuración es lo suficientemente pequeño.

Los archivos diff puede DiffPlug Simulink gráficamente, y se integra en SVN y Git. Tiene una interfaz de línea de comandos, lo que probablemente podría integrarlo con SourceSafe también ...

http://www.diffplug.com/products/dp.simulink.differ

Xilinx ha publicado recientemente un nota de la aplicación que detalla cómo configurar Subversion con SimDiff y SimMerge para el desarrollo en equipo de modelos de Simulink.

De la nota de la aplicación:

"Esta nota de aplicación proporciona una descripción general sobre cómo realizar el control de versiones de origen y el diseño basado en equipos utilizando la herramienta System Generator.Estas tareas se pueden realizar utilizando las funciones de control de versiones nativas del entorno de software MATLAB®Simulink® o con un sistema de control de fuente externo.Si bien esta nota de aplicación se centra en Subversion, un conocido sistema de control gratuito de código abierto, también se pueden utilizar otros programas de control de versiones como CVS, MS Source Safe y Clear Case, según el entorno de diseño.Esta nota de aplicación también demuestra cómo comparar y fusionar gráficamente diseños basados ​​en modelos utilizando los paquetes de software externos SimDiff y SimMerge de Ensoft."

A pesar de que no tengo una experiencia específica, se ocupa de SVN archivos no son de texto también. Tiene dos opciones:

  1. Si los archivos mdl no son binarios ya (que ha sido demasiados años desde que he usado Simulink) establecer el archivo svn: mime-type para los archivos mdl a "application / octet-stream" utilizando el auto propiedades cuentan o estableciendo la propiedad manualmente con propset sVN. No se intentará fusionar, y en un registro en conflicto requiere acción del operador para resolver las diferencias.
  2. Configure su repositorio para ser un bloqueo, como VSS (no hay llamas, por favor). Aquí es un buen paso a paso guía .

Por favor, eche un vistazo a http://www.ikv.de/mediniunite/ Tal vez eso ayuda a resolver sus problemas. Con Medini unen estamos proporcionando a / Merge-herramienta muy útil para Dif Matlab / Simulink / Stateflow que es muy fácil de usar y, por supuesto, para integrar dentro de los diferentes sistemas de control de versiones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top