Page tree

Matlab is used for many tasks in the control room. There is excellent support for control system related tasks and an extensive toolbox with useful functions and classes.

For the development of standalone applications, especially if they require a powerful modern graphical user interface, consider using Python instead.

Programming Conventions and Version Control

It is good practice to follow a small set of common rules when developing Matlab code for production use. We have collected these rules in a style guide. Additionally, all tools that are regularly used in the control room should be put under version control. See Git for Control Room Applications to get started.

Toolboxes and Libraries

  • DOOCS bindings: doocsread() and doocswrite() are supported, other variants (such as doocs_read, doocs_write, ttfw, ttfr) are not.
  • TINE bindings: xcomm() is supported.
  • HLC toolbox: The high level controls toolbox contains a multitude of useful classes and functions. See https://ttfinfo.desy.de/manuals/matlab/ for an overview. Released versions of the toolbox for the XFEL can be found under /home/xfeloper/released_software/matlab/hlc_toolbox_common and /home/xfeloper/released_software/matlab/hlc_toolbox_xfel on NFS shares.

App Installation

Matlab tools for use in the control room reside in ${HOME}/released_software/matlab, where ${HOME} is one of

  • /home/aresoper for ARES,
  • /home/ttflinac for FLASH, or
  • /home/xfeloper for the XFEL and Virtual XFEL.

Writing to these released_software directories is only allowed for members of the group doocsrepo. You can write an e-mail to doocs-rt@desy.de to become a member if you want to release software. Note that the operator users (aresoper, ttflinac, xfeloper) are not allowed to modify the contents of the released_software folder.

Installed Matlab tools must be traceable via a source code repository, preferably on the DOOCS GIT server. Installation is done with the script ${HOME}/released_software/scripts/release_software_package or similar tools.

  • No labels