Advertisement
Guest User

omTest.mo

a guest
Mar 18th, 2014
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.53 KB | None | 0 0
  1. model omTest_cs_st_FMU
  2. constant String fmuLocation = "/Volumes/Work/agx/CoSimulation/omTest.fmu";
  3. constant String fmuWorkingDir = "/private/var/folders/8x/2vdhp_nx64nb7qnb8yth7shw0000gn/T/OpenModelica_nils/OMEdit";
  4. parameter Integer logLevel = 3 "log level used during the loading of FMU" annotation (Dialog(tab="FMI", group="Enable logging"));
  5. parameter Boolean debugLogging = false "enables the FMU simulation logging" annotation (Dialog(tab="FMI", group="Enable logging"));
  6. constant String mimeType = "";
  7. constant Real timeout = 0.0;
  8. constant Boolean visible = false;
  9. constant Boolean interactive = false;
  10. parameter Real StartTime = 0.0 "start time used to initialize the slave" annotation (Dialog(tab="FMI", group="Step time"));
  11. parameter Real StopTime = 1.0 "stop time used to initialize the slave" annotation (Dialog(tab="FMI", group="Step time"));
  12. parameter Real communicationStepSize = (StopTime-StartTime)/500 "step size used by fmiDoStep" annotation (Dialog(tab="FMI", group="Step time"));
  13. constant Boolean stopTimeDefined = false;
  14. FMI1CoSimulation fmi1cs = FMI1CoSimulation(logLevel, fmuWorkingDir, "omTest", debugLogging, fmuLocation, mimeType, timeout, visible, interactive, StartTime, stopTimeDefined, StopTime);
  15. Modelica.Blocks.Interfaces.RealInput theInput(start=1.0,fixed=true) "The input, lol!" annotation(Placement(transformation(extent={{-120,60},{-100,80}})));
  16. Modelica.Blocks.Interfaces.RealOutput theOutput(start=1.0,fixed=true) "This is the output" annotation(Placement(transformation(extent={{100,60},{120,80}})));
  17. Real flowControl;
  18. equation
  19. flowControl = fmi1Functions.fmi1DoStep(fmi1cs, time, communicationStepSize, true);
  20. {theOutput} = fmi1Functions.fmi1GetReal(fmi1cs, {1.0}, flowControl);
  21. annotation(experiment(StartTime=0.0, StopTime=1.0, Tolerance=0.0001));
  22. annotation (Icon(graphics={
  23. Rectangle(
  24. extent={{-100,100},{100,-100}},
  25. lineColor={0,0,0},
  26. fillColor={240,240,240},
  27. fillPattern=FillPattern.Solid,
  28. lineThickness=0.5),
  29. Text(
  30. extent={{-100,40},{100,0}},
  31. lineColor={0,0,0},
  32. textString="%name"),
  33. Text(
  34. extent={{-100,-50},{100,-90}},
  35. lineColor={0,0,0},
  36. textString="V1.0")}));
  37. protected
  38. class FMI1CoSimulation
  39. extends ExternalObject;
  40. function constructor
  41. input Integer fmiLogLevel;
  42. input String workingDirectory;
  43. input String instanceName;
  44. input Boolean debugLogging;
  45. input String fmuLocation;
  46. input String mimeType;
  47. input Real timeOut;
  48. input Boolean visible;
  49. input Boolean interactive;
  50. input Real tStart;
  51. input Boolean stopTimeDefined;
  52. input Real tStop;
  53. output FMI1CoSimulation fmi1cs;
  54. external "C" fmi1cs = FMI1CoSimulationConstructor_OMC(fmiLogLevel, workingDirectory, instanceName, debugLogging, fmuLocation, mimeType, timeOut, visible, interactive, tStart, stopTimeDefined, tStop) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  55. end constructor;
  56.  
  57. function destructor
  58. input FMI1CoSimulation fmi1cs;
  59. external "C" FMI1CoSimulationDestructor_OMC(fmi1cs) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  60. end destructor;
  61. end FMI1CoSimulation;
  62.  
  63. package fmi1Functions
  64. function fmi1DoStep
  65. input FMI1CoSimulation fmi1cs;
  66. input Real currentCommunicationPoint;
  67. input Real communicationStepSize;
  68. input Boolean newStep;
  69. output Real outFlowControl;
  70. external "C" outFlowControl = fmi1DoStep_OMC(fmi1cs, currentCommunicationPoint, communicationStepSize, newStep) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  71. end fmi1DoStep;
  72.  
  73. function fmi1GetReal
  74. input FMI1CoSimulation fmi1cs;
  75. input Real realValuesReferences[:];
  76. input Real inFlowStatesInput;
  77. output Real realValues[size(realValuesReferences, 1)];
  78. external "C" fmi1GetReal_OMC(fmi1cs, size(realValuesReferences, 1), realValuesReferences, inFlowStatesInput, realValues, 2) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  79. end fmi1GetReal;
  80.  
  81. function fmi1SetReal
  82. input FMI1CoSimulation fmi1cs;
  83. input Real realValuesReferences[:];
  84. input Real realValues[size(realValuesReferences, 1)];
  85. output Real out_Values[size(realValuesReferences, 1)];
  86. external "C" fmi1SetReal_OMC(fmi1cs, size(realValuesReferences, 1), realValuesReferences, realValues, out_Values, 2) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  87. end fmi1SetReal;
  88.  
  89. function fmi1GetInteger
  90. input FMI1CoSimulation fmi1cs;
  91. input Real integerValuesReferences[:];
  92. input Real inFlowStatesInput;
  93. output Integer integerValues[size(integerValuesReferences, 1)];
  94. external "C" fmi1GetInteger_OMC(fmi1cs, size(integerValuesReferences, 1), integerValuesReferences, inFlowStatesInput, integerValues, 2) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  95. end fmi1GetInteger;
  96.  
  97. function fmi1SetInteger
  98. input FMI1CoSimulation fmi1cs;
  99. input Real integerValuesReferences[:];
  100. input Integer integerValues[size(integerValuesReferences, 1)];
  101. output Real out_Values[size(integerValuesReferences, 1)];
  102. external "C" fmi1SetInteger_OMC(fmi1cs, size(integerValuesReferences, 1), integerValuesReferences, integerValues, out_Values, 2) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  103. end fmi1SetInteger;
  104.  
  105. function fmi1GetBoolean
  106. input FMI1CoSimulation fmi1cs;
  107. input Real booleanValuesReferences[:];
  108. input Real inFlowStatesInput;
  109. output Boolean booleanValues[size(booleanValuesReferences, 1)];
  110. external "C" fmi1GetBoolean_OMC(fmi1cs, size(booleanValuesReferences, 1), booleanValuesReferences, inFlowStatesInput, booleanValues, 2) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  111. end fmi1GetBoolean;
  112.  
  113. function fmi1SetBoolean
  114. input FMI1CoSimulation fmi1cs;
  115. input Real booleanValuesReferences[:];
  116. input Boolean booleanValues[size(booleanValuesReferences, 1)];
  117. output Real out_Values[size(booleanValuesReferences, 1)];
  118. external "C" fmi1SetBoolean_OMC(fmi1cs, size(booleanValuesReferences, 1), booleanValuesReferences, booleanValues, out_Values, 2) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  119. end fmi1SetBoolean;
  120.  
  121. function fmi1GetString
  122. input FMI1CoSimulation fmi1cs;
  123. input Real stringValuesReferences[:];
  124. input Real inFlowStatesInput;
  125. output String stringValues[size(stringValuesReferences, 1)];
  126. external "C" fmi1GetString_OMC(fmi1cs, size(stringValuesReferences, 1), stringValuesReferences, inFlowStatesInput, stringValues, 2) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  127. end fmi1GetString;
  128.  
  129. function fmi1SetString
  130. input FMI1CoSimulation fmi1cs;
  131. input Real stringValuesReferences[:];
  132. input String stringValues[size(stringValuesReferences, 1)];
  133. output Real out_Values[size(stringValuesReferences, 1)];
  134. external "C" fmi1SetString_OMC(fmi1cs, size(stringValuesReferences, 1), stringValuesReferences, stringValues, out_Values, 2) annotation(Library = {"OpenModelicaFMIRuntimeC", "fmilib"});
  135. end fmi1SetString;
  136. end fmi1Functions;
  137.  
  138. package fmiStatus
  139. constant Integer fmiOK=0;
  140. constant Integer fmiWarning=1;
  141. constant Integer fmiDiscard=2;
  142. constant Integer fmiError=3;
  143. constant Integer fmiFatal=4;
  144. constant Integer fmiPending=5;
  145. end fmiStatus;
  146. end omTest_cs_st_FMU;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement