initial commit

This commit is contained in:
Uwe Jakobeit
2026-03-30 09:41:19 +02:00
parent 7928ce3239
commit 00f8e9a751
76 changed files with 8341 additions and 1 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
build
*.zip
*.user
app/.qtcreator/CMakeLists.txt.user

View File

@@ -0,0 +1,517 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 19.0.0, 2026-03-20T23:55:42. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{fc8d3b14-ba13-41ed-9488-a8a57abc777a}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoDetect">true</value>
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.LineEndingBehavior">0</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">false</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<value type="bool" key="AutoTest.ApplyFilter">false</value>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">8</value>
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs">
<value type="QString">/home/yoct/evaluation/cli/tmp-bbr-algo/bbr-algo/CMakeLists.txt</value>
</valuelist>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
<value type="int" key="RcSync">0</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="bool" key="HasPerBcDcs">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.10.2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.10.2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.6102.linux_gcc_64_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="CMake.Build.Type">Debug</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_BUILD_TYPE:STRING=Debug
-DCMAKE_COLOR_DIAGNOSTICS:BOOL=ON
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
-DCMAKE_GENERATOR:STRING=Ninja
-DCMAKE_MAKE_PROGRAM:STRING=/usr/bin/ninja
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtcreator/cmake-helper/qtcreator-project.cmake
-DQT_CREATOR_ENABLE_MAINTENANCE_TOOL_PROVIDER:BOOL=ON
-DQT_ENABLE_QML_DEBUG:BOOL=%{Qt:QT_ENABLE_QML_DEBUG}
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}</value>
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">./build/%{Asciify:%{Kit:FileSystemName}-%{BuildConfig:Name}}</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString"></value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.CMakePackageStep</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ApplicationManagerPlugin.Deploy.InstallPackageStep.Arguments">install-package --acknowledge</value>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Application Manager-Paket installieren</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.InstallPackageStep</value>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedFiles"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedHosts"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedRemotePaths"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedSysroots"/>
<valuelist type="QVariantList" key="RemoteLinux.LastDeployedLocalTimes"/>
<valuelist type="QVariantList" key="RemoteLinux.LastDeployedRemoteTimes"/>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.Configuration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings">
<value type="bool" key="AndroidBuildTargetDirSupport">false</value>
<valuelist type="QVariantList" key="ApplicationmanagerPackageTargets"/>
<value type="bool" key="UseAndroidBuildTargetDir">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.SuppressionFiles"/>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">app</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.SuppressionFiles"/>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">tests</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="CMake.Build.Type">Release</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_COLOR_DIAGNOSTICS:BOOL=ON
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
-DCMAKE_GENERATOR:STRING=Ninja
-DCMAKE_MAKE_PROGRAM:STRING=/usr/bin/ninja
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtcreator/cmake-helper/qtcreator-project.cmake
-DQT_CREATOR_ENABLE_MAINTENANCE_TOOL_PROVIDER:BOOL=ON
-DQT_ENABLE_QML_DEBUG:BOOL=%{Qt:QT_ENABLE_QML_DEBUG}
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">./build/%{Asciify:%{Kit:FileSystemName}-%{BuildConfig:Name}}</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">1</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString"></value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.CMakePackageStep</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ApplicationManagerPlugin.Deploy.InstallPackageStep.Arguments">install-package --acknowledge</value>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Application Manager-Paket installieren</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.InstallPackageStep</value>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedFiles"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedHosts"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedRemotePaths"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedSysroots"/>
<valuelist type="QVariantList" key="RemoteLinux.LastDeployedLocalTimes"/>
<valuelist type="QVariantList" key="RemoteLinux.LastDeployedRemoteTimes"/>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.Configuration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings">
<value type="bool" key="AndroidBuildTargetDirSupport">false</value>
<valuelist type="QVariantList" key="ApplicationmanagerPackageTargets"/>
<value type="bool" key="UseAndroidBuildTargetDir">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.SuppressionFiles"/>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">app</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.SuppressionFiles"/>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">tests</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString"></value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.CMakePackageStep</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ApplicationManagerPlugin.Deploy.InstallPackageStep.Arguments">install-package --acknowledge</value>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Application Manager-Paket installieren</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.InstallPackageStep</value>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedFiles"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedHosts"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedRemotePaths"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedSysroots"/>
<valuelist type="QVariantList" key="RemoteLinux.LastDeployedLocalTimes"/>
<valuelist type="QVariantList" key="RemoteLinux.LastDeployedRemoteTimes"/>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.Configuration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.SuppressionFiles"/>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">app</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.SuppressionFiles"/>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">tests</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

27
CMakeLists.txt Normal file
View File

@@ -0,0 +1,27 @@
cmake_minimum_required(VERSION 3.19)
project(bbr-algo LANGUAGES CXX)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
find_package(Qt6 REQUIRED COMPONENTS Core)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
option(BUILD_TARGET_SOM "TARGET_SOM" OFF)
include_directories(app)
add_subdirectory(app)
# Ks the 'plant' of the regulatroy system
# commented as long as 'MATLAB/extern/include' not avaliable
# include_directories(ks)
# add_subdirectory(ks)
# add_subdirectory(config)
enable_testing()
add_subdirectory(tests)

2
Jenkinsfile vendored
View File

