I'm producing different results when I use built-in Simulink blocks such as Transfer Function and PID Controller as compared to explicitly describing the system using Derivative, Integrator, Sum blocks etc. I believe it has something to do with the way MATLAB linearises the models in Simulink and other tools like SISOTool.
As an example, I have a simple linear model of the form
x'' = u/1.54
with u as the input and x as the state. Applying a PD controller to this:
u = (2 + 5*s)*e
gives the closed loop TF
x(s)/r(s) = (5*s + 2) / (1.54*s^2 + 5*s + 2)
Comparing the response of this TF to a step input to the explicitly stated model produces different outputs, as seen in the images. Does anyone know the cause of this? They should be identical, but MATLAB seems to be solving one model incorrectly. To reiterate, I get the first response when using PID Control or Transfer Functions blocks or the MATLAB functions "Step" and SISOTool. The second response is obtained from the model with the double integrator.