www.gusucode.com > rtwdemos 工具箱matlab源码程序 > rtwdemos/rtwdemo_advsc_data.m

    function rtwdemo_advsc_data(sc)
%RTWDEMO_ADVSC_INIT  Define Simulink data objects for advanced data packaging example.

%
% Copyright 1994-2015 The MathWorks, Inc.

switch nargin
 case 0
  sc = 'Auto';
 case 1
  % No action
 otherwise
   DAStudio.error('rtwdemos:general:NeedOneOrLessArgs')
end

% Define data type object
l_CreateData('MYTYPE',  'DataType', 'Double');

% Define signals
l_CreateData('input1',  'Signal', sc, 'MYTYPE');
l_CreateData('input2',  'Signal', sc, 'MYTYPE');
l_CreateData('input3',  'Signal', sc, 'MYTYPE');
l_CreateData('input4',  'Signal', sc, 'MYTYPE');
l_CreateData('output',  'Signal', sc, 'MYTYPE');

% Define states
l_CreateData('mode', 'State', sc, 'boolean');
l_CreateData('X',    'State', sc, 'MYTYPE');

% Define parameters
l_CreateData('K1',      'Parameter', sc, int8(2));
l_CreateData('K2',      'Parameter', sc, int8(3));
l_CreateData('T1Break', 'Parameter', sc, -5:5);
l_CreateData('T1Data',  'Parameter', sc, [-1,-0.99,-0.98,-0.96,-0.76,0,0.76,0.96,0.98,0.99,1]);
l_CreateData('T2Break', 'Parameter', sc, 1:3)
l_CreateData('T2Data',  'Parameter', sc, [4 5 6;16 19 20;10 18 23]);
l_CreateData('UPPER',   'Parameter', sc, 10);
l_CreateData('LOWER',   'Parameter', sc, -10);

% Set color of current configuration block.
model = get_param(bdroot(gcbh), 'Handle');
configBlks = find_system(model, 'MaskType', 'Advanced data packaging - create data');
for idx = 1:length(configBlks)
  set_param(configBlks(idx), 'BackGroundColor', 'Gray');
end
set_param(gcbh, 'BackGroundColor', 'Red');


%============================================================
% SUBFUNCTIONS:
%============================================================
function l_CreateData(name, dClass, varargin)
% Create a data object in the base workspace

% Special handling for different classes of data.
switch dClass
 case 'DataType'
  narginchk(3,3);
  tmpObj = Simulink.NumericType;
  % Set DataTypeMode
  tmpObj.DataTypeMode = varargin{1};
  tmpObj.IsAlias = true;
  
 case 'Parameter'
  narginchk(4,4);
  tmpObj = Simulink.Parameter;
  % Set Value
  sc = varargin{1};
  tmpObj.Value = varargin{2};
  % Set StructName for Custom storage class
  structName = 'PARAM';
  
 case {'Signal', 'State'}
  narginchk(4,4);
  tmpObj = Simulink.Signal;
  % Set state attributes
  sc = varargin{1};
  tmpObj.DataType = varargin{2};
  tmpObj.Dimensions = 1;
  tmpObj.Complexity = 'real';
  tmpObj.SampleTime = 1;
  
  % Set StructName for Custom storage class
  if isequal(dClass, 'Signal')
    structName = 'SIGNAL';
  else
    structName = 'STATE';
  end      
 otherwise
  DAStudio.error('rtwdemos:rtwdemo_advsc_data:InvalidClass')
end

if exist('sc', 'var')
  % Set common data attributes:
  % - StorageClass
  tmpObj.CoderInfo.StorageClass = sc;
  
  % - CustomStorageClass
  if strcmp(sc, 'Custom')
    tmpObj.CoderInfo.CustomStorageClass = 'Struct';
    tmpObj.CoderInfo.CustomAttributes.StructName = structName;
  end
end

% Add variable to base workspace.
assignin('base', name, tmpObj);
  
%endfunction

% EOF