@@ -10,7 +10,7 @@ pipeline {
stage('Clean-Jenkinsfile') { stage('Clean-Jenkinsfile') {
steps { steps {
//sh 'rm -rf build' //sh 'rm -rf build'
echo "Building branch ${env.BRANCH_NAME}" echo "Cleaning branch ${env.BRANCH_NAME}"
} }
} }
stage('Configure') { stage('Configure') {

View File

@@ -0,0 +1 @@
---

View File

@@ -0,0 +1,3 @@
Start testing: Mar 19 16:16 CET
----------------------------------------------------------
End testing: Mar 19 16:16 CET

29
app/CMakeLists.txt Normal file
View File

@@ -0,0 +1,29 @@
qt_standard_project_setup()
qt_add_executable(app main.cpp
)
qt_add_library(app_lib STATIC
filter.h main.cpp filter.cpp
Controller.hpp main.cpp Controller.cpp
pwm.h pwm.cpp
climate-algorithm.h climate-algorithm.cpp
pid.h pid.cpp
datamodel.h datamodel.cpp
dataset.h dataset.cpp
text-templates.h
)
target_include_directories(app_lib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(app_lib PRIVATE ${Qt6Core_INCLUDE_DIRS})
# add_executable(app main.cpp filter.cpp)
target_link_libraries(app PRIVATE
app_lib
Qt::Core
)

224
app/Controller.cpp Normal file
View File

@@ -0,0 +1,224 @@
#include "Controller.hpp"
#ifdef BUILD_TARGET_SOM
#include "application/AppLogic.hpp"
#include "application/Environment.hpp"
#include "application/EventLogger.hpp"
#include "deviceConfig/model/DeviceConfiguration.hpp"
#include "deviceConfig/model/state/GuardedAnalogConfiguration.hpp"
#include "state/DeviceState.hpp"
bool Controller::initialize(const char *configFilePath, appengine::IAppLogic *appLogic) {
appLogic_ = appLogic;
auto deviceState = appLogic->deviceState();
// Beispiel:
SV_Temperatur_Variable_ = deviceState.getVariableByKey("Temperatur_Innenraum");
SV_Feuchte_Variable_ = deviceState.getVariableByKey("Humidity");
SV_Tuer_Variable_ = deviceState.getVariableByKey("Temperatur_Tuer");
Wasserstand_Oben_Config_ = deviceState.getVariableByKey("Wasserstand_Hoch");
Wasserstand_Unten_Config_ = deviceState.getVariableByKey("Wasserstand_Tief");
Fuellstand_Config_ = deviceState.getVariableByKey("Fuellstand");
Heizung_Bef_Config_ = deviceState.getVariableByKey("Heizung_Bef");
MV_Kuehlung_Config_ = deviceState.getVariableByKey("MV_Kuehlung");
Abschlaemmen_Config_ = deviceState.getVariableByKey("Abschlaemmen");
Entleerpumpe_Config_ = deviceState.getVariableByKey("Entleerpumpe");
Heizung_Kesselrand_Config_ = deviceState.getVariableByKey("Heizung_Kesselrand");
Freigabe_Verfluessigerluefter_Config_ = deviceState.getVariableByKey("Freigabe_Verfluessigerluefter");
Heizung_Innenraum_Config_ = deviceState.getVariableByKey("Heizung_Innenraum");
Heizung_Tuer_Config_ = deviceState.getVariableByKey("Heizung_Tuer");
Uebertemperatur_Config_ = deviceState.getVariableByKey("Uebertemperatur");
MV_Entfeuchtung_Config_ = deviceState.getVariableByKey("MV_Entfeuchtung");
MV_Druckluft_Config_ = deviceState.getVariableByKey("MV_Druckluft");
Ansteuerung_Wassereinlass_Config_ = deviceState.getVariableByKey("Ansteuerung_Wassereinlass");
Ansteuerung_Verdichter_Config_ = deviceState.getVariableByKey("Ansteuerung_Verdichter");
Luefter_Innenraum_Config_ = deviceState.getVariableByKey("Luefter_Innenraum");
SV_Verdampferausgang_ = deviceState.getVariableByKey("Temperatur_Verdampferausgang");
SV_Befeuchtungsmodul_ = deviceState.getVariableByKey("Temperatur_Befeuchtungsmodul");
const_duty_cycle_ = deviceState.getVariableByKey("steady_duty");
const_freq_ = deviceState.getVariableByKey("steady_freq");
Verdichter_Duty_Config = deviceState.getVariableByKey("Ansteuerung_Verdichter_duty");
SV_Stellgrad_Heizung = deviceState.getVariableByKey("Stellgrad_Heizung");
SV_Stellgrad_Kuehlung = deviceState.getVariableByKey("Stellgrad_Kuehlung");
SV_Stellgrad_Befeuchtung = deviceState.getVariableByKey("Stellgrad_Befeuchtung");
SV_Stellgrad_Entfeuchtung = deviceState.getVariableByKey("Stellgrad_Entfeuchtung");
SV_Verdichter_on_ = deviceState.getVariableByKey("Verdichter_on");
Startup_ = deviceState.getVariableByKey("Startup_finished");
CounterTuer_ = deviceState.getVariableByKey("Counter_Tuer");
const_duty_cycle_ ->setValue(1000.0);
const_freq_->setValue(1000.0);
auto TempConfig = dynamic_cast<appengine::deviceConfig::DeviceParameterConfiguration &>(SV_Temperatur_Variable_->configuration());
auto FeuchteConfig = dynamic_cast<appengine::deviceConfig::DeviceParameterConfiguration &>(SV_Feuchte_Variable_->configuration());
auto Sollwert_Temp_Config = TempConfig.setPointConfiguration();
auto Sollwert_Feuchte_Config = FeuchteConfig.setPointConfiguration();
SV_Sollwert_Temperatur_ = deviceState.getVariableByKey(Sollwert_Temp_Config->name());
SV_Sollwert_Feuchte_ = deviceState.getVariableByKey(Sollwert_Feuchte_Config->name());
// std::vector<appengine::asio::SignalConnectionPtr> subscriptions_{};
// std::shared_ptr<appengine::state::StateVariable> Heizung_Bef_;
// std::shared_ptr<appengine::state::StateVariable> MV_Kuehlung_;
// std::shared_ptr<appengine::state::StateVariable> Abschlaemmen_;
// std::shared_ptr<appengine::state::StateVariable> Entleerpumpe_;
// std::shared_ptr<appengine::state::StateVariable> Heizung_Kesselrand;
// std::shared_ptr<appengine::state::StateVariable> Freigabe_Verfluessigerluefter;
// std::shared_ptr<appengine::state::StateVariable> Heizung_Innenraum;
// std::shared_ptr<appengine::state::StateVariable> Heizung_Tuer;
// std::shared_ptr<appengine::state::StateVariable> Uebertemperatur;
// std::shared_ptr<appengine::state::StateVariable> MV_Entfeuchtung;
// std::shared_ptr<appengine::state::StateVariable> MV_Druckluft;
// std::shared_ptr<appengine::state::StateVariable> Ansteuerung_Wassereinlass;
// std::shared_ptr<appengine::state::StateVariable> Wasserstand_oben_Config_;
// std::shared_ptr<appengine::state::StateVariable> Wasserstand_oben_Config_;
// std::shared_ptr<appengine::state::StateVariable> Ansteuerung_Verdichter;
// std::shared_ptr<appengine::state::StateVariable> Luefter_Innenraum;
// std::shared_ptr<appengine::state::StateVariable> heatingPower_Freq_;
// std::vector<appengine::asio::SignalConnectionPtr> subscriptions_{};
// std::shared_ptr<appengine::state::StateVariable> SV_Sollwert_Temperatur_;
// std::shared_ptr<appengine::state::StateVariable> SV_Temperatur_Variable_;
// std::shared_ptr<appengine::state::StateVariable> SV_Sollwert_Feuchte_;
// std::shared_ptr<appengine::state::StateVariable> SV_Feuchte_Variable_;
// std::shared_ptr<appengine::state::StateVariable> SV_Tuer_Variable_;
// tempSetPointVariable_ = deviceState.getVariableByKey("Temperature_Setpoint");
// TODO: alle bool_inXX/real_inXX und bool_outXX/real_outXX/alarm_XX Variablen hier holen.
// struct Inputs {
// // Eingangswerte aus bool_inXX / real_inXX / reset_flag
// bool reset_flag{};
// bool Sammelalarm_quittiert{};
// bool Tuer_offen{};
// bool Sollwert_Feuchte_aktiv{};
// bool Steuerkontakt_Standby{};
// bool Steuerkontakt_Befeuchtung_aus{};
// bool Steuerkontakt_Entfeuchtung_aus{};
// bool Entleerbehaelter_Oben{};
// bool Wasserkanister_leer{};
// bool Entleerbehaelter_Unten{};
// bool Sammelalarm{};
// double Istwert_Temperatur{};
// double Sollwert_Temperatur{};
// double Temperaturband{};
// double Istwert_Ueberwachungsregler{};
// double Klasse_Ueberwachungsregler{};
// double Grenzwert_Untertemperatur{};
// double Istwert_Feuchte{};
// double Sollwert_Feuchte{};
// double Feuchteband{};
// double Sollwert_Luefter{};
// double Istwert_Temperatur_Tuer{};
// double Istwert_Temperatur_Verdampferausgang{};
// double Temperatur_Feuchtemodul{};
// double Bandalarm_nach{};
// double Betauungsschutz{};
// double real_in11{}; // du nutzt real_in11 später direkt in alarm_15
// };
//Initialize PT1 Filter
FILTERED_TEMP.initialize(0.25,1);
FILTER_TUER.initialize(0.25,1);
return true;
}
#endif
void Controller::step() {
#ifdef BUILD_TARGET_SOM
ClimateAlgorithm::Inputs in{};
in.Istwert_Temperatur = FILTERED_TEMP.step(SV_Temperatur_Variable_->toType<double>());
in.Sollwert_Temperatur = SV_Sollwert_Temperatur_ ->toType<double>();
in.Entleerbehaelter_Oben = Wasserstand_Oben_Config_->toType<bool>();
in.Entleerbehaelter_Unten = Wasserstand_Unten_Config_->toType<bool>();
in.Istwert_Feuchte = SV_Feuchte_Variable_->toType<double>();
in.Sollwert_Feuchte = SV_Sollwert_Feuchte_->toType<double>();
in.Istwert_Temperatur_Tuer = FILTER_TUER.step(SV_Tuer_Variable_->toType<double>());
in.Betauungsschutz = 50.0;
in.Grenzwert_Untertemperatur = -80.0;
in.Feuchteband=10.0;
in.Istwert_Temperatur_Verdampferausgang = SV_Verdampferausgang_->toType<double>();
in.Sollwert_Feuchte = SV_Sollwert_Feuchte_->toType<double>();
in.Istwert_Ueberwachungsregler=in.Istwert_Temperatur;
in.Klasse_Ueberwachungsregler = 3.0;
in.reset_flag =false;
in.Sammelalarm = false;
in.Sollwert_Feuchte_aktiv = true;
in.Temperaturband = 5.0;
in.Temperatur_Feuchtemodul = SV_Befeuchtungsmodul_->toType<double>();
in.Wasserkanister_leer = false;
in.Tuer_offen = false;
// TODO: reset_flag und bool_inXX lesen:
// in.reset_flag = deviceState.getVariableByKey("reset_flag")->toType<bool>();
// in.Sammelalarm_quittiert = ... bool_in01
// ...
// in.Istwert_Temperatur = real_in01
// ...
// Minimal-Beispiel (falls du erstmal nur Temperatur/Setpoint testest):
//in.Istwert_Temperatur = tempVariable_ ? tempVariable_->toType<double>() : 0.0;
//in.Sollwert_Temperatur = tempSetPointVariable_ ? tempSetPointVariable_->toType<double>() : 25.0;
auto out = algo_.step(in);
Heizung_Bef_Config_ -> setValue(out.bool_out17);
MV_Kuehlung_Config_ ->setValue(out.bool_out18);
Abschlaemmen_Config_->setValue(out.bool_out20);
Entleerpumpe_Config_->setValue(out.bool_out16);
Heizung_Kesselrand_Config_->setValue(out.bool_out12);
Freigabe_Verfluessigerluefter_Config_->setValue(out.bool_out13);
Heizung_Innenraum_Config_->setValue(out.bool_out09);
Heizung_Tuer_Config_->setValue(out.bool_out11);
Uebertemperatur_Config_->setValue(true);
MV_Entfeuchtung_Config_->setValue(out.bool_out19);
MV_Druckluft_Config_->setValue(false);
Ansteuerung_Wassereinlass_Config_->setValue(out.bool_out14);
//Ansteuerung_Verdichter_Config_->setValue(out.real_out21*20.0);
SV_Verdichter_on_->setValue(1);
Ansteuerung_Verdichter_Config_->setValue(static_cast<int> (out.real_out21*10.0));
Verdichter_Duty_Config->setValue(500);
SV_Stellgrad_Heizung->setValue(out.Stellgrad_Heizung);
SV_Stellgrad_Kuehlung->setValue(out.Stellgrad_Kuehlung);
SV_Stellgrad_Befeuchtung ->setValue(out.Stellgrad_Befeuchtung);
SV_Stellgrad_Entfeuchtung->setValue(out.Stellgrad_Entfeuchtung);
Startup_->setValue(out.Startup);
CounterTuer_->setValue(out.Counter_Tuer);
// TODO: bool_outXX / real_outXX / alarm_XX setzen:
// deviceState.getVariableByKey("bool_out01")->set(out.bool_out01);
// deviceState.getVariableByKey("real_out09")->set(out.real_out09);
#endif
}
void Controller::terminate() {
#ifdef BUILD_TARGET_SOM
subscriptions_.clear();
#endif
}
#ifdef BUILD_TARGET_SOM
ControllerBase *create() {
return new Controller;
}
#endif

2530
app/Controller.hpp Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
// todo: create, import file header

22
app/climate-algorithm.h Normal file
View File

@@ -0,0 +1,22 @@
// todo: create, import file header
#ifndef CLIMATE_ALGORITHM_H
#define CLIMATE_ALGORITHM_H
#include <iostream>
#include <vector>
//todo - install
// #include <nlohmann/json.hpp>
#include "filter.h"
#include "pwm.hpp"
#include "pid.h"
class ClimateAlgorithm {
public:
private:
}
#endif // CLIMATE_ALGORITHM_H

29
app/datamodel.cpp Normal file
View File

@@ -0,0 +1,29 @@
/*
File: datamodel.cpp
Description: This is a C++ source file containing implementation code for a data collection (called model) used for
the realisation of a climate chamber control algorithm
Rev: 0.1 - draft
Created: 20.03.26
Author: Uwe Jakobeit
Copyright: Binder GmbH TUT
Purpose: Configuration data and run-time datasets are provided for a controller simulation
Notes: [Any relevant details, such as dependencies, usage examples, or known issues.]
*/
#include "datamodel.h"
DataModel::DataModel()
{
// uj todo - set defaults, if JSON input fails
// for now only hard-coded data
Kennfeld_Ueberhitzung = Kennfeld_Ueberhitzung_Default;
// In English:
HeadlineOverheat = HeadlineOverheatDefault;
Kennfeld_Entfeuchtung = Kennfeld_Entfeuchtung_Default;
Kennfeld_Ueberhitzung = Kennfeld_Ueberhitzung_Default;
}

64
app/datamodel.h Normal file
View File

@@ -0,0 +1,64 @@
#ifndef DATAMODEL_H
#define DATAMODEL_H
#include "dataset.h"
#define HeadlineOverheat Kennfeld_Ueberhitzung
#define HeadlineOverheatDefault Kennfeld_Ueberhitzung_Default
class DataModel{
public:
DataModel();
private:
QList<QList<double>> Kennfeld_Ueberhitzung;
QList<QList<double>> Kennfeld_Entfeuchtung;
QList<QList<double>> Kennfeld_Regler_Heizung_Xp;
QList<QList<double>> Kennfeld_Ueberhitzung_Default = {
{-20.0, -10.0, 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0}, // 0: Temperatur
{0.01, 0.02, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.0}, // 1: Skalierung Min
{0.01, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.0, 1.0, 1.0}, // 1: Skalierung Max
{-6.0, -8.0, -10.0, -8.0, -6.0, -8.0, -10.0, -12.0, -16.0, -20.0, -24.0, -28.0, -32.0} // 3: Sollwert Überhitzung
};
QList<QList<double>> Kennfeld_Entfeuchtung_Default{
{ -20.0, -10.0, 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0}, // 0: Temperatur
{ 0.08, 0.08, 0.08, 0.10, 0.12, 0.14, 0.16, 0.18, 0.20, 0.22, 0.24, 0.26, 0.28}, // 1: Skalierung Entfeuchtung
{ 120.0, 120.0, 120.0, 120.0, 120.0, 90.0, 60.0, 60.0, 60.0, 0.0, 0.0, 0.0, 0.0}, // 2: Abtauzyklus Pause
{ 60.0, 60.0, 60.0, 30.0, 20.0, 10.0, 8.0, 4.0, 2.0, 0.0, 0.0, 0.0, 0.0} // 3: Abtauzyklus Dauer
};
QList<double> Kennfeld_Regler_Heizung_Xp_Default{
0.2, 0.5, 0.8, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
QList<double> Kennfeld_Regler_Kuehlung_Xp{
0.1, 0.1, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.0};
QList<QList<double>> Kennfeld_Regler_Befeuchtung_Xp{
{1.00, 0.54, 0.31, 0.18, 0.11, 0.07, 0.05, 0.03, 0.02},
{1.00, 0.54, 0.31, 0.18, 0.11, 0.07, 0.05, 0.03, 0.02},
{1.00, 0.54, 0.31, 0.18, 0.11, 0.07, 0.05, 0.03, 0.02},
{1.00, 0.54, 0.31, 0.18, 0.11, 0.07, 0.05, 0.03, 0.02},
{1.00, 0.54, 0.31, 0.18, 0.11, 0.07, 0.05, 0.03, 0.02},
{1.00, 0.54, 0.31, 0.18, 0.11, 0.07, 0.05, 0.03, 0.02},
{1.00, 0.54, 0.31, 0.18, 0.11, 0.07, 0.05, 0.03, 0.02},
{1.00, 0.54, 0.31, 0.18, 0.11, 0.07, 0.05, 0.03, 0.02},
{1.00, 0.54, 0.31, 0.18, 0.11, 0.07, 0.05, 0.03, 0.02}};
QList<QList<double>> Kennfeld_Regler_Entfeuchtung_Xp{
{1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20},
{1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20},
{1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20},
{1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20},
{1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20},
{1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20},
{1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20},
{1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20},
{1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20}};
};
#endif // DATAMODEL_H

60
app/dataset.cpp Normal file
View File

@@ -0,0 +1,60 @@
/*
File: dataset.cpp
Description: This is a C++ source file containing implementation code handling configuration data
Rev: 0.1
Created: 20.03.2026
Author: Uwe Jakobeit
Copyright: Binder GmbH, TUT 2026
Purpose: [Briefly describe the file's functionality, e.g., "Implements a class for managing user data."]
Implementation of classes which provide changes of dataset without (re-)comiling
Notes: [Any relevant details, such as dependencies, usage examples, or known issues.]
*/
#include "dataset.h"
using namespace std;
// Read config file and setup headlines ( characteristics )
Dataset::Dataset(QString& configFile)
{
// headline << &mHeadLineTemperature
// << &mHeadLineHumidity
// << &mHeadLineOverheat;
// Now you can create a QVector of pointers to QVectorBase
QVector<QVectorBase*> mixedVectors;
// QVector<QVectorBase*> mHeadlineVector;
// Usage
QVector<int> intVec = {1, 2, 3};
QVector<double> dblVec = {1.0, 2, 3};
QVector<QString> stringVec = {"hello", "world"};
mixedVectors.append(new QVectorWrapper<int>(intVec));
mixedVectors.append(new QVectorWrapper<QString>(stringVec));
mHeadlineVector.append(new QVectorWrapper<int>(intVec));
mHeadlineVector.append(new QVectorWrapper<QString>(stringVec));
// Iterate and use polymorphic behavior
for (QVectorBase* vec : mixedVectors) {
vec->print();
}
// // Clean up
// qDeleteAll(mixedVectors);
// mixedVectors.clear();
}
QVectorBase* Dataset::HeadLine(uint8_t LineId)
{
return mHeadlineVector.at(LineId);
}

69
app/dataset.h Normal file
View File

@@ -0,0 +1,69 @@
// #include <memory>
// #include <vector>
// #include <string>
#include <QVector>
#include <QDebug>
using namespace std;
enum class LineId {
Temperature,
Humidity,
OverHeat
};
#if 0
class Dataset{
public:
Dataset(QString& configFile);
// return headlines (Kennlinien) of known types from ST code
QVector* HeadLine(enum class LineId);
private:
// Class members (m_, but don't like the '_' )
vector<std::unique_ptr> headline;
vector mHeadLineTemperature;
vector mHeadLineOverheat;
vector mHeadLineHumidity;
};
#endif
#include <QVector>
#include <QMetaType>
// Forward declaration of a base class for polymorphic behavior
class QVectorBase {
public:
virtual ~QVectorBase() = default;
virtual void print() const = 0;
};
// Template class to wrap a QVector<T> and inherit from QVectorBase
template<typename T>
class QVectorWrapper : public QVectorBase {
public:
QVector<T> vec;
QVectorWrapper() = default;
explicit QVectorWrapper(const QVector<T>& v) : vec(v) {}
void print() const override {
qDebug() << "Vector of" << sizeof(T) << "bytes:" << vec;
}
};
class Dataset{
public:
Dataset(QString& configFile);
QVectorBase *HeadLine(uint8_t LineId);
private:
QVector<QVectorBase*> mHeadlineVector;
};

20
app/filter.cpp Normal file
View File

@@ -0,0 +1,20 @@
#include "filter.h"
PT1Filter::PT1Filter(double tau, double dt) : output(0.0) {
filterFactor = dt / (tau + dt);
}
double PT1Filter::update(double input) {
output += filterFactor * (input - output);
return output;
}
double PT1Filter::step(double input) {
output += filterFactor * (input - output);
return output;
};
void PT1Filter::reset() {
output = 0.0;
}

20
app/filter.h Normal file
View File

@@ -0,0 +1,20 @@
#ifndef FILTER_H
#define FILTER_H
#pragma once
class PT1Filter {
private:
double output;
double filterFactor;
public:
PT1Filter(double tau, double dt);
double update(double input);
double step(double input);
void reset();
};
#endif // FILTER_H

30
app/main.cpp Normal file
View File

@@ -0,0 +1,30 @@
#include <QCoreApplication>
#include <QDebug>
#include "Controller.hpp"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// Set up code that uses the Qt event loop here.
// Call QCoreApplication::quit() or QCoreApplication::exit() to quit the application.
// A not very useful example would be including
// #include <QTimer>
// near the top of the file and calling
// QTimer::singleShot(5000, &a, &QCoreApplication::quit);
// which quits the application after 5 seconds.
// If you do not need a running Qt event loop, remove the call
// to QCoreApplication::exec() or use the Non-Qt Plain C++ Application template.
Controller bbr;
qDebug() << "Perform one bbr setp";
bbr.step();
return 0;
// return QCoreApplication::exec();
}

9
app/pid.cpp Normal file
View File

@@ -0,0 +1,9 @@
// todo: create, import file header
#include "pid.h"
PID::PID()
{
}

12
app/pid.h Normal file
View File

@@ -0,0 +1,12 @@
#ifndef PWM_H
#define PWM_H
class PID{
public:
PID();
private:
};
#endif //PWM_H

18
app/pwm.cpp Normal file
View File

@@ -0,0 +1,18 @@
// todo: create, import file header
#include "pwm.h"
PWM::PWM(double cycleTime_Min,double cycleTime_Max)
{
m_cycle = 0.0;
m_out = 0.0;
m_cycleTime = 0.0;
m_cycleTime_Min = cycleTime_Min;
m_cycleTime_Max = cycleTime_Max;
}
bool PWM::step(double setValue,double samplingTime)
{
bool output_bool;
return output_bool;
}

20
app/pwm.h Normal file
View File

@@ -0,0 +1,20 @@
#ifndef PWM_H
#define PWM_H
#include <stdbool.h>
class PWM
{
public:
PWM(double cycleTime_Min,double cycleTime_Max);
bool step(double setValue,double samplingTime);
private:
double m_cycle = 0.0;
double m_out = 0.0;
double m_cycleTime = 0.0;
double m_cycleTime_Min = 0.0;
double m_cycleTime_Max = 0.0;
};
#endif // PWM_H

19
app/text-templates.h Normal file
View File

@@ -0,0 +1,19 @@
// CPP Source file header ( as well h-file header, so far (20.03.26)
/*
File: filename.cpp
Description: This is a C++ source file containing implementation code for a program or library component.
Rev: 0.1
Created: [Date]
Author: [Your Name]
Copyright: [Your Organization or Name] [Year(s)]
Purpose: [Briefly describe the file's functionality, e.g., "Implements a class for managing user data."]
Notes: [Any relevant details, such as dependencies, usage examples, or known issues.]
*/
// CPP Source function header
// todo
// Header file function header
// todo

38
config/CMakeLists.txt Normal file
View File

@@ -0,0 +1,38 @@
if(0)
# qt_standard_project_setup()
# qt_add_executable(app main.cpp
# )
add_library(config_lib STATIC dataset.h dataset.cpp
)
target_include_directories(config_lib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(config_lib PRIVATE ${Qt6Core_INCLUDE_DIRS})
# add_executable(app main.cpp filter.cpp)
target_link_libraries(app PRIVATE config_lib
)
endif()
qt_standard_project_setup()
qt_add_executable(app main.cpp
)
qt_add_library(config_lib STATIC dataset.h dataset.cpp
)
target_include_directories(config_lib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(config_lib PRIVATE ${Qt6Core_INCLUDE_DIRS})
# add_executable(app main.cpp filter.cpp)
target_link_libraries(app PRIVATE
config_lib
Qt::Core
)

25
ks/CMakeLists.txt Normal file
View File

@@ -0,0 +1,25 @@
cmake_minimum_required(VERSION 3.28)
project(ks_lib LANGUAGES CXX)
qt_standard_project_setup()
file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
file(GLOB_RECURSE HEADERS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp")
# qt_add_executable(ks main.cpp
# )
qt_add_library(${PROJECT_NAME} STATIC main.cpp
${SOURCES}
${HEADERS}
)
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/Models/FP56/Model_grt_rtw)
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${PROJECT_NAME} PRIVATE ${Qt6Core_INCLUDE_DIRS})
# add_executable(app main.cpp filter.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt::Core
)

BIN
ks/Models/FP56/Model.slx Executable file

Binary file not shown.

BIN
ks/Models/FP56/Model.slx.autosave Executable file

Binary file not shown.

BIN
ks/Models/FP56/Model.slxc Executable file

Binary file not shown.

View File

@@ -0,0 +1,16 @@
set skipSetupArg=%2
if "%skipSetupArg%" NEQ "skip_setup_msvc" (
call "setup_msvc.bat"
)
cd .
if "%1"=="" (nmake -f Model.mk all) else (nmake -f Model.mk %1)
@if errorlevel 1 goto error_exit
exit /B 0
:error_exit
echo The make command returned an error of %errorlevel%
exit /B 1

View File

@@ -0,0 +1,358 @@
/*
* Model.cpp
*
* Code generation for model "Model".
*
* Model version : 1.2
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Sat Mar 28 11:28:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#include "Model.h"
#include "rtwtypes.h"
#include "Model_private.h"
extern "C" {
#include "rt_nonfinite.h"
}
/*
* This function updates continuous states using the ODE3 fixed-step
* solver algorithm
*/
void Model::rt_ertODEUpdateContinuousStates(RTWSolverInfo *si )
{
/* Solver Matrices */
static const real_T rt_ODE3_A[3]{
1.0/2.0, 3.0/4.0, 1.0
};
static const real_T rt_ODE3_B[3][3]{
{ 1.0/2.0, 0.0, 0.0 },
{ 0.0, 3.0/4.0, 0.0 },
{ 2.0/9.0, 1.0/3.0, 4.0/9.0 }
};
time_T t { rtsiGetT(si) };
time_T tnew { rtsiGetSolverStopTime(si) };
time_T h { rtsiGetStepSize(si) };
real_T *x { rtsiGetContStates(si) };
ODE3_IntgData *id { static_cast<ODE3_IntgData *>(rtsiGetSolverData(si)) };
real_T *y { id->y };
real_T *f0 { id->f[0] };
real_T *f1 { id->f[1] };
real_T *f2 { id->f[2] };
real_T hB[3];
int_T i;
int_T nXc { 3 };
rtsiSetSimTimeStep(si,MINOR_TIME_STEP);
/* Save the state values at time t in y, we'll use x as ynew. */
(void) std::memcpy(y, x,
static_cast<uint_T>(nXc)*sizeof(real_T));
/* Assumes that rtsiSetT and ModelOutputs are up-to-date */
/* f0 = f(t,y) */
rtsiSetdX(si, f0);
Model_derivatives();
/* f(:,2) = feval(odefile, t + hA(1), y + f*hB(:,1), args(:)(*)); */
hB[0] = h * rt_ODE3_B[0][0];
for (i = 0; i < nXc; i++) {
x[i] = y[i] + (f0[i]*hB[0]);
}
rtsiSetT(si, t + h*rt_ODE3_A[0]);
rtsiSetdX(si, f1);
this->step();
Model_derivatives();
/* f(:,3) = feval(odefile, t + hA(2), y + f*hB(:,2), args(:)(*)); */
for (i = 0; i <= 1; i++) {
hB[i] = h * rt_ODE3_B[1][i];
}
for (i = 0; i < nXc; i++) {
x[i] = y[i] + (f0[i]*hB[0] + f1[i]*hB[1]);
}
rtsiSetT(si, t + h*rt_ODE3_A[1]);
rtsiSetdX(si, f2);
this->step();
Model_derivatives();
/* tnew = t + hA(3);
ynew = y + f*hB(:,3); */
for (i = 0; i <= 2; i++) {
hB[i] = h * rt_ODE3_B[2][i];
}
for (i = 0; i < nXc; i++) {
x[i] = y[i] + (f0[i]*hB[0] + f1[i]*hB[1] + f2[i]*hB[2]);
}
rtsiSetT(si, tnew);
rtsiSetSimTimeStep(si,MAJOR_TIME_STEP);
}
/* Model step function */
void Model::step()
{
real_T rtb_Gain1;
real_T rtb_Gain4;
if (rtmIsMajorTimeStep((&Model_M))) {
/* set solver stop time */
if (!((&Model_M)->Timing.clockTick0+1)) {
rtsiSetSolverStopTime(&(&Model_M)->solverInfo, (((&Model_M)
->Timing.clockTickH0 + 1) * (&Model_M)->Timing.stepSize0 * 4294967296.0));
} else {
rtsiSetSolverStopTime(&(&Model_M)->solverInfo, (((&Model_M)
->Timing.clockTick0 + 1) * (&Model_M)->Timing.stepSize0 + (&Model_M)
->Timing.clockTickH0 * (&Model_M)->Timing.stepSize0 * 4294967296.0));
}
} /* end MajorTimeStep */
/* Update absolute time of base rate at minor time step */
if (rtmIsMinorTimeStep((&Model_M))) {
(&Model_M)->Timing.t[0] = rtsiGetT(&(&Model_M)->solverInfo);
}
/* Outport: '<Root>/Temperatur' incorporates:
* Integrator: '<S1>/Integrator1'
*/
Model_Y.Temperatur = Model_X.Integrator1_CSTATE;
/* Gain: '<S1>/Gain1' incorporates:
* Integrator: '<S1>/Integrator'
* Integrator: '<S1>/Integrator1'
* Sum: '<S1>/Plus1'
*/
rtb_Gain1 = Model_P.alphaHD * Model_P.AHD * (Model_X.Integrator_CSTATE -
Model_X.Integrator1_CSTATE);
/* Gain: '<S1>/Gain' incorporates:
* Inport: '<Root>/Stellgrad'
* Sum: '<S1>/Plus'
*/
Model_B.Gain = 1.0 / (Model_P.mHD * Model_P.CHD) * (Model_U.Stellgrad -
rtb_Gain1);
/* Gain: '<S1>/Gain4' incorporates:
* Integrator: '<S1>/Integrator1'
* Integrator: '<S1>/Integrator2'
* Sum: '<S1>/Plus4'
*/
rtb_Gain4 = Model_P.alphaSW * Model_P.Ai * (Model_X.Integrator1_CSTATE -
Model_X.Integrator2_CSTATE);
/* Gain: '<S1>/Gain2' incorporates:
* Sum: '<S1>/Plus2'
*/
Model_B.Gain2 = 1.0 / (Model_P.ml * Model_P.Cl + Model_P.mES * Model_P.CES) *
(rtb_Gain1 - rtb_Gain4);
/* Gain: '<S1>/Gain5' incorporates:
* Constant: '<Root>/Constant'
* Gain: '<S1>/Gain7'
* Integrator: '<S1>/Integrator2'
* Sum: '<S1>/Plus5'
* Sum: '<S1>/Plus7'
*/
Model_B.Gain5 = (rtb_Gain4 - Model_P.alpha_aussen * Model_P.A_Aussen *
(Model_X.Integrator2_CSTATE - Model_P.Constant_Value)) * (1.0
/ (Model_P.mSW * Model_P.CSW));
if (rtmIsMajorTimeStep((&Model_M))) {
/* Matfile logging */
rt_UpdateTXYLogVars((&Model_M)->rtwLogInfo, ((&Model_M)->Timing.t));
} /* end MajorTimeStep */
if (rtmIsMajorTimeStep((&Model_M))) {
/* signal main to stop simulation */
{ /* Sample time: [0.0s, 0.0s] */
if ((rtmGetTFinal((&Model_M))!=-1) &&
!((rtmGetTFinal((&Model_M))-((((&Model_M)->Timing.clockTick1+(&Model_M)
->Timing.clockTickH1* 4294967296.0)) * 0.05)) > ((((&Model_M)
->Timing.clockTick1+(&Model_M)->Timing.clockTickH1* 4294967296.0))
* 0.05) * (DBL_EPSILON))) {
rtmSetErrorStatus((&Model_M), "Simulation finished");
}
}
rt_ertODEUpdateContinuousStates(&(&Model_M)->solverInfo);
/* Update absolute time for base rate */
/* The "clockTick0" counts the number of times the code of this task has
* been executed. The absolute time is the multiplication of "clockTick0"
* and "Timing.stepSize0". Size of "clockTick0" ensures timer will not
* overflow during the application lifespan selected.
* Timer of this task consists of two 32 bit unsigned integers.
* The two integers represent the low bits Timing.clockTick0 and the high bits
* Timing.clockTickH0. When the low bit overflows to 0, the high bits increment.
*/
if (!(++(&Model_M)->Timing.clockTick0)) {
++(&Model_M)->Timing.clockTickH0;
}
(&Model_M)->Timing.t[0] = rtsiGetSolverStopTime(&(&Model_M)->solverInfo);
{
/* Update absolute timer for sample time: [0.05s, 0.0s] */
/* The "clockTick1" counts the number of times the code of this task has
* been executed. The resolution of this integer timer is 0.05, which is the step size
* of the task. Size of "clockTick1" ensures timer will not overflow during the
* application lifespan selected.
* Timer of this task consists of two 32 bit unsigned integers.
* The two integers represent the low bits Timing.clockTick1 and the high bits
* Timing.clockTickH1. When the low bit overflows to 0, the high bits increment.
*/
(&Model_M)->Timing.clockTick1++;
if (!(&Model_M)->Timing.clockTick1) {
(&Model_M)->Timing.clockTickH1++;
}
}
} /* end MajorTimeStep */
}
/* Derivatives for root system: '<Root>' */
void Model::Model_derivatives()
{
XDot_Model_T *_rtXdot;
_rtXdot = ((XDot_Model_T *) (&Model_M)->derivs);
/* Derivatives for Integrator: '<S1>/Integrator1' */
_rtXdot->Integrator1_CSTATE = Model_B.Gain2;
/* Derivatives for Integrator: '<S1>/Integrator' */
_rtXdot->Integrator_CSTATE = Model_B.Gain;
/* Derivatives for Integrator: '<S1>/Integrator2' */
_rtXdot->Integrator2_CSTATE = Model_B.Gain5;
}
/* Model initialize function */
void Model::initialize()
{
/* Registration code */
/* initialize non-finites */
rt_InitInfAndNaN(sizeof(real_T));
{
/* Setup solver object */
rtsiSetSimTimeStepPtr(&(&Model_M)->solverInfo, &(&Model_M)
->Timing.simTimeStep);
rtsiSetTPtr(&(&Model_M)->solverInfo, &rtmGetTPtr((&Model_M)));
rtsiSetStepSizePtr(&(&Model_M)->solverInfo, &(&Model_M)->Timing.stepSize0);
rtsiSetdXPtr(&(&Model_M)->solverInfo, &(&Model_M)->derivs);
rtsiSetContStatesPtr(&(&Model_M)->solverInfo, (real_T **) &(&Model_M)
->contStates);
rtsiSetNumContStatesPtr(&(&Model_M)->solverInfo, &(&Model_M)
->Sizes.numContStates);
rtsiSetNumPeriodicContStatesPtr(&(&Model_M)->solverInfo, &(&Model_M)
->Sizes.numPeriodicContStates);
rtsiSetPeriodicContStateIndicesPtr(&(&Model_M)->solverInfo, &(&Model_M)
->periodicContStateIndices);
rtsiSetPeriodicContStateRangesPtr(&(&Model_M)->solverInfo, &(&Model_M)
->periodicContStateRanges);
rtsiSetErrorStatusPtr(&(&Model_M)->solverInfo, (&rtmGetErrorStatus((&Model_M))));
rtsiSetRTModelPtr(&(&Model_M)->solverInfo, (&Model_M));
}
rtsiSetSimTimeStep(&(&Model_M)->solverInfo, MAJOR_TIME_STEP);
(&Model_M)->intgData.y = (&Model_M)->odeY;
(&Model_M)->intgData.f[0] = (&Model_M)->odeF[0];
(&Model_M)->intgData.f[1] = (&Model_M)->odeF[1];
(&Model_M)->intgData.f[2] = (&Model_M)->odeF[2];
(&Model_M)->contStates = ((X_Model_T *) &Model_X);
rtsiSetSolverData(&(&Model_M)->solverInfo, static_cast<void *>(&(&Model_M)
->intgData));
rtsiSetIsMinorTimeStepWithModeChange(&(&Model_M)->solverInfo, false);
rtsiSetSolverName(&(&Model_M)->solverInfo,"ode3");
rtmSetTPtr((&Model_M), &(&Model_M)->Timing.tArray[0]);
rtmSetTFinal((&Model_M), 10.0);
(&Model_M)->Timing.stepSize0 = 0.05;
/* Setup for data logging */
{
static RTWLogInfo rt_DataLoggingInfo;
rt_DataLoggingInfo.loggingInterval = (nullptr);
(&Model_M)->rtwLogInfo = &rt_DataLoggingInfo;
}
/* Setup for data logging */
{
rtliSetLogXSignalInfo((&Model_M)->rtwLogInfo, (nullptr));
rtliSetLogXSignalPtrs((&Model_M)->rtwLogInfo, (nullptr));
rtliSetLogT((&Model_M)->rtwLogInfo, "tout");
rtliSetLogX((&Model_M)->rtwLogInfo, "");
rtliSetLogXFinal((&Model_M)->rtwLogInfo, "");
rtliSetLogVarNameModifier((&Model_M)->rtwLogInfo, "rt_");
rtliSetLogFormat((&Model_M)->rtwLogInfo, 4);
rtliSetLogMaxRows((&Model_M)->rtwLogInfo, 0);
rtliSetLogDecimation((&Model_M)->rtwLogInfo, 1);
rtliSetLogY((&Model_M)->rtwLogInfo, "");
rtliSetLogYSignalInfo((&Model_M)->rtwLogInfo, (nullptr));
rtliSetLogYSignalPtrs((&Model_M)->rtwLogInfo, (nullptr));
}
/* Matfile logging */
rt_StartDataLoggingWithStartTime((&Model_M)->rtwLogInfo, 0.0, rtmGetTFinal
((&Model_M)), (&Model_M)->Timing.stepSize0, (&rtmGetErrorStatus((&Model_M))));
/* InitializeConditions for Integrator: '<S1>/Integrator1' */
Model_X.Integrator1_CSTATE = Model_P.T_amb;
/* InitializeConditions for Integrator: '<S1>/Integrator' */
Model_X.Integrator_CSTATE = Model_P.T_amb;
/* InitializeConditions for Integrator: '<S1>/Integrator2' */
Model_X.Integrator2_CSTATE = Model_P.T_amb;
}
/* Model terminate function */
void Model::terminate()
{
/* (no terminate code required) */
}
/* Constructor */
Model::Model() :
Model_U(),
Model_Y(),
Model_B(),
Model_X(),
Model_M()
{
/* Currently there is no constructor body generated.*/
}
/* Destructor */
Model::~Model()
{
/* Currently there is no destructor body generated.*/
}
/* Real-Time Model get method */
RT_MODEL_Model_T * Model::getRTM()
{
return (&Model_M);
}

View File

@@ -0,0 +1,408 @@
/*
* Model.h
*
* Code generation for model "Model".
*
* Model version : 1.1
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Thu Mar 26 17:54:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#ifndef RTW_HEADER_Model_h_
#define RTW_HEADER_Model_h_
#include "rtwtypes.h"
#include "rtw_continuous.h"
#include "rtw_solver.h"
#include "rt_logging.h"
#include "Model_types.h"
#include <cfloat>
#include <cstring>
extern "C" {
#include "rt_nonfinite.h"
}
/* Macros for accessing real-time model data structure */
#ifndef rtmGetContStateDisabled
#define rtmGetContStateDisabled(rtm) ((rtm)->contStateDisabled)
#endif
#ifndef rtmSetContStateDisabled
#define rtmSetContStateDisabled(rtm, val) ((rtm)->contStateDisabled = (val))
#endif
#ifndef rtmGetContStates
#define rtmGetContStates(rtm) ((rtm)->contStates)
#endif
#ifndef rtmSetContStates
#define rtmSetContStates(rtm, val) ((rtm)->contStates = (val))
#endif
#ifndef rtmGetContTimeOutputInconsistentWithStateAtMajorStepFlag
#define rtmGetContTimeOutputInconsistentWithStateAtMajorStepFlag(rtm) ((rtm)->CTOutputIncnstWithState)
#endif
#ifndef rtmSetContTimeOutputInconsistentWithStateAtMajorStepFlag
#define rtmSetContTimeOutputInconsistentWithStateAtMajorStepFlag(rtm, val) ((rtm)->CTOutputIncnstWithState = (val))
#endif
#ifndef rtmGetDerivCacheNeedsReset
#define rtmGetDerivCacheNeedsReset(rtm) ((rtm)->derivCacheNeedsReset)
#endif
#ifndef rtmSetDerivCacheNeedsReset
#define rtmSetDerivCacheNeedsReset(rtm, val) ((rtm)->derivCacheNeedsReset = (val))
#endif
#ifndef rtmGetFinalTime
#define rtmGetFinalTime(rtm) ((rtm)->Timing.tFinal)
#endif
#ifndef rtmGetIntgData
#define rtmGetIntgData(rtm) ((rtm)->intgData)
#endif
#ifndef rtmSetIntgData
#define rtmSetIntgData(rtm, val) ((rtm)->intgData = (val))
#endif
#ifndef rtmGetOdeF
#define rtmGetOdeF(rtm) ((rtm)->odeF)
#endif
#ifndef rtmSetOdeF
#define rtmSetOdeF(rtm, val) ((rtm)->odeF = (val))
#endif
#ifndef rtmGetOdeY
#define rtmGetOdeY(rtm) ((rtm)->odeY)
#endif
#ifndef rtmSetOdeY
#define rtmSetOdeY(rtm, val) ((rtm)->odeY = (val))
#endif
#ifndef rtmGetPeriodicContStateIndices
#define rtmGetPeriodicContStateIndices(rtm) ((rtm)->periodicContStateIndices)
#endif
#ifndef rtmSetPeriodicContStateIndices
#define rtmSetPeriodicContStateIndices(rtm, val) ((rtm)->periodicContStateIndices = (val))
#endif
#ifndef rtmGetPeriodicContStateRanges
#define rtmGetPeriodicContStateRanges(rtm) ((rtm)->periodicContStateRanges)
#endif
#ifndef rtmSetPeriodicContStateRanges
#define rtmSetPeriodicContStateRanges(rtm, val) ((rtm)->periodicContStateRanges = (val))
#endif
#ifndef rtmGetRTWLogInfo
#define rtmGetRTWLogInfo(rtm) ((rtm)->rtwLogInfo)
#endif
#ifndef rtmGetZCCacheNeedsReset
#define rtmGetZCCacheNeedsReset(rtm) ((rtm)->zCCacheNeedsReset)
#endif
#ifndef rtmSetZCCacheNeedsReset
#define rtmSetZCCacheNeedsReset(rtm, val) ((rtm)->zCCacheNeedsReset = (val))
#endif
#ifndef rtmGetdX
#define rtmGetdX(rtm) ((rtm)->derivs)
#endif
#ifndef rtmSetdX
#define rtmSetdX(rtm, val) ((rtm)->derivs = (val))
#endif
#ifndef rtmGetErrorStatus
#define rtmGetErrorStatus(rtm) ((rtm)->errorStatus)
#endif
#ifndef rtmSetErrorStatus
#define rtmSetErrorStatus(rtm, val) ((rtm)->errorStatus = (val))
#endif
#ifndef rtmGetStopRequested
#define rtmGetStopRequested(rtm) ((rtm)->Timing.stopRequestedFlag)
#endif
#ifndef rtmSetStopRequested
#define rtmSetStopRequested(rtm, val) ((rtm)->Timing.stopRequestedFlag = (val))
#endif
#ifndef rtmGetStopRequestedPtr
#define rtmGetStopRequestedPtr(rtm) (&((rtm)->Timing.stopRequestedFlag))
#endif
#ifndef rtmGetT
#define rtmGetT(rtm) (rtmGetTPtr((rtm))[0])
#endif
#ifndef rtmGetTFinal
#define rtmGetTFinal(rtm) ((rtm)->Timing.tFinal)
#endif
#ifndef rtmGetTPtr
#define rtmGetTPtr(rtm) ((rtm)->Timing.t)
#endif
/* Block signals (default storage) */
struct B_Model_T {
real_T Gain; /* '<S1>/Gain' */
real_T Gain2; /* '<S1>/Gain2' */
real_T Gain5; /* '<S1>/Gain5' */
};
/* Continuous states (default storage) */
struct X_Model_T {
real_T Integrator1_CSTATE; /* '<S1>/Integrator1' */
real_T Integrator_CSTATE; /* '<S1>/Integrator' */
real_T Integrator2_CSTATE; /* '<S1>/Integrator2' */
};
/* State derivatives (default storage) */
struct XDot_Model_T {
real_T Integrator1_CSTATE; /* '<S1>/Integrator1' */
real_T Integrator_CSTATE; /* '<S1>/Integrator' */
real_T Integrator2_CSTATE; /* '<S1>/Integrator2' */
};
/* State disabled */
struct XDis_Model_T {
boolean_T Integrator1_CSTATE; /* '<S1>/Integrator1' */
boolean_T Integrator_CSTATE; /* '<S1>/Integrator' */
boolean_T Integrator2_CSTATE; /* '<S1>/Integrator2' */
};
#ifndef ODE3_INTG
#define ODE3_INTG
/* ODE3 Integration Data */
struct ODE3_IntgData {
real_T *y; /* output */
real_T *f[3]; /* derivatives */
};
#endif
/* External inputs (root inport signals with default storage) */
struct ExtU_Model_T {
real_T Stellgrad; /* '<Root>/Stellgrad' */
};
/* External outputs (root outports fed by signals with default storage) */
struct ExtY_Model_T {
real_T Temperatur; /* '<Root>/Temperatur' */
};
/* Parameters (default storage) */
struct P_Model_T_ {
real_T AHD; /* Variable: AHD
* Referenced by: '<S1>/Gain1'
*/
real_T A_Aussen; /* Variable: A_Aussen
* Referenced by: '<S1>/Gain7'
*/
real_T Ai; /* Variable: Ai
* Referenced by: '<S1>/Gain4'
*/
real_T CES; /* Variable: CES
* Referenced by: '<S1>/Gain2'
*/
real_T CHD; /* Variable: CHD
* Referenced by: '<S1>/Gain'
*/
real_T CSW; /* Variable: CSW
* Referenced by: '<S1>/Gain5'
*/
real_T Cl; /* Variable: Cl
* Referenced by: '<S1>/Gain2'
*/
real_T T_amb; /* Variable: T_amb
* Referenced by:
* '<S1>/Integrator'
* '<S1>/Integrator1'
* '<S1>/Integrator2'
*/
real_T alphaHD; /* Variable: alphaHD
* Referenced by: '<S1>/Gain1'
*/
real_T alphaSW; /* Variable: alphaSW
* Referenced by: '<S1>/Gain4'
*/
real_T alpha_aussen; /* Variable: alpha_aussen
* Referenced by: '<S1>/Gain7'
*/
real_T mES; /* Variable: mES
* Referenced by: '<S1>/Gain2'
*/
real_T mHD; /* Variable: mHD
* Referenced by: '<S1>/Gain'
*/
real_T mSW; /* Variable: mSW
* Referenced by: '<S1>/Gain5'
*/
real_T ml; /* Variable: ml
* Referenced by: '<S1>/Gain2'
*/
real_T Constant_Value; /* Expression: 0
* Referenced by: '<Root>/Constant'
*/
};
/* Real-time Model Data Structure */
struct tag_RTM_Model_T {
const char_T *errorStatus;
RTWLogInfo *rtwLogInfo;
RTWSolverInfo solverInfo;
X_Model_T *contStates;
int_T *periodicContStateIndices;
real_T *periodicContStateRanges;
real_T *derivs;
boolean_T *contStateDisabled;
boolean_T zCCacheNeedsReset;
boolean_T derivCacheNeedsReset;
boolean_T CTOutputIncnstWithState;
real_T odeY[3];
real_T odeF[3][3];
ODE3_IntgData intgData;
/*
* Sizes:
* The following substructure contains sizes information
* for many of the model attributes such as inputs, outputs,
* dwork, sample times, etc.
*/
struct {
int_T numContStates;
int_T numPeriodicContStates;
int_T numSampTimes;
} Sizes;
/*
* Timing:
* The following substructure contains information regarding
* the timing information for the model.
*/
struct {
uint32_T clockTick0;
uint32_T clockTickH0;
time_T stepSize0;
uint32_T clockTick1;
uint32_T clockTickH1;
time_T tFinal;
SimTimeStep simTimeStep;
boolean_T stopRequestedFlag;
time_T *t;
time_T tArray[2];
} Timing;
};
/* Block parameters (default storage) */
#ifdef __cplusplus
extern "C" {
#endif
extern P_Model_T Model_P;
#ifdef __cplusplus
}
#endif
/* Block signals (default storage) */
#ifdef __cplusplus
extern "C" {
#endif
extern struct B_Model_T Model_B;
#ifdef __cplusplus
}
#endif
/* Continuous states (default storage) */
extern X_Model_T Model_X;
#ifdef __cplusplus
extern "C" {
#endif
/* External inputs (root inport signals with default storage) */
extern struct ExtU_Model_T Model_U;
/* External outputs (root outports fed by signals with default storage) */
extern struct ExtY_Model_T Model_Y;
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Model entry point functions */
extern void Model_initialize(void);
extern void Model_step(void);
extern void Model_terminate(void);
#ifdef __cplusplus
}
#endif
/* Real-time Model object */
#ifdef __cplusplus
extern "C" {
#endif
extern RT_MODEL_Model_T *const Model_M;
#ifdef __cplusplus
}
#endif
/*-
* The generated code includes comments that allow you to trace directly
* back to the appropriate location in the model. The basic format
* is <system>/block_name, where system is the system number (uniquely
* assigned by Simulink) and block_name is the name of the block.
*
* Use the MATLAB hilite_system command to trace the generated code back
* to the model. For example,
*
* hilite_system('<S3>') - opens system 3
* hilite_system('<S3>/Kp') - opens and selects block Kp which resides in S3
*
* Here is the system hierarchy for this model
*
* '<Root>' : 'Model'
* '<S1>' : 'Model/Subsystem3'
*/
#endif /* RTW_HEADER_Model_h_ */

View File

@@ -0,0 +1,426 @@
###########################################################################
## Makefile generated for component 'Model'.
##
## Makefile : Model.mk
## Generated on : Sat Mar 28 11:28:08 2026
## Final product: $(RELATIVE_PATH_TO_ANCHOR)\Model.exe
## Product type : executable
##
###########################################################################
###########################################################################
## MACROS
###########################################################################
# Macro Descriptions:
# PRODUCT_NAME Name of the system to build
# MAKEFILE Name of this makefile
# COMPILER_COMMAND_FILE Compiler command listing model reference header paths
# CMD_FILE Command file
PRODUCT_NAME = Model
MAKEFILE = Model.mk
MATLAB_ROOT = C:\PROGRA~1\MATLAB\R2022a
MATLAB_BIN = C:\PROGRA~1\MATLAB\R2022a\bin
MATLAB_ARCH_BIN = $(MATLAB_BIN)\win64
START_DIR = E:\Repositories\Binder_Beispiel_ReglerBBR\Models\FP56
SOLVER =
SOLVER_OBJ =
CLASSIC_INTERFACE = 0
TGT_FCN_LIB = GNU
MODEL_HAS_DYNAMICALLY_LOADED_SFCNS = 0
RELATIVE_PATH_TO_ANCHOR = ..
COMPILER_COMMAND_FILE = Model_comp.rsp
CMD_FILE = Model.rsp
C_STANDARD_OPTS =
CPP_STANDARD_OPTS =
NODEBUG = 1
###########################################################################
## TOOLCHAIN SPECIFICATIONS
###########################################################################
# Toolchain Name: Microsoft Visual C++ 2019 v16.0 | nmake (64-bit Windows)
# Supported Version(s): 16.0
# ToolchainInfo Version: 2022a
# Specification Revision: 1.0
#
#-------------------------------------------
# Macros assumed to be defined elsewhere
#-------------------------------------------
# NODEBUG
# cvarsdll
# cvarsmt
# conlibsmt
# ldebug
# conflags
# cflags
#-----------
# MACROS
#-----------
MW_EXTERNLIB_DIR = $(MATLAB_ROOT)\extern\lib\win64\microsoft
MW_LIB_DIR = $(MATLAB_ROOT)\lib\win64
CPU = AMD64
APPVER = 5.02
CVARSFLAG = $(cvarsmt)
CFLAGS_ADDITIONAL = -D_CRT_SECURE_NO_WARNINGS
CPPFLAGS_ADDITIONAL = -EHs -D_CRT_SECURE_NO_WARNINGS /wd4251 /Zc:__cplusplus
LIBS_TOOLCHAIN = $(conlibs)
TOOLCHAIN_SRCS =
TOOLCHAIN_INCS =
TOOLCHAIN_LIBS =
#------------------------
# BUILD TOOL COMMANDS
#------------------------
# C Compiler: Microsoft Visual C Compiler
CC = cl
# Linker: Microsoft Visual C Linker
LD = link
# C++ Compiler: Microsoft Visual C++ Compiler
CPP = cl
# C++ Linker: Microsoft Visual C++ Linker
CPP_LD = link
# Archiver: Microsoft Visual C/C++ Archiver
AR = lib
# MEX Tool: MEX Tool
MEX_PATH = $(MATLAB_ARCH_BIN)
MEX = "$(MEX_PATH)\mex"
# Download: Download
DOWNLOAD =
# Execute: Execute
EXECUTE = $(PRODUCT)
# Builder: NMAKE Utility
MAKE = nmake
#-------------------------
# Directives/Utilities
#-------------------------
CDEBUG = -Zi
C_OUTPUT_FLAG = -Fo
LDDEBUG = /DEBUG
OUTPUT_FLAG = -out:
CPPDEBUG = -Zi
CPP_OUTPUT_FLAG = -Fo
CPPLDDEBUG = /DEBUG
OUTPUT_FLAG = -out:
ARDEBUG =
STATICLIB_OUTPUT_FLAG = -out:
MEX_DEBUG = -g
RM = @del
ECHO = @echo
MV = @ren
RUN = @cmd /C
#----------------------------------------
# "Faster Builds" Build Configuration
#----------------------------------------
ARFLAGS = /nologo
CFLAGS = $(cflags) $(CVARSFLAG) $(CFLAGS_ADDITIONAL) \
/Od /Oy-
CPPFLAGS = /TP $(cflags) $(CVARSFLAG) $(CPPFLAGS_ADDITIONAL) \
/Od /Oy-
CPP_LDFLAGS = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN)
CPP_SHAREDLIB_LDFLAGS = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN) \
-dll -def:$(DEF_FILE)
DOWNLOAD_FLAGS =
EXECUTE_FLAGS =
LDFLAGS = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN)
MEX_CPPFLAGS =
MEX_CPPLDFLAGS =
MEX_CFLAGS =
MEX_LDFLAGS =
MAKE_FLAGS = -f $(MAKEFILE)
SHAREDLIB_LDFLAGS = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN) \
-dll -def:$(DEF_FILE)
###########################################################################
## OUTPUT INFO
###########################################################################
PRODUCT = $(RELATIVE_PATH_TO_ANCHOR)\Model.exe
PRODUCT_TYPE = "executable"
BUILD_TYPE = "Top-Level Standalone Executable"
###########################################################################
## INCLUDE PATHS
###########################################################################
INCLUDES_BUILDINFO =
INCLUDES = $(INCLUDES_BUILDINFO)
###########################################################################
## DEFINES
###########################################################################
DEFINES_BUILD_ARGS = -DCLASSIC_INTERFACE=0 -DALLOCATIONFCN=0 -DMAT_FILE=1 -DONESTEPFCN=1 -DTERMFCN=1 -DMULTI_INSTANCE_CODE=1 -DINTEGER_CODE=0 -DMT=0
DEFINES_CUSTOM =
DEFINES_OPTS = -DTID01EQ=1
DEFINES_STANDARD = -DMODEL=Model -DNUMST=2 -DNCSTATES=3 -DHAVESTDIO -DRT -DUSE_RTMODEL
DEFINES = $(DEFINES_BUILD_ARGS) $(DEFINES_CUSTOM) $(DEFINES_OPTS) $(DEFINES_STANDARD)
###########################################################################
## SOURCE FILES
###########################################################################
SRCS = $(MATLAB_ROOT)\rtw\c\src\rt_logging.c $(START_DIR)\Model_grt_rtw\Model.cpp $(START_DIR)\Model_grt_rtw\Model_data.cpp $(START_DIR)\Model_grt_rtw\rtGetInf.cpp $(START_DIR)\Model_grt_rtw\rtGetNaN.cpp $(START_DIR)\Model_grt_rtw\rt_nonfinite.cpp
MAIN_SRC = $(MATLAB_ROOT)\rtw\c\src\common\rt_cppclass_main.cpp
ALL_SRCS = $(SRCS) $(MAIN_SRC)
###########################################################################
## OBJECTS
###########################################################################
OBJS = rt_logging.obj Model.obj Model_data.obj rtGetInf.obj rtGetNaN.obj rt_nonfinite.obj
MAIN_OBJ = rt_cppclass_main.obj
ALL_OBJS = $(OBJS) $(MAIN_OBJ)
###########################################################################
## PREBUILT OBJECT FILES
###########################################################################
PREBUILT_OBJS =
###########################################################################
## LIBRARIES
###########################################################################
LIBS =
###########################################################################
## SYSTEM LIBRARIES
###########################################################################
SYSTEM_LIBS =
###########################################################################
## ADDITIONAL TOOLCHAIN FLAGS
###########################################################################
#---------------
# C Compiler
#---------------
CFLAGS_BASIC = $(DEFINES) @$(COMPILER_COMMAND_FILE)
CFLAGS = $(CFLAGS) $(CFLAGS_BASIC)
#-----------------
# C++ Compiler
#-----------------
CPPFLAGS_BASIC = $(DEFINES) @$(COMPILER_COMMAND_FILE)
CPPFLAGS = $(CPPFLAGS) $(CPPFLAGS_BASIC)
###########################################################################
## INLINED COMMANDS
###########################################################################
!include $(MATLAB_ROOT)\rtw\c\tools\vcdefs.mak
###########################################################################
## PHONY TARGETS
###########################################################################
.PHONY : all build buildobj clean info prebuild download execute set_environment_variables
all : build
@cmd /C "@echo ### Successfully generated all binary outputs."
build : set_environment_variables prebuild $(PRODUCT)
buildobj : set_environment_variables prebuild $(OBJS) $(PREBUILT_OBJS)
@cmd /C "@echo ### Successfully generated all binary outputs."
prebuild :
download : $(PRODUCT)
execute : download
@cmd /C "@echo ### Invoking postbuild tool "Execute" ..."
$(EXECUTE) $(EXECUTE_FLAGS)
@cmd /C "@echo ### Done invoking postbuild tool."
set_environment_variables :
@set INCLUDE=$(INCLUDES);$(INCLUDE)
@set LIB=$(LIB)
###########################################################################
## FINAL TARGET
###########################################################################
#-------------------------------------------
# Create a standalone executable
#-------------------------------------------
$(PRODUCT) : $(OBJS) $(PREBUILT_OBJS) $(MAIN_OBJ)
@cmd /C "@echo ### Creating standalone executable "$(PRODUCT)" ..."
$(CPP_LD) $(CPP_LDFLAGS) -out:$(PRODUCT) @$(CMD_FILE) $(SYSTEM_LIBS) $(TOOLCHAIN_LIBS)
@cmd /C "@echo ### Created: $(PRODUCT)"
###########################################################################
## INTERMEDIATE TARGETS
###########################################################################
#---------------------
# SOURCE-TO-OBJECT
#---------------------
.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
{$(RELATIVE_PATH_TO_ANCHOR)}.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
{$(RELATIVE_PATH_TO_ANCHOR)}.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
{$(START_DIR)}.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
{$(START_DIR)}.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
{$(START_DIR)\Model_grt_rtw}.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
{$(START_DIR)\Model_grt_rtw}.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
{$(MATLAB_ROOT)\rtw\c\src}.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
{$(MATLAB_ROOT)\rtw\c\src}.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
{$(MATLAB_ROOT)\simulink\src}.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
{$(MATLAB_ROOT)\simulink\src}.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
rt_logging.obj : "$(MATLAB_ROOT)\rtw\c\src\rt_logging.c"
$(CC) $(CFLAGS) -Fo"$@" "$(MATLAB_ROOT)\rtw\c\src\rt_logging.c"
Model.obj : "$(START_DIR)\Model_grt_rtw\Model.cpp"
$(CPP) $(CPPFLAGS) -Fo"$@" "$(START_DIR)\Model_grt_rtw\Model.cpp"
Model_data.obj : "$(START_DIR)\Model_grt_rtw\Model_data.cpp"
$(CPP) $(CPPFLAGS) -Fo"$@" "$(START_DIR)\Model_grt_rtw\Model_data.cpp"
rtGetInf.obj : "$(START_DIR)\Model_grt_rtw\rtGetInf.cpp"
$(CPP) $(CPPFLAGS) -Fo"$@" "$(START_DIR)\Model_grt_rtw\rtGetInf.cpp"
rtGetNaN.obj : "$(START_DIR)\Model_grt_rtw\rtGetNaN.cpp"
$(CPP) $(CPPFLAGS) -Fo"$@" "$(START_DIR)\Model_grt_rtw\rtGetNaN.cpp"
rt_nonfinite.obj : "$(START_DIR)\Model_grt_rtw\rt_nonfinite.cpp"
$(CPP) $(CPPFLAGS) -Fo"$@" "$(START_DIR)\Model_grt_rtw\rt_nonfinite.cpp"
rt_cppclass_main.obj : "$(MATLAB_ROOT)\rtw\c\src\common\rt_cppclass_main.cpp"
$(CPP) $(CPPFLAGS) -Fo"$@" "$(MATLAB_ROOT)\rtw\c\src\common\rt_cppclass_main.cpp"
###########################################################################
## DEPENDENCIES
###########################################################################
$(ALL_OBJS) : rtw_proj.tmw $(COMPILER_COMMAND_FILE) $(MAKEFILE)
###########################################################################
## MISCELLANEOUS TARGETS
###########################################################################
info :
@cmd /C "@echo ### PRODUCT = $(PRODUCT)"
@cmd /C "@echo ### PRODUCT_TYPE = $(PRODUCT_TYPE)"
@cmd /C "@echo ### BUILD_TYPE = $(BUILD_TYPE)"
@cmd /C "@echo ### INCLUDES = $(INCLUDES)"
@cmd /C "@echo ### DEFINES = $(DEFINES)"
@cmd /C "@echo ### ALL_SRCS = $(ALL_SRCS)"
@cmd /C "@echo ### ALL_OBJS = $(ALL_OBJS)"
@cmd /C "@echo ### LIBS = $(LIBS)"
@cmd /C "@echo ### MODELREF_LIBS = $(MODELREF_LIBS)"
@cmd /C "@echo ### SYSTEM_LIBS = $(SYSTEM_LIBS)"
@cmd /C "@echo ### TOOLCHAIN_LIBS = $(TOOLCHAIN_LIBS)"
@cmd /C "@echo ### CFLAGS = $(CFLAGS)"
@cmd /C "@echo ### LDFLAGS = $(LDFLAGS)"
@cmd /C "@echo ### SHAREDLIB_LDFLAGS = $(SHAREDLIB_LDFLAGS)"
@cmd /C "@echo ### CPPFLAGS = $(CPPFLAGS)"
@cmd /C "@echo ### CPP_LDFLAGS = $(CPP_LDFLAGS)"
@cmd /C "@echo ### CPP_SHAREDLIB_LDFLAGS = $(CPP_SHAREDLIB_LDFLAGS)"
@cmd /C "@echo ### ARFLAGS = $(ARFLAGS)"
@cmd /C "@echo ### MEX_CFLAGS = $(MEX_CFLAGS)"
@cmd /C "@echo ### MEX_CPPFLAGS = $(MEX_CPPFLAGS)"
@cmd /C "@echo ### MEX_LDFLAGS = $(MEX_LDFLAGS)"
@cmd /C "@echo ### MEX_CPPLDFLAGS = $(MEX_CPPLDFLAGS)"
@cmd /C "@echo ### DOWNLOAD_FLAGS = $(DOWNLOAD_FLAGS)"
@cmd /C "@echo ### EXECUTE_FLAGS = $(EXECUTE_FLAGS)"
@cmd /C "@echo ### MAKE_FLAGS = $(MAKE_FLAGS)"
clean :
$(ECHO) "### Deleting all derived files..."
@if exist $(PRODUCT) $(RM) $(PRODUCT)
$(RM) $(ALL_OBJS)
$(ECHO) "### Deleted all derived files."

