From 9145a53c00f2a2981c1dc73dd25af5170801bf61 Mon Sep 17 00:00:00 2001 From: Rich <m87rich@iastate.edu> Date: Sat, 18 Feb 2017 00:23:41 -0600 Subject: [PATCH] Accurate sampling time enforcement added to model. --- controls/model/test_model_R2015A.mdl | 1750 +++++++++++-------------- controls/model/test_model_R2015Ax.slx | Bin 0 -> 44942 bytes 2 files changed, 769 insertions(+), 981 deletions(-) create mode 100644 controls/model/test_model_R2015Ax.slx diff --git a/controls/model/test_model_R2015A.mdl b/controls/model/test_model_R2015A.mdl index e9f89ef15..dc5c49d25 100644 --- a/controls/model/test_model_R2015A.mdl +++ b/controls/model/test_model_R2015A.mdl @@ -1,17 +1,18 @@ Model { Name "test_model_R2015A" Version 8.5 + MdlSubVersion 0 SavedCharacterEncoding "windows-1252" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" - ComputedModelVersion "1.1990" + ComputedModelVersion "1.1992" NumModelReferences 0 NumTestPointedSignals 0 } ScopeRefreshTime 0.035000 - OverrideScopeRefreshTime on + OverrideScopeRefreshTime off DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" @@ -28,7 +29,7 @@ Model { $ObjectID 2 $ClassName "Simulink.WindowInfo" IsActive [1] - Location [-8.0, -8.0, 1936.0, 1056.0] + Location [108.0, 36.0, 1742.0, 940.0] Object { $PropName "ModelBrowserInfo" $ObjectID 3 @@ -43,7 +44,7 @@ Model { $PropName "ExplorerBarInfo" $ObjectID 4 $ClassName "Simulink.ExplorerBarInfo" - Visible [0] + Visible [1] } Object { $PropName "EditorsInfo" @@ -52,9 +53,9 @@ Model { IsActive [1] ViewObjType "SimulinkSubsys" LoadSaveID "604" - Extents [1755.0, 906.0] + Extents [1692.0, 765.0] ZoomFactor [1.25] - Offset [-66.504761904761608, 11.616666666666674] + Offset [-66.304761904761563, 99.416666666666686] } } } @@ -62,13 +63,13 @@ Model { Creator "Andy" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%<Auto>" - LastModifiedBy "Andy" + LastModifiedBy "m87rich" ModifiedDateFormat "%<Auto>" - LastModifiedDate "Fri Feb 17 19:24:55 2017" - RTWModifiedTimeStamp 409260295 - ModelVersionFormat "1.%<AutoIncrement:1990>" + LastModifiedDate "Sat Feb 18 00:09:36 2017" + RTWModifiedTimeStamp 409277344 + ModelVersionFormat "1.%<AutoIncrement:1992>" ConfigurationManager "none" - SampleTimeColors off + SampleTimeColors on SampleTimeAnnotations off LibraryLinkDisplay "disabled" WideLines off @@ -107,7 +108,7 @@ Model { TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" - $ObjectID 7 + $ObjectID 6 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "test_model_R2015A" overrideMode_ [0.0] @@ -172,13 +173,13 @@ Model { Type "Handle" Dimension 1 Simulink.ConfigSet { - $ObjectID 8 + $ObjectID 7 Version "1.15.0" Array { Type "Handle" Dimension 8 Simulink.SolverCC { - $ObjectID 9 + $ObjectID 8 Version "1.15.0" StartTime "0.0" StopTime "20" @@ -199,8 +200,8 @@ Model { SolverMode "SingleTasking" EnableConcurrentExecution off ConcurrentTasks off - Solver ode45 - SolverName ode45 + Solver "ode45" + SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" @@ -213,7 +214,7 @@ Model { InsertRTBMode "Whenever possible" } Simulink.DataIOCC { - $ObjectID 10 + $ObjectID 9 Version "1.15.0" Decimation "1" ExternalInput "[t, u]" @@ -246,7 +247,7 @@ Model { Refine "1" } Simulink.OptimizationCC { - $ObjectID 11 + $ObjectID 10 Version "1.15.0" Array { Type "Cell" @@ -303,7 +304,7 @@ Model { AccelVerboseBuild off } Simulink.DebuggingCC { - $ObjectID 12 + $ObjectID 11 Version "1.15.0" RTPrefix "error" ConsistencyChecking "none" @@ -331,6 +332,7 @@ Model { IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "none" InheritedTsInSrcMsg "warning" + DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" @@ -391,7 +393,7 @@ Model { IntegerSaturationMsg "warning" } Simulink.HardwareCC { - $ObjectID 13 + $ObjectID 12 Version "1.15.0" ProdBitPerChar 8 ProdBitPerShort 16 @@ -431,7 +433,7 @@ Model { ProdEqTarget on } Simulink.ModelReferenceCC { - $ObjectID 14 + $ObjectID 13 Version "1.15.0" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" @@ -446,8 +448,9 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 15 + $ObjectID 14 Version "1.15.0" + SFSimOverflowDetection on SFSimEcho on SimCtrlC on SimIntegrity on @@ -458,7 +461,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 16 + $ObjectID 15 Version "1.15.0" Array { Type "Cell" @@ -484,8 +487,10 @@ Model { MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off + PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" + Description "" GenerateReport off SaveLog off RTWVerbose on @@ -496,6 +501,13 @@ Model { TLCAssert off RTWUseLocalCustomCode off RTWUseSimCustomCode off + CustomSourceCode "" + CustomHeaderCode "" + CustomInclude "" + CustomSource "" + CustomLibrary "" + CustomInitializer "" + CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off @@ -526,7 +538,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 17 + $ObjectID 16 Version "1.15.0" Array { Type "Cell" @@ -599,7 +611,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 18 + $ObjectID 17 Version "1.15.0" Array { Type "Cell" @@ -689,17 +701,17 @@ Model { } Name "Configuration" CurrentDlgPage "Diagnostics" - ConfigPrmDlgPosition [ 195, 142, 1085, 882 ] + ConfigPrmDlgPosition [ 195, 142, 1085, 882 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" - $ObjectID 8 + $ObjectID 7 } Object { $PropName "DataTransfer" - $ObjectID 20 + $ObjectID 18 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" @@ -761,9 +773,11 @@ Model { BlockParameterDefaults { Block { BlockType BusCreator + Inputs "4" DisplayOption "none" OutDataTypeStr "Inherit: auto" NonVirtualBus off + InheritFromInputs on } Block { BlockType BusSelector @@ -830,6 +844,8 @@ Model { IgnoreLimit off StateMustResolveToSignalObject off RTWStateStorageClass "Auto" + ICPrevOutput "DiscIntNeverNeededParam" + ICPrevScaledInput "DiscIntNeverNeededParam" } Block { BlockType Gain @@ -938,6 +954,8 @@ Model { FunctionName "system" SFunctionModules "''" PortCounts "[]" + SFunctionDeploymentMode off + EnableBusSupport off } Block { BlockType Saturate @@ -956,7 +974,23 @@ Model { } Block { BlockType Scope - Floating off + ModelBased off + TickLabels "OneTimeTick" + ZoomMode "on" + Grid "on" + ShowLegends off + TimeRange "auto" + YMin "-5" + YMax "5" + SaveToWorkspace off + SaveName "ScopeData" + DataFormat "Array" + LimitDataPoints on + MaxDataPoints "5000" + Decimation "1" + SampleInput off + SampleTime "-1" + ScrollMode off } Block { BlockType Step @@ -975,6 +1009,7 @@ Model { TreatAsAtomicUnit off MinAlgLoopOccurrences off PropExecContextOutsideSubsystem off + CheckFcnCallInpInsideContextMsg off SystemSampleTime "-1" RTWSystemCode "Auto" RTWFcnNameOpts "Auto" @@ -993,9 +1028,8 @@ Model { Opaque off MaskHideContents off SFBlockType "NONE" + Variant off GeneratePreprocessorConditionals off - PropagateVariantConditions off - TreatAsGroupedWhenPropagatingVariantConditions on ContentPreviewEnabled off IsWebBlock off } @@ -1025,7 +1059,7 @@ Model { } System { Name "test_model_R2015A" - Location [-8, -8, 1928, 1048] + Location [108, 36, 1850, 976] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -1039,20 +1073,19 @@ Model { ShowPageBoundaries off ZoomFactor "125" ReportName "simulink-default.rpt" - SIDHighWatermark "876" + SIDHighWatermark "885" Block { BlockType SubSystem Name " Sensors " SID "650" Ports [6, 3] - Position [1300, 422, 1520, 658] + Position [1195, 272, 1415, 508] ZOrder 73 ShowName off RequestExecContextInheritance off - Variant off Object { $PropName "MaskObject" - $ObjectID 21 + $ObjectID 19 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^{B}Omega', 'texmode', 'on');\nport_label('input', 2, '\\Theta', 'texmode', 'on');" "\nport_label('input', 3, '^{B}v_o', 'texmode', 'on');\nport_label('input', 4, '^{E}r_o', 'texmode', 'on');\nport_labe" @@ -1062,7 +1095,7 @@ Model { } System { Name " Sensors " - Location [-8, -8, 1928, 1048] + Location [108, 36, 1850, 976] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -1074,7 +1107,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "100" + ZoomFactor "125" Block { BlockType Inport Name "B_Omega" @@ -1087,7 +1120,7 @@ Model { BlockType Inport Name "euler_angles" SID "652" - Position [1720, 1043, 1750, 1057] + Position [1440, 1043, 1470, 1057] ZOrder 266 Port "2" IconDisplay "Port number" @@ -1105,7 +1138,7 @@ Model { BlockType Inport Name "E_ro" SID "654" - Position [1720, 963, 1750, 977] + Position [1440, 963, 1470, 977] ZOrder 268 Port "4" IconDisplay "Port number" @@ -1133,14 +1166,13 @@ Model { Name "3D Graphical Simulation" SID "698" Ports [2] - Position [2005, 1075, 2155, 1135] + Position [1725, 1075, 1875, 1135] ZOrder 287 Commented "on" RequestExecContextInheritance off - Variant off Object { $PropName "MaskObject" - $ObjectID 22 + $ObjectID 20 $ClassName "Simulink.Mask" Display "port_label('input',1,'r_{o}','texmode','on')\nport_label('input',2,'\\Theta','texmode','on')" } @@ -1186,7 +1218,6 @@ Model { ShowName off Inputs "3" DisplayOption "bar" - InheritFromInputs on } Block { BlockType BusCreator @@ -1198,7 +1229,6 @@ Model { ShowName off Inputs "3" DisplayOption "bar" - InheritFromInputs on } Block { BlockType BusCreator @@ -1210,7 +1240,6 @@ Model { ShowName off Inputs "3" DisplayOption "bar" - InheritFromInputs on } Block { BlockType BusSelector @@ -1323,11 +1352,10 @@ Model { Position [655, 92, 725, 138] ZOrder 5 ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off System { Name "MATLAB Function" Location [223, 338, 826, 833] @@ -1371,7 +1399,6 @@ Model { ZOrder 10 FunctionName "sf_sfun" PortCounts "[1 2]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -1451,7 +1478,7 @@ Model { Ports [2] Position [865, 76, 1055, 234] ZOrder -15 - LibraryVersion "1.36" + LibraryVersion "1.34" SourceBlock "vrlib/VR Sink" SourceType "Virtual Reality Sink" InstantiateOnLoad on @@ -1634,16 +1661,15 @@ Model { Position [2635, 815, 2785, 875] ZOrder 290 RequestExecContextInheritance off - Variant off Object { $PropName "MaskObject" - $ObjectID 23 + $ObjectID 21 $ClassName "Simulink.Mask" Display "port_label('input',1, '\\Theta','texmode','on')\nport_label('input',2,'r_{o}','texmode','on')" } System { Name "3D Graphical Simulation1" - Location [-8, -8, 1928, 1048] + Location [108, 36, 1850, 976] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -1683,7 +1709,6 @@ Model { ShowName off Inputs "3" DisplayOption "bar" - InheritFromInputs on } Block { BlockType BusCreator @@ -1695,7 +1720,6 @@ Model { ShowName off Inputs "3" DisplayOption "bar" - InheritFromInputs on } Block { BlockType BusCreator @@ -1707,7 +1731,6 @@ Model { ShowName off Inputs "3" DisplayOption "bar" - InheritFromInputs on } Block { BlockType BusSelector @@ -1820,11 +1843,10 @@ Model { Position [655, 92, 725, 138] ZOrder 5 ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off System { Name "MATLAB Function" Location [223, 338, 826, 833] @@ -1868,7 +1890,6 @@ Model { ZOrder 10 FunctionName "sf_sfun" PortCounts "[1 2]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -1948,7 +1969,7 @@ Model { Ports [2] Position [865, 76, 1055, 234] ZOrder -15 - LibraryVersion "1.36" + LibraryVersion "1.34" SourceBlock "vrlib/VR Sink" SourceType "Virtual Reality Sink" InstantiateOnLoad on @@ -1961,6 +1982,17 @@ Model { AutoView on VideoDimensions "[]" AllowVariableSize off + FigureProperties "{'Position', 'Name', 'Viewpoint', 'CameraBound', 'CameraDirection', 'CameraPosition', '" + "CameraUpVector', 'ZoomFactor', 'Antialiasing', 'Headlight', 'Lighting', 'NavPanel', 'Sound', 'StatusBar', 'Ster" + "eo3D', 'Stereo3DCameraOffset', 'Stereo3DHIT', 'ToolBar', 'Textures', 'Transparency', 'Triad', 'Wireframe', 'Nav" + "Zones', 'NavMode', 'NavSpeed', 'CaptureFileFormat', 'CaptureFileName', 'Record2DCompressMethod', 'Record2DCompr" + "essQuality', 'Record2D', 'Record2DFileName', 'Record2DFPS'; [5.0000000000000000e+00 9.2000000000000000e+01 " + "5.7600000000000000e+02 3.8000000000000000e+02], '', '_untitled_1', 'on', [0.0000000000000000e+00 0.00000000" + "00000000e+00 -1.0000000000000000e+00], [0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+" + "00], [0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00], [1.0000000000000000e+00], 'on'" + ", 'on', 'on', 'halfbar', 'on', 'on', 'off', [1.0000000149011612e-01], [0.0000000000000000e+00], 'on', 'on', 'on" + "', 'none', 'off', 'off', 'fly', 'normal', 'tif', '%f_anim_%n.tif', 'auto', [7.5000000000000000e+01], 'off', '%f" + "_anim_%n.avi', 'auto'} " } Line { ZOrder 1 @@ -2132,14 +2164,13 @@ Model { ZOrder 275 ShowName off ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 24 + $ObjectID 22 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Gyroscope Reading', 'texmode', 'on');\nport_label('input', 2, '\\Theta_{IMU" "}', 'texmode', 'on');\nport_label('output', 1, 'd\\Theta_{Gyro}/dt', 'texmode', 'on');\ndisp('A_{EB}', 'texmode'," @@ -2197,7 +2228,6 @@ Model { ZOrder 14 FunctionName "sf_sfun" PortCounts "[2 2]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -2270,14 +2300,13 @@ Model { ZOrder 284 ShowName off ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 25 + $ObjectID 23 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Accelerometer Reading', 'texmode', 'on');\nport_label('output', 1, '\\theta" "_{accel}', 'texmode', 'on');\nport_label('output', 2, '\\phi_{accel}', 'texmode', 'on');\ndisp('Calculate Pitch a" @@ -2335,7 +2364,6 @@ Model { ZOrder 10 FunctionName "sf_sfun" PortCounts "[2 3]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -2431,14 +2459,13 @@ Model { ZOrder 274 ShowName off ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 26 + $ObjectID 24 $ClassName "Simulink.Mask" Display "port_label('input', 1, '\\theta_{accel}', 'texmode', 'on');\nport_label('input', 2, '\\phi_{accel}'" ", 'texmode', 'on');\nport_label('input', 3, '\\Theta_{Gyro}', 'texmode', 'on');\n%port_label('input', 4, '\\Theta" @@ -2506,7 +2533,6 @@ Model { ZOrder 10 FunctionName "sf_sfun" PortCounts "[3 2]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -2600,13 +2626,36 @@ Model { InputPortMap "u0" DelayLength "1" InitialCondition "0" + SampleTime "5e-3" + } + Block { + BlockType Delay + Name "Delay3" + SID "881" + Ports [1, 1] + Position [2055, 953, 2090, 987] + ZOrder 313 + InputPortMap "u0" + DelayLength "6" + SampleTime "0.01" + } + Block { + BlockType Delay + Name "Delay4" + SID "882" + Ports [1, 1] + Position [2100, 998, 2135, 1032] + ZOrder 314 + InputPortMap "u0" + DelayLength "6" + SampleTime "0.01" } Block { BlockType Demux Name "Demux" SID "732" Ports [1, 3] - Position [1810, 1023, 1815, 1077] + Position [1530, 1023, 1535, 1077] ZOrder 294 ShowName off Outputs "3" @@ -2623,6 +2672,16 @@ Model { Outputs "2" DisplayOption "bar" } + Block { + BlockType DiscreteIntegrator + Name "Discrete-Time\nIntegrator" + SID "877" + Ports [1, 1] + Position [1935, 732, 1970, 768] + ZOrder 309 + InitialConditionSetting "State (most efficient)" + SampleTime "5e-3" + } Block { BlockType Reference Name "First-Order\nHold" @@ -2630,7 +2689,7 @@ Model { Ports [1, 1] Position [2530, 780, 2565, 810] ZOrder 292 - LibraryVersion "1.388" + LibraryVersion "1.356" DisableCoverage on SourceBlock "simulink/Discrete/First-Order\nHold" SourceType "First-Order Hold" @@ -2644,7 +2703,7 @@ Model { Ports [1, 1] Position [2530, 875, 2565, 905] ZOrder 296 - LibraryVersion "1.388" + LibraryVersion "1.356" DisableCoverage on SourceBlock "simulink/Discrete/First-Order\nHold" SourceType "First-Order Hold" @@ -2660,10 +2719,9 @@ Model { ZOrder 272 ShowName off RequestExecContextInheritance off - Variant off Object { $PropName "MaskObject" - $ObjectID 27 + $ObjectID 25 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^{B}dv_o/dt', 'texmode', 'on')\nport_label('input', 2, '^{B}v_o', 'texmode'" ", 'on')\nport_label('input', 3, '^{B}\\Omega', 'texmode', 'on')\nport_label('input', 4, '^{B}g', 'texmode', 'on')" @@ -2672,7 +2730,7 @@ Model { } System { Name "IMU\n\n\n\n\n\n" - Location [-8, -8, 1928, 1048] + Location [163, 69, 1905, 1009] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -2729,14 +2787,13 @@ Model { ZOrder 1 LibraryVersion "1.32" ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 28 + $ObjectID 26 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^{B}dv_o/dt', 'texmode', 'on')\nport_label('input', 2, '^{B}v_o', 'texmode', 'on'" ")\nport_label('input', 3, '^{B}\\Omega', 'texmode', 'on')\nport_label('input', 4, '^{B}g', 'texmode', 'on')\nport_la" @@ -2823,7 +2880,6 @@ Model { FunctionName "sf_sfun" Parameters "g" PortCounts "[5 3]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -2940,8 +2996,6 @@ Model { ZOrder 30 InitialConditionSetting "State (most efficient)" SampleTime "-1" - ICPrevOutput "DiscIntNeverNeededParam" - ICPrevScaledInput "DiscIntNeverNeededParam" } Block { BlockType DiscreteIntegrator @@ -2952,8 +3006,6 @@ Model { ZOrder 32 InitialConditionSetting "State (most efficient)" SampleTime "-1" - ICPrevOutput "DiscIntNeverNeededParam" - ICPrevScaledInput "DiscIntNeverNeededParam" } Block { BlockType DiscreteIntegrator @@ -2964,8 +3016,6 @@ Model { ZOrder 34 InitialConditionSetting "State (most efficient)" SampleTime "-1" - ICPrevOutput "DiscIntNeverNeededParam" - ICPrevScaledInput "DiscIntNeverNeededParam" } Block { BlockType DiscreteIntegrator @@ -2976,8 +3026,6 @@ Model { ZOrder 36 InitialConditionSetting "State (most efficient)" SampleTime "-1" - ICPrevOutput "DiscIntNeverNeededParam" - ICPrevScaledInput "DiscIntNeverNeededParam" } Block { BlockType Ground @@ -3008,23 +3056,10 @@ Model { Ports [1] Position [805, 374, 835, 406] ZOrder 31 - NumInputPorts "1" + Floating off + Location [680, 330, 1240, 750] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData1 - YMin -0.0001 - YMax 0.00021 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -3039,7 +3074,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [680 330 1240 750] + YMin "-0.0001" + YMax "0.00021" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -3048,23 +3087,10 @@ Model { Ports [1] Position [990, 344, 1020, 376] ZOrder 33 - NumInputPorts "1" + Floating off + Location [306, 114, 866, 534] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData2 - YMin -0.0001 - YMax 0.00021 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -3079,7 +3105,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [306 114 866 534] + YMin "-0.0001" + YMax "0.00021" + SaveName "ScopeData2" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -3088,23 +3118,10 @@ Model { Ports [1] Position [1030, 249, 1060, 281] ZOrder 35 - NumInputPorts "1" + Floating off + Location [680, 330, 1240, 750] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData3 - YMin -1.00000 - YMax 1.00000 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -3119,7 +3136,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [680 330 1240 750] + YMin "-1.00000" + YMax "1.00000" + SaveName "ScopeData3" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -3128,23 +3149,10 @@ Model { Ports [1] Position [655, 439, 685, 471] ZOrder 37 - NumInputPorts "1" + Floating off + Location [306, 114, 866, 534] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData4 - YMin -1.00000 - YMax 1.00000 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -3159,7 +3167,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [306 114 866 534] + YMin "-1.00000" + YMax "1.00000" + SaveName "ScopeData4" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -3168,23 +3180,10 @@ Model { Ports [1] Position [580, 389, 610, 421] ZOrder 38 - NumInputPorts "1" + Floating off + Location [306, 114, 866, 534] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData5 - YMin -0.00912 - YMax 0.01325 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -3199,7 +3198,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [306 114 866 534] + YMin "-0.00912" + YMax "0.01325" + SaveName "ScopeData5" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -3208,23 +3211,10 @@ Model { Ports [1] Position [295, 359, 325, 391] ZOrder 40 - NumInputPorts "1" + Floating off + Location [306, 114, 866, 534] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData6 - YMin -1.00000 - YMax 1.00000 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -3239,7 +3229,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [306 114 866 534] + YMin "-1.00000" + YMax "1.00000" + SaveName "ScopeData6" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Sum @@ -3609,14 +3603,6 @@ Model { } } } - Block { - BlockType Integrator - Name "Integrator" - SID "776" - Ports [1, 1] - Position [1945, 735, 1975, 765] - ZOrder 307 - } Block { BlockType Mux Name "Mux" @@ -3633,14 +3619,13 @@ Model { Name "OptiTrack Camera System\n\n " SID "681" Ports [2, 2] - Position [1990, 946, 2230, 1039] + Position [1710, 946, 1950, 1039] ZOrder 299 ShowName off RequestExecContextInheritance off - Variant off Object { $PropName "MaskObject" - $ObjectID 29 + $ObjectID 27 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^{E}r_o', 'texmode', 'on');\nport_label('input', 2, '\\psi', 'texmode', 'on" "');\nport_label('output', 1, '^{E}r_o camera', 'texmode', 'on');\nport_label('output', 2, '\\psi camera', 'texmod" @@ -3648,7 +3633,7 @@ Model { } System { Name "OptiTrack Camera System\n\n " - Location [-8, -8, 1928, 1048] + Location [108, 36, 1850, 976] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -3687,7 +3672,7 @@ Model { Mean "zeros(3,1)" Variance "[ 7.9664e-10 ; 1.1928e-10 ; 5.0636e-10 ] " Seed "[0,1,2]" - SampleTime "5e-3" + SampleTime "0.01" } Block { BlockType Quantizer @@ -3703,7 +3688,7 @@ Model { SID "686" Position [410, 230, 445, 260] ZOrder 38 - SampleTime "5e-3" + SampleTime "0.01" } Block { BlockType Ground @@ -3782,7 +3767,7 @@ Model { Position [545, 365, 575, 395] ZOrder 46 Variance "1.0783e-9" - SampleTime "5e-3" + SampleTime "0.01" } Block { BlockType Quantizer @@ -3798,7 +3783,7 @@ Model { SID "695" Position [410, 330, 445, 360] ZOrder 54 - SampleTime "5e-3" + SampleTime "0.01" } Block { BlockType Outport @@ -3928,23 +3913,10 @@ Model { Ports [1] Position [1385, 669, 1415, 701] ZOrder 270 - NumInputPorts "1" + Floating off + Location [680, 330, 1240, 750] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData1 - YMin -0.00277 - YMax 0.00209 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -3959,7 +3931,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [680 330 1240 750] + YMin "-0.00277" + YMax "0.00209" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -3968,23 +3944,10 @@ Model { Ports [1] Position [1385, 599, 1415, 631] ZOrder 271 - NumInputPorts "1" + Floating off + Location [1, 76, 1909, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData2 - YMin -2.04337 - YMax 0.22704 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -3999,7 +3962,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1909 1039] + YMin "-2.04337" + YMax "0.22704" + SaveName "ScopeData2" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -4008,23 +3975,10 @@ Model { Ports [1] Position [2550, 534, 2580, 566] ZOrder 308 - NumInputPorts "1" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData7 - YMin -182.40701 - YMax 117.99145 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -4039,7 +3993,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-182.40701" + YMax "117.99145" + SaveName "ScopeData7" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -4048,23 +4006,10 @@ Model { Ports [1] Position [2255, 534, 2285, 566] ZOrder 278 - NumInputPorts "1" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData4 - YMin -0.05134 - YMax 0.44242 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat Array - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -4079,7 +4024,10 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-0.05134" + YMax "0.44242" + SaveName "ScopeData4" + LimitDataPoints off } Block { BlockType Scope @@ -4088,23 +4036,10 @@ Model { Ports [1] Position [1955, 469, 1985, 501] ZOrder 280 - NumInputPorts "1" + Floating off + Location [1, 76, 1909, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData5 - YMin -1.00000 - YMax 1.00000 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -4119,7 +4054,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1909 1039] + YMin "-1.00000" + YMax "1.00000" + SaveName "ScopeData5" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -4128,23 +4067,10 @@ Model { Ports [1] Position [1955, 544, 1985, 576] ZOrder 281 - NumInputPorts "1" + Floating off + Location [1, 76, 1909, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData6 - YMin -1.00000 - YMax 1.00000 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -4159,29 +4085,31 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1909 1039] + YMin "-1.00000" + YMax "1.00000" + SaveName "ScopeData6" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType S-Function Name "Soft Real Time" SID "742" Ports [] - Position [2033, 1185, 2120, 1216] + Position [2618, 735, 2705, 766] ZOrder 288 ShowName off Commented "on" FunctionName "sfun_time" Parameters "x" - SFunctionDeploymentMode off - EnableBusSupport off Object { $PropName "MaskObject" - $ObjectID 30 + $ObjectID 28 $ClassName "Simulink.Mask" Display "color('red')\ndisp('Soft Real Time')\n" Object { $PropName "Parameters" - $ObjectID 31 + $ObjectID 29 $ClassName "Simulink.MaskParameter" Type "edit" Name "x" @@ -4436,9 +4364,8 @@ Model { ZOrder 41 SrcBlock "OptiTrack Camera System\n\n " SrcPort 2 - Points [195, 0; 0, -345] - DstBlock "Mux" - DstPort 3 + DstBlock "Delay4" + DstPort 1 } Line { ZOrder 42 @@ -4467,18 +4394,8 @@ Model { ZOrder 45 SrcBlock "OptiTrack Camera System\n\n " SrcPort 1 - Points [43, 0] - Branch { - ZOrder 100 - Points [0, -80] - DstBlock "First-Order\nHold1" - DstPort 1 - } - Branch { - ZOrder 99 - DstBlock "current_position" - DstPort 1 - } + DstBlock "Delay3" + DstPort 1 } Line { ZOrder 62 @@ -4495,20 +4412,45 @@ Model { DstPort 1 } Line { - ZOrder 73 + ZOrder 202 SrcBlock "Aeb\n\n\n\n\n\n\n\n\n\n" SrcPort 1 - DstBlock "Integrator" + DstBlock "Discrete-Time\nIntegrator" DstPort 1 } Line { - ZOrder 74 - SrcBlock "Integrator" + ZOrder 201 + SrcBlock "Discrete-Time\nIntegrator" SrcPort 1 - Points [15, 0; 0, -15] + Points [20, 0; 0, -15] DstBlock "Complimentary Filter\n\n\n\n\n\n\n\n" DstPort 3 } + Line { + ZOrder 203 + SrcBlock "Delay3" + SrcPort 1 + Points [183, 0] + Branch { + ZOrder 100 + Points [0, -80] + DstBlock "First-Order\nHold1" + DstPort 1 + } + Branch { + ZOrder 99 + DstBlock "current_position" + DstPort 1 + } + } + Line { + ZOrder 204 + SrcBlock "Delay4" + SrcPort 1 + Points [290, 0; 0, -345] + DstBlock "Mux" + DstPort 3 + } } } Block { @@ -4516,14 +4458,13 @@ Model { Name "Actuation" SID "436" Ports [1, 6] - Position [955, 426, 1205, 654] + Position [850, 276, 1100, 504] ZOrder 71 ShowName off RequestExecContextInheritance off - Variant off Object { $PropName "MaskObject" - $ObjectID 32 + $ObjectID 30 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Rotor Duty Cycles', 'texmode', 'on');\nport_label('output', 1, '^{B}Omega', 'texmo" "de', 'on');\nport_label('output', 2, '\\Theta', 'texmode', 'on');\nport_label('output', 3, '^{B}v_o', 'texmode', 'on'" @@ -4532,7 +4473,7 @@ Model { } System { Name "Actuation" - Location [-8, -8, 1928, 1048] + Location [108, 36, 1850, 976] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -4544,12 +4485,12 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "50" + ZoomFactor "80" Block { BlockType Inport Name "Rotor Duty Cycles" SID "437" - Position [-20, 393, 10, 407] + Position [20, 393, 50, 407] ZOrder -1 IconDisplay "Port number" } @@ -4558,18 +4499,17 @@ Model { Name "Aeb\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" SID "446" Ports [2, 1] - Position [1395, 303, 1630, 452] + Position [1435, 303, 1670, 452] ZOrder 81 ShowName off ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 33 + $ObjectID 31 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^B\\Omega', 'texmode', 'on');\nport_label('input', 2, '\\Theta', 'texmode'," " 'on');\nport_label('output', 1, 'd\\Theta/dt', 'texmode', 'on');\ndisp('A_{EB}', 'texmode', 'on');" @@ -4626,7 +4566,6 @@ Model { ZOrder 14 FunctionName "sf_sfun" PortCounts "[2 2]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -4695,7 +4634,7 @@ Model { Name "Demux1" SID "449" Ports [1, 3] - Position [1830, 526, 1835, 574] + Position [1870, 526, 1875, 574] ZOrder 107 ShowName off Outputs "3" @@ -4724,7 +4663,7 @@ Model { Name "Demux2" SID "450" Ports [1, 3] - Position [1830, 301, 1835, 349] + Position [1870, 301, 1875, 349] ZOrder 109 ShowName off Outputs "3" @@ -4753,7 +4692,7 @@ Model { Name "Demux3" SID "451" Ports [1, 3] - Position [1830, 406, 1835, 454] + Position [1870, 406, 1875, 454] ZOrder 117 ShowName off Outputs "3" @@ -4782,7 +4721,7 @@ Model { Name "Demux4" SID "452" Ports [1, 3] - Position [1830, 161, 1835, 209] + Position [1870, 161, 1875, 209] ZOrder 115 ShowName off Outputs "3" @@ -4811,7 +4750,7 @@ Model { Name "Demux5" SID "453" Ports [1, 3] - Position [1830, 641, 1835, 689] + Position [1870, 641, 1875, 689] ZOrder 119 ShowName off Outputs "3" @@ -4840,18 +4779,17 @@ Model { Name "ESC System" SID "442" Ports [1, 1] - Position [55, 282, 290, 518] + Position [95, 282, 330, 518] ZOrder 36 ShowName off ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 34 + $ObjectID 32 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Rotor Duty Cycle', 'texmode', 'on');\nport_label('output', 1, 'Vb_{eff}', '" "texmode', 'on');\ndisp('ESC System');" @@ -4900,7 +4838,6 @@ Model { FunctionName "sf_sfun" Parameters "Pmax,Pmin,Vb" PortCounts "[1 2]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -4961,18 +4898,17 @@ Model { Name "Gravity\n\n" SID "443" Ports [0, 1] - Position [335, 664, 485, 786] + Position [375, 664, 525, 786] ZOrder 96 ShowName off ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 35 + $ObjectID 33 $ClassName "Simulink.Mask" Display "port_label('output', 1, '^EF_g', 'texmode', 'on');\nfprintf('Gravity');\n" } @@ -5019,7 +4955,6 @@ Model { FunctionName "sf_sfun" Parameters "g,m" PortCounts "[1 2]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -5080,7 +5015,7 @@ Model { Name "Integrator" SID "454" Ports [1, 1] - Position [730, 340, 760, 370] + Position [770, 340, 800, 370] ZOrder 49 InitialCondition "[omega_o, omega_o, omega_o, omega_o]" } @@ -5089,7 +5024,7 @@ Model { Name "Integrator1" SID "455" Ports [1, 1] - Position [1225, 445, 1255, 475] + Position [1265, 445, 1295, 475] ZOrder 53 InitialCondition "[0; 0; 0]" } @@ -5098,7 +5033,7 @@ Model { Name "Integrator2" SID "456" Ports [1, 1] - Position [1225, 325, 1255, 355] + Position [1265, 325, 1295, 355] ZOrder 54 InitialCondition "[0; 0; 0]" } @@ -5107,7 +5042,7 @@ Model { Name "Integrator3" SID "457" Ports [1, 1] - Position [1685, 590, 1715, 620] + Position [1725, 590, 1755, 620] ZOrder 98 InitialCondition "[0; 0; 0]" } @@ -5116,7 +5051,7 @@ Model { Name "Integrator4" SID "458" Ports [1, 1] - Position [1685, 365, 1715, 395] + Position [1725, 365, 1755, 395] ZOrder 77 InitialCondition "[0; 0; 0]" ContinuousStateAttributes "['phi' 'theta' 'psi']" @@ -5126,18 +5061,17 @@ Model { Name "Lbe\n\n\n\n\n\n" SID "444" Ports [2, 1] - Position [1395, 499, 1630, 706] + Position [1435, 499, 1670, 706] ZOrder 75 ShowName off ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 36 + $ObjectID 34 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^Bv_o', 'texmode', 'on');\nport_label('input', 2, '\\Theta', 'texmode', 'on" "');\nport_label('output', 1, '^Ev_o', 'texmode', 'on');\ndisp('L_{EB}', 'texmode', 'on');" @@ -5194,7 +5128,6 @@ Model { ZOrder 20 FunctionName "sf_sfun" PortCounts "[2 2]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -5263,18 +5196,17 @@ Model { Name "Lbe\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" SID "447" Ports [2, 2] - Position [600, 694, 770, 816] + Position [640, 694, 810, 816] ZOrder 97 ShowName off ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 37 + $ObjectID 35 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^EF_g', 'texmode', 'on');\nport_label('input', 2, '\\Theta', 'texmode', 'on" "');\nport_label('output', 1, '^BF_g', 'texmode', 'on');\ndisp('L_{BE}', 'texmode', 'on');" @@ -5332,7 +5264,6 @@ Model { FunctionName "sf_sfun" Parameters "m" PortCounts "[2 3]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -5424,18 +5355,17 @@ Model { Name "Motor System" SID "441" Ports [2, 1] - Position [420, 280, 640, 520] + Position [460, 280, 680, 520] ZOrder 48 ShowName off ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 38 + $ObjectID 36 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Vb_{eff}', 'texmode', 'on');\nport_label('input', 2, '\\omega', 'texmode', " "'on');\nport_label('output', 1, '\\alpha', 'texmode', 'on');\ndisp('Motor System');\n" @@ -5493,7 +5423,6 @@ Model { FunctionName "sf_sfun" Parameters "If,Jreq,Kd,Kq,Kv,Rm" PortCounts "[2 2]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -5561,18 +5490,17 @@ Model { Name "Rotor System\n\n\n\n\n\n\n\n" SID "758" Ports [5, 2] - Position [945, 281, 1145, 519] + Position [985, 281, 1185, 519] ZOrder 122 ShowName off ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off Object { $PropName "MaskObject" - $ObjectID 39 + $ObjectID 37 $ClassName "Simulink.Mask" Display "port_label('input', 1, '\\alpha', 'texmode', 'on');\nport_label('input', 2, '\\omega', 'texmode', '" "on');\nport_label('input', 3, '^BF_g', 'texmode', 'on');\nport_label('input', 4, '^B\\Omega', 'texmode', 'on');\n" @@ -5659,7 +5587,6 @@ Model { FunctionName "sf_sfun" Parameters "Jreq,Jxx,Jyy,Jzz,Kd,Kt,m,rhx,rhy,rhz" PortCounts "[5 3]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -5773,25 +5700,12 @@ Model { Name "Scope" SID "459" Ports [1] - Position [350, 279, 380, 311] + Position [390, 279, 420, 311] ZOrder 46 - NumInputPorts "1" + Floating off + Location [188, 365, 512, 604] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData - YMin -1.3875 - YMax 12.4875 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -5806,32 +5720,22 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 431.666666666667 1281 1039] + YMin "-1.3875" + YMax "12.4875" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope Name "Scope1" SID "460" Ports [1] - Position [740, 229, 770, 261] + Position [780, 229, 810, 261] ZOrder 50 - NumInputPorts "1" + Floating off + Location [1, 76, 1909, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends on - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData1 - YMin -10513.81558 - YMax 11401.07279 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -5846,32 +5750,24 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1909 1039] + ShowLegends on + YMin "-10513.81558" + YMax "11401.07279" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope Name "Scope10" SID "461" Ports [3] - Position [1935, 303, 1975, 347] + Position [1975, 303, 2015, 347] ZOrder 108 - NumInputPorts "3" + Floating off + Location [1, 76, 1909, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends on - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData1 - YMin -60.66007~-1.00000~-1.00000 - YMax 18.5091~1.00000~1.00000 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "3" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -5888,32 +5784,24 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1909 1039] + ShowLegends on + YMin "-60.66007~-1.00000~-1.00000" + YMax "18.5091~1.00000~1.00000" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope Name "Scope11" SID "462" Ports [3] - Position [1935, 163, 1975, 207] + Position [1975, 163, 2015, 207] ZOrder 114 - NumInputPorts "3" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends on - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData3 - YMin -3.00603~-1.00000~-1.00000 - YMax 4.56766~1.00000~1.00000 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "3" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -5930,32 +5818,24 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + ShowLegends on + YMin "-3.00603~-1.00000~-1.00000" + YMax "4.56766~1.00000~1.00000" + SaveName "ScopeData3" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope Name "Scope2" SID "463" Ports [1] - Position [890, 229, 920, 261] + Position [930, 229, 960, 261] ZOrder 51 - NumInputPorts "1" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData2 - YMin -88.20659 - YMax 679.8109 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -5970,32 +5850,23 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-88.20659" + YMax "679.8109" + SaveName "ScopeData2" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope Name "Scope3" SID "464" Ports [3] - Position [1935, 408, 1975, 452] + Position [1975, 408, 2015, 452] ZOrder 116 - NumInputPorts "3" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends on - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData2 - YMin -1.00000~-71.40595~-81.80792 - YMax 1.00000~93.1255~67.47699 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "3" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -6012,32 +5883,24 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + ShowLegends on + YMin "-1.00000~-71.40595~-81.80792" + YMax "1.00000~93.1255~67.47699" + SaveName "ScopeData2" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope Name "Scope4" SID "465" Ports [3] - Position [1935, 643, 1975, 687] + Position [1975, 643, 2015, 687] ZOrder 118 - NumInputPorts "3" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends on - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData4 - YMin -1019.9483~-1019.9483~-1019.9483 - YMax 1049.2638~1049.2638~1049.2638 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "3" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -6054,32 +5917,24 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + ShowLegends on + YMin "-1019.9483~-1019.9483~-1019.9483" + YMax "1049.2638~1049.2638~1049.2638" + SaveName "ScopeData4" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope Name "Scope6" SID "466" Ports [3] - Position [1935, 528, 1975, 572] + Position [1975, 528, 2015, 572] ZOrder 79 - NumInputPorts "3" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends on - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData4 - YMin -1.00000~-1.00000~-0.09265 - YMax 1.00000~1.00000~0.0667 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "3" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -6096,32 +5951,24 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + ShowLegends on + YMin "-1.00000~-1.00000~-0.09265" + YMax "1.00000~1.00000~0.0667" + SaveName "ScopeData4" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope Name "Scope7" SID "467" Ports [1] - Position [535, 644, 565, 676] + Position [575, 644, 605, 676] ZOrder 99 - NumInputPorts "1" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData1 - YMin -1.45924 - YMax 13.13314 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -6136,32 +5983,23 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-1.45924" + YMax "13.13314" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope Name "Scope8" SID "468" Ports [1] - Position [820, 629, 850, 661] + Position [860, 629, 890, 661] ZOrder 100 - NumInputPorts "1" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData2 - YMin -14.59237 - YMax 14.59237 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -6176,32 +6014,23 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-14.59237" + YMax "14.59237" + SaveName "ScopeData2" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope Name "Scope9" SID "469" Ports [1] - Position [1225, 229, 1255, 261] + Position [1265, 229, 1295, 261] ZOrder 102 - NumInputPorts "1" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData3 - YMin -9.72639 - YMax 9.72632 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -6216,13 +6045,17 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-9.72639" + YMax "9.72632" + SaveName "ScopeData3" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Outport Name "B_omega" SID "471" - Position [1815, 238, 1845, 252] + Position [1855, 238, 1885, 252] ZOrder 61 IconDisplay "Port number" } @@ -6230,7 +6063,7 @@ Model { BlockType Outport Name "euler_angles" SID "472" - Position [1870, 373, 1900, 387] + Position [1910, 373, 1940, 387] ZOrder 91 Port "2" IconDisplay "Port number" @@ -6239,7 +6072,7 @@ Model { BlockType Outport Name "B_vo" SID "473" - Position [1815, 468, 1845, 482] + Position [1855, 468, 1885, 482] ZOrder 58 Port "3" IconDisplay "Port number" @@ -6248,7 +6081,7 @@ Model { BlockType Outport Name "E_ro" SID "474" - Position [1830, 598, 1860, 612] + Position [1870, 598, 1900, 612] ZOrder 88 Port "4" IconDisplay "Port number" @@ -6257,7 +6090,7 @@ Model { BlockType Outport Name "B_vo_dot" SID "475" - Position [1830, 718, 1860, 732] + Position [1870, 718, 1900, 732] ZOrder 103 Port "5" IconDisplay "Port number" @@ -6266,7 +6099,7 @@ Model { BlockType Outport Name "B_g" SID "476" - Position [1830, 778, 1860, 792] + Position [1870, 778, 1900, 792] ZOrder 104 Port "6" IconDisplay "Port number" @@ -6717,19 +6550,18 @@ Model { Name "Communication System" SID "582" Ports [0, 1] - Position [510, 432, 565, 478] + Position [405, 282, 460, 328] ZOrder 70 RequestExecContextInheritance off - Variant off Object { $PropName "MaskObject" - $ObjectID 40 + $ObjectID 38 $ClassName "Simulink.Mask" Display "port_label('output', 1, 'Setpoints', 'texmode', 'on');" } System { Name "Communication System" - Location [-8, -8, 1928, 1048] + Location [108, 36, 1850, 976] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -6741,7 +6573,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "400" + ZoomFactor "250" Block { BlockType Step Name "Step" @@ -6751,7 +6583,7 @@ Model { Time "0" Before "[0; 0; 0; 0]" After "[1; 1; 1; 0]" - SampleTime "0" + SampleTime "0.1" } Block { BlockType Outport @@ -6775,14 +6607,13 @@ Model { Name "Control System" SID "573" Ports [4, 1] - Position [645, 425, 900, 650] + Position [540, 275, 795, 500] ZOrder 69 ShowName off RequestExecContextInheritance off - Variant off Object { $PropName "MaskObject" - $ObjectID 41 + $ObjectID 39 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Setpoints', 'texmode', 'on');\nport_label('input', 2, '\\Theta_{filtered}', 'texmo" "de', 'on');\nport_label('input', 3, 'd\\Theta_{gyro}/dt', 'texmode', 'on');\nport_label('input', 4, '^{E}r_o', 'texmo" @@ -6790,7 +6621,7 @@ Model { } System { Name "Control System" - Location [-8, -8, 1928, 1048] + Location [108, 36, 1850, 976] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -6846,10 +6677,9 @@ Model { Position [395, 307, 530, 633] ZOrder 31 RequestExecContextInheritance off - Variant off Object { $PropName "MaskObject" - $ObjectID 42 + $ObjectID 40 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^{E}r_{x,setpoint}', 'texmode', 'on');\nport_label('input', 2, '^{E}r_{y,se" "tpoint}', 'texmode', 'on');\nport_label('input', 3, '^{E}r_{z,setpoint}', 'texmode', 'on');\nport_label('input', " @@ -6863,8 +6693,8 @@ Model { } System { Name "Controller" - Location [-8, -8, 1928, 1048] - Open off + Location [108, 36, 1850, 976] + Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -7001,13 +6831,13 @@ Model { Ports [1, 1] Position [545, 392, 585, 428] ZOrder 142 - LibraryVersion "1.388" + LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off Controller "P" TimeDomain "Discrete-time" - SampleTime "-1" + SampleTime "5e-3" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" @@ -7125,21 +6955,21 @@ Model { Ports [1, 1] Position [260, 542, 300, 578] ZOrder 122 - LibraryVersion "1.388" + LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off Controller "PID" TimeDomain "Discrete-time" - SampleTime "-1" + SampleTime "0.1" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" - UseFilter on + UseFilter off ControllerParametersSource "internal" - P "18.2047089970703" - I "41.2370914044818" - D "0.164227327211332" + P "12.7" + I "14.1" + D "0" N "17.8214030142826" InitialConditionSource "internal" InitialConditionForIntegrator "0" @@ -7249,17 +7079,17 @@ Model { Ports [1, 1] Position [260, 117, 300, 153] ZOrder 123 - LibraryVersion "1.388" + LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off Controller "PID" TimeDomain "Discrete-time" - SampleTime "-1" + SampleTime "0.1" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" - UseFilter on + UseFilter off ControllerParametersSource "internal" P "-3138.91816077077" I "-320.189162634817" @@ -7373,13 +7203,13 @@ Model { Ports [1, 1] Position [405, 541, 445, 579] ZOrder 121 - LibraryVersion "1.388" + LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off Controller "P" TimeDomain "Discrete-time" - SampleTime "-1" + SampleTime "5e-3" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" @@ -7497,13 +7327,13 @@ Model { Ports [1, 1] Position [405, 392, 445, 428] ZOrder 143 - LibraryVersion "1.388" + LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off Controller "P" TimeDomain "Discrete-time" - SampleTime "-1" + SampleTime "5e-3" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" @@ -7621,17 +7451,17 @@ Model { Ports [1, 1] Position [260, 392, 300, 428] ZOrder 145 - LibraryVersion "1.388" + LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off Controller "PID" TimeDomain "Discrete-time" - SampleTime "-1" + SampleTime "0.1" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" - UseFilter on + UseFilter off ControllerParametersSource "internal" P "-0.0367011843201958" I "-0.000988506276189655" @@ -7745,17 +7575,17 @@ Model { Ports [1, 1] Position [260, 237, 300, 273] ZOrder 136 - LibraryVersion "1.388" + LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off Controller "PID" TimeDomain "Discrete-time" - SampleTime "-1" + SampleTime "0.1" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" - UseFilter on + UseFilter off ControllerParametersSource "internal" P "0.0367011843201958" I "0.000988506276189655" @@ -7869,13 +7699,13 @@ Model { Ports [1, 1] Position [405, 237, 445, 273] ZOrder 137 - LibraryVersion "1.388" + LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off Controller "P" TimeDomain "Discrete-time" - SampleTime "-1" + SampleTime "5e-3" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" @@ -7883,7 +7713,7 @@ Model { ControllerParametersSource "internal" P "7.19768640475995" I "35.1207902652377" - D "0.410623594074865" + D "0.2" N "40.0107970227961" InitialConditionSource "internal" InitialConditionForIntegrator "0" @@ -7993,13 +7823,13 @@ Model { Ports [1, 1] Position [545, 237, 585, 273] ZOrder 138 - LibraryVersion "1.388" + LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off Controller "P" TimeDomain "Discrete-time" - SampleTime "-1" + SampleTime "5e-3" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" @@ -8117,23 +7947,10 @@ Model { Ports [1] Position [410, 649, 440, 681] ZOrder 97 - NumInputPorts "1" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData1 - YMin -4.53199 - YMax 5.80666 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -8148,7 +7965,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-4.53199" + YMax "5.80666" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -8157,23 +7978,10 @@ Model { Ports [1] Position [235, 649, 265, 681] ZOrder 106 - NumInputPorts "1" + Floating off + Location [10, 76, 1926, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData2 - YMin -0.00426 - YMax 0.00536 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -8188,7 +7996,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-0.00426" + YMax "0.00536" + SaveName "ScopeData2" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -8197,28 +8009,29 @@ Model { Ports [1] Position [265, 174, 295, 206] ZOrder 107 - NumInputPorts "1" + Floating off + Location [10, 76, 1926, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData5 - YMin -0.14356 - YMax 1.29207 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" } - Location [1 76 1921 1039] + List { + ListType ScopeGraphics + FigureColor "[0.5 0.5 0.5]" + AxesColor "[0 0 0]" + AxesTickColor "[1 1 1]" + LineColors "[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]" + LineStyles "-|-|-|-|-|-" + LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" + MarkerStyles "none|none|none|none|none|none" + } + YMin "-0.14356" + YMax "1.29207" + SaveName "ScopeData5" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -8227,23 +8040,10 @@ Model { Ports [1] Position [550, 334, 580, 366] ZOrder 109 - NumInputPorts "1" + Floating off + Location [10, 76, 1926, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData1 - YMin -0.13447 - YMax 1.21019 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -8258,7 +8058,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-0.13447" + YMax "1.21019" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -8267,23 +8071,10 @@ Model { Ports [1] Position [365, 334, 395, 366] ZOrder 110 - NumInputPorts "1" + Floating off + Location [10, 76, 1926, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData2 - YMin -0.08847 - YMax 0.24078 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -8298,7 +8089,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-0.2" + YMax "0.5" + SaveName "ScopeData2" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -8307,28 +8102,29 @@ Model { Ports [1] Position [240, 334, 270, 366] ZOrder 111 - NumInputPorts "1" + Floating off + Location [10, 76, 1926, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData3 - YMin -8.5404 - YMax 73.19137 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" } - Location [1 76 1921 1039] + List { + ListType ScopeGraphics + FigureColor "[0.5 0.5 0.5]" + AxesColor "[0 0 0]" + AxesTickColor "[1 1 1]" + LineColors "[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]" + LineStyles "-|-|-|-|-|-" + LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" + MarkerStyles "none|none|none|none|none|none" + } + YMin "-8.5404" + YMax "73.19137" + SaveName "ScopeData3" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -8337,23 +8133,10 @@ Model { Ports [1] Position [550, 484, 580, 516] ZOrder 117 - NumInputPorts "1" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData1 - YMin -0.48276 - YMax 2.87086 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -8368,7 +8151,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-0.48276" + YMax "2.87086" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -8377,23 +8164,10 @@ Model { Ports [1] Position [365, 484, 395, 516] ZOrder 118 - NumInputPorts "1" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData2 - YMin -0.04704 - YMax 0.39309 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -8408,7 +8182,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 76 1921 1039] + YMin "-0.04704" + YMax "0.39309" + SaveName "ScopeData2" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Scope @@ -8417,28 +8195,19 @@ Model { Ports [1] Position [245, 484, 275, 516] ZOrder 119 - NumInputPorts "1" + Floating off + Location [1, 76, 1921, 1039] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData3 - YMin -36.42496 - YMax 11.06872 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" } - Location [1 76 1921 1039] + YMin "-36.42496" + YMax "11.06872" + SaveName "ScopeData3" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Sum @@ -8892,6 +8661,20 @@ Model { DstBlock "y_controlled" DstPort 1 } + Line { + ZOrder 473 + SrcBlock "PID Controller11" + SrcPort 1 + DstBlock "height_controlled" + DstPort 1 + } + Line { + ZOrder 478 + SrcBlock "PID Controller2" + SrcPort 1 + DstBlock "yaw_controlled" + DstPort 1 + } } } Block { @@ -8942,14 +8725,13 @@ Model { Name "MATLAB Function" SID "647" Ports [4, 1] - Position [715, 308, 915, 632] + Position [725, 308, 925, 632] ZOrder 35 ErrorFcn "Stateflow.Translate.translate" - PermitHierarchicalResolution "ParametersOnly" + PermitHierarchicalResolution "ExplicitOnly" TreatAsAtomicUnit on RequestExecContextInheritance off SFBlockType "MATLAB Function" - Variant off System { Name "MATLAB Function" Location [223, 338, 826, 833] @@ -9020,7 +8802,6 @@ Model { ZOrder 10 FunctionName "sf_sfun" PortCounts "[4 2]" - SFunctionDeploymentMode off EnableBusSupport on Port { PortNumber 2 @@ -9115,23 +8896,10 @@ Model { Ports [1] Position [1080, 564, 1110, 596] ZOrder 46 - NumInputPorts "1" + Floating off + Location [188, 365, 512, 604] Open off - TimeRange auto - TickLabels OneTimeTick - ShowLegends off - LimitDataPoints off - MaxDataPoints 5000 - SaveToWorkspace off - SaveName ScopeData4 - YMin 87500.00000 - YMax 212500.00000 - SampleInput off - SampleTime -1 - ZoomMode on - Grid on - DataFormat StructureWithTime - Decimation 1 + NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" @@ -9146,7 +8914,11 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - Location [1 431.666666666667 1281 1039] + YMin "87500.00000" + YMax "212500.00000" + SaveName "ScopeData4" + DataFormat "StructureWithTime" + LimitDataPoints off } Block { BlockType Sum @@ -9211,6 +8983,7 @@ Model { Position [605, 375, 635, 405] ZOrder 40 Value "height_controlled_o" + SampleTime "5e-3" } Block { BlockType Constant @@ -9219,6 +8992,7 @@ Model { Position [605, 535, 635, 565] ZOrder 42 Value "x_controlled_o" + SampleTime "5e-3" } Block { BlockType Constant @@ -9227,6 +9001,7 @@ Model { Position [605, 455, 635, 485] ZOrder 41 Value "y_controlled_o" + SampleTime "5e-3" } Block { BlockType Constant @@ -9235,6 +9010,7 @@ Model { Position [605, 620, 635, 650] ZOrder 43 Value "yaw_controlled_o" + SampleTime "5e-3" } Block { BlockType Outport @@ -9537,7 +9313,7 @@ Model { ZOrder 195 SrcBlock " Sensors " SrcPort 3 - Points [9, 0; 0, 52; -903, 0; 0, -52] + Points [9, 0; 0, 160; -903, 0; 0, -160] DstBlock "Control System" DstPort 4 } @@ -9545,7 +9321,7 @@ Model { ZOrder 196 SrcBlock " Sensors " SrcPort 2 - Points [16, 0; 0, 146; -924, 0; 0, -121] + Points [16, 0; 0, 272; -924, 0; 0, -247] DstBlock "Control System" DstPort 3 } @@ -9553,7 +9329,7 @@ Model { ZOrder 197 SrcBlock " Sensors " SrcPort 1 - Points [23, 0; 0, 240; -940, 0; 0, -190] + Points [23, 0; 0, 370; -940, 0; 0, -320] DstBlock "Control System" DstPort 2 } @@ -9561,7 +9337,7 @@ Model { } #Finite State Machines # -# Stateflow 80000010 +# Stateflow 80000005 # # Stateflow { @@ -9570,29 +9346,29 @@ Stateflow { name "test_model_R2015A" created "03-Nov-2016 18:34:53" isLibrary 0 - sfVersion 80000006 firstTarget 145 + sfVersion 80000005 } chart { id 2 - machine 1 name "Actuation/Gravity\n\n" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 3 0 0] + firstTransition 8 + firstJunction 7 viewObj 2 + machine 1 ssIdHighWaterMark 7 decomposition CLUSTER_CHART type EML_CHART + firstData 4 chartFileNumber 1 disableImplicitCasting 1 eml { name "gravity" } - firstData 4 - firstTransition 8 - firstJunction 7 } state { id 3 @@ -9616,6 +9392,7 @@ Stateflow { id 4 ssIdNumber 5 name "E_Fg" + linkNode [2 0 5] scope OUTPUT_DATA machine 1 props { @@ -9630,12 +9407,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [2 0 5] } data { id 5 ssIdNumber 6 name "m" + linkNode [2 4 6] scope PARAMETER_DATA paramIndexForInitFromWorkspace 1 machine 1 @@ -9653,12 +9430,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [2 4 6] } data { id 6 ssIdNumber 7 name "g" + linkNode [2 5 0] scope PARAMETER_DATA machine 1 props { @@ -9675,16 +9452,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [2 5 0] } junction { id 7 position [23.5747 49.5747 7] chart 2 + linkNode [2 0 0] subviewer 2 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [2 0 0] } transition { id 8 @@ -9700,6 +9476,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 2 + linkNode [2 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 2 drawStyle SMART @@ -9708,34 +9485,33 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [2 0 0] } instance { id 9 - machine 1 name "Actuation/Gravity\n\n" + machine 1 chart 2 } chart { id 10 - machine 1 name "Actuation/Lbe\n\n\n\n\n\n" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 11 0 0] + firstTransition 16 + firstJunction 15 viewObj 10 + machine 1 ssIdHighWaterMark 11 decomposition CLUSTER_CHART type EML_CHART + firstData 12 chartFileNumber 2 disableImplicitCasting 1 eml { name "linear_body_earth_conversion" } - firstData 12 - firstTransition 16 - firstJunction 15 } state { id 11 @@ -9764,6 +9540,7 @@ Stateflow { id 12 ssIdNumber 7 name "B_vo" + linkNode [10 0 13] scope INPUT_DATA machine 1 props { @@ -9780,12 +9557,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [10 0 13] } data { id 13 ssIdNumber 11 name "euler_angles" + linkNode [10 12 14] scope INPUT_DATA machine 1 props { @@ -9802,12 +9579,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [10 12 14] } data { id 14 ssIdNumber 9 name "E_ro" + linkNode [10 13 0] scope OUTPUT_DATA machine 1 props { @@ -9824,16 +9601,15 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [10 13 0] } junction { id 15 position [23.5747 49.5747 7] chart 10 + linkNode [10 0 0] subviewer 10 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [10 0 0] } transition { id 16 @@ -9849,6 +9625,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 10 + linkNode [10 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 10 drawStyle SMART @@ -9857,34 +9634,33 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [10 0 0] } instance { id 17 - machine 1 name "Actuation/Lbe\n\n\n\n\n\n" + machine 1 chart 10 } chart { id 18 - machine 1 name " Sensors /3D Graphical Simulation1/MATLAB Function" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 19 0 0] + firstTransition 23 + firstJunction 22 viewObj 18 + machine 1 ssIdHighWaterMark 5 decomposition CLUSTER_CHART type EML_CHART + firstData 20 chartFileNumber 3 disableImplicitCasting 1 eml { name "eigenaxis_ucart" } - firstData 20 - firstTransition 23 - firstJunction 22 } state { id 19 @@ -9914,6 +9690,7 @@ Stateflow { id 20 ssIdNumber 4 name "u" + linkNode [18 0 21] scope INPUT_DATA machine 1 props { @@ -9927,12 +9704,12 @@ Stateflow { complexity SF_COMPLEX_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [18 0 21] } data { id 21 ssIdNumber 5 name "y" + linkNode [18 20 0] scope OUTPUT_DATA machine 1 props { @@ -9947,16 +9724,15 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [18 20 0] } junction { id 22 position [23.5747 49.5747 7] chart 18 + linkNode [18 0 0] subviewer 18 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [18 0 0] } transition { id 23 @@ -9972,6 +9748,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 18 + linkNode [18 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 18 drawStyle SMART @@ -9980,34 +9757,36 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [18 0 0] } instance { id 24 - machine 1 name " Sensors /3D Graphical Simulation1/MATLAB Function" + machine 1 chart 18 } chart { id 25 - machine 1 name "Actuation/ESC System" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 26 0 0] + firstTransition 33 + firstJunction 32 viewObj 25 + visible 1 + machine 1 + subviewS { + } ssIdHighWaterMark 18 decomposition CLUSTER_CHART type EML_CHART + firstData 27 chartFileNumber 4 disableImplicitCasting 1 eml { name "ESC" } - firstData 27 - firstTransition 33 - firstJunction 32 } state { id 26 @@ -10039,6 +9818,7 @@ Stateflow { id 27 ssIdNumber 4 name "rotor_duty_cycles" + linkNode [25 0 28] scope INPUT_DATA machine 1 props { @@ -10052,12 +9832,12 @@ Stateflow { complexity SF_COMPLEX_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [25 0 28] } data { id 28 ssIdNumber 5 name "Vb_eff" + linkNode [25 27 29] scope OUTPUT_DATA machine 1 props { @@ -10072,12 +9852,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [25 27 29] } data { id 29 ssIdNumber 16 name "Pmin" + linkNode [25 28 30] scope PARAMETER_DATA paramIndexForInitFromWorkspace 1 machine 1 @@ -10095,12 +9875,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [25 28 30] } data { id 30 ssIdNumber 17 name "Pmax" + linkNode [25 29 31] scope PARAMETER_DATA machine 1 props { @@ -10117,12 +9897,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [25 29 31] } data { id 31 ssIdNumber 18 name "Vb" + linkNode [25 30 0] scope PARAMETER_DATA paramIndexForInitFromWorkspace 2 machine 1 @@ -10140,16 +9920,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [25 30 0] } junction { id 32 position [23.5747 49.5747 7] chart 25 + linkNode [25 0 0] subviewer 25 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [25 0 0] } transition { id 33 @@ -10165,6 +9944,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 25 + linkNode [25 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 25 drawStyle SMART @@ -10173,34 +9953,33 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [25 0 0] } instance { id 34 - machine 1 name "Actuation/ESC System" + machine 1 chart 25 } chart { id 35 - machine 1 name "Actuation/Motor System" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 36 0 0] + firstTransition 47 + firstJunction 46 viewObj 35 + machine 1 ssIdHighWaterMark 16 decomposition CLUSTER_CHART type EML_CHART + firstData 37 chartFileNumber 5 disableImplicitCasting 1 eml { name "motor" } - firstData 37 - firstTransition 47 - firstJunction 46 } state { id 36 @@ -10235,6 +10014,7 @@ Stateflow { id 37 ssIdNumber 4 name "Vb_eff" + linkNode [35 0 38] scope INPUT_DATA machine 1 props { @@ -10248,12 +10028,12 @@ Stateflow { complexity SF_COMPLEX_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [35 0 38] } data { id 38 ssIdNumber 16 name "angular_velocity" + linkNode [35 37 39] scope INPUT_DATA machine 1 props { @@ -10270,12 +10050,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [35 37 39] } data { id 39 ssIdNumber 7 name "angular_acceleration" + linkNode [35 38 40] scope OUTPUT_DATA machine 1 props { @@ -10292,12 +10072,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [35 38 40] } data { id 40 ssIdNumber 9 name "Rm" + linkNode [35 39 41] scope PARAMETER_DATA paramIndexForInitFromWorkspace 5 machine 1 @@ -10315,12 +10095,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [35 39 41] } data { id 41 ssIdNumber 10 name "Kv" + linkNode [35 40 42] scope PARAMETER_DATA paramIndexForInitFromWorkspace 4 machine 1 @@ -10338,12 +10118,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [35 40 42] } data { id 42 ssIdNumber 11 name "Kq" + linkNode [35 41 43] scope PARAMETER_DATA paramIndexForInitFromWorkspace 3 machine 1 @@ -10361,12 +10141,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [35 41 43] } data { id 43 ssIdNumber 12 name "Kd" + linkNode [35 42 44] scope PARAMETER_DATA paramIndexForInitFromWorkspace 2 machine 1 @@ -10384,12 +10164,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [35 42 44] } data { id 44 ssIdNumber 13 name "If" + linkNode [35 43 45] scope PARAMETER_DATA machine 1 props { @@ -10406,12 +10186,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [35 43 45] } data { id 45 ssIdNumber 14 name "Jreq" + linkNode [35 44 0] scope PARAMETER_DATA paramIndexForInitFromWorkspace 1 machine 1 @@ -10429,16 +10209,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [35 44 0] } junction { id 46 position [23.5747 49.5747 7] chart 35 + linkNode [35 0 0] subviewer 35 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [35 0 0] } transition { id 47 @@ -10454,6 +10233,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 35 + linkNode [35 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 35 drawStyle SMART @@ -10462,34 +10242,33 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [35 0 0] } instance { id 48 - machine 1 name "Actuation/Motor System" + machine 1 chart 35 } chart { id 49 - machine 1 name "Actuation/Rotor System\n\n\n\n\n\n\n\n" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 50 0 0] + firstTransition 69 + firstJunction 68 viewObj 49 + machine 1 ssIdHighWaterMark 30 decomposition CLUSTER_CHART type EML_CHART + firstData 51 chartFileNumber 6 disableImplicitCasting 1 eml { name "rotor" } - firstData 51 - firstTransition 69 - firstJunction 68 } state { id 50 @@ -10545,6 +10324,7 @@ Stateflow { id 51 ssIdNumber 6 name "B_omega_dot" + linkNode [49 0 52] scope OUTPUT_DATA machine 1 props { @@ -10561,12 +10341,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [49 0 52] } data { id 52 ssIdNumber 10 name "angular_acceleration" + linkNode [49 51 53] scope INPUT_DATA machine 1 props { @@ -10583,12 +10363,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 51 53] } data { id 53 ssIdNumber 11 name "angular_velocity" + linkNode [49 52 54] scope INPUT_DATA machine 1 props { @@ -10605,12 +10385,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 52 54] } data { id 54 ssIdNumber 30 name "B_Fg" + linkNode [49 53 55] scope INPUT_DATA machine 1 props { @@ -10627,12 +10407,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 53 55] } data { id 55 ssIdNumber 8 name "B_omega" + linkNode [49 54 56] scope INPUT_DATA machine 1 props { @@ -10649,12 +10429,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 54 56] } data { id 56 ssIdNumber 5 name "B_vo_dot" + linkNode [49 55 57] scope OUTPUT_DATA machine 1 props { @@ -10669,12 +10449,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [49 55 57] } data { id 57 ssIdNumber 7 name "B_vo" + linkNode [49 56 58] scope INPUT_DATA machine 1 props { @@ -10691,12 +10471,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 56 58] } data { id 58 ssIdNumber 12 name "m" + linkNode [49 57 59] scope PARAMETER_DATA paramIndexForInitFromWorkspace 6 machine 1 @@ -10714,12 +10494,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 57 59] } data { id 59 ssIdNumber 14 name "Kt" + linkNode [49 58 60] scope PARAMETER_DATA paramIndexForInitFromWorkspace 5 machine 1 @@ -10737,12 +10517,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 58 60] } data { id 60 ssIdNumber 13 name "Kd" + linkNode [49 59 61] scope PARAMETER_DATA paramIndexForInitFromWorkspace 4 machine 1 @@ -10760,12 +10540,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 59 61] } data { id 61 ssIdNumber 15 name "rhx" + linkNode [49 60 62] scope PARAMETER_DATA paramIndexForInitFromWorkspace 7 machine 1 @@ -10783,12 +10563,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 60 62] } data { id 62 ssIdNumber 16 name "rhy" + linkNode [49 61 63] scope PARAMETER_DATA paramIndexForInitFromWorkspace 8 machine 1 @@ -10806,12 +10586,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 61 63] } data { id 63 ssIdNumber 17 name "rhz" + linkNode [49 62 64] scope PARAMETER_DATA paramIndexForInitFromWorkspace 9 machine 1 @@ -10829,12 +10609,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 62 64] } data { id 64 ssIdNumber 18 name "Jreq" + linkNode [49 63 65] scope PARAMETER_DATA machine 1 props { @@ -10851,12 +10631,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 63 65] } data { id 65 ssIdNumber 19 name "Jxx" + linkNode [49 64 66] scope PARAMETER_DATA paramIndexForInitFromWorkspace 1 machine 1 @@ -10874,12 +10654,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 64 66] } data { id 66 ssIdNumber 20 name "Jyy" + linkNode [49 65 67] scope PARAMETER_DATA paramIndexForInitFromWorkspace 2 machine 1 @@ -10897,12 +10677,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 65 67] } data { id 67 ssIdNumber 21 name "Jzz" + linkNode [49 66 0] scope PARAMETER_DATA paramIndexForInitFromWorkspace 3 machine 1 @@ -10920,16 +10700,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [49 66 0] } junction { id 68 position [23.5747 49.5747 7] chart 49 + linkNode [49 0 0] subviewer 49 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [49 0 0] } transition { id 69 @@ -10945,6 +10724,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 49 + linkNode [49 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 49 drawStyle SMART @@ -10953,34 +10733,33 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [49 0 0] } instance { id 70 - machine 1 name "Actuation/Rotor System\n\n\n\n\n\n\n\n" + machine 1 chart 49 } chart { id 71 - machine 1 name "Actuation/Aeb\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 72 0 0] + firstTransition 77 + firstJunction 76 viewObj 71 + machine 1 ssIdHighWaterMark 6 decomposition CLUSTER_CHART type EML_CHART + firstData 73 chartFileNumber 7 disableImplicitCasting 1 eml { name "angular_body_earth_conversion" } - firstData 73 - firstTransition 77 - firstJunction 76 } state { id 72 @@ -11007,6 +10786,7 @@ Stateflow { id 73 ssIdNumber 4 name "B_omega" + linkNode [71 0 74] scope INPUT_DATA machine 1 props { @@ -11020,12 +10800,12 @@ Stateflow { complexity SF_COMPLEX_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [71 0 74] } data { id 74 ssIdNumber 5 name "euler_rates" + linkNode [71 73 75] scope OUTPUT_DATA machine 1 props { @@ -11040,12 +10820,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [71 73 75] } data { id 75 ssIdNumber 6 name "euler_angles" + linkNode [71 74 0] scope INPUT_DATA machine 1 props { @@ -11062,16 +10842,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [71 74 0] } junction { id 76 position [23.5747 49.5747 7] chart 71 + linkNode [71 0 0] subviewer 71 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [71 0 0] } transition { id 77 @@ -11087,6 +10866,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 71 + linkNode [71 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 71 drawStyle SMART @@ -11095,34 +10875,33 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [71 0 0] } instance { id 78 - machine 1 name "Actuation/Aeb\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + machine 1 chart 71 } chart { id 79 - machine 1 name "Actuation/Lbe\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 80 0 0] + firstTransition 87 + firstJunction 86 viewObj 79 + machine 1 ssIdHighWaterMark 13 decomposition CLUSTER_CHART type EML_CHART + firstData 81 chartFileNumber 8 disableImplicitCasting 1 eml { name "linear_earth_body_conversion" } - firstData 81 - firstTransition 87 - firstJunction 86 } state { id 80 @@ -11151,6 +10930,7 @@ Stateflow { id 81 ssIdNumber 7 name "E_Fg" + linkNode [79 0 82] scope INPUT_DATA machine 1 props { @@ -11167,12 +10947,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [79 0 82] } data { id 82 ssIdNumber 11 name "euler_angles" + linkNode [79 81 83] scope INPUT_DATA machine 1 props { @@ -11189,12 +10969,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [79 81 83] } data { id 83 ssIdNumber 9 name "B_Fg" + linkNode [79 82 84] scope OUTPUT_DATA machine 1 props { @@ -11211,12 +10991,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [79 82 84] } data { id 84 ssIdNumber 12 name "B_g" + linkNode [79 83 85] scope OUTPUT_DATA machine 1 props { @@ -11233,12 +11013,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [79 83 85] } data { id 85 ssIdNumber 13 name "m" + linkNode [79 84 0] scope PARAMETER_DATA machine 1 props { @@ -11255,16 +11035,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [79 84 0] } junction { id 86 position [23.5747 49.5747 7] chart 79 + linkNode [79 0 0] subviewer 79 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [79 0 0] } transition { id 87 @@ -11280,6 +11059,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 79 + linkNode [79 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 79 drawStyle SMART @@ -11288,34 +11068,36 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [79 0 0] } instance { id 88 - machine 1 name "Actuation/Lbe\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + machine 1 chart 79 } chart { id 89 - machine 1 name " Sensors /Complimentary Filter\n\n\n\n\n\n\n\n" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 90 0 0] + firstTransition 96 + firstJunction 95 viewObj 89 + visible 1 + machine 1 + subviewS { + } ssIdHighWaterMark 16 decomposition CLUSTER_CHART type EML_CHART + firstData 91 chartFileNumber 9 disableImplicitCasting 1 eml { name "complimentaryFilter" } - firstData 91 - firstTransition 96 - firstJunction 95 } state { id 90 @@ -11346,6 +11128,7 @@ Stateflow { id 91 ssIdNumber 4 name "accel_pitch" + linkNode [89 0 92] scope INPUT_DATA machine 1 props { @@ -11359,12 +11142,12 @@ Stateflow { complexity SF_COMPLEX_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [89 0 92] } data { id 92 ssIdNumber 13 name "accel_roll" + linkNode [89 91 93] scope INPUT_DATA machine 1 props { @@ -11381,12 +11164,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [89 91 93] } data { id 93 ssIdNumber 5 name "euler_angles_IMU" + linkNode [89 92 94] scope OUTPUT_DATA machine 1 props { @@ -11401,12 +11184,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [89 92 94] } data { id 94 ssIdNumber 6 name "euler_angles_gyro" + linkNode [89 93 0] scope INPUT_DATA machine 1 props { @@ -11423,16 +11206,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [89 93 0] } junction { id 95 position [23.5747 49.5747 7] chart 89 + linkNode [89 0 0] subviewer 89 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [89 0 0] } transition { id 96 @@ -11448,6 +11230,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 89 + linkNode [89 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 89 drawStyle SMART @@ -11456,34 +11239,33 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [89 0 0] } instance { id 97 - machine 1 name " Sensors /Complimentary Filter\n\n\n\n\n\n\n\n" + machine 1 chart 89 } chart { id 98 - machine 1 name " Sensors /IMU\n\n\n\n\n\n/\n\n\n\n\n\n\n" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 99 0 0] + firstTransition 109 + firstJunction 108 viewObj 98 + machine 1 ssIdHighWaterMark 15 decomposition CLUSTER_CHART type EML_CHART + firstData 100 chartFileNumber 10 disableImplicitCasting 1 eml { name "idealIMU" } - firstData 100 - firstTransition 109 - firstJunction 108 } state { id 99 @@ -11509,6 +11291,7 @@ Stateflow { id 100 ssIdNumber 4 name "B_vo_dot" + linkNode [98 0 101] scope INPUT_DATA machine 1 props { @@ -11522,12 +11305,12 @@ Stateflow { complexity SF_COMPLEX_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [98 0 101] } data { id 101 ssIdNumber 9 name "B_vo" + linkNode [98 100 102] scope INPUT_DATA machine 1 props { @@ -11544,12 +11327,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [98 100 102] } data { id 102 ssIdNumber 5 name "accelReading" + linkNode [98 101 103] scope OUTPUT_DATA machine 1 props { @@ -11564,12 +11347,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [98 101 103] } data { id 103 ssIdNumber 6 name "B_Omega" + linkNode [98 102 104] scope INPUT_DATA machine 1 props { @@ -11586,12 +11369,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [98 102 104] } data { id 104 ssIdNumber 7 name "B_g" + linkNode [98 103 105] scope INPUT_DATA machine 1 props { @@ -11608,12 +11391,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [98 103 105] } data { id 105 ssIdNumber 8 name "gyroReading" + linkNode [98 104 106] scope OUTPUT_DATA machine 1 props { @@ -11630,12 +11413,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [98 104 106] } data { id 106 ssIdNumber 10 name "r_oc" + linkNode [98 105 107] scope INPUT_DATA machine 1 props { @@ -11652,12 +11435,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [98 105 107] } data { id 107 ssIdNumber 12 name "g" + linkNode [98 106 0] scope PARAMETER_DATA machine 1 props { @@ -11674,16 +11457,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [98 106 0] } junction { id 108 position [23.5747 49.5747 7] chart 98 + linkNode [98 0 0] subviewer 98 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [98 0 0] } transition { id 109 @@ -11699,6 +11481,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 98 + linkNode [98 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 98 drawStyle SMART @@ -11707,34 +11490,33 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [98 0 0] } instance { id 110 - machine 1 name " Sensors /IMU\n\n\n\n\n\n/\n\n\n\n\n\n\n" + machine 1 chart 98 } chart { id 111 - machine 1 name " Sensors /3D Graphical Simulation/MATLAB Function" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 112 0 0] + firstTransition 116 + firstJunction 115 viewObj 111 + machine 1 ssIdHighWaterMark 5 decomposition CLUSTER_CHART type EML_CHART + firstData 113 chartFileNumber 11 disableImplicitCasting 1 eml { name "eigenaxis_ucart" } - firstData 113 - firstTransition 116 - firstJunction 115 } state { id 112 @@ -11764,6 +11546,7 @@ Stateflow { id 113 ssIdNumber 4 name "u" + linkNode [111 0 114] scope INPUT_DATA machine 1 props { @@ -11777,12 +11560,12 @@ Stateflow { complexity SF_COMPLEX_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [111 0 114] } data { id 114 ssIdNumber 5 name "y" + linkNode [111 113 0] scope OUTPUT_DATA machine 1 props { @@ -11797,16 +11580,15 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [111 113 0] } junction { id 115 position [23.5747 49.5747 7] chart 111 + linkNode [111 0 0] subviewer 111 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [111 0 0] } transition { id 116 @@ -11822,6 +11604,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 111 + linkNode [111 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 111 drawStyle SMART @@ -11830,34 +11613,33 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [111 0 0] } instance { id 117 - machine 1 name " Sensors /3D Graphical Simulation/MATLAB Function" + machine 1 chart 111 } chart { id 118 - machine 1 name " Sensors /Aeb\n\n\n\n\n\n\n\n\n\n" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 119 0 0] + firstTransition 124 + firstJunction 123 viewObj 118 + machine 1 ssIdHighWaterMark 6 decomposition CLUSTER_CHART type EML_CHART + firstData 120 chartFileNumber 12 disableImplicitCasting 1 eml { name "angular_body_earth_conversion" } - firstData 120 - firstTransition 124 - firstJunction 123 } state { id 119 @@ -11884,6 +11666,7 @@ Stateflow { id 120 ssIdNumber 4 name "gyro_reading" + linkNode [118 0 121] scope INPUT_DATA machine 1 props { @@ -11897,12 +11680,12 @@ Stateflow { complexity SF_COMPLEX_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [118 0 121] } data { id 121 ssIdNumber 5 name "euler_rates_IMU" + linkNode [118 120 122] scope OUTPUT_DATA machine 1 props { @@ -11917,12 +11700,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [118 120 122] } data { id 122 ssIdNumber 6 name "euler_angles_IMU" + linkNode [118 121 0] scope INPUT_DATA machine 1 props { @@ -11939,16 +11722,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [118 121 0] } junction { id 123 position [23.5747 49.5747 7] chart 118 + linkNode [118 0 0] subviewer 118 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [118 0 0] } transition { id 124 @@ -11964,6 +11746,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 118 + linkNode [118 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 118 drawStyle SMART @@ -11972,34 +11755,36 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [118 0 0] } instance { id 125 - machine 1 name " Sensors /Aeb\n\n\n\n\n\n\n\n\n\n" + machine 1 chart 118 } chart { id 126 - machine 1 name " Sensors /Calculate Pitch and Roll\n\n\n\n\n\n\n\n\n\n\n\n1" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 127 0 0] + firstTransition 133 + firstJunction 132 viewObj 126 + visible 1 + machine 1 + subviewS { + } ssIdHighWaterMark 10 decomposition CLUSTER_CHART type EML_CHART + firstData 128 chartFileNumber 13 disableImplicitCasting 1 eml { name "getPitchAndRoll" } - firstData 128 - firstTransition 133 - firstJunction 132 } state { id 127 @@ -12028,6 +11813,7 @@ Stateflow { id 128 ssIdNumber 4 name "accel_reading" + linkNode [126 0 129] scope INPUT_DATA machine 1 props { @@ -12041,12 +11827,12 @@ Stateflow { complexity SF_COMPLEX_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [126 0 129] } data { id 129 ssIdNumber 5 name "accel_pitch" + linkNode [126 128 130] scope OUTPUT_DATA machine 1 props { @@ -12061,12 +11847,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [126 128 130] } data { id 130 ssIdNumber 6 name "accel_roll" + linkNode [126 129 131] scope OUTPUT_DATA machine 1 props { @@ -12083,12 +11869,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [126 129 131] } data { id 131 ssIdNumber 7 name "accel_roll_prev" + linkNode [126 130 0] scope INPUT_DATA machine 1 props { @@ -12105,16 +11891,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [126 130 0] } junction { id 132 position [23.5747 49.5747 7] chart 126 + linkNode [126 0 0] subviewer 126 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [126 0 0] } transition { id 133 @@ -12130,6 +11915,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 126 + linkNode [126 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 126 drawStyle SMART @@ -12138,34 +11924,36 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [126 0 0] } instance { id 134 - machine 1 name " Sensors /Calculate Pitch and Roll\n\n\n\n\n\n\n\n\n\n\n\n1" + machine 1 chart 126 } chart { id 135 - machine 1 name "Control System/MATLAB Function" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] treeNode [0 136 0 0] + firstTransition 143 + firstJunction 142 viewObj 135 + visible 1 + machine 1 + subviewS { + } ssIdHighWaterMark 11 decomposition CLUSTER_CHART type EML_CHART + firstData 137 chartFileNumber 14 disableImplicitCasting 1 eml { name "signal_mixer" } - firstData 137 - firstTransition 143 - firstJunction 142 } state { id 136 @@ -12194,6 +11982,7 @@ Stateflow { id 137 ssIdNumber 4 name "height_controlled" + linkNode [135 0 138] scope INPUT_DATA machine 1 props { @@ -12207,12 +11996,12 @@ Stateflow { complexity SF_COMPLEX_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [135 0 138] } data { id 138 ssIdNumber 7 name "y_controlled" + linkNode [135 137 139] scope INPUT_DATA machine 1 props { @@ -12229,12 +12018,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [135 137 139] } data { id 139 ssIdNumber 5 name "motorCommands" + linkNode [135 138 140] scope OUTPUT_DATA machine 1 props { @@ -12249,12 +12038,12 @@ Stateflow { frame SF_FRAME_NO } dataType "Inherit: Same as Simulink" - linkNode [135 138 140] } data { id 140 ssIdNumber 6 name "x_controlled" + linkNode [135 139 141] scope INPUT_DATA machine 1 props { @@ -12271,12 +12060,12 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [135 139 141] } data { id 141 ssIdNumber 8 name "yaw_controlled" + linkNode [135 140 0] scope INPUT_DATA machine 1 props { @@ -12293,16 +12082,15 @@ Stateflow { frame SF_FRAME_INHERITED } dataType "Inherit: Same as Simulink" - linkNode [135 140 0] } junction { id 142 position [23.5747 49.5747 7] chart 135 + linkNode [135 0 0] subviewer 135 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [135 0 0] } transition { id 143 @@ -12318,6 +12106,7 @@ Stateflow { } midPoint [23.5747 24.9468] chart 135 + linkNode [135 0 0] dataLimits [21.175 25.975 14.625 42.575] subviewer 135 drawStyle SMART @@ -12326,19 +12115,18 @@ Stateflow { } executionOrder 1 ssIdNumber 2 - linkNode [135 0 0] } instance { id 144 - machine 1 name "Control System/MATLAB Function" + machine 1 chart 135 } target { id 145 - machine 1 name "sfun" description "Default Simulink S-Function Target." + machine 1 linkNode [1 0 0] } } diff --git a/controls/model/test_model_R2015Ax.slx b/controls/model/test_model_R2015Ax.slx new file mode 100644 index 0000000000000000000000000000000000000000..feb8b73e27a6546344f8e37555adce78811d6436 GIT binary patch literal 44942 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	)K1asiT~1 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 literal 0 HcmV?d00001 -- GitLab