示例#1
0
 private static void Simulate(FmuInstance fmu)
 {
     for (double time = 0; time < END_TIME; time += STEP_SIZE)
     {
         Console.WriteLine("\nGetValues, current time: " + time);
         GetValues(fmu);
         Console.WriteLine("DoStep, step size: " + STEP_SIZE);
         fmu.DoStep(time, STEP_SIZE, true);
     }
 }
示例#2
0
 private static void SetValues(FmuInstance fmu)
 {
     uint[]   setRealVr     = { 1342177280 };
     double[] setRealValues = { 42 };
     fmu.SetReal(setRealVr, setRealValues);
     uint[] setIntegerVr     = { 1442840578 };
     int[]  setIntegerValues = { 42 };
     fmu.SetInteger(setIntegerVr, setIntegerValues);
     uint[] setBooleanVr     = { 1476395009 };
     bool[] setBooleanValues = { true };
     fmu.SetBoolean(setBooleanVr, setBooleanValues);
     uint[]   setStringVr     = { 1, 2, 3 };
     string[] setStringValues = { "1", "2", "3" };
     fmu.SetString(setStringVr, setStringValues);
 }
示例#3
0
        private static void GetValues(FmuInstance fmu)
        {
            uint[] getRealVr     = { 1073741824 };
            var    getRealValues = new double[getRealVr.Length];

            fmu.GetReal(getRealVr, getRealValues);
            Console.WriteLine("Real values: " + String.Join("; ", getRealValues));
            uint[] getIntegerVr     = { 1174405121 };
            var    getIntegerValues = new int[getIntegerVr.Length];

            fmu.GetInteger(getIntegerVr, getIntegerValues);
            Console.WriteLine("Integer values: " + String.Join("; ", getIntegerValues));
            uint[] getBooleanVr     = { 1207959554 };
            var    getBooleanValues = new bool[getBooleanVr.Length];

            fmu.GetBoolean(getBooleanVr, getBooleanValues);
            Console.WriteLine("Boolean values: " + String.Join("; ", getBooleanValues));
            uint[]   getStringVr     = { 1, 2, 3 };
            string[] getStringValues = new string[getStringVr.Length];
            fmu.GetString(getStringVr, getStringValues);
            Console.WriteLine("String values: " + String.Join("; ", getStringValues));
        }
示例#4
0
        static void Main(string[] args)
        {
            // Load model description and extract binary
            (string modelName, string guid) = LoadFmu(FMU);
            // Create the instancr
            using (var fmu = new FmuInstance(modelName + ".dll"))
            {
                // Setup
                fmu.Log          += Fmu_Log;
                fmu.StepFinished += Fmu_StepFinished;
                fmu.Instantiate(modelName + "_Instance", Fmi2Type.fmi2CoSimulation, guid, "", false, true);
                Console.WriteLine("Types platform: " + fmu.GetTypesPlatform());
                Console.WriteLine("Version: " + fmu.GetVersion());
                fmu.SetupExperiment(false, 0, 0, true, END_TIME);
                fmu.EnterInitializationMode();
                fmu.ExitInitializationMode();

                // Simulate
                SetValues(fmu);
                Simulate(fmu);
                // Reset crashes the Matlab FMU
                fmu.FreeInstance();
                fmu.Instantiate(modelName + "_Instance", Fmi2Type.fmi2CoSimulation, guid, "", false, true);
                //fmu.Reset();
                fmu.SetupExperiment(false, 0, 0, true, END_TIME);
                fmu.EnterInitializationMode();
                fmu.ExitInitializationMode();


                // Simulate again
                SetValues(fmu);
                Simulate(fmu);
                // Terminate the fmu
                fmu.Terminate();
            }
            Console.WriteLine("Press enter to exit");
            Console.ReadLine();
        }