View File

@@ -0,0 +1,7 @@
rt_logging.obj
Model.obj
Model_data.obj
rtGetInf.obj
rtGetNaN.obj
rt_nonfinite.obj
rt_cppclass_main.obj

View File

@@ -0,0 +1,6 @@
-IE:\Repositories\Binder_Beispiel_ReglerBBR\Models\FP56
-IE:\Repositories\Binder_Beispiel_ReglerBBR\Models\FP56\Model_grt_rtw
-I"C:\Program Files\MATLAB\R2022a\extern\include"
-I"C:\Program Files\MATLAB\R2022a\simulink\include"
-I"C:\Program Files\MATLAB\R2022a\rtw\c\src"
-I"C:\Program Files\MATLAB\R2022a\rtw\c\src\ext_mode\common"

View File

@@ -0,0 +1,103 @@
/*
* Model_data.cpp
*
* Code generation for model "Model".
*
* Model version : 1.2
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Sat Mar 28 11:28:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#include "Model.h"
/* Block parameters (default storage) */
P_Model_T Model::Model_P{
/* Variable: AHD
* Referenced by: '<S1>/Gain1'
*/
0.0255,
/* Variable: A_Aussen
* Referenced by: '<S1>/Gain7'
*/
4.361516,
/* Variable: Ai
* Referenced by: '<S1>/Gain4'
*/
0.164002,
/* Variable: CES
* Referenced by: '<S1>/Gain2'
*/
520.5763,
/* Variable: CHD
* Referenced by: '<S1>/Gain'
*/
1002.4,
/* Variable: CSW
* Referenced by: '<S1>/Gain5'
*/
966.0,
/* Variable: Cl
* Referenced by: '<S1>/Gain2'
*/
900.0,
/* Variable: T_amb
* Referenced by:
* '<S1>/Integrator'
* '<S1>/Integrator1'
* '<S1>/Integrator2'
*/
25.0,
/* Variable: alphaHD
* Referenced by: '<S1>/Gain1'
*/
397.2681,
/* Variable: alphaSW
* Referenced by: '<S1>/Gain4'
*/
85.2918,
/* Variable: alpha_aussen
* Referenced by: '<S1>/Gain7'
*/
0.4507,
/* Variable: mES
* Referenced by: '<S1>/Gain2'
*/
5.914,
/* Variable: mHD
* Referenced by: '<S1>/Gain'
*/
0.12,
/* Variable: mSW
* Referenced by: '<S1>/Gain5'
*/
2.82,
/* Variable: ml
* Referenced by: '<S1>/Gain2'
*/
0.078321408,
/* Expression: 0
* Referenced by: '<Root>/Constant'
*/
0.0
};

