From 9b008ac22941c95d4a3941e3074b9bd4a54c3352 Mon Sep 17 00:00:00 2001 From: Josefin <josefinb@control.lth.se> Date: Mon, 11 Dec 2017 11:47:47 +0100 Subject: [PATCH] Added extra files that can be used in the LTH control lab --- ExtraLTH/ATlibrary_2012a.mdl | 7501 ++++++++++++++++++++++++++++ ExtraLTH/setup_script_industrial.m | 23 + ExtraLTH/tank_industrial_2012a.mdl | 1985 ++++++++ README.md | 4 +- 4 files changed, 9512 insertions(+), 1 deletion(-) create mode 100644 ExtraLTH/ATlibrary_2012a.mdl create mode 100644 ExtraLTH/setup_script_industrial.m create mode 100644 ExtraLTH/tank_industrial_2012a.mdl diff --git a/ExtraLTH/ATlibrary_2012a.mdl b/ExtraLTH/ATlibrary_2012a.mdl new file mode 100644 index 0000000..189a5c6 --- /dev/null +++ b/ExtraLTH/ATlibrary_2012a.mdl @@ -0,0 +1,7501 @@ +Model { + Name "ATlibrary_2012a" + Version 7.9 + MdlSubVersion 0 + GraphicalInterface { + NumRootInports 0 + NumRootOutports 0 + ParameterArgumentNames "" + ComputedModelVersion "1.59" + NumModelReferences 0 + NumTestPointedSignals 0 + } + SavedCharacterEncoding "UTF-8" + slprops.hdlmdlprops { + $PropName "HDLParams" + $ObjectID 1 + Array { + Type "Cell" + Dimension 2 + Cell "HDLSubsystem" + Cell "ATlibrary_2012a" + PropName "mdlProps" + } + } + SaveDefaultBlockParams on + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime on + DisableAllScopes off + DataTypeOverride "UseLocalSettings" + DataTypeOverrideAppliesTo "AllNumericTypes" + MinMaxOverflowLogging "UseLocalSettings" + MinMaxOverflowArchiveMode "Overwrite" + FPTRunName "Run 1" + MaxMDLFileLineLength 120 + Created "Wed Apr 26 11:16:02 2017" + Creator "josefinb" + UpdateHistory "UpdateHistoryNever" + ModifiedByFormat "%<Auto>" + LastModifiedBy "josefinb" + ModifiedDateFormat "%<Auto>" + LastModifiedDate "Fri Dec 08 13:36:33 2017" + RTWModifiedTimeStamp 433170707 + ModelVersionFormat "1.%<AutoIncrement:59>" + ConfigurationManager "none" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "disabled" + WideLines off + ShowLineDimensions off + ShowPortDataTypes off + ShowDesignRanges off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + SortedOrder off + ExecutionContextIcon off + ShowLinearizationAnnotations on + BlockNameDataTip off + BlockParametersDataTip off + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + AccelSystemTargetFile "accel.tlc" + AccelTemplateMakefile "accel_default_tmf" + AccelMakeCommand "make_rtw" + TryForcingSFcnDF off + Object { + $PropName "DataLoggingOverride" + $ObjectID 2 + $ClassName "Simulink.SimulationData.ModelLoggingInfo" + model_ "test_versions" + overrideMode_ [0.0] + Array { + Type "Cell" + Dimension 1 + Cell "test_versions" + PropName "logAsSpecifiedByModels_" + } + Array { + Type "Cell" + Dimension 1 + Cell [] + PropName "logAsSpecifiedByModelsSSIDs_" + } + } + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovMetricSettings "dw" + CovNameIncrementing off + CovHtmlReporting on + CovForceBlockReductionOff on + covSaveCumulativeToWorkspaceVar on + CovSaveSingleToWorkspaceVar on + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "off" + CovExternalEMLEnable off + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + BufferReuse on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 3 + Version "1.12.0" + Array { + Type "Handle" + Dimension 9 + Simulink.SolverCC { + $ObjectID 4 + Version "1.12.0" + StartTime "0.0" + StopTime "10.0" + AbsTol "auto" + FixedStep "auto" + InitialStep "auto" + MaxNumMinSteps "-1" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "Auto" + EnableConcurrentExecution off + ConcurrentTasks off + Solver "ode45" + SolverName "ode45" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + } + Simulink.DataIOCC { + $ObjectID 5 + Version "1.12.0" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints off + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "StructureWithTime" + SignalLoggingSaveFormat "Dataset" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 6 + Version "1.12.0" + Array { + Type "Cell" + Dimension 8 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + Cell "UseSpecifiedMinMax" + PropName "DisabledProps" + } + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + InlineParams off + UseIntDivNetSlope off + UseFloatMulNetSlope off + UseSpecifiedMinMax off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + StrengthReduction off + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + ExpressionDepthLimit 128 + FoldNonRolledExpr on + LocalBlockOutputs on + RollThreshold 5 + SystemCodeInlineAuto off + StateBitsets off + DataBitsets off + UseTempVars off + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "Off" + AccelVerboseBuild off + ParallelExecutionInRapidAccelerator on + } + Simulink.DebuggingCC { + $ObjectID 7 + Version "1.12.0" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Simplified" + MergeDetectMultiDrivingBlocksExec "error" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + MaskedZcDiagnostic "warning" + IgnoredZcDiagnostic "warning" + SolverPrmCheckMsg "none" + InheritedTsInSrcMsg "warning" + DiscreteInheritContinuousMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "Enable All" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + FrameProcessingCompatibilityMsg "error" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + EnableOverflowDetection off + ModelReferenceIOMsg "none" + ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + ModelReferenceCSMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "none" + SimStateInterfaceChecksumMismatchMsg "warning" + SimStateOlderReleaseMsg "error" + InitInArrayFormatMsg "warning" + StrictBusMsg "ErrorLevel1" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + LoggingUnavailableSignals "error" + BlockIODiagnostic "none" + SFUnusedDataAndEventsDiag "warning" + SFUnexpectedBacktrackingDiag "warning" + SFInvalidInputDataAccessInChartInitDiag "warning" + SFNoUnconditionalDefaultTransitionDiag "warning" + SFTransitionOutsideNaturalParentDiag "warning" + SFUnconditionalTransitionShadowingDiag "warning" + } + Simulink.HardwareCC { + $ObjectID 8 + Version "1.12.0" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdBitPerFloat 32 + ProdBitPerDouble 64 + ProdBitPerPointer 64 + ProdLargestAtomicInteger "Char" + ProdLargestAtomicFloat "Float" + ProdIntDivRoundTo "Zero" + ProdEndianess "LittleEndian" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdHWDeviceType "Specified" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetBitPerFloat 32 + TargetBitPerDouble 64 + TargetBitPerPointer 32 + TargetLargestAtomicInteger "Char" + TargetLargestAtomicFloat "None" + TargetShiftRightIntArith on + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetTypeEmulationWarnSuppressLevel 0 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 9 + Version "1.12.0" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceErrorOnInvalidPool on + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel on + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 10 + Version "1.12.0" + SFSimEnableDebug on + SFSimOverflowDetection on + SFSimEcho on + SimBlas on + SimCtrlC on + SimExtrinsic on + SimIntegrity on + SimUseLocalCustomCode off + SimParseCustomCode on + SimBuildMode "sf_incremental_build" + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 11 + Version "1.12.0" + Array { + Type "Cell" + Dimension 15 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + Cell "PortableWordSizes" + Cell "GenerateWebview" + Cell "GenerateCodeMetricsReport" + Cell "GenerateCodeReplacementReport" + Cell "GenerateErtSFunction" + Cell "CreateSILPILBlock" + Cell "CodeExecutionProfiling" + Cell "CodeProfilingSaveOptions" + Cell "CodeProfilingInstrumentation" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + TemplateMakefile "grt_default_tmf" + GenerateReport off + SaveLog off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + ProcessScriptMode "Default" + ConfigurationMode "Optimized" + ConfigAtBuild off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + IncludeHyperlinkInReport off + LaunchReport off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + IncludeERTFirstTime off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateCodeInfo off + GenerateWebview off + GenerateCodeMetricsReport off + GenerateCodeReplacementReport off + RTWCompilerOptimization "Off" + CheckMdlBeforeBuild "Off" + CustomRebuildMode "OnUpdate" + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 12 + Version "1.12.0" + Array { + Type "Cell" + Dimension 23 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "InsertBlockDesc" + Cell "InsertPolySpaceComments" + Cell "SFDataObjDesc" + Cell "MATLABFcnDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InternalIdentifier" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "CustomSymbolStrUtil" + Cell "ReqsInCode" + PropName "DisabledProps" + } + ForceParamTrailComments off + GenerateComments on + IgnoreCustomStorageClasses on + IgnoreTestpoints off + IncHierarchyInIds off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + IncAutoGenComments off + SimulinkDataObjDesc off + SFDataObjDesc off + MATLABFcnDesc off + IncDataTypeInIds off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M_T" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + InsertPolySpaceComments off + SimulinkBlockComments on + MATLABSourceComments off + EnableCustomComments off + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 13 + Version "1.12.0" + Array { + Type "Cell" + Dimension 14 + Cell "GeneratePreprocessorConditionals" + Cell "IncludeMdlTerminateFcn" + Cell "SupportNonInlinedSFcns" + Cell "SuppressErrorStatus" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "MultiInstanceERTCode" + Cell "PurelyIntegerCode" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "CombineOutputUpdateFcns" + PropName "DisabledProps" + } + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + CodeReplacementLibrary "C89/C90 (ANSI)" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + CodeExecutionProfiling off + ERTMultiwordLength 256 + MultiwordLength 2048 + GenerateFullHeader on + GenerateSampleERTMain off + GenerateTestInterfaces off + IsPILTarget off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + ConcurrentExecutionCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Disable all" + CombineOutputUpdateFcns on + CombineSignalStateStructs off + SuppressErrorStatus off + ERTFirstTimeCompliant off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + MultiInstanceERTCode off + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + EnableShiftOperators on + ParenthesesLevel "Nominal" + PortableWordSizes off + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant off + AutosarCompliant off + GRTInterface off + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + RTWCAPIRootIO off + GenerateASAP2 off + } + PropName "Components" + } + } + hdlcoderui.hdlcc { + $ObjectID 14 + Version "1.12.0" + Description "HDL Coder custom configuration component" + Name "HDL Coder" + Array { + Type "Cell" + Dimension 1 + Cell " " + PropName "HDLConfigFile" + } + HDLCActiveTab "0" + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition [ 382, 183, 1538, 980 ] + } + PropName "ConfigurationSets" + } + Simulink.ConfigSet { + $PropName "ActiveConfigurationSet" + $ObjectID 3 + } + ExplicitPartitioning off + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + BlockParameterDefaults { + Block { + BlockType Clock + DisplayTime off + Decimation "10" + } + Block { + BlockType Constant + Value "1" + VectorParams1D on + SamplingMode "Sample based" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Inherit from 'Constant value'" + LockScale off + SampleTime "inf" + FramePeriod "inf" + PreserveConstantTs off + } + Block { + BlockType Demux + Outputs "4" + DisplayOption "none" + BusSelectionMode off + } + Block { + BlockType DigitalClock + SampleTime "1" + } + Block { + BlockType Gain + Gain "1" + Multiplication "Element-wise(K.*u)" + ParamMin "[]" + ParamMax "[]" + ParamDataTypeStr "Inherit: Same as input" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + SampleTime "-1" + } + Block { + BlockType Ground + } + Block { + BlockType Inport + Port "1" + OutputFunctionCall off + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType MATLABFcn + MATLABFcn "sin" + OutputDimensions "-1" + OutputSignalType "auto" + Output1D on + SampleTime "-1" + } + Block { + BlockType Mux + Inputs "4" + DisplayOption "none" + UseBusObject off + BusObject "BusObject" + NonVirtualBus off + } + Block { + BlockType Outport + Port "1" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + SignalType "auto" + SamplingMode "auto" + SourceOfInitialOutputValue "Dialog" + OutputWhenDisabled "held" + InitialOutput "[]" + } + Block { + BlockType Product + Inputs "2" + Multiplication "Element-wise(.*)" + CollapseMode "All dimensions" + CollapseDim "1" + InputSameDT on + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as first input" + LockScale off + RndMeth "Zero" + SaturateOnIntegerOverflow on + SampleTime "-1" + } + Block { + BlockType S-Function + FunctionName "system" + SFunctionModules "''" + PortCounts "[]" + SFunctionDeploymentMode off + } + Block { + BlockType Scope + ModelBased off + TickLabels "OneTimeTick" + ZoomMode "on" + Grid "on" + TimeRange "auto" + YMin "-5" + YMax "5" + SaveToWorkspace off + SaveName "ScopeData" + DataFormat "Array" + LimitDataPoints on + MaxDataPoints "5000" + Decimation "1" + SampleInput off + SampleTime "-1" + } + Block { + BlockType Stop + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + CheckFcnCallInpInsideContextMsg off + SystemSampleTime "-1" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + DataTypeOverrideAppliesTo "AllNumericTypes" + MinMaxOverflowLogging "UseLocalSettings" + SFBlockType "NONE" + Variant off + GeneratePreprocessorConditionals off + } + Block { + BlockType Sum + IconShape "rectangular" + Inputs "++" + CollapseMode "All dimensions" + CollapseDim "1" + InputSameDT on + AccumDataTypeStr "Inherit: Inherit via internal rule" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as first input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + SampleTime "-1" + } + Block { + BlockType Switch + Criteria "u2 >= Threshold" + Threshold "0" + InputSameDT on + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Inherit via internal rule" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + ZeroCross on + SampleTime "-1" + AllowDiffInputSizes off + } + Block { + BlockType Terminator + } + Block { + BlockType ToWorkspace + VariableName "simulink_output" + MaxDataPoints "1000" + Decimation "1" + SampleTime "0" + SaveFormat "Array" + FixptAsFi off + NumInputs "1" + } + Block { + BlockType TransferFcn + Numerator "[1]" + Denominator "[1 2 1]" + AbsoluteTolerance "auto" + ContinuousStateAttributes "''" + Realization "auto" + } + Block { + BlockType TransportDelay + DelayTime "1" + InitialOutput "0" + BufferSize "1024" + FixedBuffer off + TransDelayFeedthrough off + PadeOrder "0" + } + } + System { + Name "ATlibrary_2012a" + Location [569, 348, 1187, 859] + Open on + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + ReportName "simulink-default.rpt" + SIDHighWatermark "954" + Block { + BlockType SubSystem + Name "ECA Hardware" + SID "607" + Ports [1, 1] + Position [215, 134, 290, 196] + ZOrder 159 + BackgroundColor "yellow" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "ECA Hardware" + Location [312, 179, 1215, 754] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "[ y ]" + SID "608" + Position [25, 103, 55, 117] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Demux + Name "Demux" + SID "609" + Ports [1, 2] + Position [640, 62, 645, 153] + ZOrder -7 + ShowName off + Outputs "2" + DisplayOption "bar" + } + Block { + BlockType Gain + Name "Gain" + SID "610" + Position [695, 66, 755, 104] + ZOrder -8 + Gain "500/470" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain1" + SID "611" + Position [695, 111, 755, 149] + ZOrder -8 + Gain "500/470" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain2" + SID "612" + Position [135, 67, 180, 103] + ZOrder -11 + Gain "0.5" + } + Block { + BlockType Gain + Name "Gain3" + SID "613" + Position [135, 112, 180, 148] + ZOrder -12 + Gain "0.5" + } + Block { + BlockType Ground + Name "Ground" + SID "614" + Position [460, 90, 480, 110] + ZOrder -13 + ShowName off + } + Block { + BlockType Ground + Name "Ground1" + SID "615" + Position [55, 60, 75, 80] + ZOrder -13 + ShowName off + } + Block { + BlockType Mux + Name "Mux1" + SID "616" + Ports [2, 1] + Position [235, 61, 240, 154] + ZOrder -12 + ShowName off + Inputs "2" + DisplayOption "bar" + } + Block { + BlockType S-Function + Name "S-Function" + SID "617" + Ports [1, 2] + Position [510, 74, 595, 121] + ZOrder -16 + ShowName off + FunctionName "analogin" + Parameters "simopt.h [1 0]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "S-Function2" + SID "618" + Ports [2, 1] + Position [315, 78, 395, 122] + ZOrder -17 + ShowName off + FunctionName "analogout" + Parameters "simopt.h [1 0]" + EnableBusSupport off + } + Block { + BlockType Terminator + Name "Terminator" + SID "619" + Position [425, 90, 445, 110] + ZOrder -18 + ShowName off + } + Block { + BlockType Terminator + Name "Terminator1" + SID "620" + Position [820, 75, 840, 95] + ZOrder -18 + ShowName off + } + Block { + BlockType Outport + Name "[ u ]" + SID "621" + Position [830, 103, 860, 117] + ZOrder -19 + IconDisplay "Port number" + InitialOutput "0" + } + Line { + SrcBlock "Gain3" + SrcPort 1 + DstBlock "Mux1" + DstPort 2 + } + Line { + SrcBlock "Gain2" + SrcPort 1 + DstBlock "Mux1" + DstPort 1 + } + Line { + SrcBlock "Gain1" + SrcPort 1 + Points [25, 0; 0, -20] + DstBlock "[ u ]" + DstPort 1 + } + Line { + SrcBlock "Demux" + SrcPort 2 + DstBlock "Gain1" + DstPort 1 + } + Line { + SrcBlock "Demux" + SrcPort 1 + DstBlock "Gain" + DstPort 1 + } + Line { + SrcBlock "Gain" + SrcPort 1 + DstBlock "Terminator1" + DstPort 1 + } + Line { + SrcBlock "Ground1" + SrcPort 1 + Points [0, 15] + DstBlock "Gain2" + DstPort 1 + } + Line { + SrcBlock "[ y ]" + SrcPort 1 + Points [35, 0; 0, 20] + DstBlock "Gain3" + DstPort 1 + } + Line { + SrcBlock "Mux1" + SrcPort 1 + DstBlock "S-Function2" + DstPort 2 + } + Line { + SrcBlock "S-Function" + SrcPort 2 + DstBlock "Demux" + DstPort 1 + } + Line { + SrcBlock "S-Function" + SrcPort 1 + Points [20, 0; 0, -40; -320, 0] + DstBlock "S-Function2" + DstPort 1 + } + Line { + SrcBlock "S-Function2" + SrcPort 1 + DstBlock "Terminator" + DstPort 1 + } + Line { + SrcBlock "Ground" + SrcPort 1 + DstBlock "S-Function" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "Honeywell Hardware" + SID "754" + Ports [1, 1] + Position [100, 134, 175, 196] + ZOrder 159 + BackgroundColor "yellow" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "Honeywell Hardware" + Location [302, 513, 1205, 1088] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "[ y ]" + SID "755" + Position [25, 103, 55, 117] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Demux + Name "Demux" + SID "756" + Ports [1, 2] + Position [640, 62, 645, 153] + ZOrder -7 + ShowName off + Outputs "2" + DisplayOption "bar" + } + Block { + BlockType Gain + Name "Gain" + SID "757" + Position [695, 66, 755, 104] + ZOrder -8 + Gain "500/390" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain1" + SID "758" + Position [695, 111, 755, 149] + ZOrder -8 + Gain "500/390" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain2" + SID "759" + Position [135, 67, 180, 103] + ZOrder -11 + } + Block { + BlockType Gain + Name "Gain3" + SID "760" + Position [135, 112, 180, 148] + ZOrder -12 + } + Block { + BlockType Ground + Name "Ground" + SID "761" + Position [460, 90, 480, 110] + ZOrder -13 + ShowName off + } + Block { + BlockType Ground + Name "Ground1" + SID "762" + Position [55, 60, 75, 80] + ZOrder -13 + ShowName off + } + Block { + BlockType Mux + Name "Mux1" + SID "763" + Ports [2, 1] + Position [235, 61, 240, 154] + ZOrder -12 + ShowName off + Inputs "2" + DisplayOption "bar" + } + Block { + BlockType S-Function + Name "S-Function" + SID "764" + Ports [1, 2] + Position [510, 74, 595, 121] + ZOrder -16 + ShowName off + FunctionName "analogin" + Parameters "simopt.h [1 0]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "S-Function2" + SID "765" + Ports [2, 1] + Position [315, 78, 395, 122] + ZOrder -17 + ShowName off + FunctionName "analogout" + Parameters "simopt.h [1 0]" + EnableBusSupport off + } + Block { + BlockType Terminator + Name "Terminator" + SID "766" + Position [425, 90, 445, 110] + ZOrder -18 + ShowName off + } + Block { + BlockType Terminator + Name "Terminator1" + SID "767" + Position [820, 75, 840, 95] + ZOrder -18 + ShowName off + } + Block { + BlockType Outport + Name "[ u ]" + SID "768" + Position [830, 103, 860, 117] + ZOrder -19 + IconDisplay "Port number" + InitialOutput "0" + } + Line { + SrcBlock "Ground" + SrcPort 1 + DstBlock "S-Function" + DstPort 1 + } + Line { + SrcBlock "S-Function2" + SrcPort 1 + DstBlock "Terminator" + DstPort 1 + } + Line { + SrcBlock "S-Function" + SrcPort 1 + Points [20, 0; 0, -40; -320, 0] + DstBlock "S-Function2" + DstPort 1 + } + Line { + SrcBlock "S-Function" + SrcPort 2 + DstBlock "Demux" + DstPort 1 + } + Line { + SrcBlock "Mux1" + SrcPort 1 + DstBlock "S-Function2" + DstPort 2 + } + Line { + SrcBlock "[ y ]" + SrcPort 1 + Points [35, 0; 0, 20] + DstBlock "Gain3" + DstPort 1 + } + Line { + SrcBlock "Ground1" + SrcPort 1 + Points [0, 15] + DstBlock "Gain2" + DstPort 1 + } + Line { + SrcBlock "Gain" + SrcPort 1 + DstBlock "Terminator1" + DstPort 1 + } + Line { + SrcBlock "Demux" + SrcPort 1 + DstBlock "Gain" + DstPort 1 + } + Line { + SrcBlock "Demux" + SrcPort 2 + DstBlock "Gain1" + DstPort 1 + } + Line { + SrcBlock "Gain1" + SrcPort 1 + Points [25, 0; 0, -20] + DstBlock "[ u ]" + DstPort 1 + } + Line { + SrcBlock "Gain2" + SrcPort 1 + DstBlock "Mux1" + DstPort 1 + } + Line { + SrcBlock "Gain3" + SrcPort 1 + DstBlock "Mux1" + DstPort 2 + } + } + } + Block { + BlockType SubSystem + Name "NOMAD" + SID "694" + Ports [1, 1] + Position [215, 40, 290, 80] + ZOrder 1 + BackgroundColor "lightBlue" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + VariantObject "simopt.ID~=0" + System { + Name "NOMAD" + Location [337, 473, 1164, 922] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "e" + SID "695" + Position [105, 45, 125, 65] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Reference + Name "Compare\nTo Constant" + SID "696" + Ports [1, 1] + Position [105, 145, 165, 175] + ZOrder 118 + LibraryVersion "1.260" + SourceBlock "simulink/Logic and Bit\nOperations/Compare\nTo Constant" + SourceType "Compare To Constant" + relop ">=" + const "params.expStartTime" + OutDataTypeStr "boolean" + ZeroCross on + } + Block { + BlockType Constant + Name "ConstU" + SID "697" + Position [120, 215, 150, 245] + ZOrder 117 + Value "params.ustart" + SampleTime "simopt.h" + } + Block { + BlockType Constant + Name "Constant" + SID "698" + Position [20, 15, 50, 45] + ZOrder 109 + Value "[params.asym simopt.h 1 simopt.uon params.hyst params.noiseMeasureTime] " + } + Block { + BlockType DigitalClock + Name "Digital Clock" + SID "699" + Position [15, 148, 80, 172] + ZOrder -8 + SampleTime "simopt.h" + } + Block { + BlockType SubSystem + Name "Halt logics" + SID "700" + Ports [1] + Position [570, 285, 610, 345] + ZOrder 79 + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + VariantObject "Variant" + System { + Name "Halt logics" + Location [661, 137, 1730, 1016] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "u" + SID "701" + Position [45, 53, 75, 67] + ZOrder 77 + IconDisplay "Port number" + } + Block { + BlockType Reference + Name "Compare To Constant" + SID "702" + Ports [1, 1] + Position [205, 45, 310, 75] + ZOrder 46 + LibraryVersion "1.260" + SourceBlock "simulink/Logic and Bit\nOperations/Compare\nTo Constant" + SourceType "Compare To Constant" + relop ">=" + const "params.switches" + OutDataTypeStr "boolean" + ZeroCross on + } + Block { + BlockType Stop + Name "Stop Simulation" + SID "703" + Position [370, 42, 405, 78] + ZOrder 45 + } + Block { + BlockType Reference + Name "Switch counter" + SID "704" + Ports [1, 1] + Position [105, 30, 175, 90] + ZOrder 44 + LibraryVersion "1.225" + SourceBlock "dspswit3/Counter" + SourceType "Counter" + Direction "Up" + CountEvent "Either edge" + CounterSize "User defined" + MaxCount "params.switches" + InitialCount "0" + Output "Count" + HitValue "32" + ResetInput off + SamplesPerFrame "1" + Ts "1" + CntDtype "double" + HitDtype "Logical" + } + Line { + SrcBlock "Compare To Constant" + SrcPort 1 + DstBlock "Stop Simulation" + DstPort 1 + } + Line { + SrcBlock "u" + SrcPort 1 + DstBlock "Switch counter" + DstPort 1 + } + Line { + SrcBlock "Switch counter" + SrcPort 1 + DstBlock "Compare To Constant" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "Logger" + SID "705" + Ports [1] + Position [385, 21, 440, 59] + ZOrder 115 + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "Logger" + Location [661, 211, 1730, 1090] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "result" + SID "706" + Position [20, 43, 50, 57] + ZOrder 88 + IconDisplay "Port number" + SampleTime "simopt.h" + } + Block { + BlockType ToWorkspace + Name "Logger" + SID "707" + Ports [1] + Position [105, 35, 165, 65] + ZOrder 87 + VariableName "result" + MaxDataPoints "1" + SampleTime "simopt.h" + SaveFormat "Structure With Time" + } + Line { + SrcBlock "result" + SrcPort 1 + DstBlock "Logger" + DstPort 1 + } + } + } + Block { + BlockType Scope + Name "Scope1" + SID "708" + Ports [1] + Position [530, 214, 560, 246] + ZOrder 148 + Floating off + Location [142, 93, 726, 483] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + ShowLegends off + YMin "4.75" + YMax "5.25" + DataFormat "StructureWithTime" + LimitDataPoints off + } + Block { + BlockType Scope + Name "Scope3" + SID "709" + Ports [1] + Position [630, 149, 660, 181] + ZOrder 148 + Floating off + Location [152, 93, 736, 483] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + ShowLegends off + YMin "4.75" + YMax "5.25" + SaveName "ScopeData4" + DataFormat "StructureWithTime" + LimitDataPoints off + } + Block { + BlockType Sum + Name "Sum" + SID "710" + Ports [2, 1] + Position [480, 305, 500, 325] + ZOrder -5 + ShowName off + IconShape "round" + Inputs "|+-" + } + Block { + BlockType Switch + Name "Switch" + SID "711" + Position [370, 125, 420, 165] + ZOrder 62 + Criteria "u2 ~= 0" + InputSameDT off + SaturateOnIntegerOverflow off + } + Block { + BlockType SubSystem + Name "relay_exp\n" + SID "712" + Ports [4, 2] + Position [230, 19, 330, 91] + ZOrder 114 + LibraryVersion "1.32" + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + SystemSampleTime "simopt.h" + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + SFBlockType "MATLAB Function" + VariantObject "Variant" + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskSelfModifiable on + MaskDisplay "bgColor = Simulink.Root.ColorString2Rgb(get_param(gcbh, 'BackgroundColor')); image(imread('private/" + "eml_membrane_16.png','png','BackgroundColor',bgColor(1:3)),'center'); disp([10 10 'relay_function']);" + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "relay_exp\n" + Location [189, 219, 840, 949] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "45" + Block { + BlockType Inport + Name "relay_par" + SID "712::42" + Position [20, 101, 40, 119] + ZOrder 27 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "e" + SID "712::23" + Position [20, 136, 40, 154] + ZOrder 9 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "u0" + SID "712::45" + Position [20, 171, 40, 189] + ZOrder 30 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "run_exp" + SID "712::44" + Position [20, 206, 40, 224] + ZOrder 29 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "712::40" + Ports [1, 1] + Position [270, 215, 320, 255] + ZOrder 25 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "712::39" + Tag "Stateflow S-Function ATlibrary_2012a 1" + Ports [4, 3] + Position [180, 112, 230, 213] + ZOrder 24 + FunctionName "sf_sfun" + PortCounts "[4 3]" + EnableBusSupport on + Port { + PortNumber 2 + Name "result" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "u" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "712::41" + Position [460, 226, 480, 244] + ZOrder 26 + } + Block { + BlockType Outport + Name "result" + SID "712::43" + Position [460, 101, 480, 119] + ZOrder 28 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "u" + SID "712::27" + Position [460, 136, 480, 154] + ZOrder 13 + Port "2" + IconDisplay "Port number" + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + Name "u" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "u" + DstPort 1 + } + Line { + Name "result" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "result" + DstPort 1 + } + Line { + SrcBlock "run_exp" + SrcPort 1 + DstBlock " SFunction " + DstPort 4 + } + Line { + SrcBlock "u0" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + SrcBlock "e" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + SrcBlock "relay_par" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + } + } + Block { + BlockType Outport + Name "u" + SID "713" + Position [490, 135, 510, 155] + ZOrder -2 + IconDisplay "Port number" + } + Line { + SrcBlock "Sum" + SrcPort 1 + DstBlock "Halt logics" + DstPort 1 + } + Line { + SrcBlock "Switch" + SrcPort 1 + Points [25, 0] + Branch { + Points [0, 80] + Branch { + Points [0, 90] + DstBlock "Sum" + DstPort 1 + } + Branch { + Points [0, 5] + DstBlock "Scope1" + DstPort 1 + } + } + Branch { + Points [15, 0] + Branch { + Points [0, 20] + DstBlock "Scope3" + DstPort 1 + } + Branch { + DstBlock "u" + DstPort 1 + } + } + } + Line { + SrcBlock "Compare\nTo Constant" + SrcPort 1 + Points [5, 0; 0, -15] + Branch { + DstBlock "Switch" + DstPort 2 + } + Branch { + Points [0, -60] + DstBlock "relay_exp\n" + DstPort 4 + } + } + Line { + SrcBlock "ConstU" + SrcPort 1 + Points [50, 0] + Branch { + Points [75, 0] + Branch { + Points [0, 135; 210, 0] + DstBlock "Sum" + DstPort 2 + } + Branch { + Points [17, 0; 0, -70] + DstBlock "Switch" + DstPort 3 + } + } + Branch { + Points [0, -165] + DstBlock "relay_exp\n" + DstPort 3 + } + } + Line { + SrcBlock "Digital Clock" + SrcPort 1 + DstBlock "Compare\nTo Constant" + DstPort 1 + } + Line { + SrcBlock "relay_exp\n" + SrcPort 1 + DstBlock "Logger" + DstPort 1 + } + Line { + SrcBlock "Constant" + SrcPort 1 + Points [160, 0] + DstBlock "relay_exp\n" + DstPort 1 + } + Line { + SrcBlock "e" + SrcPort 1 + Points [85, 0] + DstBlock "relay_exp\n" + DstPort 2 + } + Line { + SrcBlock "relay_exp\n" + SrcPort 2 + Points [10, 0; 0, 55] + DstBlock "Switch" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "Real Quadtank" + SID "582" + Ports [2, 4] + Position [100, 365, 190, 460] + ZOrder -1 + BackgroundColor "green" + AncestorBlock "tank/Real Quadtank" + LibraryVersion "*" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskPromptString "h" + MaskStyleString "edit" + MaskVariables "h=@1;" + MaskTunableValueString "on" + MaskEnableString "on" + MaskVisibilityString "on" + MaskToolTipString "on" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "autoscale" + MaskValueString "0.01" + System { + Name "Real Quadtank" + Location [169, -29, 1242, 1124] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "34" + Block { + BlockType Inport + Name "u1" + SID "582:1" + Position [260, 148, 290, 162] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "u2" + SID "582:2" + Position [260, 408, 290, 422] + ZOrder -2 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType S-Function + Name "AnalogIn 0" + SID "582:3" + Ports [1, 2] + Position [150, 112, 210, 143] + ZOrder -3 + FunctionName "analogin" + Parameters "h [35]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 1" + SID "582:4" + Ports [1, 2] + Position [150, 372, 210, 403] + ZOrder -4 + FunctionName "analogin" + Parameters "h [34]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 2" + SID "582:5" + Ports [1, 2] + Position [150, 452, 210, 483] + ZOrder -5 + FunctionName "analogin" + Parameters "h [33]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 3" + SID "582:6" + Ports [1, 2] + Position [150, 187, 210, 218] + ZOrder -6 + FunctionName "analogin" + Parameters "h [31]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 4" + SID "582:7" + Ports [1, 2] + Position [150, 287, 210, 318] + ZOrder -7 + FunctionName "analogin" + Parameters "h [30]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 5" + SID "582:8" + Ports [1, 2] + Position [150, 552, 210, 583] + ZOrder -8 + FunctionName "analogin" + Parameters "h [32]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogOut 0" + SID "582:9" + Ports [2, 1] + Position [455, 112, 515, 143] + ZOrder -9 + FunctionName "analogout" + Parameters "h [31]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogOut 1" + SID "582:10" + Ports [2, 1] + Position [460, 372, 520, 403] + ZOrder -10 + FunctionName "analogout" + Parameters "h [30]" + EnableBusSupport off + } + Block { + BlockType Ground + Name "Ground" + SID "582:11" + Position [95, 120, 115, 140] + ZOrder -11 + } + Block { + BlockType Ground + Name "Ground1" + SID "582:12" + Position [95, 380, 115, 400] + ZOrder -12 + } + Block { + BlockType TransferFcn + Name "LP 1" + SID "582:13" + Position [300, 192, 360, 228] + ZOrder -13 + Denominator "[0.04 0.4 1]" + } + Block { + BlockType TransferFcn + Name "LP 2" + SID "582:14" + Position [300, 457, 360, 493] + ZOrder -14 + Denominator "[0.04 0.4 1]" + } + Block { + BlockType TransferFcn + Name "LP 3" + SID "582:15" + Position [300, 292, 360, 328] + ZOrder -15 + Denominator "[0.04 0.4 1]" + } + Block { + BlockType TransferFcn + Name "LP 4" + SID "582:16" + Position [305, 557, 365, 593] + ZOrder -16 + Denominator "[0.04 0.4 1]" + } + Block { + BlockType Mux + Name "Mux" + SID "582:17" + Ports [2, 1] + Position [315, 123, 320, 167] + ZOrder -17 + ShowName off + Inputs "2" + DisplayOption "bar" + } + Block { + BlockType Mux + Name "Mux1" + SID "582:18" + Ports [2, 1] + Position [315, 383, 320, 427] + ZOrder -18 + ShowName off + Inputs "2" + DisplayOption "bar" + } + Block { + BlockType S-Function + Name "S-Function2" + SID "582:19" + Ports [0, 1] + Position [110, 30, 170, 60] + ZOrder -19 + FunctionName "realtimer" + Parameters "h" + EnableBusSupport off + } + Block { + BlockType Scope + Name "Scope" + SID "582:20" + Ports [1] + Position [225, 29, 255, 61] + ZOrder -20 + Floating off + Location [48, 426, 372, 665] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + ShowLegends off + YMin "2.77556e-17" + YMax "0.45" + DataFormat "StructureWithTime" + SampleTime "0" + } + Block { + BlockType Terminator + Name "Terminator" + SID "582:21" + Position [545, 120, 565, 140] + ZOrder -21 + } + Block { + BlockType Terminator + Name "Terminator1" + SID "582:22" + Position [550, 380, 570, 400] + ZOrder -22 + } + Block { + BlockType Terminator + Name "Terminator2" + SID "582:23" + Position [240, 185, 260, 205] + ZOrder -23 + } + Block { + BlockType Terminator + Name "Terminator3" + SID "582:24" + Position [240, 285, 260, 305] + ZOrder -24 + } + Block { + BlockType Terminator + Name "Terminator4" + SID "582:25" + Position [235, 450, 255, 470] + ZOrder -25 + } + Block { + BlockType Terminator + Name "Terminator5" + SID "582:26" + Position [240, 550, 260, 570] + ZOrder -26 + } + Block { + BlockType MATLABFcn + Name "flow controller 1" + SID "582:27" + Ports [1, 1] + Position [345, 130, 405, 160] + ZOrder -27 + MATLABFcn "flowCtrl1" + SampleTime "0.01" + } + Block { + BlockType MATLABFcn + Name "flow controller 2" + SID "582:28" + Ports [1, 1] + Position [350, 390, 410, 420] + ZOrder -28 + MATLABFcn "flowCtrl2" + SampleTime "0.01" + } + Block { + BlockType Outport + Name "y1" + SID "582:29" + Position [385, 203, 415, 217] + ZOrder -29 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "y2" + SID "582:30" + Position [385, 468, 415, 482] + ZOrder -30 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "y3" + SID "582:31" + Position [385, 303, 415, 317] + ZOrder -31 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "y4" + SID "582:32" + Position [390, 568, 420, 582] + ZOrder -32 + Port "4" + IconDisplay "Port number" + } + Line { + SrcBlock "S-Function2" + SrcPort 1 + DstBlock "Scope" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 0" + SrcPort 1 + DstBlock "AnalogOut 0" + DstPort 1 + } + Line { + SrcBlock "AnalogOut 0" + SrcPort 1 + DstBlock "Terminator" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 1" + SrcPort 1 + DstBlock "AnalogOut 1" + DstPort 1 + } + Line { + SrcBlock "AnalogOut 1" + SrcPort 1 + DstBlock "Terminator1" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 3" + SrcPort 2 + DstBlock "LP 1" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 4" + SrcPort 2 + DstBlock "LP 3" + DstPort 1 + } + Line { + SrcBlock "Ground" + SrcPort 1 + Points [10, 0] + Branch { + DstBlock "AnalogIn 0" + DstPort 1 + } + Branch { + Points [0, 75] + Branch { + DstBlock "AnalogIn 3" + DstPort 1 + } + Branch { + Points [0, 100] + DstBlock "AnalogIn 4" + DstPort 1 + } + } + } + Line { + SrcBlock "AnalogIn 3" + SrcPort 1 + DstBlock "Terminator2" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 4" + SrcPort 1 + DstBlock "Terminator3" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 2" + SrcPort 2 + DstBlock "LP 2" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 5" + SrcPort 2 + DstBlock "LP 4" + DstPort 1 + } + Line { + SrcBlock "Ground1" + SrcPort 1 + Points [10, 0] + Branch { + Points [0, 80] + Branch { + Points [0, 100] + DstBlock "AnalogIn 5" + DstPort 1 + } + Branch { + DstBlock "AnalogIn 2" + DstPort 1 + } + } + Branch { + DstBlock "AnalogIn 1" + DstPort 1 + } + } + Line { + SrcBlock "AnalogIn 2" + SrcPort 1 + DstBlock "Terminator4" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 5" + SrcPort 1 + DstBlock "Terminator5" + DstPort 1 + } + Line { + SrcBlock "u1" + SrcPort 1 + DstBlock "Mux" + DstPort 2 + } + Line { + SrcBlock "Mux" + SrcPort 1 + DstBlock "flow controller 1" + DstPort 1 + } + Line { + SrcBlock "flow controller 1" + SrcPort 1 + Points [30, 0] + DstBlock "AnalogOut 0" + DstPort 2 + } + Line { + SrcBlock "u2" + SrcPort 1 + DstBlock "Mux1" + DstPort 2 + } + Line { + SrcBlock "Mux1" + SrcPort 1 + DstBlock "flow controller 2" + DstPort 1 + } + Line { + SrcBlock "flow controller 2" + SrcPort 1 + Points [30, 0] + DstBlock "AnalogOut 1" + DstPort 2 + } + Line { + SrcBlock "AnalogIn 1" + SrcPort 2 + DstBlock "Mux1" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 0" + SrcPort 2 + DstBlock "Mux" + DstPort 1 + } + Line { + SrcBlock "LP 1" + SrcPort 1 + DstBlock "y1" + DstPort 1 + } + Line { + SrcBlock "LP 3" + SrcPort 1 + DstBlock "y3" + DstPort 1 + } + Line { + SrcBlock "LP 2" + SrcPort 1 + DstBlock "y2" + DstPort 1 + } + Line { + SrcBlock "LP 4" + SrcPort 1 + DstBlock "y4" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "Real batch tank" + SID "637" + Ports [5, 3] + Position [280, 363, 370, 467] + ZOrder -1 + BackgroundColor "green" + AncestorBlock "tank/Real Quadtank" + LibraryVersion "*" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskPromptString "h" + MaskStyleString "edit" + MaskVariables "h=@1;" + MaskTunableValueString "on" + MaskEnableString "on" + MaskVisibilityString "on" + MaskToolTipString "on" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "autoscale" + MaskValueString "0.05" + System { + Name "Real batch tank" + Location [71, 92, 1144, 834] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "92" + Block { + BlockType Inport + Name "InPump" + SID "637:34" + Position [190, 193, 220, 207] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "OutPump" + SID "637:35" + Position [190, 293, 220, 307] + ZOrder -1 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Heater" + SID "637:36" + Position [160, 533, 190, 547] + ZOrder -1 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Mixer" + SID "637:37" + Position [160, 618, 190, 632] + ZOrder -1 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Cooler" + SID "637:38" + Position [155, 688, 185, 702] + ZOrder -1 + Port "5" + IconDisplay "Port number" + } + Block { + BlockType S-Function + Name "AnalogIn 1" + SID "637:86" + Ports [1, 2] + Position [180, 772, 240, 803] + ZOrder -6 + FunctionName "analogin" + Parameters "h [30]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 2" + SID "637:89" + Ports [1, 2] + Position [180, 827, 240, 858] + ZOrder -6 + FunctionName "analogin" + Parameters "h [37]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 7" + SID "637:46" + Ports [1, 2] + Position [195, 357, 255, 388] + ZOrder -6 + FunctionName "analogin" + Parameters "h [31]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogOut1" + SID "637:48" + Ports [2, 1] + Position [265, 177, 325, 208] + ZOrder -9 + FunctionName "analogout" + Parameters "h [32]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogOut2" + SID "637:65" + Ports [2, 1] + Position [265, 267, 325, 298] + ZOrder -9 + FunctionName "analogout" + Parameters "h [33]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogOut3" + SID "637:77" + Ports [2, 1] + Position [240, 517, 300, 548] + ZOrder -9 + FunctionName "analogout" + Parameters "h [30]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogOut4" + SID "637:80" + Ports [2, 1] + Position [240, 602, 300, 633] + ZOrder -9 + FunctionName "analogout" + Parameters "h [34]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogOut5" + SID "637:83" + Ports [2, 1] + Position [240, 672, 300, 703] + ZOrder -9 + FunctionName "analogout" + Parameters "h [31]" + EnableBusSupport off + } + Block { + BlockType Ground + Name "LevelControlLoop" + SID "637:49" + Position [110, 175, 130, 195] + ZOrder -11 + } + Block { + BlockType S-Function + Name "S-Function2" + SID "637:19" + Ports [0, 1] + Position [110, 30, 170, 60] + ZOrder -19 + FunctionName "realtimer" + Parameters "h" + EnableBusSupport off + } + Block { + BlockType Scope + Name "Scope" + SID "637:20" + Ports [1] + Position [225, 29, 255, 61] + ZOrder -20 + Floating off + Location [48, 426, 372, 665] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + 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" + } + ShowLegends off + YMin "2.77556e-17" + YMax "0.45" + DataFormat "StructureWithTime" + SampleTime "0" + } + Block { + BlockType Ground + Name "TemperatureLoop" + SID "637:78" + Position [85, 515, 105, 535] + ZOrder -11 + } + Block { + BlockType Terminator + Name "Terminator1" + SID "637:79" + Position [325, 525, 345, 545] + ZOrder -21 + } + Block { + BlockType Terminator + Name "Terminator2" + SID "637:81" + Position [340, 610, 360, 630] + ZOrder -21 + } + Block { + BlockType Terminator + Name "Terminator3" + SID "637:84" + Position [340, 680, 360, 700] + ZOrder -21 + } + Block { + BlockType Terminator + Name "Terminator4" + SID "637:87" + Position [270, 770, 290, 790] + ZOrder -23 + } + Block { + BlockType Terminator + Name "Terminator5" + SID "637:90" + Position [270, 825, 290, 845] + ZOrder -23 + } + Block { + BlockType Terminator + Name "Terminator6" + SID "637:53" + Position [350, 185, 370, 205] + ZOrder -21 + } + Block { + BlockType Terminator + Name "Terminator7" + SID "637:54" + Position [285, 355, 305, 375] + ZOrder -23 + } + Block { + BlockType Terminator + Name "Terminator8" + SID "637:67" + Position [350, 275, 370, 295] + ZOrder -21 + } + Block { + BlockType Outport + Name "Temp" + SID "637:39" + Position [330, 788, 360, 802] + ZOrder -29 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "Level" + SID "637:40" + Position [345, 373, 375, 387] + ZOrder -29 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "TankTemp" + SID "637:41" + Position [330, 848, 360, 862] + ZOrder -29 + Port "3" + IconDisplay "Port number" + } + Line { + SrcBlock "S-Function2" + SrcPort 1 + DstBlock "Scope" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 7" + SrcPort 1 + DstBlock "Terminator7" + DstPort 1 + } + Line { + SrcBlock "LevelControlLoop" + SrcPort 1 + Points [40, 0] + Branch { + Points [0, 90] + Branch { + Points [0, 100] + DstBlock "AnalogIn 7" + DstPort 1 + } + Branch { + DstBlock "AnalogOut2" + DstPort 1 + } + } + Branch { + DstBlock "AnalogOut1" + DstPort 1 + } + } + Line { + SrcBlock "AnalogIn 7" + SrcPort 2 + DstBlock "Level" + DstPort 1 + } + Line { + SrcBlock "AnalogOut1" + SrcPort 1 + DstBlock "Terminator6" + DstPort 1 + } + Line { + SrcBlock "OutPump" + SrcPort 1 + Points [25, 0] + DstBlock "AnalogOut2" + DstPort 2 + } + Line { + SrcBlock "AnalogOut2" + SrcPort 1 + DstBlock "Terminator8" + DstPort 1 + } + Line { + SrcBlock "InPump" + SrcPort 1 + DstBlock "AnalogOut1" + DstPort 2 + } + Line { + SrcBlock "TemperatureLoop" + SrcPort 1 + Points [40, 0] + Branch { + Points [0, 85] + Branch { + DstBlock "AnalogOut4" + DstPort 1 + } + Branch { + Points [0, 70] + Branch { + DstBlock "AnalogOut5" + DstPort 1 + } + Branch { + Points [0, 110] + Branch { + DstBlock "AnalogIn 1" + DstPort 1 + } + Branch { + Points [0, 55] + DstBlock "AnalogIn 2" + DstPort 1 + } + } + } + } + Branch { + DstBlock "AnalogOut3" + DstPort 1 + } + } + Line { + SrcBlock "AnalogOut3" + SrcPort 1 + DstBlock "Terminator1" + DstPort 1 + } + Line { + SrcBlock "Heater" + SrcPort 1 + DstBlock "AnalogOut3" + DstPort 2 + } + Line { + SrcBlock "AnalogOut4" + SrcPort 1 + DstBlock "Terminator2" + DstPort 1 + } + Line { + SrcBlock "Mixer" + SrcPort 1 + DstBlock "AnalogOut4" + DstPort 2 + } + Line { + SrcBlock "AnalogOut5" + SrcPort 1 + DstBlock "Terminator3" + DstPort 1 + } + Line { + SrcBlock "Cooler" + SrcPort 1 + DstBlock "AnalogOut5" + DstPort 2 + } + Line { + SrcBlock "AnalogIn 1" + SrcPort 1 + DstBlock "Terminator4" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 1" + SrcPort 2 + DstBlock "Temp" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 2" + SrcPort 1 + DstBlock "Terminator5" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 2" + SrcPort 2 + Points [0, 5] + DstBlock "TankTemp" + DstPort 1 + } + Annotation { + SID "637:62" + Position [891, 355] + } + } + } + Block { + BlockType SubSystem + Name "SOTD_example" + SID "320" + Ports [1, 1] + Position [100, 236, 180, 314] + ZOrder 141 + BackgroundColor "gray" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "SOTD_example" + Location [702, 184, 1771, 1063] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "A4" + PaperUnits "centimeters" + TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "125" + Block { + BlockType Inport + Name "u" + SID "321" + Position [20, 73, 50, 87] + ZOrder 106 + IconDisplay "Port number" + SampleTime "simopt.h" + } + Block { + BlockType TransferFcn + Name "Transfer Fcn" + SID "322" + Position [175, 62, 235, 98] + ZOrder 110 + Denominator "[1 4 6 4 1]" + } + Block { + BlockType Outport + Name "y" + SID "323" + Position [310, 73, 340, 87] + ZOrder 105 + IconDisplay "Port number" + SampleTime "simopt.h" + } + Line { + SrcBlock "Transfer Fcn" + SrcPort 1 + DstBlock "y" + DstPort 1 + } + Line { + SrcBlock "u" + SrcPort 1 + DstBlock "Transfer Fcn" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "WoodBerry" + SID "902" + Ports [2, 2] + Position [245, 240, 345, 315] + ZOrder 158 + BackgroundColor "gray" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "WoodBerry" + Location [108, 94, 920, 529] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "A4" + PaperUnits "centimeters" + TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "u1" + SID "903" + Position [175, 103, 205, 117] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "u2" + SID "904" + Position [175, 313, 205, 327] + ZOrder 1 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType TransferFcn + Name "P11" + SID "944" + Position [275, 92, 335, 128] + ZOrder -9 + Numerator "[12.8]" + Denominator "[16.7 1]" + } + Block { + BlockType TransportDelay + Name "P11_d" + SID "945" + Ports [1, 1] + Position [365, 95, 395, 125] + ZOrder -10 + } + Block { + BlockType TransferFcn + Name "P12" + SID "947" + Position [275, 162, 335, 198] + ZOrder -9 + Numerator "[-18.9]" + Denominator "[21 1]" + } + Block { + BlockType TransportDelay + Name "P12_d" + SID "948" + Ports [1, 1] + Position [365, 165, 395, 195] + ZOrder -10 + DelayTime "3" + } + Block { + BlockType TransferFcn + Name "P21" + SID "949" + Position [275, 227, 335, 263] + ZOrder -9 + Numerator "[6.6]" + Denominator "[10.9 1]" + } + Block { + BlockType TransportDelay + Name "P21_d" + SID "950" + Ports [1, 1] + Position [365, 230, 395, 260] + ZOrder -10 + DelayTime "7" + } + Block { + BlockType TransferFcn + Name "P22" + SID "951" + Position [275, 302, 335, 338] + ZOrder -9 + Numerator "[-19.4]" + Denominator "[14.4 1]" + } + Block { + BlockType TransportDelay + Name "P22_d" + SID "952" + Ports [1, 1] + Position [365, 305, 395, 335] + ZOrder -10 + DelayTime "3" + } + Block { + BlockType Sum + Name "Sum" + SID "946" + Ports [2, 1] + Position [465, 100, 485, 120] + ZOrder -18 + ShowName off + IconShape "round" + Inputs "|++" + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Sum + Name "Sum2" + SID "954" + Ports [2, 1] + Position [465, 310, 485, 330] + ZOrder -18 + NamePlacement "alternate" + ShowName off + IconShape "round" + Inputs "++|" + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Outport + Name "y1" + SID "942" + Position [640, 103, 670, 117] + ZOrder -2 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "y2" + SID "943" + Position [640, 313, 670, 327] + ZOrder 4 + Port "2" + IconDisplay "Port number" + } + Line { + SrcBlock "P11" + SrcPort 1 + DstBlock "P11_d" + DstPort 1 + } + Line { + SrcBlock "P11_d" + SrcPort 1 + DstBlock "Sum" + DstPort 1 + } + Line { + SrcBlock "Sum" + SrcPort 1 + DstBlock "y1" + DstPort 1 + } + Line { + SrcBlock "u1" + SrcPort 1 + Points [5, 0] + Branch { + DstBlock "P11" + DstPort 1 + } + Branch { + Points [25, 0; 0, 135] + DstBlock "P21" + DstPort 1 + } + } + Line { + SrcBlock "P12" + SrcPort 1 + DstBlock "P12_d" + DstPort 1 + } + Line { + SrcBlock "P12_d" + SrcPort 1 + Points [75, 0] + DstBlock "Sum" + DstPort 2 + } + Line { + SrcBlock "u2" + SrcPort 1 + Points [10, 0] + Branch { + Points [0, 0; 0, -140] + DstBlock "P12" + DstPort 1 + } + Branch { + DstBlock "P22" + DstPort 1 + } + } + Line { + SrcBlock "P21" + SrcPort 1 + DstBlock "P21_d" + DstPort 1 + } + Line { + SrcBlock "P21_d" + SrcPort 1 + Points [75, 0] + DstBlock "Sum2" + DstPort 1 + } + Line { + SrcBlock "P22" + SrcPort 1 + DstBlock "P22_d" + DstPort 1 + } + Line { + SrcBlock "P22_d" + SrcPort 1 + DstBlock "Sum2" + DstPort 2 + } + Line { + SrcBlock "Sum2" + SrcPort 1 + DstBlock "y2" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "multi-NOMAD" + SID "860" + Ports [2, 2] + Position [340, 39, 440, 81] + ZOrder 158 + BackgroundColor "lightBlue" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "multi-NOMAD" + Location [107, -23, 1149, 412] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "e1" + SID "861" + Position [175, 103, 205, 117] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "e2" + SID "862" + Position [175, 193, 205, 207] + ZOrder 1 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType SubSystem + Name "Autotuner1" + SID "863" + Ports [2, 3] + Position [245, 99, 345, 141] + ZOrder 63 + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "Autotuner1" + Location [950, 306, 1992, 821] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "e" + SID "864" + Position [30, 148, 60, 162] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "other_done" + SID "865" + Position [50, 438, 80, 452] + ZOrder -1 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Product + Name "AND" + SID "866" + Ports [2, 1] + Position [170, 437, 200, 468] + ZOrder -13 + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Reference + Name "Compare\nTo Constant" + SID "867" + Ports [1, 1] + Position [370, 200, 400, 230] + ZOrder 118 + LibraryVersion "1.260" + SourceBlock "simulink/Logic and Bit\nOperations/Compare\nTo Constant" + SourceType "Compare To Constant" + relop ">=" + const "params.expStartTime" + OutDataTypeStr "boolean" + ZeroCross on + } + Block { + BlockType Constant + Name "Constant" + SID "868" + Position [310, 265, 340, 295] + ZOrder 117 + Value "params.ustart" + SampleTime "simopt.h" + } + Block { + BlockType SubSystem + Name "Constraint" + SID "869" + Ports [3, 1] + Position [685, 370, 755, 420] + ZOrder -4 + LibraryVersion "1.32" + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + SystemSampleTime "simopt.h" + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + SFBlockType "MATLAB Function" + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskSelfModifiable on + MaskDisplay "bgColor = Simulink.Root.ColorString2Rgb(get_param(gcbh, 'BackgroundColor')); image(imread('p" + "rivate/eml_membrane_16.png','png','BackgroundColor',bgColor(1:3)),'center'); disp([10 10 'Constraint']);" + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "Constraint" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "29" + Block { + BlockType Inport + Name "time" + SID "869::23" + Position [20, 101, 40, 119] + ZOrder 9 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "all_done" + SID "869::24" + Position [20, 136, 40, 154] + ZOrder 10 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "timeAfterExp" + SID "869::26" + Position [20, 171, 40, 189] + ZOrder 11 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "869::28" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 13 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "869::27" + Tag "Stateflow S-Function ATlibrary_2012a 7" + Ports [3, 2] + Position [180, 100, 230, 180] + ZOrder 12 + FunctionName "sf_sfun" + PortCounts "[3 2]" + EnableBusSupport on + Port { + PortNumber 2 + Name "stop" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "869::29" + Position [460, 241, 480, 259] + ZOrder 14 + } + Block { + BlockType Outport + Name "stop" + SID "869::5" + Position [460, 101, 480, 119] + ZOrder -7 + IconDisplay "Port number" + } + Line { + SrcBlock "time" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "all_done" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + SrcBlock "timeAfterExp" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + Name "stop" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "stop" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + SrcBlock " SFunction " + SrcPort 1 + Points [20, 0] + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType DigitalClock + Name "Digital Clock" + SID "870" + Position [15, 203, 80, 227] + ZOrder -8 + SampleTime "simopt.h" + } + Block { + BlockType Constant + Name "Relay_parameters" + SID "871" + Position [30, 25, 60, 55] + ZOrder -4 + Value "[params.eps, params.gamma, simopt.h, params.low_limit, params.dev_limit, 1 , params.uon, params.h" + "yst, params.noiseMeasureTime, 1, params.gamma2, params.switches, params.ystep, params.ustep]" + SampleTime "simopt.h" + } + Block { + BlockType Stop + Name "Stop Simulation" + SID "872" + Position [805, 377, 840, 413] + ZOrder -4 + } + Block { + BlockType Switch + Name "Switch" + SID "873" + Position [730, 175, 780, 215] + ZOrder 62 + Criteria "u2 ~= 0" + InputSameDT off + SaturateOnIntegerOverflow off + } + Block { + BlockType SubSystem + Name "relay_exp\n" + SID "874" + Ports [5, 3] + Position [480, 22, 635, 158] + ZOrder 3 + LibraryVersion "1.32" + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + SystemSampleTime "simopt.h" + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + SFBlockType "MATLAB Function" + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskSelfModifiable on + MaskDisplay "bgColor = Simulink.Root.ColorString2Rgb(get_param(gcbh, 'BackgroundColor')); image(imread('p" + "rivate/eml_membrane_16.png','png','BackgroundColor',bgColor(1:3)),'center'); disp([10 10 'relay_exp']);" + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "relay_exp\n" + Location [189, 219, 840, 949] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "41" + Block { + BlockType Inport + Name "relay_par" + SID "874::36" + Position [20, 101, 40, 119] + ZOrder 21 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "e" + SID "874::23" + Position [20, 136, 40, 154] + ZOrder 9 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "t" + SID "874::28" + Position [20, 171, 40, 189] + ZOrder 14 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "u_ref" + SID "874::37" + Position [20, 206, 40, 224] + ZOrder 22 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "run_exp" + SID "874::31" + Position [20, 246, 40, 264] + ZOrder 17 + Port "5" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "874::40" + Ports [1, 1] + Position [270, 245, 320, 285] + ZOrder 25 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "874::39" + Tag "Stateflow S-Function ATlibrary_2012a 8" + Ports [5, 4] + Position [180, 100, 230, 220] + ZOrder 24 + FunctionName "sf_sfun" + PortCounts "[5 4]" + EnableBusSupport on + Port { + PortNumber 2 + Name "result" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "u" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 4 + Name "done" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "874::41" + Position [460, 256, 480, 274] + ZOrder 26 + } + Block { + BlockType Outport + Name "result" + SID "874::38" + Position [460, 101, 480, 119] + ZOrder 23 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "u" + SID "874::27" + Position [460, 136, 480, 154] + ZOrder 13 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "done" + SID "874::32" + Position [460, 171, 480, 189] + ZOrder 18 + Port "3" + IconDisplay "Port number" + } + Line { + SrcBlock "relay_par" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "e" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + SrcBlock "t" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + SrcBlock "u_ref" + SrcPort 1 + DstBlock " SFunction " + DstPort 4 + } + Line { + SrcBlock "run_exp" + SrcPort 1 + DstBlock " SFunction " + DstPort 5 + } + Line { + Name "result" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "result" + DstPort 1 + } + Line { + Name "u" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "u" + DstPort 1 + } + Line { + Name "done" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 4 + DstBlock "done" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType Constant + Name "timeAfterExp" + SID "875" + Position [585, 410, 615, 440] + ZOrder -4 + Value "params.timeAfterExp" + } + Block { + BlockType Outport + Name "u" + SID "876" + Position [835, 188, 865, 202] + ZOrder 4 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "done" + SID "877" + Position [830, 113, 860, 127] + ZOrder 4 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "result1" + SID "878" + Position [705, 38, 735, 52] + ZOrder 119 + Port "3" + IconDisplay "Port number" + } + Line { + SrcBlock "Switch" + SrcPort 1 + DstBlock "u" + DstPort 1 + } + Line { + SrcBlock "Relay_parameters" + SrcPort 1 + DstBlock "relay_exp\n" + DstPort 1 + } + Line { + SrcBlock "relay_exp\n" + SrcPort 2 + Points [75, 0] + DstBlock "Switch" + DstPort 1 + } + Line { + SrcBlock "Compare\nTo Constant" + SrcPort 1 + Points [60, 0; 0, -19] + Branch { + Points [250, 0] + DstBlock "Switch" + DstPort 2 + } + Branch { + DstBlock "relay_exp\n" + DstPort 5 + } + } + Line { + SrcBlock "Constant" + SrcPort 1 + Points [90, 0] + Branch { + Points [0, -165] + DstBlock "relay_exp\n" + DstPort 4 + } + Branch { + Points [127, 0; 0, -70] + DstBlock "Switch" + DstPort 3 + } + } + Line { + SrcBlock "e" + SrcPort 1 + Points [142, 0; 0, -90] + DstBlock "relay_exp\n" + DstPort 2 + } + Line { + SrcBlock "Digital Clock" + SrcPort 1 + Points [30, 0] + Branch { + Points [205, 0] + Branch { + Points [0, -124] + DstBlock "relay_exp\n" + DstPort 3 + } + Branch { + DstBlock "Compare\nTo Constant" + DstPort 1 + } + } + Branch { + Points [0, 165] + DstBlock "Constraint" + DstPort 1 + } + } + Line { + SrcBlock "Constraint" + SrcPort 1 + DstBlock "Stop Simulation" + DstPort 1 + } + Line { + SrcBlock "AND" + SrcPort 1 + Points [14, 0; 0, -60] + DstBlock "Constraint" + DstPort 2 + } + Line { + SrcBlock "other_done" + SrcPort 1 + DstBlock "AND" + DstPort 1 + } + Line { + SrcBlock "relay_exp\n" + SrcPort 3 + Points [0, 10; 18, 0] + Branch { + Points [0, 180; -556, 0; 0, 135] + DstBlock "AND" + DstPort 2 + } + Branch { + Points [157, 0] + DstBlock "done" + DstPort 1 + } + } + Line { + SrcBlock "timeAfterExp" + SrcPort 1 + Points [25, 0; 0, -15] + DstBlock "Constraint" + DstPort 3 + } + Line { + SrcBlock "relay_exp\n" + SrcPort 1 + DstBlock "result1" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "Autotuner2" + SID "879" + Ports [2, 3] + Position [255, 189, 355, 231] + ZOrder 64 + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "Autotuner2" + Location [118, 348, 1160, 1227] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "80" + Block { + BlockType Inport + Name "e" + SID "880" + Position [30, 148, 60, 162] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "other_done" + SID "881" + Position [35, 413, 65, 427] + ZOrder -1 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Product + Name "AND" + SID "882" + Ports [2, 1] + Position [110, 412, 140, 443] + ZOrder -13 + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Reference + Name "Compare\nTo Constant" + SID "883" + Ports [1, 1] + Position [370, 200, 400, 230] + ZOrder 120 + LibraryVersion "1.260" + SourceBlock "simulink/Logic and Bit\nOperations/Compare\nTo Constant" + SourceType "Compare To Constant" + relop ">=" + const "params.expStartTime" + OutDataTypeStr "boolean" + ZeroCross on + } + Block { + BlockType Constant + Name "Constant" + SID "884" + Position [315, 265, 345, 295] + ZOrder 119 + Value "params.ustart" + SampleTime "simopt.h" + } + Block { + BlockType SubSystem + Name "Constraint" + SID "885" + Ports [3, 1] + Position [675, 355, 745, 405] + ZOrder -4 + LibraryVersion "1.32" + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + SystemSampleTime "simopt.h" + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + SFBlockType "MATLAB Function" + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskSelfModifiable on + MaskDisplay "bgColor = Simulink.Root.ColorString2Rgb(get_param(gcbh, 'BackgroundColor')); image(imread('p" + "rivate/eml_membrane_16.png','png','BackgroundColor',bgColor(1:3)),'center'); disp([10 10 'Constraint']);" + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "Constraint" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "29" + Block { + BlockType Inport + Name "time" + SID "885::23" + Position [20, 101, 40, 119] + ZOrder 9 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "all_done" + SID "885::24" + Position [20, 136, 40, 154] + ZOrder 10 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "timeAfterExp" + SID "885::26" + Position [20, 171, 40, 189] + ZOrder 11 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "885::28" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 13 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "885::27" + Tag "Stateflow S-Function ATlibrary_2012a 9" + Ports [3, 2] + Position [180, 100, 230, 180] + ZOrder 12 + FunctionName "sf_sfun" + PortCounts "[3 2]" + EnableBusSupport on + Port { + PortNumber 2 + Name "stop" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "885::29" + Position [460, 241, 480, 259] + ZOrder 14 + } + Block { + BlockType Outport + Name "stop" + SID "885::5" + Position [460, 101, 480, 119] + ZOrder -7 + IconDisplay "Port number" + } + Line { + SrcBlock "time" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "all_done" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + SrcBlock "timeAfterExp" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + Name "stop" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "stop" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + SrcBlock " SFunction " + SrcPort 1 + Points [20, 0] + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType DigitalClock + Name "Digital Clock" + SID "886" + Position [15, 203, 80, 227] + ZOrder -8 + SampleTime "simopt.h" + } + Block { + BlockType Constant + Name "Relay_parameters" + SID "887" + Position [30, 25, 60, 55] + ZOrder -4 + Value "[params.eps,params.gamma, simopt.h,params.low_limit,params.dev_limit,1,params.uon,params.hyst,par" + "ams.noiseMeasureTime,1,params.gamma2,params.switches,params.ystep,params.ustep]" + SampleTime "simopt.h" + } + Block { + BlockType Scope + Name "Scope" + SID "888" + Ports [1] + Position [795, 279, 825, 311] + ZOrder 54 + Floating off + Location [773, 742, 1350, 1166] + Open off + NumInputPorts "1" + ZoomMode "xonly" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + ShowLegends off + YMin "-2" + YMax "10" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off + } + Block { + BlockType Stop + Name "Stop Simulation" + SID "889" + Position [795, 362, 830, 398] + ZOrder -4 + } + Block { + BlockType Switch + Name "Switch" + SID "890" + Position [730, 175, 780, 215] + ZOrder 62 + Criteria "u2 ~= 0" + InputSameDT off + SaturateOnIntegerOverflow off + } + Block { + BlockType SubSystem + Name "relay_exp\n" + SID "891" + Ports [5, 3] + Position [480, 22, 635, 158] + ZOrder 3 + LibraryVersion "1.32" + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + SystemSampleTime "simopt.h" + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + SFBlockType "MATLAB Function" + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskSelfModifiable on + MaskDisplay "bgColor = Simulink.Root.ColorString2Rgb(get_param(gcbh, 'BackgroundColor')); image(imread('p" + "rivate/eml_membrane_16.png','png','BackgroundColor',bgColor(1:3)),'center'); disp([10 10 'relay_exp']);" + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "relay_exp\n" + Location [189, 219, 840, 949] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "41" + Block { + BlockType Inport + Name "relay_par" + SID "891::36" + Position [20, 101, 40, 119] + ZOrder 21 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "e" + SID "891::23" + Position [20, 136, 40, 154] + ZOrder 9 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "t" + SID "891::28" + Position [20, 171, 40, 189] + ZOrder 14 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "u_ref" + SID "891::37" + Position [20, 206, 40, 224] + ZOrder 22 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "run_exp" + SID "891::31" + Position [20, 246, 40, 264] + ZOrder 17 + Port "5" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "891::40" + Ports [1, 1] + Position [270, 245, 320, 285] + ZOrder 25 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "891::39" + Tag "Stateflow S-Function ATlibrary_2012a 10" + Ports [5, 4] + Position [180, 100, 230, 220] + ZOrder 24 + FunctionName "sf_sfun" + PortCounts "[5 4]" + EnableBusSupport on + Port { + PortNumber 2 + Name "result" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "u" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 4 + Name "done" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "891::41" + Position [460, 256, 480, 274] + ZOrder 26 + } + Block { + BlockType Outport + Name "result" + SID "891::38" + Position [460, 101, 480, 119] + ZOrder 23 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "u" + SID "891::27" + Position [460, 136, 480, 154] + ZOrder 13 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "done" + SID "891::32" + Position [460, 171, 480, 189] + ZOrder 18 + Port "3" + IconDisplay "Port number" + } + Line { + SrcBlock "relay_par" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "e" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + SrcBlock "t" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + SrcBlock "u_ref" + SrcPort 1 + DstBlock " SFunction " + DstPort 4 + } + Line { + SrcBlock "run_exp" + SrcPort 1 + DstBlock " SFunction " + DstPort 5 + } + Line { + Name "result" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "result" + DstPort 1 + } + Line { + Name "u" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "u" + DstPort 1 + } + Line { + Name "done" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 4 + DstBlock "done" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType Constant + Name "timeAfterExp" + SID "892" + Position [545, 390, 575, 420] + ZOrder -4 + Value "params.timeAfterExp" + } + Block { + BlockType Outport + Name "u" + SID "893" + Position [835, 188, 865, 202] + ZOrder 4 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "done" + SID "894" + Position [830, 113, 860, 127] + ZOrder 4 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "result2" + SID "895" + Position [730, 38, 760, 52] + ZOrder 121 + Port "3" + IconDisplay "Port number" + } + Line { + SrcBlock "Switch" + SrcPort 1 + DstBlock "u" + DstPort 1 + } + Line { + SrcBlock "Relay_parameters" + SrcPort 1 + DstBlock "relay_exp\n" + DstPort 1 + } + Line { + SrcBlock "relay_exp\n" + SrcPort 2 + Points [75, 0] + DstBlock "Switch" + DstPort 1 + } + Line { + SrcBlock "e" + SrcPort 1 + Points [147, 0; 0, -90] + DstBlock "relay_exp\n" + DstPort 2 + } + Line { + SrcBlock "relay_exp\n" + SrcPort 1 + DstBlock "result2" + DstPort 1 + } + Line { + SrcBlock "Constraint" + SrcPort 1 + DstBlock "Stop Simulation" + DstPort 1 + } + Line { + SrcBlock "AND" + SrcPort 1 + Points [110, 0; 0, -50] + DstBlock "Constraint" + DstPort 2 + } + Line { + SrcBlock "other_done" + SrcPort 1 + DstBlock "AND" + DstPort 1 + } + Line { + SrcBlock "relay_exp\n" + SrcPort 3 + Points [0, 0] + Branch { + Points [0, 160] + Branch { + DstBlock "Scope" + DstPort 1 + } + Branch { + Points [0, 176; -551, 0; 0, -36] + DstBlock "AND" + DstPort 2 + } + } + Branch { + Points [0, -15] + DstBlock "done" + DstPort 1 + } + } + Line { + SrcBlock "timeAfterExp" + SrcPort 1 + Points [28, 0; 0, -10] + DstBlock "Constraint" + DstPort 3 + } + Line { + SrcBlock "Compare\nTo Constant" + SrcPort 1 + Points [60, 0; 0, -19] + Branch { + Points [250, 0] + DstBlock "Switch" + DstPort 2 + } + Branch { + DstBlock "relay_exp\n" + DstPort 5 + } + } + Line { + SrcBlock "Constant" + SrcPort 1 + Points [83, 0] + Branch { + Points [0, -165] + DstBlock "relay_exp\n" + DstPort 4 + } + Branch { + Points [134, 0; 0, -70] + DstBlock "Switch" + DstPort 3 + } + } + Line { + SrcBlock "Digital Clock" + SrcPort 1 + Points [30, 0] + Branch { + Points [205, 0] + Branch { + Points [0, -124] + Branch { + DstBlock "relay_exp\n" + DstPort 3 + } + Branch { + Points [155, -1] + } + } + Branch { + DstBlock "Compare\nTo Constant" + DstPort 1 + } + } + Branch { + Points [0, 150] + DstBlock "Constraint" + DstPort 1 + } + } + } + } + Block { + BlockType SubSystem + Name "Logger" + SID "896" + Ports [1] + Position [545, 141, 600, 179] + ZOrder 117 + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "Logger" + Location [1911, 198, 2953, 1077] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "result" + SID "897" + Position [20, 43, 50, 57] + ZOrder 88 + IconDisplay "Port number" + SampleTime "simopt.h" + } + Block { + BlockType ToWorkspace + Name "Logger" + SID "898" + Ports [1] + Position [105, 35, 165, 65] + ZOrder 87 + VariableName "result" + MaxDataPoints "1" + SampleTime "simopt.h" + SaveFormat "Structure With Time" + } + Line { + SrcBlock "result" + SrcPort 1 + DstBlock "Logger" + DstPort 1 + } + } + } + Block { + BlockType Mux + Name "Mux" + SID "899" + Ports [2, 1] + Position [485, 141, 490, 179] + ZOrder 118 + ShowName off + Inputs "2" + DisplayOption "bar" + } + Block { + BlockType Outport + Name "u1" + SID "900" + Position [405, 103, 435, 117] + ZOrder -2 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "u2" + SID "901" + Position [405, 193, 435, 207] + ZOrder 4 + Port "2" + IconDisplay "Port number" + } + Line { + SrcBlock "Autotuner1" + SrcPort 2 + Points [10, 0; 0, 60; -120, 0] + DstBlock "Autotuner2" + DstPort 2 + } + Line { + SrcBlock "Autotuner2" + SrcPort 2 + Points [5, 0; 0, -50; -135, 0] + DstBlock "Autotuner1" + DstPort 2 + } + Line { + SrcBlock "Autotuner1" + SrcPort 1 + Points [9, 0; 0, 5] + DstBlock "u1" + DstPort 1 + } + Line { + SrcBlock "Autotuner2" + SrcPort 1 + Points [0, 5] + DstBlock "u2" + DstPort 1 + } + Line { + SrcBlock "e1" + SrcPort 1 + DstBlock "Autotuner1" + DstPort 1 + } + Line { + SrcBlock "e2" + SrcPort 1 + DstBlock "Autotuner2" + DstPort 1 + } + Line { + SrcBlock "Autotuner1" + SrcPort 3 + Points [73, 0; 0, 15] + DstBlock "Mux" + DstPort 1 + } + Line { + SrcBlock "Autotuner2" + SrcPort 3 + Points [100, 0; 0, -55] + DstBlock "Mux" + DstPort 2 + } + Line { + SrcBlock "Mux" + SrcPort 1 + DstBlock "Logger" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "tau_tuner" + SID "824" + Ports [1, 1] + Position [100, 39, 170, 81] + ZOrder 157 + BackgroundColor "lightBlue" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "tau_tuner" + Location [103, 95, 1243, 771] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "e" + SID "825" + Position [30, 148, 60, 162] + ZOrder -1 + IconDisplay "Port number" + SampleTime "simopt.h" + } + Block { + BlockType Clock + Name "Clock" + SID "826" + Position [15, 205, 35, 225] + ZOrder 6 + } + Block { + BlockType Reference + Name "Compare\nTo Constant1" + SID "827" + Ports [1, 1] + Position [280, 283, 375, 317] + ZOrder 118 + LibraryVersion "1.260" + SourceBlock "simulink/Logic and Bit\nOperations/Compare\nTo Constant" + SourceType "Compare To Constant" + relop ">=" + const "params.expStartTime" + OutDataTypeStr "boolean" + ZeroCross on + } + Block { + BlockType Constant + Name "ConstU1" + SID "828" + Position [315, 345, 345, 375] + ZOrder 117 + Value "params.ustart" + SampleTime "simopt.h" + } + Block { + BlockType SubSystem + Name "Constraint" + SID "829" + Ports [2, 1] + Position [675, 562, 780, 613] + ZOrder -4 + LibraryVersion "1.32" + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + SFBlockType "MATLAB Function" + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskSelfModifiable on + MaskDisplay "bgColor = Simulink.Root.ColorString2Rgb(get_param(gcbh, 'BackgroundColor')); image(imread('private/" + "eml_membrane_16.png','png','BackgroundColor',bgColor(1:3)),'center'); disp([10 10 'Constraint']);" + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "Constraint" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "27" + Block { + BlockType Inport + Name "time" + SID "829::23" + Position [20, 101, 40, 119] + ZOrder 9 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "done" + SID "829::24" + Position [20, 136, 40, 154] + ZOrder 10 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "829::26" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 12 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "829::25" + Tag "Stateflow S-Function ATlibrary_2012a 5" + Ports [2, 2] + Position [180, 100, 230, 160] + ZOrder 11 + FunctionName "sf_sfun" + PortCounts "[2 2]" + EnableBusSupport on + Port { + PortNumber 2 + Name "stop" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "829::27" + Position [460, 241, 480, 259] + ZOrder 13 + } + Block { + BlockType Outport + Name "stop" + SID "829::5" + Position [460, 101, 480, 119] + ZOrder -6 + IconDisplay "Port number" + } + Line { + SrcBlock "time" + SrcPort 1 + Points [120, 0] + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "done" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + Name "stop" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "stop" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "Logger" + SID "830" + Ports [1] + Position [750, 21, 805, 59] + ZOrder 93 + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "Logger" + Location [702, 184, 1771, 1063] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "result" + SID "831" + Position [20, 43, 50, 57] + ZOrder 88 + IconDisplay "Port number" + SampleTime "simopt.h" + } + Block { + BlockType ToWorkspace + Name "Logger" + SID "832" + Ports [1] + Position [105, 35, 165, 65] + ZOrder 87 + VariableName "result" + MaxDataPoints "1" + SampleTime "simopt.h" + SaveFormat "Structure With Time" + } + Line { + SrcBlock "result" + SrcPort 1 + DstBlock "Logger" + DstPort 1 + } + } + } + Block { + BlockType Mux + Name "Mux" + SID "833" + Ports [4, 1] + Position [160, 101, 165, 139] + ZOrder 74 + ShowName off + DisplayOption "bar" + } + Block { + BlockType Constant + Name "PID_parameters" + SID "834" + Position [30, 315, 60, 345] + ZOrder -4 + Value "[params.h, params.equi] " + SampleTime "simopt.h" + } + Block { + BlockType Constant + Name "Relay_parameters" + SID "835" + Position [30, 25, 60, 55] + ZOrder -4 + Value "[params.eps, params.asym, params.h, 2,12,1, params.uon,params.hyst,params.noiseMeasureTime, 0]" + SampleTime "simopt.h" + } + Block { + BlockType Scope + Name "Scope" + SID "836" + Ports [1] + Position [795, 489, 825, 521] + ZOrder 54 + Floating off + Location [920, 503, 1505, 917] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + ShowLegends off + YMin "-1.00000" + YMax "1.00000" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off + } + Block { + BlockType Scope + Name "Scope1" + SID "837" + Ports [1] + Position [815, 94, 845, 126] + ZOrder 70 + Floating off + Location [1145, 775, 1738, 1179] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + ShowLegends off + YMin "-1.25" + YMax "11.25" + SaveName "ScopeData2" + DataFormat "StructureWithTime" + LimitDataPoints off + } + Block { + BlockType Scope + Name "Scope2" + SID "838" + Ports [1] + Position [520, 234, 550, 266] + ZOrder 71 + Floating off + Location [664, 616, 1265, 1010] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + ShowLegends off + YMin "-3.218" + YMax "-3.205" + SaveName "ScopeData3" + DataFormat "StructureWithTime" + LimitDataPoints off + } + Block { + BlockType Stop + Name "Stop Simulation" + SID "839" + Position [835, 572, 870, 608] + ZOrder -4 + } + Block { + BlockType Switch + Name "Switch" + SID "840" + Position [760, 185, 810, 225] + ZOrder 62 + Criteria "u2 ~= 0" + InputSameDT off + SaturateOnIntegerOverflow off + } + Block { + BlockType ToWorkspace + Name "To Workspace1" + SID "841" + Ports [1] + Position [235, 145, 295, 175] + ZOrder 73 + VariableName "result1" + MaxDataPoints "50" + SampleTime "-1" + SaveFormat "Timeseries" + } + Block { + BlockType SubSystem + Name "relay_exp\n" + SID "842" + Ports [5, 4] + Position [480, 22, 635, 158] + ZOrder 3 + LibraryVersion "1.32" + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + SFBlockType "MATLAB Function" + MaskType "Stateflow" + MaskDescription "Embedded MATLAB block" + MaskSelfModifiable on + MaskDisplay "bgColor = Simulink.Root.ColorString2Rgb(get_param(gcbh, 'BackgroundColor')); image(imread('private/" + "eml_membrane_16.png','png','BackgroundColor',bgColor(1:3)),'center'); disp([10 10 'relay_exp']);" + MaskIconFrame on + MaskIconOpaque off + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "normalized" + System { + Name "relay_exp\n" + Location [189, 219, 840, 949] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "41" + Block { + BlockType Inport + Name "relay_par" + SID "842::36" + Position [20, 101, 40, 119] + ZOrder 21 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "e" + SID "842::23" + Position [20, 136, 40, 154] + ZOrder 9 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "t" + SID "842::28" + Position [20, 171, 40, 189] + ZOrder 14 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "u_ref" + SID "842::37" + Position [20, 206, 40, 224] + ZOrder 22 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "run_exp" + SID "842::31" + Position [20, 246, 40, 264] + ZOrder 17 + Port "5" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "842::40" + Ports [1, 1] + Position [270, 280, 320, 320] + ZOrder 25 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "842::39" + Tag "Stateflow S-Function ATlibrary_2012a 6" + Ports [5, 5] + Position [180, 100, 230, 220] + ZOrder 24 + FunctionName "sf_sfun" + PortCounts "[5 5]" + EnableBusSupport on + Port { + PortNumber 2 + Name "result" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "u" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 4 + Name "PID_param" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 5 + Name "done" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "842::41" + Position [460, 291, 480, 309] + ZOrder 26 + } + Block { + BlockType Outport + Name "result" + SID "842::38" + Position [460, 101, 480, 119] + ZOrder 23 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "u" + SID "842::27" + Position [460, 136, 480, 154] + ZOrder 13 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "PID_param" + SID "842::34" + Position [460, 171, 480, 189] + ZOrder 20 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "done" + SID "842::32" + Position [460, 206, 480, 224] + ZOrder 18 + Port "4" + IconDisplay "Port number" + } + Line { + SrcBlock "relay_par" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + SrcBlock "e" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + SrcBlock "t" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + SrcBlock "u_ref" + SrcPort 1 + DstBlock " SFunction " + DstPort 4 + } + Line { + SrcBlock "run_exp" + SrcPort 1 + DstBlock " SFunction " + DstPort 5 + } + Line { + Name "result" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + Points [0, -25] + DstBlock "result" + DstPort 1 + } + Line { + Name "u" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "u" + DstPort 1 + } + Line { + Name "PID_param" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 4 + DstBlock "PID_param" + DstPort 1 + } + Line { + Name "done" + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 5 + DstBlock "done" + DstPort 1 + } + Line { + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType Outport + Name "u" + SID "843" + Position [835, 198, 865, 212] + ZOrder 4 + IconDisplay "Port number" + SampleTime "simopt.h" + } + Line { + SrcBlock "Mux" + SrcPort 1 + Points [30, 0; 0, 40] + DstBlock "To Workspace1" + DstPort 1 + } + Line { + SrcBlock "Switch" + SrcPort 1 + DstBlock "u" + DstPort 1 + } + Line { + SrcBlock "e" + SrcPort 1 + Points [22, 0; 0, -90; 16, 0] + Branch { + DstBlock "relay_exp\n" + DstPort 2 + } + Branch { + Points [0, 50] + DstBlock "Mux" + DstPort 2 + } + } + Line { + SrcBlock "Relay_parameters" + SrcPort 1 + Points [73, 0] + Branch { + DstBlock "relay_exp\n" + DstPort 1 + } + Branch { + Points [0, 65] + DstBlock "Mux" + DstPort 1 + } + } + Line { + SrcBlock "PID_parameters" + SrcPort 1 + Points [31, 0; 0, -195] + DstBlock "Mux" + DstPort 4 + } + Line { + SrcBlock "relay_exp\n" + SrcPort 2 + Points [78, 0; 0, 115] + DstBlock "Switch" + DstPort 1 + } + Line { + SrcBlock "Compare\nTo Constant1" + SrcPort 1 + Points [85, 0; 0, -45] + Branch { + Points [0, -5] + DstBlock "Scope2" + DstPort 1 + } + Branch { + Points [0, -50] + Branch { + DstBlock "relay_exp\n" + DstPort 5 + } + Branch { + DstBlock "Switch" + DstPort 2 + } + } + } + Line { + SrcBlock "ConstU1" + SrcPort 1 + Points [45, 0; 0, -25; 20, 0] + Branch { + Points [0, -220] + DstBlock "relay_exp\n" + DstPort 4 + } + Branch { + Points [305, 0; 0, -115] + DstBlock "Switch" + DstPort 3 + } + } + Line { + SrcBlock "relay_exp\n" + SrcPort 4 + Points [14, 0; 1, 271; -265, -1; 0, 185; 215, 0] + Branch { + DstBlock "Constraint" + DstPort 2 + } + Branch { + Points [0, -95] + DstBlock "Scope" + DstPort 1 + } + } + Line { + SrcBlock "Clock" + SrcPort 1 + Points [75, 0] + Branch { + Points [20, 0] + Branch { + Points [100, 0] + Branch { + Points [0, 85] + DstBlock "Compare\nTo Constant1" + DstPort 1 + } + Branch { + Points [85, 0; 0, -124] + DstBlock "relay_exp\n" + DstPort 3 + } + } + Branch { + Points [0, -90] + DstBlock "Mux" + DstPort 3 + } + } + Branch { + Points [0, 360] + DstBlock "Constraint" + DstPort 1 + } + } + Line { + SrcBlock "relay_exp\n" + SrcPort 3 + DstBlock "Scope1" + DstPort 1 + } + Line { + SrcBlock "relay_exp\n" + SrcPort 1 + DstBlock "Logger" + DstPort 1 + } + Line { + SrcBlock "Constraint" + SrcPort 1 + DstBlock "Stop Simulation" + DstPort 1 + } + } + } + } +} +# Finite State Machines +# +# Stateflow Version 7.6 (R2011b) dated Jan 25 2012, 13:50:40 +# +# + + +Stateflow { + machine { + id 1 + name "ATlibrary_2012a" + created "26-Apr-2017 11:16:05" + isLibrary 0 + firstTarget 79 + sfVersion 76014001.00040001 + } + chart { + id 2 + name "NOMAD/relay_exp\n" + windowPosition [404.686 -55 429 739.2] + viewLimits [0 319.2 0 430.6] + screen [1 1 1280 1024 1.25] + treeNode [0 3 0 0] + firstTransition 5 + firstJunction 4 + viewObj 2 + machine 1 + ssIdHighWaterMark 21 + decomposition CLUSTER_CHART + type EML_CHART + firstData 6 + chartFileNumber 1 + disableImplicitCasting 1 + eml { + name "relay_function" + } + } + state { + id 3 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 2 + treeNode [2 0 0 0] + superState SUBCHART + subviewer 2 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function [result, u] = relay_function(relay_par, e, u0, run_exp)\n\n%%%%%%%%%% Definitions and de" + "fault values %%%%%%%%%%%%%%\ny=-e;\n% Relay parameters, values from workspace.\npersistent d1 d2 u_on u_off h\ng" + "amma = relay_par(1);\nt_sample = relay_par(2);\nbigYup = relay_par(3);\nrelayMaxDev = relay_par(4);\ndef_h = rel" + "ay_par(5);\nnoiseMeasureTime = relay_par(6);\n\npersistent yref uref\nif isempty(d2)\n h=def_h;\n % These " + "values are re-assigned later in the program so they won't be\n % used. But they are assigned in an if-stateme" + "nt so the program doesn't\n % understand that they will always be assigned before they are used.\n d1 = ga" + "mma;\n d2 = 1;\n u_on = d1;\n u_off = -d2;\n uref = u0;\n yref = 0;\nend\n\npersistent u_old sta" + "rtup Ksign\nif isempty(u_old)\n u_old = uref;\n Ksign = 1; % Will be re-assigned during the startup phase\n" + "end\n\npersistent sample\nif isempty(sample)\n sample = 0;\nend\n\n\n%%%%%%%%% Startup params %%%%%%%%%%%\np" + "ersistent a b c tff exp_t yh yl measureNoise first\nif isempty(startup)\n tff = 1/t_sample; % Usually 5 but t" + "o not make the startup phase a too large part of the id data in the ETFA paper we decreased it! Want the ramp-up" + " to be a certain time, according to Tore about 3-5s \n b = 40;\n c = relayMaxDev/(b-1);\n a = uref-c;\n" + " measureNoise = 1;\n startup = 0;\n yh = 0;\n yl = 0;\n first = true;\nend\n%%%%%%%%%%%%%%%%%%%%%" + "%%%%%%%%%%%%%%%%%%%%%%%%%\n\nif run_exp == 0\n u = 0;\n result = [0 0 0];\n return\nend\n\n\n%%%%%%%%%%" + "%%% Program running %%%%%%%%%%%%%%%%%\n\nsample = sample+1;\nif sample > 1\nend\n\n% %%%%%%%%% Startup %%%%%%%%%" + "%%%\n if measureNoise == 1\n if first \n uref = u0;\n yref = y;\n first = false;\n " + " yh = yref;\n yl = yref;\n end\n u = uref;\n if sample < noiseMeasureTime/t_sample\n yh " + "= max(yh,y);\n yl = min(yl,y);\n else\n noise = (yh-yl)/2;\n yref = (yh+yl)/2;\n " + "h = max(2*noise, def_h);\n measureNoise = 0;\n startup = 1;\n end\n elseif startup == 1\n ex" + "p_t = sample-noiseMeasureTime/t_sample;\n a = uref-c;\n u = (a+c*b^(exp_t/tff));\n if abs(u) > " + "relayMaxDev+uref\n u = (relayMaxDev+uref);\n end\n if exp_t > 1\n ydev = y-y" + "ref; \n if abs(ydev) > h % reached outside hysteresis, stop and decide Ksign\n Ksign =" + " ydev/abs(ydev)\n if bigYup == 1\n %d1 = min(relayMaxDev, gamma*abs(u-uref));\n" + " d1 = min(relayMaxDev, abs(u-uref)); %could be a problem to have the large/small this way but" + " prefer it. \n d2 = d1/gamma;\n else\n %d2 = min(relayMaxDe" + "v, gamma*abs(u-uref));\n d2 = min(relayMaxDev, abs(u-uref));\n d1 = d2/gam" + "ma;\n end\n startup = 0;\n u_on = uref+Ksign*d1;\n u" + "_off = uref-Ksign*d2;\n if Ksign > 0\n u = u_off;\n else\n " + " u = u_on;\n end\n elseif exp_t > tff\n u = uref+relayMax" + "Dev;\n end\n end\n else\n %%%%%% Update amplitudes %%%%%%%\n u_on = uref+Ksign*d1;\n " + "u_off = uref-Ksign*d2;\n %%%%%% Calculate new u %%%%%%%%%\n if y <= yref-h\n u = u_on;\n elseif " + "y < yref+h && y > yref-h\n u = u_old;\n else u = u_off;\n end\n end\n%%%% store data %%%%%%\nu_old " + "= u;\nresult = [yref, uref, h];\n\n\n\n\n\n\n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + junction { + id 4 + position [23.5747 49.5747 7] + chart 2 + linkNode [2 0 0] + subviewer 2 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 5 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 100.8 18.448] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 4 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 2 + linkNode [2 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 2 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + } + data { + id 6 + ssIdNumber 19 + name "result" + linkNode [2 0 7] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 7 + ssIdNumber 18 + name "relay_par" + linkNode [2 6 8] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 8 + ssIdNumber 8 + name "u" + linkNode [2 7 9] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 9 + ssIdNumber 5 + name "e" + linkNode [2 8 10] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 10 + ssIdNumber 21 + name "u0" + linkNode [2 9 11] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 11 + ssIdNumber 20 + name "run_exp" + linkNode [2 10 0] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + instance { + id 12 + name "NOMAD/relay_exp\n" + machine 1 + chart 2 + } + chart { + id 13 + name "tau_tuner/Constraint" + windowPosition [492.889 250.2 211 434] + viewLimits [0 156.75 0 153.75] + screen [1 1 1280 1024 1.25] + treeNode [0 14 0 0] + firstTransition 16 + firstJunction 15 + viewObj 13 + machine 1 + ssIdHighWaterMark 7 + decomposition CLUSTER_CHART + type EML_CHART + firstData 17 + chartFileNumber 5 + disableImplicitCasting 1 + eml { + name "Constraint" + } + } + state { + id 14 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 13 + treeNode [13 0 0 0] + superState SUBCHART + subviewer 13 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "%function stop = Constraint(tstop, time, done)\nfunction stop = Constraint(time, done)\n%#codegen" + "\npersistent tstopp\nif isempty(tstopp)\n tstopp = 10000;\nend\nif done == 1\n tstopp = time;\nend\nif tim" + "e > tstopp; %+params.timeAfterExp;\n stop = 1;\nelse\n stop = 0;\nend" + editorLayout "100 M4x1[10 5 700 500]" + } + } + junction { + id 15 + position [23.5747 49.5747 7] + chart 13 + linkNode [13 0 0] + subviewer 13 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 16 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 15 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 13 + linkNode [13 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 13 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + } + data { + id 17 + ssIdNumber 5 + name "stop" + linkNode [13 0 18] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 18 + ssIdNumber 6 + name "time" + linkNode [13 17 19] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 19 + ssIdNumber 7 + name "done" + linkNode [13 18 0] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + instance { + id 20 + name "tau_tuner/Constraint" + machine 1 + chart 13 + } + chart { + id 21 + name "tau_tuner/relay_exp\n" + windowPosition [535.556 -55 429 739.2] + viewLimits [0 319.2 0 430.6] + screen [1 1 1280 1024 1.25] + treeNode [0 22 0 0] + firstTransition 24 + firstJunction 23 + viewObj 21 + machine 1 + ssIdHighWaterMark 17 + decomposition CLUSTER_CHART + type EML_CHART + firstData 25 + updateMethod DISCRETE + sampleTime "simopt.h" + chartFileNumber 6 + disableImplicitCasting 1 + eml { + name "relay_exp" + } + } + state { + id 22 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 21 + treeNode [21 0 0 0] + superState SUBCHART + subviewer 21 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function [result, u, PID_param, done]= relay_exp(relay_par, e,t, u_ref, run_exp)\n\n\n%%%%%%%%%% " + "Definitions and default values %%%%%%%%%%%%%%\ny = -e;\n% Relay parameters, values from workspace.\npersistent d" + "1 d2 u_on u_off h\nepsilon = relay_par(1);\ngamma = relay_par(2); \nt_sample = relay_par(3);\nlow_limit_f = rela" + "y_par(4);\nupp_limit_f = relay_par(5);\nbigYup = relay_par(6);\nrelayMaxDev = relay_par(7);\ndef_h = relay_par(8" + ");\nnoiseMeasureTime = relay_par(9);\nfixAmp = relay_par(10);\n\npersistent yref uref resultvec\nif isempty(d2)\n" + " h=def_h;\n % These values are assigned to their values later in the code, but in an if-statement\n % s" + "o the program doesn't understand that they will always be assigned. \n d1 = gamma;\n d2 = 1;\n u_on = " + "d1;\n u_off = -d2;\n uref = 0;\n yref = y;\n resultvec = zeros(22,1);\nend\n\n% Creating arrays for " + "data logging\nmaxlength = 1000000;\npersistent uvec yvec tvec \nif isempty(uvec)\n uvec = zeros(1,maxlength);" + "\n yvec = zeros(1,maxlength);\n tvec = zeros(1,maxlength);\nend\n\npersistent sample\nif isempty(sample)\n" + " sample = 0;\nend\n\npersistent startup Ksign startup_switch amp_changed\nif isempty(Ksign)\n Ksign = 1; %" + " Is found and assigned during the startup phase\n startup_switch = 0; \n amp_changed = 0;\nend\n\npersiste" + "nt param \nif isempty(param)\n param = [1, 10, 0]; % Should be an input somehow if an existing PID controller" + " is used first\nend\nPID_param = param; % Not allowed to have a persistent variable as output so had to do like " + "this\ndone = 0;\nfinished = false;\n\n% To handle switches\npersistent switching_times switch_index last_switch_" + "sample\nif isempty(switching_times)\n switching_times = zeros(1,100); % Larger than necessary\n switch_ind" + "ex = 1;\n last_switch_sample = 1;\nend\n\n%%%%%%%%% Startup params %%%%%%%%%%%\npersistent a b c ttf exp_t y" + "h yl measureNoise first\nif isempty(startup)\n uvec(1) = uref;\n yvec(1) = yref;\n tvec(1) = 0;\n tt" + "f = 5/t_sample; % Want to run the exponential growth for a certain time, not a number of samples. According to T" + "ore about 3-5s \n b = 40;\n c = relayMaxDev/(b-1);\n a = uvec(1)-c;\n measureNoise = 1;\n startup" + " = 0;\n yh = 0;\n yl = 0;\n first = true;\nend\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\nresu" + "lt = resultvec;\nif run_exp == 0\n done = 0;\n u = 0;\n PID_param = param;\n return\nend\nif fixAmp " + "== 1\n d1 = upp_limit_f;\n d2 = low_limit_f;\nend\n%%%%%%%%%%%%% Program running %%%%%%%%%%%%%%%%%\nsample =" + " sample+1;\nif sample > 1\n yvec(sample-1) = y; % store inputs\n tvec(sample) = t;\nend\n\n%%%%%%%%% Startup %" + "%%%%%%%%%%%\nif measureNoise == 1\n if first \n uref = u_ref;\n yref = y;\n first = fals" + "e;\n yh = yref;\n yl = yref;\n end\n u = uref;\n if sample < noiseMeasureTime/t_sample\n " + " yh = max(yh,y);\n yl = min(yl,y);\n else\n resultvec(13) = yh;\n resultvec(14) = " + "yl;\n noise = (yh-yl)/2;\n yref = (yh+yl)/2;\n resultvec(15) = yref;\n resultvec(16)" + " = uref;\n h = max(2*noise, def_h);\n resultvec(12) = h;\n measureNoise = 0;\n start" + "up = 1;\n end\nelseif startup == 1\n exp_t = sample-noiseMeasureTime/t_sample; % this should be zero the f" + "irst sample\n a = uref-c;\n u = a+c*b^(exp_t/ttf);\n if u > relayMaxDev+uref\n u = r" + "elayMaxDev+uref;\n end\n if exp_t > 1\n ydev = y-yref; \n if abs(ydev) > h %" + " when reached outside hysteresis, stop and decide Ksign\n Ksign = ydev/abs(ydev)\n " + " if bigYup == 1\n d1 = min(relayMaxDev, gamma*abs(u-uref));\n d2 = d1/gamm" + "a;\n else\n d2 = min(relayMaxDev, gamma*abs(u-uref));\n d1 " + "= d2/gamma;\n end\n startup = 0;\n startup_switch = 1; % To not imm" + "ediately change the new amplitude.\n elseif exp_t > ttf\n u = uref+relayMaxDev;\n " + " end\n end\nelseif done == 0\n %%%%%% Update amplitudes %%%%%%%\n u_on = uref+Ksign*d1;\n " + "u_off = uref-Ksign*d2;\n %%%%%% Calculate new u %%%%%%%%%\n u = rel_func(y,uvec(sample-1),u_on, u_off,yref" + ",h);\nelse \n u = 0; % If the experiment aren't running no control signal should be calculated here\n % Th" + "is script shouldn't be running in those cases but somehow it seems\n % to do.\nend\n%%%% store data %%%%%%\nu" + "vec(sample) = u;\n\n%%%%%%% At switching points %%%%%%%\nif sample>1 && (uvec(sample)-uref)*(uvec(sample-1)-uref" + ") < 0\n switching_times(switch_index) = tvec(sample);\n low_limit = low_limit_f*h;\n upp_limit = upp_li" + "mit_f*h;\n ratio = check_amplitudes(yvec(last_switch_sample:sample-1)-yref, upp_limit, low_limit, gamma);\n " + " if fixAmp == 1\n ratio = 1;\n end\n if amp_changed == 1 % To not change two consecutive half peri" + "ods...\n ratio = 1;\n amp_changed = 0;\n end\n if (ratio > 1.01 || ratio < 0.99) && startup_" + "switch ~= 1 \n if max(d1,d2)*ratio > relayMaxDev\n if max(d1,d2) == relayMaxDev\n " + " ratio_forced = 1\n %ratio = 1;\n else\n ratio = relayMaxDev/max(d1,d" + "2);\n d1 = d1*ratio;\n d2 = d2*ratio;\n switch_index = 0; % to rese" + "t convergence checks if changed amplitude.\n amp_changed = 1;\n end\n \n " + " else\n d1 = d1*ratio;\n d2 = d2*ratio;\n switch_index = 0; % To reset conve" + "rgence checks if changed amplitude.\n amp_changed = 1;\n end\n if uvec(sample) == u_on\n " + " u = uref+Ksign*d1;\n elseif uvec(sample) == u_off\n u = uref-Ksign*d2;\n else\n " + " error = 1\n end\n uvec(sample) = u;\n end\n startup_switch = 0;\n if switch_index" + " > 3\n tp = switching_times(switch_index)-switching_times(switch_index-2);\n tp_old = switching_ti" + "mes(switch_index-1)-switching_times(switch_index-3);\n resultvec(19) = tp;\n resultvec(20) = tp_ol" + "d;\n if abs(tp-tp_old)<tp_old*epsilon\n finished = true;\n tstop = tvec(sample);\n " + " resultvec(17) = tstop;\n end\n end\n last_switch_sample = sample;\n switch_index = sw" + "itch_index+1;\nend\n\n\n% Checks if converged, in that case collect info and call a method that\n% calculates a " + "model and PI/PID parameters\nif finished == true\n tsim = tvec(1:sample);\n usim = uvec(1:sample)-uref;\n " + " ysim = yvec(1:sample)-yref;\n u1 = usim(1:end-1);\n u2 = usim(2:end);\n switches = find(" + "u1.*u2<0);\n yp = ysim(switches(end-2):switches(end));\n up = usim(switches(end-2):switches(end));" + "\n tp = tsim(switches(end-2):switches(end));\n y_int = trapz(tp,yp);\n u_int = trapz(tp,up)" + ";\n resultvec(21) = y_int;\n resultvec(22) = u_int;\n [ton toff] = calc_ton_toff(usim, switchin" + "g_times(1:switch_index-1), u_on-uref);\n resultvec(8) = ton;\n resultvec(9) = toff;\n %%%%% Calulating " + "tau %%%%%\n rho = max(ton, toff)/min(ton, toff);\n tau = min(1, max((gamma-rho)/((gamma-1)*(0.35*rho+0.65)" + "),0)) %Min&max if something strange would occur.\n resultvec(1) = tau;\n \n if tau > 0.1 % this condition" + " needs to be considered more closely\n [K,T,L] = calc_FOTD_params(u_int,y_int,d1,d2,h,ton,toff,tau);\n " + " if tau > 0.6\n [Kc, Ti, Td] = calc_AMIGO_PI(K,T,L);\n else\n [Kc, Ti, Td] = cal" + "c_AMIGO_PID(K,T,L);\n end\n resultvec(2) = K;\n resultvec(3) = T;\n resultvec(4) = L" + ";\n resultvec(5) = Kc;\n resultvec(6) = Ti;\n resultvec(7) = Td;\n else\n [kv, L]" + " = calc_integrating_params(y_int, u_on-uref, u_off-uref, ton, toff, h);\n %[Kc, Ti, Td] = calc_AMIGO_int_" + "PI(kv, L);\n [Kc, Ti, Td] = calc_AMIGO_int_PID(kv, L); % Which one do I want?\n resultvec(2) = kv;" + "\n resultvec(3) = -1;\n resultvec(4) = L;\n resultvec(5) = Kc;\n resultvec(6) = Ti;\n" + " resultvec(7) = Td;\n end\n done = 1;\n param = [Kc, Ti, Td];\n resultvec(10) = d1;\n resu" + "ltvec(11) = d2;\n resultvec(18) = done;\n resultvec\nend\nend\n\n\n% ---------------------------------\n f" + "unction ratio = check_amplitudes(y, upper_limit, lower_limit, gamma)\n % Is checked at every switching po" + "int and sends in y = y_vec-yref\n % for the entire half period. No point to check at other time\n " + "% instances!\n ratio1 = max(abs(y))/upper_limit; % Top value deviates too much if > 1\n ratio2 = m" + "ax(abs(y))/lower_limit; % Top value too close to hysteresis limit if < 1.\n \n if ratio1 > 1\n " + " ratio = (upper_limit+lower_limit*gamma)/(2*max(abs(y))); \n elseif ratio2 < 1\n ratio = (" + "lower_limit+upper_limit/gamma)/(2*max(abs(y)));\n else\n ratio =1;\n end\n end\n%---" + "------------------------------------\n\nfunction u = rel_func(y,uold,uon,uoff,yref,h)\n if y <= yref-h\n u =" + " uon;\n elseif y < yref+h && y > yref-h\n u = uold;\n else u = uoff;\n end\nend\n\n% ---------------------" + "-----------\nfunction [ton, toff] = calc_ton_toff(u, switching_times, u_on)\n\nif u(end-1) == u_on\n ton = sw" + "itching_times(end)-switching_times(end-1);\n toff = switching_times(end-1)-switching_times(end-2);\nelse\n " + " toff = switching_times(end)-switching_times(end-1);\n ton = switching_times(end-1)-switching_times(end-2);\n" + "end\nend\n\n% ---------------------------------------------------\n\nfunction [kstart tstart lstart] = calc_FOTD" + "_params(u_int,y_int,d1,d2,h, ton, toff, tau)\nkstart=y_int/u_int;\nLdivT = tau/(1-tau);\n% Equations from commit" + " 2015-02-10\nu_int\ny_int\nd1\nd2\nh\nton\ntoff\ntau\ntstart1 = ton/log((h/abs(kstart)-d2+exp(LdivT)*(d1+d2))/(d" + "1-h/abs(kstart)));\ntstart2 = toff/log((h/abs(kstart)-d1+exp(LdivT)*(d1+d2))/(d2-h/abs(kstart)));\ntstart = (tst" + "art1+tstart2)/2;\nlstart = tstart*LdivT;\nend\n\n% --------------------------------------------\n\nfunction [K, " + "Ti, Td] = calc_AMIGO_PI(Kp,T,L)\nK = 0.15/Kp+(0.35-L*T/(L+T)^2)*T/(Kp*L);\nTi = 0.35*L+13*L*T^2/(T^2+12*L*T+7*L^" + "2);\nTd = 0;\nend\n\nfunction [K, Ti, Td] = calc_AMIGO_PID(Kp,T,L)\nK = (0.2*L+0.45*T)/(Kp*L);\nTi = (0.4*L+0.8*" + "T)/(L+0.1*T)*L;\nTd = 0.5*L*T/(0.3*L+T);\nend\n\n% --------------------------------------------\nfunction [kv, L" + "] = calc_integrating_params(y_int, uon, uoff, ton, toff, h)\n%Equations from commit 2015-02-10\ny_int\nuon\nuoff" + "\nton\ntoff\nh\n\nkv = 2*y_int/(ton*toff*(uon+uoff))+2*h/(uon*ton);\nL = (uon*ton-2*h/kv)/(uon-uoff);\nif L < 0\n" + " L = 1e-3;\nend\nend\n\n% -------------------------------------------\nfunction [K, Ti, Td] = calc_AMIGO_int_" + "PI(Kv, L)\nK = 0.35/(Kv*L);\nTi = 13.4*L;\nTd = 0;\nend\n\nfunction [K, Ti, Td] = calc_AMIGO_int_PID(Kv, L)\nK =" + " 0.45/(Kv*L);\nTi = 8*L;\nTd = 0.5*L;\nend" + editorLayout "100 M4x1[10 5 700 500]" + } + } + junction { + id 23 + position [23.5747 49.5747 7] + chart 21 + linkNode [21 0 0] + subviewer 21 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 24 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 100.8 18.448] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 23 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 21 + linkNode [21 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 21 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + } + data { + id 25 + ssIdNumber 16 + name "result" + linkNode [21 0 26] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 26 + ssIdNumber 8 + name "u" + linkNode [21 25 27] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 27 + ssIdNumber 12 + name "PID_param" + linkNode [21 26 28] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 28 + ssIdNumber 14 + name "relay_par" + linkNode [21 27 29] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 29 + ssIdNumber 5 + name "e" + linkNode [21 28 30] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 30 + ssIdNumber 9 + name "t" + linkNode [21 29 31] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 31 + ssIdNumber 15 + name "u_ref" + linkNode [21 30 32] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 32 + ssIdNumber 11 + name "run_exp" + linkNode [21 31 33] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 33 + ssIdNumber 4 + name "done" + linkNode [21 32 0] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + instance { + id 34 + name "tau_tuner/relay_exp\n" + machine 1 + chart 21 + } + chart { + id 35 + name "multi-NOMAD/Autotuner1/Constraint" + windowPosition [316.86 310.2 211 434] + viewLimits [0 156.75 0 153.75] + screen [1 1 1280 1024 1.25] + treeNode [0 36 0 0] + firstTransition 38 + firstJunction 37 + viewObj 35 + machine 1 + ssIdHighWaterMark 9 + decomposition CLUSTER_CHART + type EML_CHART + firstData 39 + chartFileNumber 7 + disableImplicitCasting 1 + eml { + name "Constraint" + } + } + state { + id 36 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 35 + treeNode [35 0 0 0] + superState SUBCHART + subviewer 35 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "%function stop = Constraint(tstop, time, done)\nfunction stop = Constraint(time, all_done, timeAf" + "terExp)\n%#codegen\npersistent tstopp first\nif isempty(tstopp)\n tstopp = 10000;\n first = true;\nend\nif" + " all_done == 1 && first \n tstopp = time;\n first = false;\nend\nif time > tstopp+timeAfterExp;\n stop " + "= 1;\nelse\n stop = 0;\nend" + editorLayout "100 M4x1[10 5 700 500]" + } + } + junction { + id 37 + position [23.5747 49.5747 7] + chart 35 + linkNode [35 0 0] + subviewer 35 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 38 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 37 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 35 + linkNode [35 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 35 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + } + data { + id 39 + ssIdNumber 5 + name "stop" + linkNode [35 0 40] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 40 + ssIdNumber 6 + name "time" + linkNode [35 39 41] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 41 + ssIdNumber 7 + name "all_done" + linkNode [35 40 42] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 42 + ssIdNumber 9 + name "timeAfterExp" + linkNode [35 41 0] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + instance { + id 43 + name "multi-NOMAD/Autotuner1/Constraint" + machine 1 + chart 35 + } + chart { + id 44 + name "multi-NOMAD/Autotuner1/relay_exp\n" + windowPosition [344.686 5 429 739.2] + viewLimits [0 319.2 0 430.6] + screen [1 1 1280 1024 1.25] + treeNode [0 45 0 0] + firstTransition 47 + firstJunction 46 + viewObj 44 + machine 1 + ssIdHighWaterMark 17 + decomposition CLUSTER_CHART + type EML_CHART + firstData 48 + chartFileNumber 8 + disableImplicitCasting 1 + eml { + name "relay_exp" + } + } + state { + id 45 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 44 + treeNode [44 0 0 0] + superState SUBCHART + subviewer 44 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function [result, u, done]= relay_exp(relay_par, e,t, u_ref, run_exp)\n\n\n%%%%%%%%%% Definitions" + " and default values %%%%%%%%%%%%%%\ny = -e;\n% Relay parameters, values from workspace.\npersistent d1 d2 u_on u" + "_off h\ngamma = relay_par(11); % index 2 is gamma, 11 is gamma2 \nt_sample = relay_par(3);\nbigYup = relay_par(6" + ");\nrelayMaxDev = relay_par(7);\ndef_h = relay_par(8);\nnoiseMeasureTime = relay_par(9);\nmaxSwitches = relay_pa" + "r(12);\nystep = relay_par(13);\nustep = relay_par(14);\n\npersistent yref uref\nif isempty(d2)\n h=def_h; % t" + "hese values will be re-assigned later and never used.\n d1 = gamma;\n d2 = 1;\n u_on = d1;\n u_off " + "= -d2;\n uref = 0;\n yref = 0;\nend\n\npersistent u_old resultvec\nif isempty(u_old)\n u_old = uref;\n " + " resultvec = zeros(23,1);\nend\n\npersistent sample\nif isempty(sample)\n sample = 0;\nend\n\npersistent st" + "artup Ksign\nif isempty(Ksign)\n Ksign = 1; % Is re-assigned during at the startup phase\nend\n\npersistent p" + "aram done_per\nif isempty(param)\n param = [1.1, 16, 0]; % Quadtank minfas (should be an input somehow if exi" + "sting PID parameters are used to bring it to its working point)\n done_per = 0;\nend\nPID_param = param;\ndon" + "e = done_per;\n\n% To handle switches\npersistent switching_times switch_index \nif isempty(switching_times)\n " + " switching_times = zeros(1,20); % Shouldn't need to be so large\n switch_index = 1;\nend\n\n%%%%%%%%% Startu" + "p params %%%%%%%%%%%\npersistent a b c tff exp_t yh yl measureNoise first\nif isempty(startup)\n tff = 5/t_s" + "ample; % According to Tore about 3-5s is appropriate for the startup growth \n b = 40;\n c = relayMaxDev/(" + "b-1);\n a = uref-c;\n measureNoise = 1;\n startup = 0;\n yh = 0;\n yl = 0;\n first = true;\nen" + "d\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\nresult = resultvec;\nif run_exp == 0\n u = 0;\n PID_" + "param = param;\n return\nend\n\n%%%%%%%%%%%%% Program running %%%%%%%%%%%%%%%%%\nsample = sample+1;\n\n%%%%%%" + "%%% Startup %%%%%%%%%%%%\nif measureNoise == 1\n if first \n uref = u_ref;\n yref = y;\n " + " first = false;\n yh = yref;\n yl = yref;\n end\n u = uref;\n if sample < noiseMeasureTim" + "e/t_sample\n yh = max(yh,y);\n yl = min(yl,y);\n else\n noise = (yh-yl)/2;\n yref" + " = (yh+yl)/2;\n %yref = y; % Could test the latest value instead of average?\n resultvec(15) = yre" + "f;\n resultvec(16) = uref;\n h = max(2*noise, def_h);\n measureNoise = 0;\n startup " + "= 1;\n resultvec(23) = t;\n end\nelseif startup == 1\n exp_t = sample-noiseMeasureTime/t_sample;\n " + " a = uref-c;\n u = a+c*b^(exp_t/tff);\n if u > relayMaxDev+uref\n u = relayMaxDev+ure" + "f;\n end\n if exp_t > 1\n ydev = y-yref; \n if abs(ydev) > h % outside hyste" + "resis, stop startup and decide Ksign\n Ksign = ydev/abs(ydev);\n if bigYup == 1\n " + " d1 = min(relayMaxDev, gamma*abs(u-uref));\n d2 = d1/gamma;\n " + " else\n d2 = min(relayMaxDev, gamma*abs(u-uref));\n d1 = d2/gamma;\n " + " end\n startup = 0;\n elseif exp_t > tff\n u = uref+relayMaxD" + "ev;\n end\n end\nelseif run_exp == 1\n %%%%%% Update amplitudes %%%%%%%\n u_on = uref+Ks" + "ign*d1;\n u_off = uref-Ksign*d2;\n %%%%%% Calculate new u %%%%%%%%%\n u = rel_func(y,u_old,u_on, u_off," + "yref,h);\nelse \n u = 0; %Shouldn't be needed?\nend\n\n%%%%%%% At switching points %%%%%%%\nif sample>1 && (u" + "-uref)*(u_old-uref) < 0\n switching_times(switch_index) = t;\n if switch_index > 2\n tp = switching" + "_times(switch_index)-switching_times(switch_index-2);\n resultvec(19) = tp;\n end\n if switch_index" + " == 3 % Step in yref/uref after two switches\n yref = yref+ystep*h;\n uref = uref+(d1+d2)/2*Ksign*" + "ustep;\n end\n if switch_index > maxSwitches\n done_per = 1;\n resultvec(17) = t;\n end\n" + " switch_index = switch_index+1;\nend\n%%%% store data %%%%%%\nu_old = u;\nend\n\nfunction u = rel_func(y,uold" + ",uon,uoff,yref,h)\n if y <= yref-h\n u = uon;\n elseif y < yref+h && y > yref-h\n u = uold;\n else u = " + "uoff;\n end\nend\n\n\n\n\n\n\n\n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + junction { + id 46 + position [23.5747 49.5747 7] + chart 44 + linkNode [44 0 0] + subviewer 44 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 47 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 100.8 18.448] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 46 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 44 + linkNode [44 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 44 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + } + data { + id 48 + ssIdNumber 16 + name "result" + linkNode [44 0 49] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 49 + ssIdNumber 8 + name "u" + linkNode [44 48 50] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 50 + ssIdNumber 14 + name "relay_par" + linkNode [44 49 51] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 51 + ssIdNumber 5 + name "e" + linkNode [44 50 52] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 52 + ssIdNumber 9 + name "t" + linkNode [44 51 53] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 53 + ssIdNumber 15 + name "u_ref" + linkNode [44 52 54] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 54 + ssIdNumber 11 + name "run_exp" + linkNode [44 53 55] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 55 + ssIdNumber 4 + name "done" + linkNode [44 54 0] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + instance { + id 56 + name "multi-NOMAD/Autotuner1/relay_exp\n" + machine 1 + chart 44 + } + chart { + id 57 + name "multi-NOMAD/Autotuner2/Constraint" + windowPosition [316.86 310.2 211 434] + viewLimits [0 156.75 0 153.75] + screen [1 1 1280 1024 1.25] + treeNode [0 58 0 0] + firstTransition 60 + firstJunction 59 + viewObj 57 + machine 1 + toolbarMode LIBRARY_TOOLBAR + ssIdHighWaterMark 9 + decomposition CLUSTER_CHART + type EML_CHART + firstData 61 + chartFileNumber 9 + disableImplicitCasting 1 + eml { + name "Constraint" + } + } + state { + id 58 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 57 + treeNode [57 0 0 0] + superState SUBCHART + subviewer 57 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "%function stop = Constraint(tstop, time, done)\nfunction stop = Constraint(time, all_done, timeAf" + "terExp)\n%#codegen\npersistent tstopp first\nif isempty(tstopp)\n tstopp = 10000;\n first = true;\nend\nif" + " all_done == 1 && first \n tstopp = time;\n first = false;\nend\nif time > tstopp+timeAfterExp;\n stop " + "= 1;\nelse\n stop = 0;\nend" + editorLayout "100 M4x1[10 5 700 500]" + } + } + junction { + id 59 + position [23.5747 49.5747 7] + chart 57 + linkNode [57 0 0] + subviewer 57 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 60 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 59 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 57 + linkNode [57 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 57 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + } + data { + id 61 + ssIdNumber 5 + name "stop" + linkNode [57 0 62] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 62 + ssIdNumber 6 + name "time" + linkNode [57 61 63] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 63 + ssIdNumber 7 + name "all_done" + linkNode [57 62 64] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 64 + ssIdNumber 9 + name "timeAfterExp" + linkNode [57 63 0] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + instance { + id 65 + name "multi-NOMAD/Autotuner2/Constraint" + machine 1 + chart 57 + } + chart { + id 66 + name "multi-NOMAD/Autotuner2/relay_exp\n" + windowPosition [344.686 5 429 739.2] + viewLimits [0 319.2 0 430.6] + screen [1 1 1280 1024 1.25] + treeNode [0 67 0 0] + firstTransition 69 + firstJunction 68 + viewObj 66 + machine 1 + ssIdHighWaterMark 17 + decomposition CLUSTER_CHART + type EML_CHART + firstData 70 + chartFileNumber 10 + disableImplicitCasting 1 + eml { + name "relay_exp" + } + } + state { + id 67 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 66 + treeNode [66 0 0 0] + superState SUBCHART + subviewer 66 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function [result, u, done]= relay_exp(relay_par, e,t, u_ref, run_exp)\n\n\n%%%%%%%%%% Definitions" + " and default values %%%%%%%%%%%%%%\ny = -e;\n% Relay parameters, values from workspace.\npersistent d1 d2 u_on u" + "_off h\ngamma = relay_par(2); % index 2 is gamma, 11 is gamma2 \nt_sample = relay_par(3);\nbigYup = relay_par(6)" + ";\nrelayMaxDev = relay_par(7);\ndef_h = relay_par(8);\nnoiseMeasureTime = relay_par(9);\nmaxSwitches = relay_par" + "(12);\nystep = relay_par(13);\nustep = relay_par(14);\n\npersistent yref uref\nif isempty(d2)\n h=def_h; % th" + "ese values will be re-assigned later and never used. \n d1 = gamma;\n d2 = 1;\n u_on = d1;\n u_off " + "= -d2;\n uref = 0;\n yref = 0;\nend\n\npersistent u_old resultvec\nif isempty(u_old)\n u_old = uref;\n " + " resultvec = zeros(23,1);\nend\n\npersistent sample\nif isempty(sample)\n sample = 0;\nend\n\npersistent st" + "artup Ksign\nif isempty(Ksign)\n Ksign = 1; % Is re-assigned during at the startup phase\nend\n\npersistent " + "param done_per\nif isempty(param)\n param = [1.1, 16, 0]; % Quadtank minfas (should be an input somehow if ex" + "isting PID parameters are used to bring it to its working point)\n done_per = 0;\nend\nPID_param = param;\ndo" + "ne = done_per;\n\n% To handle switches\npersistent switching_times switch_index \nif isempty(switching_times)\n " + " switching_times = zeros(1,20);\n switch_index = 1;\nend\n\n%%%%%%%%% Startup params %%%%%%%%%%%\npersiste" + "nt a b c tff exp_t yh yl measureNoise first\nif isempty(startup)\n tff = 5/t_sample; % According to Tore abou" + "t 3-5s is appropriate for the startup growth \n b = 40;\n c = relayMaxDev/(b-1);\n a = uref-c;\n mea" + "sureNoise = 1;\n startup = 0;\n yh = 0;\n yl = 0;\n first = true;\nend\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%" + "%%%%%%%%%%%%%%%%%%%\n\nresult = resultvec;\nif run_exp == 0\n u = 0;\n PID_param = param;\n return\nend" + "\n\n%%%%%%%%%%%%% Program running %%%%%%%%%%%%%%%%%\nsample = sample+1;\n\n%%%%%%%%% Startup %%%%%%%%%%%%\nif me" + "asureNoise == 1\n if first \n uref = u_ref;\n yref = y;\n first = false;\n yh = y" + "ref;\n yl = yref;\n end\n u = uref;\n if sample < noiseMeasureTime/t_sample\n yh = max(yh" + ",y);\n yl = min(yl,y);\n else\n noise = (yh-yl)/2;\n yref = (yh+yl)/2;\n %yref = " + "y; % Could test the latest value instead of average?\n resultvec(15) = yref;\n resultvec(16) = ure" + "f;\n h = max(2*noise, def_h);\n measureNoise = 0;\n startup = 1;\n resultvec(23) = t" + ";\n end\nelseif startup == 1\n exp_t = sample-noiseMeasureTime/t_sample;\n a = uref-c;\n u = a+c" + "*b^(exp_t/tff);\n if u > relayMaxDev+uref\n u = relayMaxDev+uref;\n end\n if exp" + "_t > 1\n ydev = y-yref; \n if abs(ydev) > h % outside hysteresis, stop startup and decide " + "Ksign\n Ksign = ydev/abs(ydev);\n if bigYup == 1\n d1 = min(rel" + "ayMaxDev, gamma*abs(u-uref));\n d2 = d1/gamma;\n else\n d2 " + "= min(relayMaxDev, gamma*abs(u-uref));\n d1 = d2/gamma;\n end\n " + " startup = 0;\n elseif exp_t > tff\n u = uref+relayMaxDev;\n end\n e" + "nd\nelseif run_exp == 1\n %%%%%% Update amplitudes %%%%%%%\n u_on = uref+Ksign*d1;\n u_off = uref-Ksign" + "*d2;\n %%%%%% Calculate new u %%%%%%%%%\n u = rel_func(y,u_old,u_on, u_off,yref,h);\nelse \n u = 0; % S" + "houldn't be needed?\nend\n\n%%%%%%% At switching points %%%%%%%\nif sample>1 && (u-uref)*(u_old-uref) < 0\n s" + "witching_times(switch_index) = t;\n if switch_index > 2\n tp = switching_times(switch_index)-switching" + "_times(switch_index-2);\n resultvec(19) = tp;\n end\n if switch_index == 3 % Step in yref/uref afte" + "r two switches\n yref = yref+ystep*h;\n uref = uref+(d1+d2)/2*Ksign*ustep;\n end\n if switch" + "_index > maxSwitches\n done_per = 1;\n resultvec(17) = t;\n end\n switch_index = switch_inde" + "x+1;\nend\n%%%% store data %%%%%%\nu_old = u;\nend\n\nfunction u = rel_func(y,uold,uon,uoff,yref,h)\n if y <= y" + "ref-h\n u = uon;\n elseif y < yref+h && y > yref-h\n u = uold;\n else u = uoff;\n end\nend\n\n\n\n\n\n\n" + "\n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + junction { + id 68 + position [23.5747 49.5747 7] + chart 66 + linkNode [66 0 0] + subviewer 66 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + } + transition { + id 69 + labelString "{eML_blk_kernel();}" + labelPosition [32.125 19.875 100.8 18.448] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 68 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 66 + linkNode [66 0 0] + dataLimits [23.575 23.575 14.625 34.575] + subviewer 66 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + } + data { + id 70 + ssIdNumber 16 + name "result" + linkNode [66 0 71] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 71 + ssIdNumber 8 + name "u" + linkNode [66 70 72] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 72 + ssIdNumber 14 + name "relay_par" + linkNode [66 71 73] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 73 + ssIdNumber 5 + name "e" + linkNode [66 72 74] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + data { + id 74 + ssIdNumber 9 + name "t" + linkNode [66 73 75] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 75 + ssIdNumber 15 + name "u_ref" + linkNode [66 74 76] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 76 + ssIdNumber 11 + name "run_exp" + linkNode [66 75 77] + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + } + data { + id 77 + ssIdNumber 4 + name "done" + linkNode [66 76 0] + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + } + instance { + id 78 + name "multi-NOMAD/Autotuner2/relay_exp\n" + machine 1 + chart 66 + } + target { + id 79 + name "sfun" + description "Default Simulink S-Function Target." + machine 1 + linkNode [1 0 0] + } +} diff --git a/ExtraLTH/setup_script_industrial.m b/ExtraLTH/setup_script_industrial.m new file mode 100644 index 0000000..7ae287a --- /dev/null +++ b/ExtraLTH/setup_script_industrial.m @@ -0,0 +1,23 @@ +%% Run industrial +% Starts an experiment with one of the industrial controllers and logs all +% the data. The experiment will run all the way until the time simopt.Tf +% before closing and logging, so this parameter has to be set to an +% appropriate value in the setParams file before starting the exp. (A +% better solution to this would be desirable!) + +close all; clear all; clc +setParams +options = simset('SrcWorkspace','current'); +warning('off','Simulink:blocks:TDelayDirectThroughAutoSet') +sim('tank_industrial_2012a',[],options) % Change in the mdl file between the ECA/Honeywell block +warning('on','Simulink:blocks:TDelayDirectThroughAutoSet') +simdata.u = simout.signals.values(:,1); +simdata.y1 = simout.signals.values(:,2); +simdata.y2 = simout.signals.values(:,4); +simdata.t = simout.time; + +plot(simdata.t, simdata.u,'r') +hold on +plot(simdata.t, simdata.y2,'b') +hold off +save('industrial_exp.mat','simdata') diff --git a/ExtraLTH/tank_industrial_2012a.mdl b/ExtraLTH/tank_industrial_2012a.mdl new file mode 100644 index 0000000..45225be --- /dev/null +++ b/ExtraLTH/tank_industrial_2012a.mdl @@ -0,0 +1,1985 @@ +Model { + Name "tank_eca_2012a" + Version 7.9 + MdlSubVersion 0 + GraphicalInterface { + NumRootInports 0 + NumRootOutports 0 + ParameterArgumentNames "" + ComputedModelVersion "1.588" + NumModelReferences 0 + NumTestPointedSignals 0 + } + SavedCharacterEncoding "UTF-8" + SaveDefaultBlockParams on + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime off + DisableAllScopes off + DataTypeOverride "UseLocalSettings" + DataTypeOverrideAppliesTo "AllNumericTypes" + MinMaxOverflowLogging "UseLocalSettings" + MinMaxOverflowArchiveMode "Overwrite" + FPTRunName "Run 1" + MaxMDLFileLineLength 120 + Created "Sun Jun 12 02:17:00 2005" + Creator "josefinb" + UpdateHistory "UpdateHistoryNever" + ModifiedByFormat "%<Auto>" + LastModifiedBy "josefinb" + ModifiedDateFormat "%<Auto>" + LastModifiedDate "Tue Nov 14 16:49:45 2017" + RTWModifiedTimeStamp 432578981 + ModelVersionFormat "1.%<AutoIncrement:588>" + ConfigurationManager "none" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "none" + WideLines off + ShowLineDimensions on + ShowPortDataTypes off + ShowDesignRanges off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + SortedOrder off + ExecutionContextIcon on + ShowLinearizationAnnotations on + BlockNameDataTip off + BlockParametersDataTip on + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + AccelSystemTargetFile "accel.tlc" + AccelTemplateMakefile "accel_default_tmf" + AccelMakeCommand "make_rtw" + TryForcingSFcnDF off + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovMetricSettings "dw" + CovNameIncrementing off + CovHtmlReporting on + CovForceBlockReductionOff on + covSaveCumulativeToWorkspaceVar on + CovSaveSingleToWorkspaceVar on + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable off + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "oneshot" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect off + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + BufferReuse on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 1 + Version "1.12.0" + Array { + Type "Handle" + Dimension 8 + Simulink.SolverCC { + $ObjectID 2 + Version "1.12.0" + StartTime "0.0" + StopTime "simopt.Tf" + AbsTol "auto" + FixedStep "simopt.h" + InitialStep "auto" + MaxNumMinSteps "-1" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "Auto" + EnableConcurrentExecution off + ConcurrentTasks off + Solver "ode3" + SolverName "ode3" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + } + Simulink.DataIOCC { + $ObjectID 3 + Version "1.12.0" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xf" + InitialState "x0" + LimitDataPoints off + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState on + SaveFormat "Array" + SignalLoggingSaveFormat "ModelDataLogs" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 4 + Version "1.12.0" + BlockReduction off + BooleanDataType off + ConditionallyExecuteInputs on + InlineParams off + UseIntDivNetSlope off + UseFloatMulNetSlope off + UseSpecifiedMinMax off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + StrengthReduction off + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + ExpressionDepthLimit 2147483647 + FoldNonRolledExpr on + LocalBlockOutputs on + RollThreshold 5 + SystemCodeInlineAuto off + StateBitsets off + DataBitsets off + UseTempVars off + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero on + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "Off" + AccelVerboseBuild off + ParallelExecutionInRapidAccelerator on + } + Simulink.DebuggingCC { + $ObjectID 5 + Version "1.12.0" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "none" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Classic" + MergeDetectMultiDrivingBlocksExec "none" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "TryResolveAllWithWarning" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + MaskedZcDiagnostic "warning" + IgnoredZcDiagnostic "warning" + SolverPrmCheckMsg "none" + InheritedTsInSrcMsg "warning" + DiscreteInheritContinuousMsg "warning" + MultiTaskDSMMsg "warning" + MultiTaskCondExecSysMsg "none" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "Use local settings" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + FrameProcessingCompatibilityMsg "error" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + EnableOverflowDetection off + ModelReferenceIOMsg "none" + ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + ModelReferenceCSMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "warning" + SimStateInterfaceChecksumMismatchMsg "warning" + SimStateOlderReleaseMsg "error" + InitInArrayFormatMsg "warning" + StrictBusMsg "ErrorLevel1" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + LoggingUnavailableSignals "error" + BlockIODiagnostic "none" + SFUnusedDataAndEventsDiag "warning" + SFUnexpectedBacktrackingDiag "warning" + SFInvalidInputDataAccessInChartInitDiag "warning" + SFNoUnconditionalDefaultTransitionDiag "warning" + SFTransitionOutsideNaturalParentDiag "warning" + SFUnconditionalTransitionShadowingDiag "warning" + } + Simulink.HardwareCC { + $ObjectID 6 + Version "1.12.0" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdBitPerFloat 32 + ProdBitPerDouble 64 + ProdBitPerPointer 32 + ProdLargestAtomicInteger "Char" + ProdLargestAtomicFloat "None" + ProdIntDivRoundTo "Undefined" + ProdEndianess "Unspecified" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdHWDeviceType "32-bit Generic" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetBitPerFloat 32 + TargetBitPerDouble 64 + TargetBitPerPointer 32 + TargetLargestAtomicInteger "Char" + TargetLargestAtomicFloat "None" + TargetShiftRightIntArith on + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetTypeEmulationWarnSuppressLevel 0 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown on + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 7 + Version "1.12.0" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceErrorOnInvalidPool on + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel off + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 8 + Version "1.12.0" + SFSimEnableDebug on + SFSimOverflowDetection on + SFSimEcho on + SimBlas on + SimCtrlC on + SimExtrinsic on + SimIntegrity on + SimUseLocalCustomCode off + SimParseCustomCode on + SimBuildMode "sf_incremental_build" + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 9 + Version "1.12.0" + SystemTargetFile "grt.tlc" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + TemplateMakefile "grt_default_tmf" + GenerateReport off + SaveLog off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + ProcessScriptMode "Default" + ConfigurationMode "Optimized" + ConfigAtBuild off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + IncludeHyperlinkInReport off + LaunchReport off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + IncludeERTFirstTime off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateCodeInfo off + GenerateWebview off + GenerateCodeMetricsReport off + GenerateCodeReplacementReport off + RTWCompilerOptimization "Off" + CheckMdlBeforeBuild "Off" + CustomRebuildMode "OnUpdate" + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 10 + Version "1.12.0" + ForceParamTrailComments off + GenerateComments on + IgnoreCustomStorageClasses on + IgnoreTestpoints off + IncHierarchyInIds off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + IncAutoGenComments off + SimulinkDataObjDesc off + SFDataObjDesc off + MATLABFcnDesc off + IncDataTypeInIds off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M_T" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + InsertPolySpaceComments off + SimulinkBlockComments on + MATLABSourceComments off + EnableCustomComments off + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 11 + Version "1.12.0" + Array { + Type "Cell" + Dimension 2 + Cell "MultiInstanceERTCode" + Cell "CombineOutputUpdateFcns" + PropName "DisabledProps" + } + TargetFcnLib "ansi_tfl_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + CodeReplacementLibrary "C89/C90 (ANSI)" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + CodeExecutionProfiling off + ERTMultiwordLength 256 + MultiwordLength 2048 + GenerateFullHeader on + GenerateSampleERTMain off + GenerateTestInterfaces off + IsPILTarget off + ModelReferenceCompliant off + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + ConcurrentExecutionCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Disable all" + CombineOutputUpdateFcns off + CombineSignalStateStructs off + SuppressErrorStatus off + ERTFirstTimeCompliant off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging off + MultiInstanceERTCode off + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + EnableShiftOperators on + ParenthesesLevel "Nominal" + PortableWordSizes off + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant off + AutosarCompliant off + GRTInterface on + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + RTWCAPIRootIO off + GenerateASAP2 off + } + PropName "Components" + } + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition [ 213, 152, 1066, 834 ] + } + PropName "ConfigurationSets" + } + Simulink.ConfigSet { + $PropName "ActiveConfigurationSet" + $ObjectID 1 + } + ExplicitPartitioning off + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + BlockParameterDefaults { + Block { + BlockType Constant + Value "1" + VectorParams1D on + SamplingMode "Sample based" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Inherit from 'Constant value'" + LockScale off + SampleTime "inf" + FramePeriod "inf" + PreserveConstantTs off + } + Block { + BlockType Demux + Outputs "4" + DisplayOption "none" + BusSelectionMode off + } + Block { + BlockType Gain + Gain "1" + Multiplication "Element-wise(K.*u)" + ParamMin "[]" + ParamMax "[]" + ParamDataTypeStr "Inherit: Same as input" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + SampleTime "-1" + } + Block { + BlockType Ground + } + Block { + BlockType Inport + Port "1" + OutputFunctionCall off + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType MATLABFcn + MATLABFcn "sin" + OutputDimensions "-1" + OutputSignalType "auto" + Output1D on + SampleTime "-1" + } + Block { + BlockType Mux + Inputs "4" + DisplayOption "none" + UseBusObject off + BusObject "BusObject" + NonVirtualBus off + } + Block { + BlockType Outport + Port "1" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + SignalType "auto" + SamplingMode "auto" + SourceOfInitialOutputValue "Dialog" + OutputWhenDisabled "held" + InitialOutput "[]" + } + Block { + BlockType S-Function + FunctionName "system" + SFunctionModules "''" + PortCounts "[]" + SFunctionDeploymentMode off + } + Block { + BlockType Scope + ModelBased off + TickLabels "OneTimeTick" + ZoomMode "on" + Grid "on" + TimeRange "auto" + YMin "-5" + YMax "5" + SaveToWorkspace off + SaveName "ScopeData" + DataFormat "Array" + LimitDataPoints on + MaxDataPoints "5000" + Decimation "1" + SampleInput off + SampleTime "-1" + } + Block { + BlockType Step + Time "1" + Before "0" + After "1" + SampleTime "-1" + VectorParams1D on + ZeroCross on + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + CheckFcnCallInpInsideContextMsg off + SystemSampleTime "-1" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + DataTypeOverrideAppliesTo "AllNumericTypes" + MinMaxOverflowLogging "UseLocalSettings" + SFBlockType "NONE" + Variant off + GeneratePreprocessorConditionals off + } + Block { + BlockType Sum + IconShape "rectangular" + Inputs "++" + CollapseMode "All dimensions" + CollapseDim "1" + InputSameDT on + AccumDataTypeStr "Inherit: Inherit via internal rule" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as first input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + SampleTime "-1" + } + Block { + BlockType Terminator + } + Block { + BlockType ToWorkspace + VariableName "simulink_output" + MaxDataPoints "1000" + Decimation "1" + SampleTime "0" + SaveFormat "Array" + FixptAsFi off + NumInputs "1" + } + Block { + BlockType TransferFcn + Numerator "[1]" + Denominator "[1 2 1]" + AbsoluteTolerance "auto" + ContinuousStateAttributes "''" + Realization "auto" + } + Block { + BlockType TransportDelay + DelayTime "1" + InitialOutput "0" + BufferSize "1024" + FixedBuffer off + TransDelayFeedthrough off + PadeOrder "0" + } + } + System { + Name "tank_eca_2012a" + Location [449, 449, 1471, 886] + Open on + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + ReportName "simulink-default.rpt" + SIDHighWatermark "1105" + Block { + BlockType Constant + Name "Constant" + SID "1086" + Position [255, 295, 285, 325] + ZOrder -4 + Value "0" + } + Block { + BlockType Scope + Name "Control" + SID "544" + Ports [1] + Position [725, 29, 755, 61] + ZOrder 147 + Floating off + Location [2, 550, 578, 950] + Open on + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + ShowLegends off + YMin "1" + YMax "5.5" + SaveName "ScopeData1" + DataFormat "StructureWithTime" + LimitDataPoints off + } + Block { + BlockType SubSystem + Name "Honeywell Hardware batch" + SID "1091" + Ports [1, 1] + Position [80, 114, 155, 176] + ZOrder 159 + BackgroundColor "yellow" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "Honeywell Hardware batch" + Location [302, 375, 1205, 950] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "[ y ]" + SID "1092" + Position [25, 103, 55, 117] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Demux + Name "Demux" + SID "1093" + Ports [1, 2] + Position [640, 62, 645, 153] + ZOrder -7 + ShowName off + Outputs "2" + DisplayOption "bar" + } + Block { + BlockType Gain + Name "Gain" + SID "1094" + Position [695, 66, 755, 104] + ZOrder -8 + Gain "500/390" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain1" + SID "1095" + Position [695, 111, 755, 149] + ZOrder -8 + Gain "500/390*10/9.35" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain2" + SID "1096" + Position [135, 67, 180, 103] + ZOrder -11 + } + Block { + BlockType Gain + Name "Gain3" + SID "1097" + Position [135, 112, 180, 148] + ZOrder -12 + } + Block { + BlockType Ground + Name "Ground" + SID "1098" + Position [460, 90, 480, 110] + ZOrder -13 + ShowName off + } + Block { + BlockType Ground + Name "Ground1" + SID "1099" + Position [55, 60, 75, 80] + ZOrder -13 + ShowName off + } + Block { + BlockType Mux + Name "Mux1" + SID "1100" + Ports [2, 1] + Position [235, 61, 240, 154] + ZOrder -12 + ShowName off + Inputs "2" + DisplayOption "bar" + } + Block { + BlockType S-Function + Name "S-Function" + SID "1101" + Ports [1, 2] + Position [510, 74, 595, 121] + ZOrder -16 + ShowName off + FunctionName "analogin" + Parameters "simopt.h [1 0]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "S-Function2" + SID "1102" + Ports [2, 1] + Position [315, 78, 395, 122] + ZOrder -17 + ShowName off + FunctionName "analogout" + Parameters "simopt.h [1 0]" + EnableBusSupport off + } + Block { + BlockType Terminator + Name "Terminator" + SID "1103" + Position [425, 90, 445, 110] + ZOrder -18 + ShowName off + } + Block { + BlockType Terminator + Name "Terminator1" + SID "1104" + Position [820, 75, 840, 95] + ZOrder -18 + ShowName off + } + Block { + BlockType Outport + Name "[ u ]" + SID "1105" + Position [830, 103, 860, 117] + ZOrder -19 + IconDisplay "Port number" + InitialOutput "0" + } + Line { + SrcBlock "Gain3" + SrcPort 1 + DstBlock "Mux1" + DstPort 2 + } + Line { + SrcBlock "Gain2" + SrcPort 1 + DstBlock "Mux1" + DstPort 1 + } + Line { + SrcBlock "Gain1" + SrcPort 1 + Points [25, 0; 0, -20] + DstBlock "[ u ]" + DstPort 1 + } + Line { + SrcBlock "Demux" + SrcPort 2 + DstBlock "Gain1" + DstPort 1 + } + Line { + SrcBlock "Demux" + SrcPort 1 + DstBlock "Gain" + DstPort 1 + } + Line { + SrcBlock "Gain" + SrcPort 1 + DstBlock "Terminator1" + DstPort 1 + } + Line { + SrcBlock "Ground1" + SrcPort 1 + Points [0, 15] + DstBlock "Gain2" + DstPort 1 + } + Line { + SrcBlock "[ y ]" + SrcPort 1 + Points [35, 0; 0, 20] + DstBlock "Gain3" + DstPort 1 + } + Line { + SrcBlock "Mux1" + SrcPort 1 + DstBlock "S-Function2" + DstPort 2 + } + Line { + SrcBlock "S-Function" + SrcPort 2 + DstBlock "Demux" + DstPort 1 + } + Line { + SrcBlock "S-Function" + SrcPort 1 + Points [20, 0; 0, -40; -320, 0] + DstBlock "S-Function2" + DstPort 1 + } + Line { + SrcBlock "S-Function2" + SrcPort 1 + DstBlock "Terminator" + DstPort 1 + } + Line { + SrcBlock "Ground" + SrcPort 1 + DstBlock "S-Function" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "Logger" + SID "76" + Ports [4] + Position [730, 103, 750, 292] + ZOrder 91 + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + System { + Name "Logger" + Location [1911, 198, 2953, 1077] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "u1" + SID "77" + Position [20, 23, 50, 37] + ZOrder 88 + IconDisplay "Port number" + SampleTime "simopt.h" + } + Block { + BlockType Inport + Name "y1" + SID "79" + Position [20, 58, 50, 72] + ZOrder 90 + Port "2" + IconDisplay "Port number" + SampleTime "simopt.h" + } + Block { + BlockType Inport + Name "u2" + SID "443" + Position [20, 103, 50, 117] + ZOrder 91 + Port "3" + IconDisplay "Port number" + SampleTime "simopt.h" + } + Block { + BlockType Inport + Name "y2" + SID "444" + Position [20, 143, 50, 157] + ZOrder 92 + Port "4" + IconDisplay "Port number" + SampleTime "simopt.h" + } + Block { + BlockType ToWorkspace + Name "Logger" + SID "69" + Ports [1] + Position [140, 75, 200, 105] + ZOrder 87 + VariableName "simout" + MaxDataPoints "inf" + SampleTime "simopt.h" + SaveFormat "Structure With Time" + } + Block { + BlockType Mux + Name "Mux" + SID "68" + Ports [4, 1] + Position [75, 12, 80, 168] + ZOrder 86 + ShowName off + DisplayOption "bar" + } + Line { + SrcBlock "Mux" + SrcPort 1 + DstBlock "Logger" + DstPort 1 + } + Line { + SrcBlock "u1" + SrcPort 1 + DstBlock "Mux" + DstPort 1 + } + Line { + SrcBlock "y1" + SrcPort 1 + Points [3, 0; 0, 5] + DstBlock "Mux" + DstPort 2 + } + Line { + SrcBlock "u2" + SrcPort 1 + DstBlock "Mux" + DstPort 3 + } + Line { + SrcBlock "y2" + SrcPort 1 + DstBlock "Mux" + DstPort 4 + } + } + } + Block { + BlockType Scope + Name "Lower tank" + SID "545" + Ports [1] + Position [870, 174, 900, 206] + ZOrder 148 + Floating off + Location [582, 93, 1166, 483] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + ShowLegends off + YMin "0.25" + YMax "3.5" + SaveName "ScopeData2" + DataFormat "StructureWithTime" + LimitDataPoints off + } + Block { + BlockType Reference + Name "Noise filter1" + SID "27" + Ports [1, 1] + Position [510, 154, 575, 196] + ZOrder 94 + LibraryVersion "1.108" + SourceBlock "cstblocks/LTI System" + SourceType "LTI Block" + sys "simopt.F" + IC "[]" + } + Block { + BlockType Reference + Name "Noise filter2" + SID "442" + Ports [1, 1] + Position [510, 244, 575, 286] + ZOrder 141 + LibraryVersion "1.108" + SourceBlock "cstblocks/LTI System" + SourceType "LTI Block" + sys "simopt.F" + IC "[]" + } + Block { + BlockType SubSystem + Name "Real Quadtank" + SID "870" + Ports [2, 4] + Position [305, 120, 395, 215] + ZOrder -1 + BackgroundColor "green" + AncestorBlock "tank/Real Quadtank" + LibraryVersion "*" + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + RTWSystemCode "Auto" + FunctionWithSeparateData off + Opaque off + RequestExecContextInheritance off + MaskHideContents off + MaskPromptString "h" + MaskStyleString "edit" + MaskVariables "h=@1;" + MaskTunableValueString "on" + MaskEnableString "on" + MaskVisibilityString "on" + MaskToolTipString "on" + MaskIconFrame on + MaskIconOpaque on + MaskIconRotate "none" + MaskPortRotate "default" + MaskIconUnits "autoscale" + MaskValueString "0.01" + System { + Name "Real Quadtank" + Location [0, 92, 1280, 1024] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "32" + Block { + BlockType Inport + Name "u1" + SID "870:1" + Position [260, 148, 290, 162] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "u2" + SID "870:2" + Position [260, 408, 290, 422] + ZOrder -2 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType S-Function + Name "AnalogIn 0" + SID "870:3" + Ports [1, 2] + Position [150, 112, 210, 143] + ZOrder -3 + FunctionName "analogin" + Parameters "h [35]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 1" + SID "870:4" + Ports [1, 2] + Position [150, 372, 210, 403] + ZOrder -4 + FunctionName "analogin" + Parameters "h [34]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 2" + SID "870:5" + Ports [1, 2] + Position [150, 452, 210, 483] + ZOrder -5 + FunctionName "analogin" + Parameters "h [33]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 3" + SID "870:6" + Ports [1, 2] + Position [150, 187, 210, 218] + ZOrder -6 + FunctionName "analogin" + Parameters "h [31]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 4" + SID "870:7" + Ports [1, 2] + Position [150, 287, 210, 318] + ZOrder -7 + FunctionName "analogin" + Parameters "h [30]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogIn 5" + SID "870:8" + Ports [1, 2] + Position [150, 552, 210, 583] + ZOrder -8 + FunctionName "analogin" + Parameters "h [32]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogOut 0" + SID "870:9" + Ports [2, 1] + Position [455, 112, 515, 143] + ZOrder -9 + FunctionName "analogout" + Parameters "h [31]" + EnableBusSupport off + } + Block { + BlockType S-Function + Name "AnalogOut 1" + SID "870:10" + Ports [2, 1] + Position [460, 372, 520, 403] + ZOrder -10 + FunctionName "analogout" + Parameters "h [30]" + EnableBusSupport off + } + Block { + BlockType Ground + Name "Ground" + SID "870:11" + Position [95, 120, 115, 140] + ZOrder -11 + } + Block { + BlockType Ground + Name "Ground1" + SID "870:12" + Position [95, 380, 115, 400] + ZOrder -12 + } + Block { + BlockType TransferFcn + Name "LP 1" + SID "870:13" + Position [300, 192, 360, 228] + ZOrder -13 + Denominator "[0.04 0.4 1]" + } + Block { + BlockType TransferFcn + Name "LP 2" + SID "870:14" + Position [300, 457, 360, 493] + ZOrder -14 + Denominator "[0.04 0.4 1]" + } + Block { + BlockType TransferFcn + Name "LP 3" + SID "870:15" + Position [300, 292, 360, 328] + ZOrder -15 + Denominator "[0.04 0.4 1]" + } + Block { + BlockType TransferFcn + Name "LP 4" + SID "870:16" + Position [305, 557, 365, 593] + ZOrder -16 + Denominator "[0.04 0.4 1]" + } + Block { + BlockType Mux + Name "Mux" + SID "870:17" + Ports [2, 1] + Position [315, 123, 320, 167] + ZOrder -17 + ShowName off + Inputs "2" + DisplayOption "bar" + } + Block { + BlockType Mux + Name "Mux1" + SID "870:18" + Ports [2, 1] + Position [315, 383, 320, 427] + ZOrder -18 + ShowName off + Inputs "2" + DisplayOption "bar" + } + Block { + BlockType S-Function + Name "S-Function2" + SID "870:19" + Ports [0, 1] + Position [110, 30, 170, 60] + ZOrder -19 + FunctionName "realtimer" + Parameters "h" + EnableBusSupport off + } + Block { + BlockType Scope + Name "Scope" + SID "870:20" + Ports [1] + Position [225, 29, 255, 61] + ZOrder -20 + Floating off + Location [48, 426, 372, 665] + Open off + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + ShowLegends off + YMin "2.77556e-17" + YMax "0.45" + DataFormat "StructureWithTime" + SampleTime "0" + } + Block { + BlockType Terminator + Name "Terminator" + SID "870:21" + Position [545, 120, 565, 140] + ZOrder -21 + } + Block { + BlockType Terminator + Name "Terminator1" + SID "870:22" + Position [550, 380, 570, 400] + ZOrder -22 + } + Block { + BlockType Terminator + Name "Terminator2" + SID "870:23" + Position [240, 185, 260, 205] + ZOrder -23 + } + Block { + BlockType Terminator + Name "Terminator3" + SID "870:24" + Position [240, 285, 260, 305] + ZOrder -24 + } + Block { + BlockType Terminator + Name "Terminator4" + SID "870:25" + Position [235, 450, 255, 470] + ZOrder -25 + } + Block { + BlockType Terminator + Name "Terminator5" + SID "870:26" + Position [240, 550, 260, 570] + ZOrder -26 + } + Block { + BlockType MATLABFcn + Name "flow controller 1" + SID "870:27" + Ports [1, 1] + Position [345, 130, 405, 160] + ZOrder -27 + MATLABFcn "flowCtrl1" + SampleTime "0.01" + } + Block { + BlockType MATLABFcn + Name "flow controller 2" + SID "870:28" + Ports [1, 1] + Position [350, 390, 410, 420] + ZOrder -28 + MATLABFcn "flowCtrl2" + SampleTime "0.01" + } + Block { + BlockType Outport + Name "y1" + SID "870:29" + Position [385, 203, 415, 217] + ZOrder -29 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "y2" + SID "870:30" + Position [385, 468, 415, 482] + ZOrder -30 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "y3" + SID "870:31" + Position [385, 303, 415, 317] + ZOrder -31 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "y4" + SID "870:32" + Position [390, 568, 420, 582] + ZOrder -32 + Port "4" + IconDisplay "Port number" + } + Line { + SrcBlock "LP 4" + SrcPort 1 + DstBlock "y4" + DstPort 1 + } + Line { + SrcBlock "LP 2" + SrcPort 1 + DstBlock "y2" + DstPort 1 + } + Line { + SrcBlock "LP 3" + SrcPort 1 + DstBlock "y3" + DstPort 1 + } + Line { + SrcBlock "LP 1" + SrcPort 1 + DstBlock "y1" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 0" + SrcPort 2 + DstBlock "Mux" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 1" + SrcPort 2 + DstBlock "Mux1" + DstPort 1 + } + Line { + SrcBlock "flow controller 2" + SrcPort 1 + Points [30, 0] + DstBlock "AnalogOut 1" + DstPort 2 + } + Line { + SrcBlock "Mux1" + SrcPort 1 + DstBlock "flow controller 2" + DstPort 1 + } + Line { + SrcBlock "u2" + SrcPort 1 + DstBlock "Mux1" + DstPort 2 + } + Line { + SrcBlock "flow controller 1" + SrcPort 1 + Points [30, 0] + DstBlock "AnalogOut 0" + DstPort 2 + } + Line { + SrcBlock "Mux" + SrcPort 1 + DstBlock "flow controller 1" + DstPort 1 + } + Line { + SrcBlock "u1" + SrcPort 1 + DstBlock "Mux" + DstPort 2 + } + Line { + SrcBlock "AnalogIn 5" + SrcPort 1 + DstBlock "Terminator5" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 2" + SrcPort 1 + DstBlock "Terminator4" + DstPort 1 + } + Line { + SrcBlock "Ground1" + SrcPort 1 + Points [10, 0] + Branch { + DstBlock "AnalogIn 1" + DstPort 1 + } + Branch { + Points [0, 80] + Branch { + DstBlock "AnalogIn 2" + DstPort 1 + } + Branch { + Points [0, 100] + DstBlock "AnalogIn 5" + DstPort 1 + } + } + } + Line { + SrcBlock "AnalogIn 5" + SrcPort 2 + DstBlock "LP 4" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 2" + SrcPort 2 + DstBlock "LP 2" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 4" + SrcPort 1 + DstBlock "Terminator3" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 3" + SrcPort 1 + DstBlock "Terminator2" + DstPort 1 + } + Line { + SrcBlock "Ground" + SrcPort 1 + Points [10, 0] + Branch { + Points [0, 75] + Branch { + Points [0, 100] + DstBlock "AnalogIn 4" + DstPort 1 + } + Branch { + DstBlock "AnalogIn 3" + DstPort 1 + } + } + Branch { + DstBlock "AnalogIn 0" + DstPort 1 + } + } + Line { + SrcBlock "AnalogIn 4" + SrcPort 2 + DstBlock "LP 3" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 3" + SrcPort 2 + DstBlock "LP 1" + DstPort 1 + } + Line { + SrcBlock "AnalogOut 1" + SrcPort 1 + DstBlock "Terminator1" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 1" + SrcPort 1 + DstBlock "AnalogOut 1" + DstPort 1 + } + Line { + SrcBlock "AnalogOut 0" + SrcPort 1 + DstBlock "Terminator" + DstPort 1 + } + Line { + SrcBlock "AnalogIn 0" + SrcPort 1 + DstBlock "AnalogOut 0" + DstPort 1 + } + Line { + SrcBlock "S-Function2" + SrcPort 1 + DstBlock "Scope" + DstPort 1 + } + } + } + Block { + BlockType Step + Name "Step1" + SID "1088" + Position [125, 205, 155, 235] + ZOrder -4 + Time "300" + Before "2" + After "3" + SampleTime "simopt.h" + } + Block { + BlockType Step + Name "Step2" + SID "1089" + Position [125, 270, 155, 300] + ZOrder -4 + Time "1000" + SampleTime "simopt.h" + } + Block { + BlockType Sum + Name "Sum1" + SID "1090" + Ports [2, 1] + Position [190, 205, 220, 235] + ZOrder -5 + ShowName off + IconShape "round" + Inputs "|+-" + } + Block { + BlockType TransportDelay + Name "Transport\nDelay" + SID "1087" + Ports [1, 1] + Position [220, 130, 250, 160] + ZOrder -10 + DelayTime "20" + } + Block { + BlockType Scope + Name "Upper tank" + SID "995" + Ports [1] + Position [880, 299, 910, 331] + ZOrder 148 + Floating off + Location [2, 95, 586, 485] + Open on + NumInputPorts "1" + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + ShowLegends off + YMin "0" + YMax "10.5" + SaveName "ScopeData3" + DataFormat "StructureWithTime" + LimitDataPoints off + } + Line { + SrcBlock "Noise filter1" + SrcPort 1 + Points [94, 0] + Branch { + Points [0, 15] + DstBlock "Lower tank" + DstPort 1 + } + Branch { + DstBlock "Logger" + DstPort 2 + } + } + Line { + SrcBlock "Noise filter2" + SrcPort 1 + Points [15, 0] + Branch { + Points [90, 0] + Branch { + DstBlock "Logger" + DstPort 4 + } + Branch { + Points [0, 50] + DstBlock "Upper tank" + DstPort 1 + } + } + Branch { + Points [0, 70; -530, 0] + DstBlock "Honeywell Hardware batch" + DstPort 1 + } + } + Line { + SrcBlock "Real Quadtank" + SrcPort 2 + Points [45, 0; 0, 20] + DstBlock "Noise filter1" + DstPort 1 + } + Line { + SrcBlock "Real Quadtank" + SrcPort 4 + Points [45, 0; 0, 60] + DstBlock "Noise filter2" + DstPort 1 + } + Line { + SrcBlock "Honeywell Hardware batch" + SrcPort 1 + Points [20, 0] + Branch { + Points [0, -40; 340, 0] + Branch { + Points [195, 0] + DstBlock "Logger" + DstPort 1 + } + Branch { + Points [0, -60] + DstBlock "Control" + DstPort 1 + } + } + Branch { + DstBlock "Transport\nDelay" + DstPort 1 + } + } + Line { + SrcBlock "Transport\nDelay" + SrcPort 1 + DstBlock "Real Quadtank" + DstPort 1 + } + Line { + SrcBlock "Step1" + SrcPort 1 + DstBlock "Sum1" + DstPort 1 + } + Line { + SrcBlock "Step2" + SrcPort 1 + Points [45, 0] + DstBlock "Sum1" + DstPort 2 + } + Line { + SrcBlock "Sum1" + SrcPort 1 + Points [60, 0; 0, -30] + DstBlock "Real Quadtank" + DstPort 2 + } + } +} +# Finite State Machines +# +# Stateflow Version 7.6 (R2011b) dated Jan 25 2012, 13:50:40 +# +# + + +Stateflow { + machine { + id 1 + name "tank_eca_2012a" + created "01-Jul-2013 12:16:13" + isLibrary 0 + firstTarget 2 + sfVersion 76014001.00040001 + } + target { + id 2 + name "sfun" + description "Default Simulink S-Function Target." + machine 1 + linkNode [1 0 0] + } +} diff --git a/README.md b/README.md index 6255b6c..3e727bc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Matlab code and Simulink blocks for the Tau-tuner, NOMAD and Multi-NOMAD autotuner described further in the PhD Thesis "Automatic Controller Tuning using Relay-based Model Identification" by Josefin Berner 2017. -All the used simulink blocks are in the AT-library folder. Apart from the three Autotuner versions the library also contains simulink blocks for a simple second order simulation example as well as a block for the two-input two-output model Wood-Berry distillation column. +All the used simulink blocks are in the AT-library in the Autotuners folder. Apart from the three Autotuner versions the library also contains simulink blocks for a simple second order simulation example as well as a block for the two-input two-output model Wood-Berry distillation column. To run the experiments open the setup_script.m and choose the version you want to run. Remember to put in the wanted autotuner block and process model in the simulink file autotuner_siso_2012a.mdl if you are running a SISO experiment. @@ -10,3 +10,5 @@ If the NOMAD or multi-NOMAD is used it will be using cvx, so make sure it is set All the needed parameters are set in the script setParams.m. Look it through to see if the values on times, nominal control signals etc. are appropriate for your experiments. The files are compatible with Matlab2012a. If you want to use another matlab version they may need to be converted somehow. + +In the ExtraLTH folder there are some additional Simulink blocks in the AT-library that could be useful in the LTH control lab. There are Simulink blocks for the industrial controllers ECA and Honeywell, as well as Simulink blocks for the interface to the quadtank and batch tank processes. A Simulink model using those, as well as a setup script example for the industrial tests are also provided. -- GitLab