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