View File

@@ -0,0 +1,43 @@
/*
* Model_private.h
*
* Code generation for model "Model".
*
* Model version : 1.1
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Thu Mar 26 17:54:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#ifndef RTW_HEADER_Model_private_h_
#define RTW_HEADER_Model_private_h_
#include "rtwtypes.h"
#include "builtin_typeid_types.h"
#include "multiword_types.h"
/* Private macros used by the generated code to access rtModel */
#ifndef rtmIsMajorTimeStep
#define rtmIsMajorTimeStep(rtm) (((rtm)->Timing.simTimeStep) == MAJOR_TIME_STEP)
#endif
#ifndef rtmIsMinorTimeStep
#define rtmIsMinorTimeStep(rtm) (((rtm)->Timing.simTimeStep) == MINOR_TIME_STEP)
#endif
#ifndef rtmSetTFinal
#define rtmSetTFinal(rtm, val) ((rtm)->Timing.tFinal = (val))
#endif
#ifndef rtmSetTPtr
#define rtmSetTPtr(rtm, val) ((rtm)->Timing.t = (val))
#endif
/* private model entry point functions */
extern void Model_derivatives(void);
#endif /* RTW_HEADER_Model_private_h_ */

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,28 @@
/*
* Model_types.h
*
* Code generation for model "Model".
*
* Model version : 1.1
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Thu Mar 26 17:54:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#ifndef RTW_HEADER_Model_types_h_
#define RTW_HEADER_Model_types_h_
/* Model Code Variants */
/* Parameters (default storage) */
typedef struct P_Model_T_ P_Model_T;
/* Forward declaration for rtModel */
typedef struct tag_RTM_Model_T RT_MODEL_Model_T;
#endif /* RTW_HEADER_Model_types_h_ */

