ZerosAndPoles.Plot.bode(zp) or ZerosAndPoles.Plot.bode( zp, nPoints, autoRange, f_min, f_max, magnitude=true, phase=true, defaultDiagram=Modelica_LinearSystems2.Internal.DefaultDiagramBodePlot(), device=Modelica_LinearSystems2.Utilities.Plot.Records.Device() )
This function plots the bode-diagram of a transfer function.
ZerosAndPoles p = Modelica_LinearSystems2.ZerosAndPoles.p(); Modelica_LinearSystems2.ZerosAndPoles zp =(p^2 + 5*p + 7)/(p + 2)/(p + 3); algorithm Modelica_LinearSystems2.ZerosAndPoles.Plot.bode(zp) // gives:
encapsulated function bode import Modelica; import Modelica.Units.SI; import Modelica.ComplexMath; import Complex; import Modelica_LinearSystems2; import Modelica_LinearSystems2.ZerosAndPoles; import Modelica_LinearSystems2.Utilities.Plot; input ZerosAndPoles zp "ZerosAndPoles transfer function to be plotted"; input Integer nPoints(min = 2) = 200 "Number of points"; input Boolean autoRange = true "True, if abszissa range is automatically determined"; input SI.Frequency f_min(min = 0) = 0.1 "Minimum frequency value, if autoRange = false" annotation( Dialog(enable = not autoRange)); input SI.Frequency f_max(min = 0) = 10 "Maximum frequency value, if autoRange = false" annotation( Dialog(enable = not autoRange)); input Boolean magnitude = true "= true, to plot magnitude" annotation( choices(checkBox = true)); input Boolean phase = true "= true, to plot phase" annotation( choices(checkBox = true)); extends Modelica_LinearSystems2.Internal.PartialPlotFunction(defaultDiagram = Modelica_LinearSystems2.Internal.DefaultDiagramBodePlot(heading = "Bode plot: " + String(zp))); input Boolean Hz = true "= true, to plot abszissa in [Hz], otherwise in [rad/s] (= 2*pi*Hz)" annotation( choices(checkBox = true)); input Boolean dB = false "= true, to plot magnitude in [], otherwise in [dB] (=20*log10(value))" annotation( choices(checkBox = true), Dialog(enable = magnitude)); input Boolean onFile = false "= true, if frequency response is stored on file as matrix [f,A,phi]" annotation( choices(checkBox = true)); input String fileName = "frequencyResponse.mat" "If onFile=true, file on which the frequency response will be stored" annotation( Dialog(enable = onFile)); input String matrixName = if Hz and not dB then "fHz_A_phiDeg" elseif Hz and dB then "fHz_AdB_phiDeg" elseif not Hz and dB then "f_AdB_phiDeg" else "f_A_phiDeg" "If onFile=true, Name of matrix on file" annotation( Dialog(enable = onFile)); end bode;