MATLAB R2011b is available for download since midnight September 1, 2011!
Each new release brings some excitement, but for me this one is especially exciting. I have been waiting for a long time to talk about a great new feature: Simulink Projects.
Why Simulink Projects?
Since as far as I can remember, Simulink users always had concerns about how to best use Model-Based Design within a collaborative environment. Simulink Projects is designed to answer questions like:
- How to componentize your design?
- How to facilitate peer review workflows?
- How to do configuration management within Simulink?
- How to integrate with external data management tools?
- How to make it easy for everyone on the team to work in the same way?
- How to access standard tools and libraries across the company?
- How to create a more efficient team-working environment?
Enough said about what it is supposed to do... let's see what it looks like.
What is Simulink Projects?
The fundamental concept behind Simulink Projects is to create a standardized environment accessible by all members of a team, making collaborative workflows in Model-Based Design easier and more efficient.
To get started, you can look at an example project by executing the following command:
The Simulink Project window will be launched:
As you can guess just by looking at this image, the Simulink Project window allows you to:
- Collect, organize and view all the files in your project.
- Create shortcuts to run frequent tasks.
- Quickly identify modified files.
- Launch a dependency analysis.
- Add labels to files, for example to tag a file for review.
- Interface with source control software, such as Apache™ Subversion® (SVN)
and this is just the tip of the iceberg!
How to learn more about Simulink Projects?
To learn more about Simulink Projects, I recommend watching this introduction video:
You can also visit the Simulink Projects website at:
If you decide to give it a try, you can find the complete documentation here:
Now it's your turn!
What are your first impressions of Simulink Projects? Would you be interested to see a series of posts on collaborative workflows in Model-Based Design?
I would be really interested to hear how you currently manage your Simulink files, and if you think Simulink Projects could help you.
Please, leave a comment here.
15 CommentsOldest to Newest
Simulink Project has potential, but needs some work. It’s not obvious how to open it. Have to open Simulink and go to View. It appears not to work with TortoiseSVN 1.7. The SVN controls at the lower right are seemingly redundant and not as user friendly as the TortoiseSVN client. Dependency Analysis does not report the same as Show Dependency Report, why? Also Dependency Analysis doesn’t have the file tree structure like the All Files and Project Files has (even when Grouping by Path). Load calls to .mat files show up in the dependency report, but calls to files from xlsread do not. The .xls and .xlsx files need to show on the dependency report. Not clear how branches are handled.
Firstly, thanks for trying out Simulink Projects and taking the time to provide feedback — it’s greatly appreciated.
> It’s not obvious how to open it. Have to open Simulink and go to View.
We are keen to make it easy to find and open the Simulink Projects Tool. There are a few different things that we’re investigating, but it would be really useful to know where you would have expected to have gone to open Simulink Projects..? This will help make sure we’re on the right track with any changes we make in the next releases.
> Dependency Analysis does not report the same as Show Dependency Report, why?
The Simulink Project dependency analysis uses the same file dependency analysis engine as the Simulink Manifest Tools (linked from the Simulink Tools menu), and should give the same results. If you are seeing unexpected results from the analysis then please contact MathWorks techniccal support and we’ll try to help resolve the problem.
> Also Dependency Analysis doesn’t have the file tree structure like the All Files and Project Files has (even when Grouping by Path).
Thanks for suggesting this. We are investigating ways to make the results of the dependency analysis more accessible, but this is a new suggestion that we’ll add into our design ideas. Would this be useful so that you can easily find a specific file and look at what that file’s dependencies are, or for something else?
> Load calls to .mat files show up in the dependency report, but calls to files from xlsread do not. The .xls and .xlsx files need to show on the dependency report.
Dependencies introduced by “xlsread” should be handled in the same way as, for example, calls to “load”, subject to the caveats in
If you are seeing unexpected results from the analysis
then please contact MathWorks techniccal support and we’ll try to help resolve the problem.
> It appears not to work with TortoiseSVN 1.7.
Unfortunately, TortoiseSVN 1.7 was released too late in our release cycle for us to react to it for R2011b. We’re currently investigating the compatibility of SVN 1.7 and Simulink Projects in R2011b and may release an update of the “adapter” that links SVN to Simulink Projects.
> The SVN controls at the lower right are seemingly redundant and not as user friendly as the TortoiseSVN client.
We’re sorry to hear that these controls are not as user friendly as you’d hoped. We are planning various improvements both to the user interface, and to the SVN interface, that we hope will improve things.
The “refresh” button updates the locally cached status of files within the project to ensure that everything is in sync with the SVN repository. The “update” button performs an SVN “update” operations.
> Not clear how branches are handled.
We do not currently provide much support for branching with Simulink Projects. Instead, we recommend that this should be done using the installed SVN client, such as TortoiseSVN. We are looking to add branching support in a future release.
Thanks again for the feedback.
I can’t seem to get Simulink Project to integrate with a VisualSVN server for Windows which uses domain based authentication. Is this because I have tortoise svn 1.7.2 installed? I also have the svn CLI utilities installed and available from the windows cmd line.
Been getting this error when I hit “convert” to activate source control within Simulink project.
Exception in thread “Thread-189″ java.lang.NullPointerException: The delegate CMAdapter is null
at java.lang.Thread.run(Unknown Source)
Thank you for reporting that. Unfortunately this is a bug. You can find a description of the issue and workarounds in the following bug report:
This looks quite interesting. But we want to use git rather than svn in upcoming projects. Are there any plans to support other version control systems?
We may support other open-source source control tools in the future — thanks for letting us know that Git is of interest to you.
To develop an integration with other source control tools, we ship a detailed Adapter Software Development Kit as part of Simulink (R2012a onwards).
Awesome… I hear WordStar just integrated with CVS.
This a decade late and a low-utility feature.
The rest of the world has moved on to git or hg (Mercurial) unless they were coned into using ClearCase or CM Synergy.
In all cases branch management is the primary issue and that means we need 3-way merge.
Model references are good but they were not more important than 3-way merge, it was a mistake to implement that first.
Please update the .mdl format to XML and provide a smart 3-way merge tool for models. Design the schema to make merging easy.
in R2012b it will be possible to save (and load) the Simulink models in (zipped) XML format.
Please check it out in the prerelease (see latest post by Seth).
I’ll second the request for git support. I’d love to have built in support for git in Simulink.
Now, in 2013, is it still the right way to start our first steps with source control via svn? Or shall we wait for a simulink-git-version?
Any feedback on comment 6 onwards? It has been more than a year (Dec, 2013)
Do you have any plans to build support for git in Simulink?
Thank you in advance
Bump.. Git support is essential.. When will it be ready?
@Chris Woodruff, @Andreas, @Rafael, @Patrick – Have you tried the R2014a pre-release?
I don’t know if this is the place to post this or not. I am currently doing my thesis and I an examining different version Control systems and diff/merge tools working in a modelbased environment like Simulink.
I have a hard time seeing the use for the merge tool in Simulink and I hope you can help me shed some light into this. Why on earth is it only posible to do merge in one direction? And I dont seem to be able to save and switch sides to be able to pick two different components from two developers. I also wonder if there is plans to make Three way merges possible?
I’m sure I have just missused/missunderstood something in the diff/merge tool but it does not seem very helpful when collaborating i larger teams? I really like the idea of having this tool integrated into simulink and have developers work in an Environment they know well and are comfortable in.
I’m managing the creation of a large Simulink model for a large aircraft manufacturer.
Our modelling teams (both internal and external to our company) are distributed internationally, and we cannot offer continuous data connection to a single centralized server, so we have chosen to go with the git distributed version control system.
For security reasons, we want to limit access for the teams to the parts of the model they are working on – In other words, we need to store their code in separate git repositories, and reference common libraries as git submodules.
What I would like to do is to locate these repos in parallel on a file system. The Simulink Projects system requires that the project artifacts are stored in a directory below that where the project file resides. So potentially, I could have all my Simulink project files in parallel at the top of a folder tree within which all my artifacts in their independent git repos reside.
Unfortunately, all of those Simulink Projects will be using the same .SimulinkProject folder, conflicting with each other.
It seems, that to allow the kind of access control I’m looking for, either we need unique names for the .SimuliinkProject folder (e.g. .SimulinkProject_PROJECTNAME), or we need the option of including artifacts in locations anywhere in a filesystem, not just below the project file.
Have I missed something?