Binary file not shown.

View File

@@ -0,0 +1,52 @@
/*
* builtin_typeid_types.h
*
* Code generation for model "Model".
*
* Model version : 1.1
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Thu Mar 26 17:54:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#ifndef BUILTIN_TYPEID_TYPES_H
#define BUILTIN_TYPEID_TYPES_H
#include "rtwtypes.h"
#ifndef BUILTIN_TYPEID_TYPES
#define BUILTIN_TYPEID_TYPES
/* Enumeration of built-in data types */
typedef enum {
SS_DOUBLE = 0, /* real_T */
SS_SINGLE = 1, /* real32_T */
SS_INT8 = 2, /* int8_T */
SS_UINT8 = 3, /* uint8_T */
SS_INT16 = 4, /* int16_T */
SS_UINT16 = 5, /* uint16_T */
SS_INT32 = 6, /* int32_T */
SS_UINT32 = 7, /* uint32_T */
SS_BOOLEAN = 8 /* boolean_T */
} BuiltInDTypeId;
#define SS_NUM_BUILT_IN_DTYPE ((int_T)SS_BOOLEAN+1)
/* Enumeration for MAT-file logging code */
typedef int_T DTypeId;
/* Enumeration of pre-defined data types */
typedef enum {
SS_FCN_CALL = 9,
SS_INTEGER = 10,
SS_POINTER = 11,
SS_INTERNAL_DTYPE2 = 12,
SS_TIMER_UINT32_PAIR = 13,
SS_CONNECTION_TYPE = 14
} PreDefinedDTypeId;
#endif /* BUILTIN_TYPEID_TYPES */
#endif /* BUILTIN_TYPEID_TYPES_H */

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,163 @@
/*
* rtGetInf.cpp
*
* Code generation for model "Model".
*
* Model version : 1.2
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Sat Mar 28 11:28:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#include "rtwtypes.h"
extern "C" {
#include "rtGetInf.h"
}
#include <stddef.h>
extern "C" {
#include "rt_nonfinite.h"
}
#define NumBitsPerChar 8U
extern "C" {
/*
* Initialize rtInf needed by the generated code.
* Inf is initialized as non-signaling. Assumes IEEE.
*/
real_T rtGetInf(void)
{
size_t bitsPerReal{ sizeof(real_T) * (NumBitsPerChar) };
real_T inf{ 0.0 };
if (bitsPerReal == 32U) {
inf = rtGetInfF();
} else {
uint16_T one{ 1U };
enum {
LittleEndian,
BigEndian
} machByteOrder
{
(*((uint8_T *) &one) == 1U) ? LittleEndian : BigEndian
};
switch (machByteOrder) {
case LittleEndian:
{
union {
LittleEndianIEEEDouble bitVal;
real_T fltVal;
} tmpVal;
tmpVal.bitVal.words.wordH = 0x7FF00000U;
tmpVal.bitVal.words.wordL = 0x00000000U;
inf = tmpVal.fltVal;
break;
}
case BigEndian:
{
union {
BigEndianIEEEDouble bitVal;
real_T fltVal;
} tmpVal;
tmpVal.bitVal.words.wordH = 0x7FF00000U;
tmpVal.bitVal.words.wordL = 0x00000000U;
inf = tmpVal.fltVal;
break;
}
}
}
return inf;
}
/*
* Initialize rtInfF needed by the generated code.
* Inf is initialized as non-signaling. Assumes IEEE.
*/
real32_T rtGetInfF(void)
{
IEEESingle infF;
infF.wordL.wordLuint = 0x7F800000U;
return infF.wordL.wordLreal;
}
/*
* Initialize rtMinusInf needed by the generated code.
* Inf is initialized as non-signaling. Assumes IEEE.
*/
real_T rtGetMinusInf(void)
{
size_t bitsPerReal{ sizeof(real_T) * (NumBitsPerChar) };
real_T minf{ 0.0 };
if (bitsPerReal == 32U) {
minf = rtGetMinusInfF();
} else {
uint16_T one{ 1U };
enum {
LittleEndian,
BigEndian
} machByteOrder
{
(*((uint8_T *) &one) == 1U) ? LittleEndian : BigEndian
};
switch (machByteOrder) {
case LittleEndian:
{
union {
LittleEndianIEEEDouble bitVal;
real_T fltVal;
} tmpVal;
tmpVal.bitVal.words.wordH = 0xFFF00000U;
tmpVal.bitVal.words.wordL = 0x00000000U;
minf = tmpVal.fltVal;
break;
}
case BigEndian:
{
union {
BigEndianIEEEDouble bitVal;
real_T fltVal;
} tmpVal;
tmpVal.bitVal.words.wordH = 0xFFF00000U;
tmpVal.bitVal.words.wordL = 0x00000000U;
minf = tmpVal.fltVal;
break;
}
}
}
return minf;
}
/*
* Initialize rtMinusInfF needed by the generated code.
* Inf is initialized as non-signaling. Assumes IEEE.
*/
real32_T rtGetMinusInfF(void)
{
IEEESingle minfF;
minfF.wordL.wordLuint = 0xFF800000U;
return minfF.wordL.wordLreal;
}
}

View File

@@ -0,0 +1,36 @@
/*
* rtGetInf.h
*
* Code generation for model "Model".
*
* Model version : 1.1
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Thu Mar 26 17:54:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#ifndef RTW_HEADER_rtGetInf_h_
#define RTW_HEADER_rtGetInf_h_
#ifdef __cplusplus
#include "tmwtypes.h"
extern "C" {
#endif
extern real_T rtGetInf(void);
extern real32_T rtGetInfF(void);
extern real_T rtGetMinusInf(void);
extern real32_T rtGetMinusInfF(void);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* RTW_HEADER_rtGetInf_h_ */

View File

@@ -0,0 +1,120 @@
/*
* rtGetNaN.cpp
*
* Code generation for model "Model".
*
* Model version : 1.2
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Sat Mar 28 11:28:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#include "rtwtypes.h"
extern "C" {
#include "rtGetNaN.h"
}
#include <stddef.h>
extern "C" {
#include "rt_nonfinite.h"
}
#define NumBitsPerChar 8U
extern "C" {
/*
* Initialize rtNaN needed by the generated code.
* NaN is initialized as non-signaling. Assumes IEEE.
*/
real_T rtGetNaN(void)
{
size_t bitsPerReal{ sizeof(real_T) * (NumBitsPerChar) };
real_T nan{ 0.0 };
if (bitsPerReal == 32U) {
nan = rtGetNaNF();
} else {
uint16_T one = 1U;
enum {
LittleEndian,
BigEndian
} machByteOrder
{
(*((uint8_T *) &one) == 1U) ? LittleEndian : BigEndian
};
switch (machByteOrder) {
case LittleEndian:
{
union {
LittleEndianIEEEDouble bitVal;
real_T fltVal;
} tmpVal;
tmpVal.bitVal.words.wordH = 0xFFF80000U;
tmpVal.bitVal.words.wordL = 0x00000000U;
nan = tmpVal.fltVal;
break;
}
case BigEndian:
{
union {
BigEndianIEEEDouble bitVal;
real_T fltVal;
} tmpVal;
tmpVal.bitVal.words.wordH = 0x7FFFFFFFU;
tmpVal.bitVal.words.wordL = 0xFFFFFFFFU;
nan = tmpVal.fltVal;
break;
}
}
}
return nan;
}
/*
* Initialize rtNaNF needed by the generated code.
* NaN is initialized as non-signaling. Assumes IEEE.
*/
real32_T rtGetNaNF(void)
{
IEEESingle nanF{ { 0.0F } };
uint16_T one{ 1U };
enum {
LittleEndian,
BigEndian
} machByteOrder
{
(*((uint8_T *) &one) == 1U) ? LittleEndian : BigEndian
};
switch (machByteOrder) {
case LittleEndian:
{
nanF.wordL.wordLuint = 0xFFC00000U;
break;
}
case BigEndian:
{
nanF.wordL.wordLuint = 0x7FFFFFFFU;
break;
}
}
return nanF.wordL.wordLreal;
}
}

View File

@@ -0,0 +1,34 @@
/*
* rtGetNaN.h
*
* Code generation for model "Model".
*
* Model version : 1.1
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Thu Mar 26 17:54:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#ifndef RTW_HEADER_rtGetNaN_h_
#define RTW_HEADER_rtGetNaN_h_
#include "tmwtypes.h"
#ifdef __cplusplus
extern "C" {
#endif
extern real_T rtGetNaN(void);
extern real32_T rtGetNaNF(void);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* RTW_HEADER_rtGetNaN_h_ */

View File

@@ -0,0 +1,109 @@
/*
* rt_nonfinite.cpp
*
* Code generation for model "Model".
*
* Model version : 1.2
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Sat Mar 28 11:28:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
extern "C" {
#include "rtGetNaN.h"
}
extern "C"
{
#include "rtGetInf.h"
}
#include <stddef.h>
#include "rtwtypes.h"
extern "C" {
#include "rt_nonfinite.h"
}
#define NumBitsPerChar 8U
extern "C" {
real_T rtInf;
real_T rtMinusInf;
real_T rtNaN;
real32_T rtInfF;
real32_T rtMinusInfF;
real32_T rtNaNF;
}
extern "C"
{
/*
* Initialize the rtInf, rtMinusInf, and rtNaN needed by the
* generated code. NaN is initialized as non-signaling. Assumes IEEE.
*/
void rt_InitInfAndNaN(size_t realSize)
{
(void) (realSize);
rtNaN = rtGetNaN();
rtNaNF = rtGetNaNF();
rtInf = rtGetInf();
rtInfF = rtGetInfF();
rtMinusInf = rtGetMinusInf();
rtMinusInfF = rtGetMinusInfF();
}
/* Test if value is infinite */
boolean_T rtIsInf(real_T value)
{
return (boolean_T)((value==rtInf || value==rtMinusInf) ? 1U : 0U);
}
/* Test if single-precision value is infinite */
boolean_T rtIsInfF(real32_T value)
{
return (boolean_T)(((value)==rtInfF || (value)==rtMinusInfF) ? 1U : 0U);
}
/* Test if value is not a number */
boolean_T rtIsNaN(real_T value)
{
boolean_T result{ (boolean_T) 0 };
size_t bitsPerReal{ sizeof(real_T) * (NumBitsPerChar) };
if (bitsPerReal == 32U) {
result = rtIsNaNF((real32_T)value);
} else {
union {
LittleEndianIEEEDouble bitVal;
real_T fltVal;
} tmpVal;
tmpVal.fltVal = value;
result = (boolean_T)((tmpVal.bitVal.words.wordH & 0x7FF00000) ==
0x7FF00000 &&
( (tmpVal.bitVal.words.wordH & 0x000FFFFF) != 0 ||
(tmpVal.bitVal.words.wordL != 0) ));
}
return result;
}
/* Test if single-precision value is not a number */
boolean_T rtIsNaNF(real32_T value)
{
IEEESingle tmp;
tmp.wordL.wordLreal = value;
return (boolean_T)( (tmp.wordL.wordLuint & 0x7F800000) == 0x7F800000 &&
(tmp.wordL.wordLuint & 0x007FFFFF) != 0 );
}
}

View File

@@ -0,0 +1,64 @@
/*
* rt_nonfinite.h
*
* Code generation for model "Model".
*
* Model version : 1.1
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Thu Mar 26 17:54:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#ifndef RTW_HEADER_rt_nonfinite_h_
#define RTW_HEADER_rt_nonfinite_h_
#include <stddef.h>
#include "tmwtypes.h"
#ifdef __cplusplus
extern "C" {
#endif
extern real_T rtInf;
extern real_T rtMinusInf;
extern real_T rtNaN;
extern real32_T rtInfF;
extern real32_T rtMinusInfF;
extern real32_T rtNaNF;
extern void rt_InitInfAndNaN(size_t realSize);
extern boolean_T rtIsInf(real_T value);
extern boolean_T rtIsInfF(real32_T value);
extern boolean_T rtIsNaN(real_T value);
extern boolean_T rtIsNaNF(real32_T value);
struct BigEndianIEEEDouble {
struct {
uint32_T wordH;
uint32_T wordL;
} words;
};
struct LittleEndianIEEEDouble {
struct {
uint32_T wordL;
uint32_T wordH;
} words;
};
struct IEEESingle {
union {
real32_T wordLreal;
uint32_T wordLuint;
} wordL;
};
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* RTW_HEADER_rt_nonfinite_h_ */

View File

@@ -0,0 +1,21 @@
/*
* rtmodel.h:
*
* Code generation for model "Model".
*
* Model version : 1.1
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Thu Mar 26 17:54:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#ifndef RTW_HEADER_rtmodel_h_
#define RTW_HEADER_rtmodel_h_
#include "Model.h"
#define GRTINTERFACE 0
#endif /* RTW_HEADER_rtmodel_h_ */

View File

@@ -0,0 +1,4 @@
Simulink Coder project for Model using . MATLAB root = C:\Program Files\MATLAB\R2022a. SimStruct date: 13-Nov-2021 07:40:36
This file is generated by Simulink Coder for use by the make utility
to determine when to rebuild objects when the name of the current Simulink Coder project changes.
The rtwinfomat located at: ..\slprj\grt\Model\tmwinternal\binfo.mat

View File

