To configure MATLAB, you may modify an example such as
the one in the directory
BCVTB/examples/matlab-room
, or you may
create new input files. This section describes the latter
approach, which consists of creating a MATLAB script and
a Ptolemy II model.
A MATLAB script that exchanges data with the BCVTB has the following structure:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Initialize variables % ... (not shown) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Add path to BCVTB matlab libraries addpath( strcat(getenv('BCVTB_HOME'), '/lib/matlab')); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Establish the socket connection sockfd = establishClientSocket('socket.cfg'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Exchange data (call this at each time step) % ... (loop over each time step) [retVal, flaRea, simTimRea, dblValRea ] = ... exchangeDoublesWithSocket(sockfd, flaWri, length(u), simTimWri, ... dblValWri); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Close socket at the end of the simulation closeIPC(sockfd); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Exit MATLAB exit
For a complete MATLAB script that also includes error
handling, see the file simulateAndExit.m
in
the directory bcvtb/examples/matlab-room
.
To start MATLAB from Ptolemy II, you will need to create
a Ptolemy II model. The model
BCVTB/examples/matlab-room/system.xml
shown
in
Figure 5.17
may be used as a starting point. In this example, MATLAB
computes the temperature change in two rooms for a given
control input. The controller is implemented in Ptolemy
II.
Figure 5.17.
Ptolemy II system model that links an actor that computes a control signal with the Simulator
actor that communicates with MATLAB.
In this model, the Simulator
actor that
calls MATLAB is configured as follows:
This completes the configuration.