Michael Thomas Flanagan's Java Scientific LibraryFirstOrder Class:      Control Theory First Order Process

Last update: 23 May 2010                                                                                                                              Main Page of Michael Thomas Flanagan's Java Scientific Library

This class contains the constructor to create an instance of a First Order Process and the methods to use this in both continuous time and discrete control simulations.
This is a subclass of the superclass BlackBox

The First Order Process may be described by the Equation 1:

where i(t) is the input to the controller, o(t) is the output and a, b and c are constants.
Methods incorporating a Laplace transform of the first derivative assume a quiescent state before the input at zero time, i.e.
O(s)/I(s) = c/(b + a.s).

import directive: import flanagan.control.FirstOrder;

### METHODS FOUND ONLY IN THE SUBCLASS FirstOrder

 Constructors public FirstOrder() public FirstOrder(double aConst, double bConst, double cConst) First Order Constants Set the a, b and c constants public void setCoeff(double aConst, double bConst, double cConst) public void setA(double aConst) public void setB(double bConst) public void setC(double cConst) Get the a, b and c constants public double getA() public double getB() public double getC() Get the time constant, a/b public double getTimeConstant()

### METHODS INHERITED FROM THE SUPERCLASS BlackBox

 Deep Copy public FirstOrder copy() Overridden public Object clone() Overridden s-domain transfer function Get the numerator degree public int getSnumerDeg() Not overridden Get the numerator polynomial public ComplexPoly getSnumer() Not overridden Get the denominator degree public int getSdenomDeg() Not overridden Get the denominator polynomial public ComplexPoly getSdenom() Not overridden Get the s-values of the poles publicComplex[ ] getPolesS() Not overridden Get the s-values of the zeros publicComplex[ ] getZerosS() Overridden Plot poles and zeros public void plotPolesZeroS() Not overridden Set the value of the Laplace s variable public void setS(Complex sValue) Not overridden public void setS(double sReal, double sImag) Not overridden public void setS(double sImag) Not overridden Get the Laplace s value public Complex getS() Not overridden Evaluate transfer function public Complex evalTransFunctS() Not overridden public Complex evalTransFunctS(Complex sValue) Not overridden public Complex evalTransFunctS(double freq) Not overridden Evaluate transfer function magnitude public double evalMagTransFunctS() Not overridden public double evalMagTransFunctS(Complex sValue) Not overridden public double evalMagTransFunctS(double freq) Not overridden Evaluate transfer function phase public double evalPhaseTransFunctS() Not overridden public double evalPhaseTransFunctS(Complex sValue) Not overridden public double evalPhaseTransFunctS(double freq) Not overridden Bode plots (magnitude and phase) public void plotBode(double lowFreq, double highFreq,) Not overridden Inverse Laplace Transform public static Complex[ ] [ ] inverseTransform(ComplexPoly numer, ComplexPoly Not overridden public static Complex timeTerm(double time, Complex coeff, Complex constant, Complex power) Not overridden Set the input in the s-domain public void setInputS(Complex input) Not overridden Get the input in the s-domain public Complex getInputS() Not overridden Get the output in the s-domain public Complex getOutputS() Overridden public Complex getOutputS(Complex sValue, Complex input) Overridden Dead Time(transportation time) Set the dead time public void setDeadtime(double deadTime) Not overridden public void setDeadtime(double deadTime, double padeOrder) Not overridden Get the dead time public double getDeadtime() Not overridden Set the Pade order public void setPadeOrder(double padeorder) Not overridden Get the Pade order public void setPadeOrder(double padeorder) Not overridden Continuous time domain(uses the s-domain transfer function) Plot step input transient public void stepInput(double finaltime) Overridden public void stepInput(double mag, double finaltime) Overridden Plot ramp input transient public void rampInput(double finaltime) Overridden public void rampInput(double mag, double finaltime) Overridden public void rampInput(int order, double finaltime) Overridden public void rampInput(double mag, int order, double finaltime) Overridden z-domain transfer function Map s-transfer function into the z-domain public void zTransform() Overridden public void zTransform(double deltaT) Overridden Get the numerator degree public int getZnumerDeg() Not overridden Get the numerator polynomial public ComplexPoly getZnumer() Not overridden Get the denominator degree public int getZdenomDeg() Not overridden Get the denominator polynomial public ComplexPoly getZdenom() Not overridden Get the z-values of the poles publicComplex[ ] getPolesZ() Not overridden Get the z-values of the zeros publicComplex[ ] getZerosZ() Not overridden Plot poles and zeros public void plotPolesZeroZ() Not overridden Set the value of the z variable public void setZ(Complex zValue) Not overridden public void setZ(double zReal, double zImag) Not overridden Get the z value public Complex getZ() Not overridden Evaluate transfer function public Complex evalTransFunctZ() Not overridden public Complex evalTransFunctZ(Complex zValue) Not overridden Evaluate transfer function magnitude public double evalMagTransFunctZ() Not overridden public double evalMagTransFunctZ(Complex zValue) Not overridden Evaluate transfer function phase public double evalPhaseTransFunctZ() Not overridden public double evalPhaseTransFunctZ(Complex zValue) Not overridden Sampled signal Set the sampling length public void setSampleLdength(int samplelength) Not overridden Get the sampling length public int getSampleLength() Not overridden Set the sampling period public void setDeltaT(double deltaT) Not overridden Get the sampling period public double getDeltaT() Not overridden Set the sampling frequency public void setSampFreq(double sfreq) Not overridden Get the sampling frequency public double getSampFreq() Not overridden Set the sampled input and time public void setInputT(double time, double input) Not overridden Get the current value of the time public double getCurrentTime() Not overridden Get the array of times public double[] getTime() Not overridden Get the current value of the input public double getCurrentInputT() Not overridden Get the array of the inputs public double[] getInputT() Not overridden Calculate the current value of the output public double calcOutputT() Not overridden public double calcOutputT(double time, double input) Not overridden Get the current value of the output public double getCurrentOutputT() Not overridden Get the array of the outputs public double getOutputT() Not overridden Set numerical integration method public void setIntegrateMethod(int integMethod) Not overridden public void setIntegrateMethod(String integMethodOpt) Not overridden Get numerical integration method public int getIntegrateMethod() Not overridden General methods Reset all inputs, outputs and times to zero public void resetZero() Not overridden Set the name of the black box public void setName(String name) Not overridden Get the name of the black box public String getName() Not overridden

### CONSTRUCTORS

public FirstOrder()
public FirstOrder(double aConst, double bConst, double cConst)
Usage:                      FirstOrder fo = new FirstOrder();
This constructor creates a new instance of FirstOrder with the constants a, b and c in Equation 1 (above) initialised to unity.
Usage:                      FirstOrder fo = new FirstOrder(aConts, bConst, cConst);
This constructor creates a new instance of FirstOrder with the constants a, b and c in Equation 1 (above) initialised to the doubles passed in the argument list, e.g. to aConst, bConst and cConstd in the above usage.

### FIRST ORDER PROCESS CONSTANTS

SET THE CONSTANTS
public void setCoeff(double aConst, double bConst, double cConst)
Usage:                      fo.setCoeff(aConts, bConst, cConst);
Resets the constants a, b and c in Equation 1 (above) initialised to the doubles passed in the argument list, e.g. to aConst, bConst and cConstd in the above usage.

public void setA(double aConst)
Usage:                      fo.setA(aConst);
Resets the constant a in Equation 1 (above) to the value in the double passed in the argument list, e.g. to aConst in the above usage.

public void setB(double bConst)
Usage:                      fo.setB(bConst);
Resets the constant b in Equation 1 (above) to the value in the double passed in the argument list, e.g. to bConst in the above usage.

public void setC(double cConst)
Usage:                      fo.setC(cConst);
Resets the constant c in Equation 1 (above) to the value in the double passed in the argument list, e.g. to cConst in the above usage.

GET THE CONSTANTS
public double getA()
Usage:                      aConst = fo.getA();
Returns the constant a in Equation 1 (above).

public double getB()
Usage:                      bConst = fo.getB();
Returns the constant b in Equation 1 (above).

public double getC()
Usage:                      cConst = fo.getC();
Returns the constant c in Equation 1 (above).

GET THE TIME CONSTANTS, a/b
public double getTimeConstant()
Usage:                      ti = fo.getTimeConstant();
Returns the time constant, a/b.

CALCULATE THE OUTPUT IN THE SAMPLED TIME DOMAIN
public Complex getOutputT()
public Complex getOutputT(double time, Complex input)
Usage:                      output = fo.getOutputT();
Calculates and stores the output for the current stored sampled input and time.

Usage:                      output = fo.getOutputT(time, input);
Returns the output for a given sampled input and time. The sampling period, deltaT, is calculated using the previous sampling time.

### OTHER CLASSES USED BY THIS CLASS

This class is a subclass of BlackBox which uses the following classes in this library:
FirstOrder also calls directly:

This page was prepared by Dr Michael Thomas Flanagan