@@ -0,0 +1,37 @@
/*
* rtwtypes.h
*
* Code generation for model "Model".
*
* Model version : 1.1
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C++ source code generated on : Thu Mar 26 17:54:04 2026
*
* Target selection: grt.tlc
* Note: GRT includes extra infrastructure and instrumentation for prototyping
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#ifndef RTWTYPES_H
#define RTWTYPES_H
#ifndef POINTER_T
#define POINTER_T
typedef void * pointer_T;
#endif
/* Logical type definitions */
#if (!defined(__cplusplus))
#ifndef false
#define false (0U)
#endif
#ifndef true
#define true (1U)
#endif
#endif
#endif /* RTWTYPES_H */

Binary file not shown.

View File

@@ -0,0 +1,2 @@
set "VSCMD_START_DIR=%CD%"
CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\VCVARSALL.BAT " amd64

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<MF0 version="1.1" packageUris="http://schema.mathworks.com/mf0/SlCache/19700101">
<slcache.FileAttributes type="slcache.FileAttributes" uuid="4627df2f-e397-46c6-ada1-b8556b8aa2bb">
<checksum>NTDKrwFlC2KuvSUsd+ruOI8Dyv3nMQrYVV99I0a14oaIUdnclSWEQvWIPl0hwuNNm1YfQasnRGmWFrGc9HOJzA==</checksum>
</slcache.FileAttributes>
</MF0>

View File

@@ -0,0 +1,888 @@
/*
* Copyright 1984-2018 The MathWorks, Inc.
*/
#if defined(_MSC_VER)
# pragma once
#endif
#if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 3))
# pragma once
#endif
#ifndef tmwtypes_h
#define tmwtypes_h
#ifndef __TMWTYPES__
#define __TMWTYPES__
/*
* File : tmwtypes.h
* Abstract:
* Data types for use with MATLAB/SIMULINK and the Real-Time Workshop.
*
* When compiling stand-alone model code, data types can be overridden
* via compiler switches.
*
* Define NO_FLOATS to eliminate reference to real_T, etc.
*/
#ifdef MW_LIBTOOLING
#include "mwstdint.h"
#endif
#include <limits.h>
/* __STDC_VERSION__ version check below means "check for a C99 compiler".
Visual Studio (checked on versions 2015 and 2017) does
not define __STDC_VERSION__, however it has stdbool.h available,
thus a separate check for _MSC_VER below.
*/
#if defined(__APPLE_CC__) \
|| (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) \
|| (defined(_MSC_VER) && (_MSC_VER >= 1900))
#ifndef tmwtypes_do_not_include_stdbool
#include <stdbool.h>
#endif
#endif
#define LOGICAL_IS_A_TYPE
#define SPARSE_GENERALIZATION
#ifdef NO_FLOATS
# define double double_not_allowed
# define float float_not_allowed
#endif /*NO_FLOATS*/
#ifndef NO_FLOATS
#ifndef __MWERKS__
# ifdef __STDC__
# include <float.h>
# else
# ifndef FLT_MANT_DIG
# define FLT_MANT_DIG 24
# endif
# ifndef DBL_MANT_DIG
# define DBL_MANT_DIG 53
# endif
# endif
#endif
#endif /*NO_FLOATS*/
/*
* The following data types cannot be overridden when building MEX files.
*/
#ifdef MATLAB_MEX_FILE
# undef CHARACTER_T
# undef INTEGER_T
# undef BOOLEAN_T
# undef REAL_T
# undef TIME_T
#endif
/*
* The uchar_T, ushort_T and ulong_T types are needed for compilers which do
* not allow defines to be specified, at the command line, with spaces in them.
*/
typedef unsigned char uchar_T;
typedef unsigned short ushort_T;
typedef unsigned long ulong_T;
#if (defined(_MSC_VER) && _MSC_VER >= 1500) \
|| defined(__x86_64__) || defined(__LP64__) \
|| defined(__LCC64__)
typedef unsigned long long ulonglong_T;
#endif
/*=======================================================================*
* Fixed width word size data types: *
* int8_T, int16_T, int32_T - signed 8, 16, or 32 bit integers *
* uint8_T, uint16_T, uint32_T - unsigned 8, 16, or 32 bit integers *
* real32_T, real64_T - 32 and 64 bit floating point numbers *
*=======================================================================*/
/* When used with Real Time Workshop generated code, this
* header file can be used with a variety of compilers.
*
* The compiler could be for an 8 bit embedded processor that
* only had 8 bits per integer and 16 bits per long.
* In that example, a 32 bit integer size is not even available.
* This header file should be robust to that.
*
* For the case of an 8 bit processor, the preprocessor
* may be limited to 16 bit math like its target. That limitation
* would mean that 32 bit comparisons can't be done accurately.
* To increase robustness to this, comparisons are done against
* smaller values first. An inaccurate 32 bit comparison isn't
* attempted if the 16 bit comparison has already succeeded.
*
* Limitations on preprocessor math can also be stricter than
* for the target. There are known cases where a compiler
* targeting processors with 64 bit longs can't do accurate
* preprocessor comparisons on more than 32 bits.
*/
/* Determine the number of bits for int, long, short, and char.
* If one fails to be determined, set the number of bits to -1
*/
#ifndef TMW_BITS_PER_INT
# if INT_MAX == 0x7FL
# define TMW_BITS_PER_INT 8
# elif INT_MAX == 0x7FFFL
# define TMW_BITS_PER_INT 16
# elif INT_MAX == 0x7FFFFFFFL
# define TMW_BITS_PER_INT 32
# else
# define TMW_BITS_PER_INT -1
# endif
#endif
#ifndef TMW_BITS_PER_LONG
# if LONG_MAX == 0x7FL
# define TMW_BITS_PER_LONG 8
# elif LONG_MAX == 0x7FFFL
# define TMW_BITS_PER_LONG 16
# elif LONG_MAX == 0x7FFFFFFFL
# define TMW_BITS_PER_LONG 32
# else
# define TMW_BITS_PER_LONG -1
# endif
#endif
#ifndef TMW_BITS_PER_SHRT
# if SHRT_MAX == 0x7FL
# define TMW_BITS_PER_SHRT 8
# elif SHRT_MAX == 0x7FFFL
# define TMW_BITS_PER_SHRT 16
# elif SHRT_MAX == 0x7FFFFFFFL
# define TMW_BITS_PER_SHRT 32
# else
# define TMW_BITS_PER_SHRT -1
# endif
#endif
#ifndef TMW_BITS_PER_SCHAR
# if SCHAR_MAX == 0x7FL
# define TMW_BITS_PER_SCHAR 8
# elif SCHAR_MAX == 0x7FFFL
# define TMW_BITS_PER_SCHAR 16
# elif SCHAR_MAX == 0x7FFFFFFFL
# define TMW_BITS_PER_SCHAR 32
# else
# define TMW_BITS_PER_SCHAR -1
# endif
#endif
#ifndef TMW_CHAR_SIGNED
# if SCHAR_MAX == CHAR_MAX
# define TMW_CHAR_SIGNED 1
# else
# define TMW_CHAR_SIGNED 0
# endif
#endif
/* It is common for one or more of the integer types
* to be the same size. For example, on many embedded
* processors, both shorts and ints are 16 bits. On
* processors used for workstations, it is quite common
* for both int and long to be 32 bits.
* When there is more than one choice for typdef'ing
* a portable type like int16_T or uint32_T, in
* concept, it should not matter which choice is made.
* However, some style guides and some code checking
* tools do identify and complain about seemingly
* irrelevant differences. For example, a code
* checking tool may complain about an implicit
* conversion from int to short even though both
* are 16 bits. To reduce these types of
* complaints, it is best to make int the
* preferred choice when more than one is available.
*/
#ifndef INT8_T
# if defined(MW_LIBTOOLING)
# define INT8_T int8_t
# elif TMW_BITS_PER_INT == 8
# define INT8_T int
# elif TMW_BITS_PER_LONG == 8
# define INT8_T long
# elif TMW_BITS_PER_SCHAR == 8
# define INT8_T signed char
# elif TMW_BITS_PER_SHRT == 8
# define INT8_T short
# endif
#endif
#ifdef INT8_T
typedef INT8_T int8_T;
#endif
#ifndef UINT8_T
# if defined(MW_LIBTOOLING)
# define UINT8_T uint8_t
# elif TMW_BITS_PER_INT == 8
# define UINT8_T unsigned int
# elif TMW_BITS_PER_LONG == 8
# define UINT8_T unsigned long
# elif TMW_BITS_PER_SCHAR == 8
# define UINT8_T unsigned char
# elif TMW_BITS_PER_SHRT == 8
# define UINT8_T unsigned short
# endif
#endif
#ifdef UINT8_T
typedef UINT8_T uint8_T;
#endif
#ifndef INT16_T
# if defined(MW_LIBTOOLING)
# define INT16_T int16_t
# elif TMW_BITS_PER_INT == 16
# define INT16_T int
# elif TMW_BITS_PER_LONG == 16
# define INT16_T long
# elif TMW_BITS_PER_SCHAR == 16
# define INT16_T signed char
# elif TMW_BITS_PER_SHRT == 16
# define INT16_T short
# endif
#endif
#ifdef INT16_T
typedef INT16_T int16_T;
#endif
#ifndef UINT16_T
# if defined(MW_LIBTOOLING)
# define UINT16_T uint16_t
# elif TMW_BITS_PER_INT == 16
# define UINT16_T unsigned int
# elif TMW_BITS_PER_LONG == 16
# define UINT16_T unsigned long
# elif TMW_BITS_PER_SCHAR == 16
# define UINT16_T unsigned char
# elif TMW_BITS_PER_SHRT == 16
# define UINT16_T unsigned short
# endif
#endif
#ifdef UINT16_T
typedef UINT16_T uint16_T;
#endif
#ifndef INT32_T
# if defined(MW_LIBTOOLING)
# define INT32_T int32_t
# elif TMW_BITS_PER_INT == 32
# define INT32_T int
# elif TMW_BITS_PER_LONG == 32
# define INT32_T long
# elif TMW_BITS_PER_SCHAR == 32
# define INT32_T signed char
# elif TMW_BITS_PER_SHRT == 32
# define INT32_T short
# endif
#endif
#ifdef INT32_T
typedef INT32_T int32_T;
#endif
#ifndef UINT32_T
# if defined(MW_LIBTOOLING)
# define UINT32_T uint32_t
# elif TMW_BITS_PER_INT == 32
# define UINT32_T unsigned int
# elif TMW_BITS_PER_LONG == 32
# define UINT32_T unsigned long
# elif TMW_BITS_PER_SCHAR == 32
# define UINT32_T unsigned char
# elif TMW_BITS_PER_SHRT == 32
# define UINT32_T unsigned short
# endif
#endif
#ifdef UINT32_T
typedef UINT32_T uint32_T;
#endif
/* The following is used to emulate smaller integer types when only
* larger types are available. For example, compilers for TI C3x/C4x DSPs
* define char and short to be 32 bits, so 8 and 16 bits are not directly
* available. This target is commonly used with RTW rapid prototyping.
* Other DSPs define char to be 16 bits, so 8 bits is not directly
* available.
*/
#ifndef INT8_T
# ifdef INT16_T
# define INT8_T INT16_T
typedef INT8_T int8_T;
# else
# ifdef INT32_T
# define INT8_T INT32_T
typedef INT8_T int8_T;
# endif
# endif
#endif
#ifndef UINT8_T
# ifdef UINT16_T
# define UINT8_T UINT16_T
typedef UINT8_T uint8_T;
# else
# ifdef UINT32_T
# define UINT8_T UINT32_T
typedef UINT8_T uint8_T;
# endif
# endif
#endif
#ifndef INT16_T
# ifdef INT32_T
# define INT16_T INT32_T
typedef INT16_T int16_T;
# endif
#endif
#ifndef UINT16_T
# ifdef UINT32_T
# define UINT16_T UINT32_T
typedef UINT16_T uint16_T;
# endif
#endif
#ifndef NO_FLOATS
#ifndef REAL32_T
# ifndef __MWERKS__
# if FLT_MANT_DIG >= 23
# define REAL32_T float
# endif
# else
# define REAL32_T float
# endif
#endif
#ifdef REAL32_T
typedef REAL32_T real32_T;
#endif
#ifndef REAL64_T
# ifndef __MWERKS__
# if DBL_MANT_DIG >= 52
# define REAL64_T double
# endif
# else
# define REAL64_T double
# endif
#endif
#ifdef REAL64_T
typedef REAL64_T real64_T;
#endif
#endif /* NO_FLOATS*/
/*=======================================================================*
* Fixed width word size data types: *
* int64_T - signed 64 bit integers *
* uint64_T - unsigned 64 bit integers *
*=======================================================================*/
# if defined(MW_LIBTOOLING)
# ifdef INT64_T
# undef INT64_T
# endif
# define INT64_T int64_t
# ifdef UINT64_T
# undef UINT64_T
# endif
# define UINT64_T uint64_t
# endif
#if !defined(INT64_T) || !defined(UINT64_T) || !defined(FMT64)
# if defined(__APPLE__) || defined(__clang__)
# ifndef INT64_T
# define INT64_T long long
# endif
# ifndef UINT64_T
# define UINT64_T unsigned long long
# endif
# ifndef FMT64
# define FMT64 "ll"
# endif
# if defined(__LP64__) && !defined(INT_TYPE_64_IS_LONG)
# define INT_TYPE_64_IS_LONG
# endif
# elif (defined(__x86_64__) || defined(__LP64__))&& !defined(__MINGW64__)
# ifndef INT64_T
# define INT64_T long
# endif
# ifndef UINT64_T
# define UINT64_T unsigned long
# endif
# ifndef FMT64
# define FMT64 "l"
# endif
# if !defined(INT_TYPE_64_IS_LONG)
# define INT_TYPE_64_IS_LONG
# endif
# elif defined(_MSC_VER) || (defined(__BORLANDC__) && __BORLANDC__ >= 0x530) \
|| (defined(__WATCOMC__) && __WATCOMC__ >= 1100)
# ifndef INT64_T
# define INT64_T __int64
# endif
# ifndef UINT64_T
# define UINT64_T unsigned __int64
# endif
# ifndef FMT64
# define FMT64 "I64"
# endif
# elif defined(__GNUC__) || defined(TMW_ENABLE_INT64) \
|| defined(__LCC64__)
# ifndef INT64_T
# define INT64_T long long
# endif
# ifndef UINT64_T
# define UINT64_T unsigned long long
# endif
# ifndef FMT64
# define FMT64 "ll"
# endif
# endif
#endif
#if defined(INT64_T)
# if defined(__GNUC__) && \
((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >=9)))
__extension__
# endif
typedef INT64_T int64_T;
#endif
#if defined(_WIN64) || (defined(__APPLE__) && defined(__LP64__)) \
|| defined(__x86_64__) \
|| defined(__LP64__)
# define INT_TYPE_64_IS_SUPPORTED
#endif
#if defined(UINT64_T)
# if defined(__GNUC__) && \
((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >=9)))
__extension__
# endif
typedef UINT64_T uint64_T;
#endif
/*===========================================================================*
* Format string modifiers for using size_t variables in printf statements. *
*===========================================================================*/
#ifndef FMT_SIZE_T
# if (defined( __GNUC__ ) || defined(_STDC_C99))&& !defined(__MINGW64__)
# define FMT_SIZE_T "z"
# elif defined (__WATCOMC__)
# define FMT_SIZE_T "l"
# elif defined (_WIN32 )
# define FMT_SIZE_T "I"
# else
# define FMT_SIZE_T "l"
# endif
#endif
#ifndef FMT_PTRDIFF_T
# if defined(__APPLE__)
# define FMT_PTRDIFF_T "l"
# elif defined( __GNUC__ ) || defined(_STDC_C99)
# define FMT_PTRDIFF_T "t"
# elif defined (__WATCOMC__)
# define FMT_PTRDIFF_T "l"
# elif defined (_WIN32 )
# define FMT_PTRDIFF_T "I"
# else
# define FMT_PTRDIFF_T "l"
# endif
#endif
/*===========================================================================*
* General or logical data types where the word size is not guaranteed. *
* real_T - possible settings include real32_T or real64_T *
* time_T - possible settings include real32_T or real64_T *
* boolean_T *
* char_T *
* int_T *
* uint_T *
* byte_T *
*===========================================================================*/
#ifndef NO_FLOATS
#ifndef REAL_T
# ifdef REAL64_T
# define REAL_T real64_T
# else
# ifdef REAL32_T
# define REAL_T real32_T
# endif
# endif
#endif
#ifdef REAL_T
typedef REAL_T real_T;
#endif
#ifndef TIME_T
# ifdef REAL_T
# define TIME_T real_T
# endif
#endif
#ifdef TIME_T
typedef TIME_T time_T;
#endif
#endif /* NO_FLOATS */
#ifndef BOOLEAN_T
# if defined(UINT8_T)
# define BOOLEAN_T UINT8_T
# else
# define BOOLEAN_T unsigned int
# endif
#endif
typedef BOOLEAN_T boolean_T;
#ifndef CHARACTER_T
# define CHARACTER_T char
#endif
typedef CHARACTER_T char_T;
#ifndef INTEGER_T
# define INTEGER_T int
#endif
typedef INTEGER_T int_T;
#ifndef UINTEGER_T
# define UINTEGER_T unsigned
#endif
typedef UINTEGER_T uint_T;
#ifndef BYTE_T
# define BYTE_T unsigned char
#endif
typedef BYTE_T byte_T;
/*===========================================================================*
* Define Complex Structures *
*===========================================================================*/
#ifndef NO_FLOATS
#ifndef CREAL32_T
# ifdef REAL32_T
typedef struct {
real32_T re, im;
} creal32_T;
# define CREAL32_T creal32_T
# endif
#endif
#ifndef CREAL64_T
# ifdef REAL64_T
typedef struct {
real64_T re, im;
} creal64_T;
# define CREAL64_T creal64_T
# endif
#endif
#ifndef CREAL_T
# ifdef REAL_T
typedef struct {
real_T re, im;
} creal_T;
# define CREAL_T creal_T
# endif
#endif
#endif /* NO_FLOATS */
#ifndef CINT8_T
# ifdef INT8_T
typedef struct {
int8_T re, im;
} cint8_T;
# define CINT8_T cint8_T
# endif
#endif
#ifndef CUINT8_T
# ifdef UINT8_T
typedef struct {
uint8_T re, im;
} cuint8_T;
# define CUINT8_T cuint8_T
# endif
#endif
#ifndef CINT16_T
# ifdef INT16_T
typedef struct {
int16_T re, im;
} cint16_T;
# define CINT16_T cint16_T
# endif
#endif
#ifndef CUINT16_T
# ifdef UINT16_T
typedef struct {
uint16_T re, im;
} cuint16_T;
# define CUINT16_T cuint16_T
# endif
#endif
#ifndef CINT32_T
# ifdef INT32_T
typedef struct {
int32_T re, im;
} cint32_T;
# define CINT32_T cint32_T
# endif
#endif
#ifndef CUINT32_T
# ifdef UINT32_T
typedef struct {
uint32_T re, im;
} cuint32_T;
# define CUINT32_T cuint32_T
# endif
#endif
#ifndef CINT64_T
# ifdef INT64_T
typedef struct {
int64_T re, im;
} cint64_T;
# define CINT64_T cint64_T
# endif
#endif
#ifndef CUINT64_T
# ifdef UINT64_T
typedef struct {
uint64_T re, im;
} cuint64_T;
# define CUINT64_T cuint64_T
# endif
#endif
/*=======================================================================*
* Min and Max: *
* int8_T, int16_T, int32_T - signed 8, 16, or 32 bit integers *
* uint8_T, uint16_T, uint32_T - unsigned 8, 16, or 32 bit integers *
*=======================================================================*/
#define MAX_int8_T ((int8_T)(127)) /* 127 */
#define MIN_int8_T ((int8_T)(-128)) /* -128 */
#define MAX_uint8_T ((uint8_T)(255)) /* 255 */
#define MIN_uint8_T ((uint8_T)(0))
#define MAX_int16_T ((int16_T)(32767)) /* 32767 */
#define MIN_int16_T ((int16_T)(-32768)) /* -32768 */
#define MAX_uint16_T ((uint16_T)(65535)) /* 65535 */
#define MIN_uint16_T ((uint16_T)(0))
#define MAX_int32_T ((int32_T)(2147483647)) /* 2147483647 */
#define MIN_int32_T ((int32_T)(-2147483647-1)) /* -2147483648 */
#define MAX_uint32_T ((uint32_T)(0xFFFFFFFFU)) /* 4294967295 */
#define MIN_uint32_T ((uint32_T)(0))
#if defined(_MSC_VER) || (defined(__BORLANDC__) && __BORLANDC__ >= 0x530) \
|| (defined(__WATCOMC__) && __WATCOMC__ >= 1100) \
|| defined(__LCC64__)
# ifdef INT64_T
# define MAX_int64_T ((int64_T)(9223372036854775807LL))
# define MIN_int64_T ((int64_T)(-9223372036854775807LL-1LL))
# endif
# ifdef UINT64_T
# define MAX_uint64_T ((uint64_T)(0xFFFFFFFFFFFFFFFFULL))
# define MIN_uint64_T ((uint64_T)(0))
# endif
#else
# ifdef INT64_T
# ifdef INT_TYPE_64_IS_LONG
# define MAX_int64_T ((int64_T)(9223372036854775807L))
# define MIN_int64_T ((int64_T)(-9223372036854775807L-1L))
# else
# define MAX_int64_T ((int64_T)(9223372036854775807LL))
# define MIN_int64_T ((int64_T)(-9223372036854775807LL-1LL))
# endif
# endif
# ifdef UINT64_T
# ifdef INT_TYPE_64_IS_LONG
# define MAX_uint64_T ((uint64_T)(0xFFFFFFFFFFFFFFFFUL))
# define MIN_uint64_T ((uint64_T)(0))
# else
# define MAX_uint64_T ((uint64_T)(0xFFFFFFFFFFFFFFFFULL))
# define MIN_uint64_T ((uint64_T)(0))
# endif
# endif
#endif
#if (defined(_MSC_VER) && !defined(__clang__))
/* Conversion from unsigned __int64 to double is not implemented in Visual Studio
* and results in a compile error, thus the value must first be cast to
* signed __int64, and then to double.
*
* If the 64 bit int value is greater than 2^63-1, which is the signed int64 max,
* the macro below provides a workaround for casting a uint64 value to a double
* in windows.
*/
# define uint64_to_double(u) ( ((u) > _I64_MAX) ? \
(double)(__int64)((u) - _I64_MAX - 1) + (double)_I64_MAX + 1: \
(double)(__int64)(u) )
/* The following inline function should only be used in the macro double_to_uint64,
* as it only handles the specfic range of double between 2^63 and 2^64-1 */
__forceinline
uint64_T double_to_uint64_helper(double d) {
union double_to_uint64_union_type {
double dd;
uint64_T i64;
} di;
di.dd = d;
return (((di.i64 & 0x000fffffffffffff) | 0x0010000000000000) << 11);
}
/* The largest double value that can be cast to uint64 in windows is the
* signed int64 max, which is 2^63-1. The macro below provides
* a workaround for casting large double values to uint64 in windows.
*/
/* The magic number 18446744073709551616.0 is 2^64 */
/* The magic number 9223372036854775808.0 is 2^63 */
# define double_to_uint64(d) ( ((d) >= 18446744073709551616.0) ? \
0xffffffffffffffffULL : \
((d) >= 0.0) ? \
((d) >= 9223372036854775808.0) ? \
double_to_uint64_helper(d) : \
(unsigned __int64)(d) : \
0ULL )
#else
# define uint64_to_double(u) ((double)(u))
# if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__TICCSC__)
/* double_to_uint64 defined only for MSVC and UNIX */
# else
# define double_to_uint64(d) ( ((d) >= 18446744073709551616.0) ? \
(unsigned long long) 0xffffffffffffffffULL : \
((d) >= 0) ? (unsigned long long)(d) : (unsigned long long) 0 )
# endif
#endif
#if !defined(__cplusplus) && !defined(__bool_true_false_are_defined)
#ifndef _bool_T
#define _bool_T
typedef boolean_T bool;
#ifndef false
#define false (0)
#endif
#ifndef true
#define true (1)
#endif
#endif /* _bool_T */
#endif /* !__cplusplus */
/*
* This software assumes that the code is being compiled on a target using a
* 2's complement representation for signed integer values.
*/
#if ((SCHAR_MIN + 1) != -SCHAR_MAX)
#error "This code must be compiled using a 2's complement representation for signed integer values"
#endif
/*
* Maximum length of a MATLAB identifier (function/variable/model)
* including the null-termination character.
*/
#define TMW_NAME_LENGTH_MAX 64
/*
* Maximum values for indices and dimensions
*/
#include <stddef.h>
#ifdef MX_COMPAT_32
typedef int mwSize;
typedef int mwIndex;
typedef int mwSignedIndex;
#else
typedef size_t mwSize; /* unsigned pointer-width integer */
typedef size_t mwIndex; /* unsigned pointer-width integer */
typedef ptrdiff_t mwSignedIndex; /* a signed pointer-width integer */
#endif
/* for the individual dim */
/* If updating SLSize or SLIndex, update defintions in sl_types_def.h
as well. */
#ifndef SLSIZE_SLINDEX
#define SLSIZE_SLINDEX
#ifdef INT_TYPE_64_IS_SUPPORTED
typedef int64_T SLIndex;
typedef int64_T SLSize;
#else
typedef int SLIndex;
typedef int SLSize;
#endif
#endif
/* for the total size */
#define SLIndexType size_t
#define INVALID_SIZET_VALUE (std::numeric_limits<SLIndexType>::max())
#define MAX_VALID_SIZET_VALUE (std::numeric_limits<SLIndexType>::max() -1)
#if (defined(_LP64) || defined(_WIN64)) && !defined(MX_COMPAT_32)
/* Currently 2^48 based on hardware limitations */
# define MWSIZE_MAX 281474976710655UL
# define MWINDEX_MAX 281474976710655UL
# define MWSINDEX_MAX 281474976710655L
# define MWSINDEX_MIN -281474976710655L
#else
# define MWSIZE_MAX 2147483647UL
# define MWINDEX_MAX 2147483647UL
# define MWSINDEX_MAX 2147483647L
# define MWSINDEX_MIN -2147483647L
#endif
#define MWSIZE_MIN 0UL
#define MWINDEX_MIN 0UL
/** UTF-16 character type */
#if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_HAS_CHAR16_T_LANGUAGE_SUPPORT) && _HAS_CHAR16_T_LANGUAGE_SUPPORT)
typedef char16_t CHAR16_T;
#define U16_STRING_LITERAL_PREFIX u
#elif defined(_MSC_VER)
typedef wchar_t CHAR16_T;
#define U16_STRING_LITERAL_PREFIX L
#else
typedef UINT16_T CHAR16_T;
#endif
#endif /* __TMWTYPES__ */
#endif /* tmwtypes_h */

