Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

DC_MatlabCopyPID.cpp

00001 00002 00003 // 00004 // Copyright 2003 P&P Software GmbH - All Rights Reserved 00005 // 00006 // DC_MatlabCopyPID.cpp 00007 // 00008 // This is an automatically generated file 00009 00010 #include "../GeneralInclude/CompilerSwitches.h" 00011 #include "../GeneralInclude/DebugSupport.h" 00012 #include "../GeneralInclude/BasicTypes.h" 00013 #include "../GeneralInclude/ClassId.h" 00014 #include "../GeneralInclude/Constants.h" 00015 #include "../Data/DC_DataItem.h" 00016 #include "../Data/DataPool.h" 00017 #include "DC_MatlabCopyPID.h" 00018 00019 unsigned int DC_MatlabCopyPID::numberOfInstances=0; 00020 00021 DC_MatlabCopyPID::DC_MatlabCopyPID() { 00022 // The Simulink model is NOT reentrant, thus we 00023 // can only have one instance of this object 00024 assert(numberOfInstances==0); 00025 numberOfInstances++; 00026 00027 numberOfInputs=1; 00028 numberOfOutputs=1; 00029 numberOfParameters=3; 00030 00031 #ifdef HAVE_SIMULINK 00032 modelStep =PID_step; 00033 modelInitialize =PID_init; 00034 00035 modelInputs =new real_T*[numberOfInputs]; 00036 modelOutputs =new real_T*[numberOfOutputs]; 00037 modelParameters =new real_T*[numberOfParameters]; 00038 00039 modelInputs[0] =&Input; 00040 modelOutputs[0] =&Output; 00041 modelParameters[1-1]=&; 00042 modelParameters[2-1]=&; 00043 modelParameters[3-1]=&; 00044 #endif 00045 00046 setNumberOfStates(0); 00047 setNumberOfInputs(numberOfInputs); 00048 setNumberOfOutputs(numberOfOutputs); 00049 setNumberOfParameters(numberOfParameters); 00050 00051 setClassId(ID_MATLABCOPYPID); 00052 00053 // Initialize the Simulink model 00054 reset(); 00055 } 00056 00057 void DC_MatlabCopyPID::propagateState() { 00058 #ifdef HAVE_SIMULINK 00059 for (unsigned int i=0; i<numberOfParameters; i++) 00060 *modelParameters[i]=(real_T)p[i]; 00061 00062 for (unsigned int i=0; i<numberOfInputs; i++) 00063 *modelInputs[i]=(real_T)u[i]; 00064 #endif 00065 } 00066 00067 void DC_MatlabCopyPID::updateOutput() { 00068 #ifdef HAVE_SIMULINK 00069 modelStep(); 00070 00071 for (unsigned int i=0;i<numberOfOutputs;i++) 00072 y[i]=(TD_Float)*modelOutputs[i]; 00073 #endif 00074 } 00075 00076 void DC_MatlabCopyPID::reset() { 00077 #ifdef HAVE_SIMULINK 00078 modelInitialize(1); 00079 #endif 00080 }
Copyright 2003 P&P Software GmbH - All Rights Reserved