BIN
ks/Models/FP56/Modell.slxc Executable file

Binary file not shown.

View File

@@ -0,0 +1,392 @@
<?xml version="1.0" encoding="UTF-8"?>
<MF0 version="1.1" packageUris="http://schema.mathworks.com/mf0/ci/19700101 http://schema.mathworks.com/mf0/sl_modelref_info/R2022a http://schema.mathworks.com/mf0/slexec_mm_sto/R2022a_202107291127">
<ModelRefInfoRepo.ModelRefInfoRoot type="ModelRefInfoRepo.ModelRefInfoRoot" uuid="45c12f31-9536-4847-bf5b-d0abfbf0af86">
<childModelRefInfo type="ModelRefInfoRepo.ChildModelRefInfo" uuid="7a28a420-e4e1-41ac-9ac5-1491fe1298aa">
<modelName>Model</modelName>
<modelPath>Model</modelPath>
</childModelRefInfo>
<dataTransferInfos>AAFJTQAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAAAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAA</dataTransferInfos>
<globalVariables>AHD</globalVariables>
<globalVariables>A_Aussen</globalVariables>
<globalVariables>Ai</globalVariables>
<globalVariables>CES</globalVariables>
<globalVariables>CHD</globalVariables>
<globalVariables>CSW</globalVariables>
<globalVariables>Cl</globalVariables>
<globalVariables>T_amb</globalVariables>
<globalVariables>alphaHD</globalVariables>
<globalVariables>alphaSW</globalVariables>
<globalVariables>alpha_aussen</globalVariables>
<globalVariables>mES</globalVariables>
<globalVariables>mHD</globalVariables>
<globalVariables>mSW</globalVariables>
<globalVariables>ml</globalVariables>
<hasBwsAccessed>true</hasBwsAccessed>
<hasBwsAccessedByAnyModel>true</hasBwsAccessedByAnyModel>
<hasContinuousSampleTime>true</hasContinuousSampleTime>
<inports type="ModelRefInfoRepo.InportInformation" uuid="9610b7aa-3883-47c0-99f0-d7492a5c23dc">
<designMax>Inf</designMax>
<designMin>-Inf</designMin>
<indexType>2</indexType>
<rateInfos type="ModelRefInfoRepo.RateInfo">
<compiled>true</compiled>
<period>0.0</period>
<priority>40</priority>
<rateIdx>0</rateIdx>
</rateInfos>
<resolvedSignalObject></resolvedSignalObject>
<executionInterface type="ModelRefInfoRepo.InputExecutionInterface" uuid="d94ccbd2-f715-4fce-9d22-a317b679d47b"/>
<sigNameToEMVCEMap type="ModelRefInfoRepo.SigNameEMVCEInfo" uuid="8600bc3b-0eab-406e-b533-e1f292ef49e3"/>
</inports>
<isBdInSimModeForSimCodegenVariants>false</isBdInSimModeForSimCodegenVariants>
<isOrigInportVirtualBus>false</isOrigInportVirtualBus>
<isOrigOutportVirtualBus>false</isOrigOutportVirtualBus>
<loggingSaveFormat>2</loggingSaveFormat>
<massMatrixNzMax>3</massMatrixNzMax>
<maxFreqHz>-1.0</maxFreqHz>
<numCStateRecs>3</numCStateRecs>
<numContinuousStates>3</numContinuousStates>
<numDataInputPorts>1</numDataInputPorts>
<numLoggableCStateRecs>3</numLoggableCStateRecs>
<numLoggableJacobianDStates>0</numLoggableJacobianDStates>
<origInportBusType></origInportBusType>
<origOutportBusOutputAsStruct>false</origOutportBusOutputAsStruct>
<origOutportBusType></origOutportBusType>
<outports type="ModelRefInfoRepo.OutportInformation" uuid="77990548-3279-4b80-bf28-f3b876e5667f">
<designMax>Inf</designMax>
<designMin>-Inf</designMin>
<rateInfos type="ModelRefInfoRepo.RateInfo">
<compiled>true</compiled>
<period>0.0</period>
<priority>40</priority>
<rateIdx>0</rateIdx>
</rateInfos>
<resolvedSignalObject></resolvedSignalObject>
<executionInterface type="ModelRefInfoRepo.OutputExecutionInterface" uuid="dd67143d-b9c8-4365-9b9a-e731c84cb805"/>
<sigNameToEMVCEMap type="ModelRefInfoRepo.SigNameEMVCEInfo" uuid="c6f5bc71-7a3f-4cf9-9b5c-a01c20e4bed1"/>
</outports>
<runtimeNonFcnCallRateInfos type="ModelRefInfoRepo.RateInfo">
<compiled>true</compiled>
<period>0.0</period>
<priority>40</priority>
<rateIdx>0</rateIdx>
</runtimeNonFcnCallRateInfos>
<runtimeNonFcnCallRateInfos type="ModelRefInfoRepo.RateInfo">
<compiled>true</compiled>
<isEmpty>true</isEmpty>
<nonFcnCallPartitionName>Cont</nonFcnCallPartitionName>
<period>.05</period>
<priority>40</priority>
<rateIdx>1</rateIdx>
</runtimeNonFcnCallRateInfos>
<sampleTimeInheritanceRule>2</sampleTimeInheritanceRule>
<solverStatusFlags>327</solverStatusFlags>
<timingAndTaskingRegistry>&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;slexec_sto version=&quot;1.1&quot; packageUris=&quot;http://schema.mathworks.com/mf0/slexec_mm_sto/R2022a_202107291127&quot;&gt;
&lt;sto.Registry type=&quot;sto.Registry&quot; uuid=&quot;bb50d8a1-42f1-4048-8a3a-35f2fd3f30fd&quot;&gt;
&lt;clocks type=&quot;sto.Timer&quot; uuid=&quot;f5bed6c5-0a8f-4e1f-8e77-319416212ee8&quot;&gt;
&lt;computedFundamentalDiscretePeriod&gt;.05&lt;/computedFundamentalDiscretePeriod&gt;
&lt;resolution&gt;.05&lt;/resolution&gt;
&lt;clockTickConstraint&gt;PeriodicWithFixedResolution&lt;/clockTickConstraint&gt;
&lt;rates type=&quot;sto.ContinuousRate&quot; uuid=&quot;5c1afef0-06f1-4b2e-8657-34fdddc5bbfd&quot;&gt;
&lt;annotation&gt;Cont&lt;/annotation&gt;
&lt;description&gt;Continuous&lt;/description&gt;
&lt;taskId&gt;_task0&lt;/taskId&gt;
&lt;rateSpec type=&quot;sto.RateSpec&quot; uuid=&quot;6e6d6848-bde8-444d-9025-4ca60f2637b2&quot;/&gt;
&lt;/rates&gt;
&lt;rates type=&quot;sto.ClassicPeriodicDiscreteRate&quot; uuid=&quot;6e67d6ff-8d57-46ff-8399-faa23430698f&quot;&gt;
&lt;annotation&gt;D1&lt;/annotation&gt;
&lt;colorIndex&gt;2&lt;/colorIndex&gt;
&lt;description&gt;Discrete 1&lt;/description&gt;
&lt;rateIdx&gt;1&lt;/rateIdx&gt;
&lt;taskId&gt;_task0&lt;/taskId&gt;
&lt;rateSpec type=&quot;sto.RateSpec&quot; uuid=&quot;dd6e73b8-19a4-4fcb-b01d-50659a0627df&quot;&gt;
&lt;period&gt;.05&lt;/period&gt;
&lt;rateType&gt;ClassicPeriodicDiscrete&lt;/rateType&gt;
&lt;/rateSpec&gt;
&lt;/rates&gt;
&lt;timeAdvanceMode&gt;FixedStep&lt;/timeAdvanceMode&gt;
&lt;baseRate type=&quot;sto.ContinuousRate&quot; uuid=&quot;3434c387-7d4f-4d79-a40a-fa4605633209&quot;&gt;
&lt;annotation&gt;Cont&lt;/annotation&gt;
&lt;description&gt;Continuous&lt;/description&gt;
&lt;taskId&gt;_task0&lt;/taskId&gt;
&lt;rateSpec type=&quot;sto.RateSpec&quot; uuid=&quot;dcb91da4-408d-4026-9c1f-23c122d8a84c&quot;/&gt;
&lt;/baseRate&gt;
&lt;/clocks&gt;
&lt;clocks type=&quot;sto.Event&quot; uuid=&quot;5f34f5e6-05b6-4121-b292-403595d8c8f2&quot;&gt;
&lt;eventType&gt;PARAMETER_CHANGE_EVENT&lt;/eventType&gt;
&lt;cNum&gt;1&lt;/cNum&gt;
&lt;clockType&gt;Event&lt;/clockType&gt;
&lt;identifier&gt;ParameterChangeEvent&lt;/identifier&gt;
&lt;rates type=&quot;sto.ModelWideEventRate&quot; uuid=&quot;b7ece639-184b-44d7-a56a-1d9c82e20740&quot;&gt;
&lt;clockId&gt;ParameterChangeEvent&lt;/clockId&gt;
&lt;rateIdx&gt;-1&lt;/rateIdx&gt;
&lt;taskId&gt;ModelWideParameterChangeEvent&lt;/taskId&gt;
&lt;useForExecution&gt;NotForExecution&lt;/useForExecution&gt;
&lt;rateSpec type=&quot;sto.RateSpec&quot; uuid=&quot;9af2c701-dc83-4f74-8585-d32564d9bf43&quot;&gt;
&lt;period&gt;Inf&lt;/period&gt;
&lt;rateType&gt;ModelWideParameterChangeEvent&lt;/rateType&gt;
&lt;/rateSpec&gt;
&lt;/rates&gt;
&lt;taskingMode&gt;ExplicitTasking&lt;/taskingMode&gt;
&lt;timeAdvanceMode&gt;None&lt;/timeAdvanceMode&gt;
&lt;/clocks&gt;
&lt;executionSpec&gt;Undetermined&lt;/executionSpec&gt;
&lt;taskPriorityDirection&gt;HighNumberLast&lt;/taskPriorityDirection&gt;
&lt;timeAdvanceMode&gt;FixedStep&lt;/timeAdvanceMode&gt;
&lt;taskRegistry type=&quot;sto.TaskRegistry&quot; uuid=&quot;b1c3e180-f46a-4eca-8fad-1cbe120beb7e&quot;&gt;
&lt;rootTaskHierarchyElements type=&quot;sto.Task&quot; uuid=&quot;95dd5883-45cf-4bb0-8c9c-a47289ba229a&quot;&gt;
&lt;isExplicit&gt;true&lt;/isExplicit&gt;
&lt;rates type=&quot;sto.ModelWideEventRate&quot; uuid=&quot;3bfb8c8e-711b-462d-b7ca-bb130a422cd5&quot;&gt;
&lt;clockId&gt;ParameterChangeEvent&lt;/clockId&gt;
&lt;rateIdx&gt;-1&lt;/rateIdx&gt;
&lt;taskId&gt;ModelWideParameterChangeEvent&lt;/taskId&gt;
&lt;useForExecution&gt;NotForExecution&lt;/useForExecution&gt;
&lt;rateSpec type=&quot;sto.RateSpec&quot; uuid=&quot;94332274-d943-498f-a62c-669258e94020&quot;&gt;
&lt;period&gt;Inf&lt;/period&gt;
&lt;rateType&gt;ModelWideParameterChangeEvent&lt;/rateType&gt;
&lt;/rateSpec&gt;
&lt;/rates&gt;
&lt;elementType&gt;Task&lt;/elementType&gt;
&lt;identifier&gt;ModelWideParameterChangeEvent&lt;/identifier&gt;
&lt;priority&gt;-1&lt;/priority&gt;
&lt;schedulingClockId&gt;ParameterChangeEvent&lt;/schedulingClockId&gt;
&lt;/rootTaskHierarchyElements&gt;
&lt;rootTaskHierarchyElements type=&quot;sto.Task&quot; uuid=&quot;ec537706-4286-4fc1-8dc3-144701f6eedc&quot;&gt;
&lt;isExecutable&gt;true&lt;/isExecutable&gt;
&lt;orderIndex&gt;1&lt;/orderIndex&gt;
&lt;rates type=&quot;sto.ContinuousRate&quot; uuid=&quot;5d949003-959e-40c0-b549-03a769334b03&quot;&gt;
&lt;annotation&gt;Cont&lt;/annotation&gt;
&lt;description&gt;Continuous&lt;/description&gt;
&lt;taskId&gt;_task0&lt;/taskId&gt;
&lt;rateSpec type=&quot;sto.RateSpec&quot; uuid=&quot;6120e363-1c84-4b69-a3c7-fa4e6e7c8a43&quot;/&gt;
&lt;/rates&gt;
&lt;rates type=&quot;sto.ClassicPeriodicDiscreteRate&quot; uuid=&quot;dbaaa966-0a0c-4251-b1ce-2c4a948055f7&quot;&gt;
&lt;annotation&gt;D1&lt;/annotation&gt;
&lt;colorIndex&gt;2&lt;/colorIndex&gt;
&lt;description&gt;Discrete 1&lt;/description&gt;
&lt;rateIdx&gt;1&lt;/rateIdx&gt;
&lt;taskId&gt;_task0&lt;/taskId&gt;
&lt;rateSpec type=&quot;sto.RateSpec&quot; uuid=&quot;22331311-3e9d-4fb8-9e2d-6c8c46fed61c&quot;&gt;
&lt;period&gt;.05&lt;/period&gt;
&lt;rateType&gt;ClassicPeriodicDiscrete&lt;/rateType&gt;
&lt;/rateSpec&gt;
&lt;/rates&gt;
&lt;elementType&gt;Task&lt;/elementType&gt;
&lt;identifier&gt;_task0&lt;/identifier&gt;
&lt;priority&gt;40&lt;/priority&gt;
&lt;/rootTaskHierarchyElements&gt;
&lt;taskDependencyGraph type=&quot;sto.SerializedTaskConnectionList&quot; uuid=&quot;2bd29f97-ba78-45a8-94ac-ff435ae73c67&quot;&gt;
&lt;taskIdentifier&gt;_task0&lt;/taskIdentifier&gt;
&lt;/taskDependencyGraph&gt;
&lt;taskDependencyGraph type=&quot;sto.SerializedTaskConnectionList&quot; uuid=&quot;ce15d9f2-1775-47a8-acec-a91bd12af7b1&quot;&gt;
&lt;clockIdentifier&gt;ParameterChangeEvent&lt;/clockIdentifier&gt;
&lt;taskIdentifier&gt;ModelWideParameterChangeEvent&lt;/taskIdentifier&gt;
&lt;/taskDependencyGraph&gt;
&lt;/taskRegistry&gt;
&lt;/sto.Registry&gt;
&lt;/slexec_sto&gt;</timingAndTaskingRegistry>
<zeroInternalMemoryAtStartupUnchecked>true</zeroInternalMemoryAtStartupUnchecked>
<FMUBlockMap type="ModelRefInfoRepo.FMUBlockInfo" uuid="937685d7-feda-43fd-864b-cab65b3f2f82"/>
<codeGenInfo type="ModelRefInfoRepo.CodeGenInformation" uuid="f8a55f3d-0963-479d-8b7e-8d9f1e96456e"/>
<compiledVariantInfos type="ModelRefInfoRepo.CompiledVariantInfoMap" uuid="196f8dfa-2142-42b7-9006-8aa2ac2f56ca"/>
<configSettingsForConsistencyChecks type="ModelRefInfoRepo.ConfigSettingsForConsistencyChecks" uuid="ed9cf819-6cbe-429a-957b-544292522799">
<consistentOutportInitialization>true</consistentOutportInitialization>
<fixedStepSize>.05</fixedStepSize>
<frameDiagnosticSetting>2</frameDiagnosticSetting>
<hasHybridSampleTime>true</hasHybridSampleTime>
<signalLoggingSaveFormat>2</signalLoggingSaveFormat>
<simSIMDOptimization>1</simSIMDOptimization>
<solverName>ode3</solverName>
<solverType>SOLVER_TYPE_FIXEDSTEP</solverType>
<hardwareSettings type="ModelRefInfoRepo.HardwareSettings" uuid="750ca51f-2459-4361-bcaf-cf9717e84503">
<prodBitPerChar>8</prodBitPerChar>
<prodBitPerDouble>64</prodBitPerDouble>
<prodBitPerFloat>32</prodBitPerFloat>
<prodBitPerInt>32</prodBitPerInt>
<prodBitPerLong>32</prodBitPerLong>
<prodBitPerLongLong>64</prodBitPerLongLong>
<prodBitPerPointer>64</prodBitPerPointer>
<prodBitPerPtrDiffT>64</prodBitPerPtrDiffT>
<prodBitPerShort>16</prodBitPerShort>
<prodBitPerSizeT>64</prodBitPerSizeT>
<prodEndianess>1</prodEndianess>
<prodShiftRight>true</prodShiftRight>
<prodWordSize>64</prodWordSize>
</hardwareSettings>
</configSettingsForConsistencyChecks>
<controllableInputRatesMap type="ModelRefInfoRepo.VarTsUIDMap" uuid="1aa810bd-1862-4c3c-ab94-147b2a2d0d69"/>
<controllableOutputRatesMap type="ModelRefInfoRepo.VarTsUIDMap" uuid="626f6754-7b72-48b1-a6e3-023acaa676e2"/>
<dataPortGroup type="ModelRefInfoRepo.DataPortGroup" uuid="f9c9f395-da67-48ca-b2f7-c9c22a926098">
<compDataInputPorts>0</compDataInputPorts>
<compDataOutputPorts>0</compDataOutputPorts>
<dataInputPorts>0</dataInputPorts>
<dataOutputPorts>0</dataOutputPorts>
</dataPortGroup>
<expFcnUnconnectedDataPortGroup type="ModelRefInfoRepo.DataPortGroup" uuid="b1d2f99a-37aa-465b-9336-36399fdfa2c3"/>
<interfaceParameterInfo type="ModelRefInfoRepo.InterfaceParameterInfo" uuid="06a6dbcd-2ca2-4410-af48-8580dee72b9b">
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="e733a764-8f74-4d78-bb31-eb4d76727905">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>AHD</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="cfbdc02f-1e78-4fb4-a176-f272276d3e0c">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>A_Aussen</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="24b808c4-0727-4b18-ad3c-b29960f79a6c">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>Ai</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="05f47fbe-7ce8-4bc2-9f6f-f37d6bc67593">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>CES</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="f6986762-6e8d-4cdd-b2d6-508778c737a6">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>CHD</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="0e4a0f32-46aa-471a-9554-c60eb5c7902b">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>CSW</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="8f777ec0-0eab-460e-bd50-160ecca20a34">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>Cl</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="4b810750-38bb-4ea6-9998-8902720e8127">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>T_amb</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="7f053e15-181c-4b2c-8128-e7f9266d86b4">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>alphaHD</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="cf2f4d24-fd2d-4093-a0e3-64023f5e4f7d">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>alphaSW</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="1c5f6a88-1284-4c30-a91c-06b84f66beae">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>alpha_aussen</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="5c505056-100a-4d0e-a626-9b6592044d4e">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>mES</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="225bd6a7-c42e-41c5-aa0d-a101b84b7eba">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>mHD</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="91e237c5-c71e-45c5-9cca-a197500d4253">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>mSW</parameterName>
</globalVariables>
<globalVariables type="ModelRefInfoRepo.BuiltinParameter" uuid="4d3af21f-e2d5-41b6-ace3-4eae4d8e2370">
<dimensions>1</dimensions>
<dimensions>1</dimensions>
<isUsed>true</isUsed>
<numDimensions>2</numDimensions>
<parameterName>ml</parameterName>
</globalVariables>
</interfaceParameterInfo>
<messageInfo type="ModelRefInfoRepo.MessageInformation" uuid="2abcd7d6-d927-4c3d-bb0f-afaae7cd4383"/>
<methodInfo type="ModelRefInfoRepo.MethodExistenceInfo" uuid="ad5da10c-5e75-4790-8a4a-76fd4b1eab0e">
<hasDerivMethod>true</hasDerivMethod>
<hasForcingFunctionMethod>true</hasForcingFunctionMethod>
<hasSystemInitializeMethod>true</hasSystemInitializeMethod>
<hasSystemResetMethod>true</hasSystemResetMethod>
<hasTerminateMethod>true</hasTerminateMethod>
<hasUpdateMethod>true</hasUpdateMethod>
</methodInfo>
<periodicEventPortUnsupportedBlockInfo type="ModelRefInfoRepo.PeriodicEventPortUnsupportedBlockInfo" uuid="b847310c-3295-4ae0-a105-628a891c04a6"/>
<portGroupsRequireSameRate type="ModelRefInfoRepo.PortGroupsRequireSameRate" uuid="0e9397aa-4409-438e-a67d-e38a243e3c28">
<DSMPortGroups type="ModelRefInfoRepo.NameToPortGroupIdxVectMap" uuid="a5da630d-0401-4482-a7a0-8ab58acc4769"/>
<GlobalDSMPortGroups type="ModelRefInfoRepo.NameToPortGroupIdxVectMap" uuid="ff546ced-ce35-4ace-ac9d-73d57ef05a1a"/>
<mergedPortGroups type="ModelRefInfoRepo.NameToPortGroupIdxVectMap" uuid="91f942e8-0dfd-49b0-854d-3d026726babd"/>
</portGroupsRequireSameRate>
<rateBasedMdlGlobalDSMRateSpec type="ModelRefInfoRepo.GlobalDSMRateSpecMap" uuid="c5ae3403-3ec9-4bc8-9a39-5bcf7beec79f"/>
<rateSpecOfGlobalDSMAccessedByDescExpFcnMdlMap type="ModelRefInfoRepo.GlobalDSMRateSpecMap" uuid="c9dfff1e-1998-4a29-a6cb-6ce4801cd5ee"/>
<rootBlockDiagramInterface type="ci.Model" uuid="b350726c-d0c8-417d-a1df-5a641a0a5585">
<p_RootComponentInterface type="ci.ComponentInterface" uuid="fcb80081-c3cc-4410-99cf-556853c0b253">
<p_InputPorts type="ci.SignalInterface" uuid="41702897-5035-4d56-93c1-38079b04bf13">
<p_ComputedNumericDimensions>1.0</p_ComputedNumericDimensions>
<p_ComputedSampleTime>0.0</p_ComputedSampleTime>
<p_ComputedSampleTime>0.0</p_ComputedSampleTime>
</p_InputPorts>
<p_Name>Model</p_Name>
<p_OutputPorts type="ci.SignalInterface" uuid="8340ff4b-17e3-4a58-ac3c-84884e920dc8">
<p_ComputedNumericDimensions>1.0</p_ComputedNumericDimensions>
<p_ComputedSampleTime>0.0</p_ComputedSampleTime>
<p_ComputedSampleTime>0.0</p_ComputedSampleTime>
</p_OutputPorts>
<p_Type>ROOT</p_Type>
</p_RootComponentInterface>
</rootBlockDiagramInterface>
<simulinkFunctions type="ModelRefInfoRepo.SimulinkFunctions" uuid="d73d69b3-0b2c-4e47-8320-d9fa374f3e28">
<compSimulinkFunctionCatalog></compSimulinkFunctionCatalog>
</simulinkFunctions>
<stateWriterToOwnerMap type="ModelRefInfoRepo.StateWriterInfo" uuid="a4ad432d-8842-45b2-a928-4d6fcdc75c87"/>
<stoClientDataRegistry type="sto.ClientDataRegistry" uuid="3db2b3c3-0c78-43f0-b2d0-4a901521e148">
<dataSets type="sto.ClientClockNamedDataSet" uuid="47d4a727-edea-4e76-9b32-495dc48c71f3">
<tag>sltpEvents</tag>
</dataSets>
<dataSets type="sto.ClientTaskHierarchyElementNamedDataSet" uuid="6c8c1561-136c-4d20-9797-1593e7703ed8">
<tag>sltpTaskGroups</tag>
</dataSets>
<dataSets type="sto.ClientTaskHierarchyElementNamedDataSet" uuid="92c27553-095b-4687-9fd9-4ecb15fdec64">
<dSet type="ModelRefInfoRepo.SltpTaskData" uuid="fd134e8e-6d03-40b3-a888-7f4276aedb7c"/>
<tSet type="ModelRefInfoRepo.SltpTaskData" uuid="fd134e8e-6d03-40b3-a888-7f4276aedb7c">
<dataName>Cont</dataName>
<linkedSet type="sto.ClientTaskHierarchyElementNamedDataSet" uuid="92c27553-095b-4687-9fd9-4ecb15fdec64"/>
<id type="sto.TaskHierarchyElementId">
<id>_task0</id>
</id>
</tSet>
<tag>sltpTasks</tag>
</dataSets>
</stoClientDataRegistry>
<varTsUIDMap type="ModelRefInfoRepo.VarTsUIDMap" uuid="cd8b8956-dac4-405d-a396-6bf3af87fbb7"/>
</ModelRefInfoRepo.ModelRefInfoRoot>
</MF0>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<MF0 version="1.1" packageUris="http://schema.mathworks.com/mf0/SlCache/19700101">
<slcache.FileAttributes type="slcache.FileAttributes" uuid="7c781643-6a25-4b42-aef3-b3748dd146bc">
<checksum>sLonxaz63rcjE+Tfc73PVxZSx3RtBUteMVCh7EdgFqnx/LrVH5YIdBfAMR5tWaUJO0VfY6qRmpBEwBrM1loXHQ==</checksum>
</slcache.FileAttributes>
</MF0>

Binary file not shown.

View File

@@ -0,0 +1,2 @@
Simulink Coder project marker file. Please don't change it.
slprjVersion: 10.5_091

15
ks/main.cpp Normal file
View File

@@ -0,0 +1,15 @@
/*
File: main.cpp
Description: This is a C++ source file containing implementation code for the 'ks' library component.
Rev: 0.1
Created: [29.03.26]
Author: Uwe Jakobeit
Copyright: Binder GmbH TUT
Purpose: Just a dummy to start the project structure
Notes: [Any relevant details, such as dependencies, usage examples, or known issues.]
*/
// Entry point for the lib
int main(void)
{}

7
tests/CMakeLists.txt Normal file
View File

@@ -0,0 +1,7 @@
find_package(GTest REQUIRED)
add_executable(tests filter-test.cpp)
target_link_libraries(tests GTest::gtest_main app_lib)
include(GoogleTest)
gtest_discover_tests(tests)

26
tests/filter-test.cpp Normal file
View File

@@ -0,0 +1,26 @@
#ifndef FILTER_TEST_CPP
#define FILTER_TEST_CPP
#include <gtest/gtest.h>
#include "filter.h"
TEST(PT1FilterTest, InitialOutputIsZero) {
PT1Filter filter(0.1, 0.01);
EXPECT_DOUBLE_EQ(filter.update(0.0), 0.0);
}
TEST(PT1FilterTest, StepResponse) {
PT1Filter filter(0.1, 0.01);
double output = 0.0;
for (int i = 0; i < 100; ++i) {
output = filter.update(1.0);
}
EXPECT_NEAR(output, 1.0, 0.01);
}
TEST(PT1FilterTest, FilterFactorEffect) {
PT1Filter fastFilter(0.01, 0.01);
PT1Filter slowFilter(0.5, 0.01);
EXPECT_GT(fastFilter.update(1.0), slowFilter.update(1.0));
}
#endif // FILTER_TEST_CPP