Overview

1  Introduction

The FOMCON toolbox for MATLAB is a fractional-order calculus based toolbox for system modeling and control design. The core of the toolbox is derived from an existing mini toolbox FOTF (“Fractional-order Transfer Functions”), the source code for which is provided in literature [1, 2, 3]. Consequently, the main object of analysis in FOMCON is a fractional-order transfer function in form

\begin{equation*} G(s)=\frac{Y(s)}{U(s)}=\frac{b_{m}s^{\beta_{m}}+b_{m-1}s^{\beta_{m-1}}+\cdots+b_{0}s^{\beta_{0}}}{a_{n}s^{\alpha_{n}}+a_{n-1}s^{\alpha_{n-1}}+\cdots+a_{0}s^{\alpha_{0}}}. \end{equation*}

FOMCON is related to other existing fractional-order calculus oriented MATLAB toolboxes, such as CRONE [4] and Ninteger [5], and this relation is depicted in Figure 1.

Figure 1. Fractional-calculus based toolbox relations

The basic motivation for developing FOMCON was the desire to obtain a set of useful and convenient tools to facilitate the research of fractional-order systems. This involved writing convenience functions, e.g. the polynomial string parser, building graphical user interfaces to improve the general workflow. However, a full suite of tools was also desired due to certain limitaions in existing toolboxes. The basic functionality of the toolbox was then extended with advanced features, such as fractional-order system identification and PI$^\lambda$D$^\mu$ design.

With all previous considerations, the motivations for developing the toolbox can now be established.

  • It is a product suitable for both beginners and more demanding users to to avaliability of graphical user interfaces and advanced functionality.
  • It focuses on extending classical control schemes with concepts of fractional calculus.
  • It can be viewed as a “missing link” between CRONE and Ninteger.
  • With the Simulink blockset the toolbox aims at a more sophisticated modeling approach.
  • Due to availability of the source code the toolbox can be ported to other computational platforms such as Scilab or Octave (some limitations and/or restrictions may apply).

In the following section, we present an overview of the toolbox structure.

2  Toolbox structure

The toolbox has a modular structure and currently consists of the following modules:

  • Main module (fractional system analysis);
  • Identification module (system identification in both time and frequency domains);
  • Control module (fractional PID design, tuning and optimization tools, as well as some additional features).

All the modules are interconnected and can be accessed from the graphical user interface as depicted in Figure 2.

Figure 2. FOMCON toolbox module overview (name of corresponding function to open the GUI is given in parenthesis)

A Simulink blockset is also provided in the toolbox allowing more complex modeling tasks to be carried out. General approach to block construction was used where applicable. The following blocks are currently realized:

  • General fractional-order operator;
  • Fractional integrator and differentiator;
  • Fractional transfer function;
  • PI$^\lambda$D$^\mu$ controller;
  • TID controller.

3  Dependencies

The toolbox relies on the following MATLAB products:

  • Control System toolbox, which is required for most features;
  • Optimization toolbox, required for time-domain identification, integer-order PID tuning and also in part for fractional-order PID tuning.

Several other tools are used directly (without change) per the BSD license:

  • optimize() function [6];
  • Several Ninteger toolbox frequency domain identification functions.

It is also possible to export fractional-order systems to the CRONE toolbox format. This feature requires the object-oriented CRONE toolbox to be installed.

References

[1]D. Xue, Y. Chen, and D. P. Atherton, Linear Feedback Control: Analysis and Design with MATLAB (Advances in Design and Control), 1st ed.. Philadelphia, PA, USA: Society for Industrial and Applied Mathematics, 2008.
[2]Y. Q. Chen, I. Petráš, and D. Xue, Fractional order control – A tutorial,” in Proc. ACC ’09. American Control Conference, 2009, pp. 1397–1411.
[3]C. A. Monje, Y. Chen, B. Vinagre, D. Xue, and V. Feliu, Fractional-order Systems and Controls: Fundamentals and Applications, ser. Advances in Industrial Control. Springer Verlag, 2010.
[4]A. Oustaloup, P. Melchior, P. Lanusse, O. Cois, and F. Dancla, The CRONE toolbox for Matlab,” in Proc. IEEE Int. Symp. Computer-Aided Control System Design CACSD 2000, 2000, pp. 190–195.
[5]D. Valério. (2005) Toolbox ninteger for MatLab, v. 2.3. [Online]. Available: http://web.ist.utl.pt/duarte.valerio/ninteger/ninteger.htm
[6]R. Oldenhuis. (2009) Optimize. [Online]. Available: http://www.mathworks.com/matlabcentral/fileexchange/24298-optimize

113 Comments

  1. Posted January 24, 2013 at 11:35 | Permalink

    I am a research scholar doing a research in fraction order control for non linear process. so i am in need of the above discussed tool box for my work.

    • Posted January 24, 2013 at 11:57 | Permalink

      The toolbox is available for download in the corresponding section of the website.

  2. Prakhar rastogi
    Posted February 12, 2013 at 13:01 | Permalink

    Hello Sir !!
    Thanx for developing this code to simulate fractional order systems. I am a research scholar working on FOPID. Need to tell you that when I simulate transfer function with delay, it is showing error. FOMCON is unable to optimize FOPID for first or second order system with time delay. Kindly look to the matter and please revert ASAP.
    Thnx n Regards

    • Posted February 12, 2013 at 23:27 | Permalink

      You can use the bug tracker to file new bugs or enhancement proposals.

    • Posted February 14, 2013 at 13:57 | Permalink

      Thank you for reporting the issue! I will investigate it further and most likely post a patch in the next few days.

    • Posted February 22, 2013 at 12:32 | Permalink

      Can you provide the system which causes the fractional-order PID optimization tool to fail? I would also like to see the error output in MATLAB command line interface. I’ve had several systems with delay as test cases, but could not isolate the problem so far.
      Also, I would like to know which version of MATLAB you are using. It may be a compatibility or feature issue.

  3. Prakhar Rastogi
    Posted March 5, 2013 at 15:20 | Permalink

    Dear Sir,
    just consider any first order transfer function with delay. and try to optimize FOPID parameters (Kp, Ki, Kd, lambda and mu) with FOMCON it’s giving me error on command window that, multiple delays connot be handled. I am using MATLAB version 7.11 (Release 2010b). kindly mail me ur e-mail id at onlyprakhar@gmail.com so that i could mail u the video of problem which i am facing.

    Thanks n Regards

    • Posted March 5, 2013 at 22:53 | Permalink

      This bug, as I suspected, is related to the used MATLAB version. I have a patch for you to try here: related forum post. Please try it and let me know if it works for you via the forum thread.

  4. Rahul kant
    Posted March 22, 2013 at 12:20 | Permalink

    hello sir,
    i would like to know the full working of your awesome software. actually i’m trying to solve time delay problems using fractional order controllers and in that regard your software stands best but due to not much knowledge i’m unable to do much. help me out. i would like to know how to use pid controller with time delayed systems.

    • Posted March 22, 2013 at 13:15 | Permalink

      Hello!
      If the system you are trying to control has a significant I/O delay, consider using a Smith predictor. There are freely accessible papers on the topic, for instance

      * http://goo.gl/03dM9
      * http://goo.gl/L61ti

      In the latter, a FOPID controller is used. In order to tune the controller, you may use the “Simulate in Simulink” feature in the fpid_optim tool, just construct a suitable Simulink diagram (note, that the internal names of the FOPID controller, saturation block, reference signal, and ports must not be changed on the diagram!)

  5. Abazar
    Posted April 1, 2013 at 11:00 | Permalink

    Dear Aleksei,

    Thanks a lot for your worthwhile efforts regarding this toolbox. I have a complicated model with s-function and I want to control my plant with FOPID controller. As I could not tune the FOPID controller with your toolbox I decided to use PSO algorithm to tune. However, every time that I run the system the Matlab/Simulink will give this error

    “Derivative input 1 of ‘Non_linear/Fractional PID controller/Fractional derivative1/Transfer Fcn1′ at time 0.05200000000000001 is Inf or NaN. Stopping simulation. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances).”

    I tried to reduce the step size, changing the solver but only the time that error occurs will change.

    I also changed the plant to a simple gain but the same error will be observed.

    I am looking forward to hearing your advises.

    Best regards,

    Abazar

    • Posted April 1, 2013 at 15:10 | Permalink

      Dear Abazar,

      This problem is related to the implementation of the fractional derivative block. I would appreciate it if you reported this issue here: http://bugs.fomcon.net/

      For now, you may try to limit the value of the order of the fractional derivative $s^{\alpha}$ to be $\alpha \le 1$.

      • Abazar
        Posted April 1, 2013 at 18:38 | Permalink

        Dear Aleksei,

        Actually the order for alfa is already 0.9933 and lambda is 0.395. However, I have the mentioned error.

        Thanks in advance.

        P.S. I reported the problem in the specific website that you mentioned.

        • Posted April 1, 2013 at 19:16 | Permalink

          Thank you. I will look into the issue as soon as I can.

          Just in case, which version of MATLAB/Simulink are you using?

          • Abazar
            Posted April 2, 2013 at 04:40 | Permalink

            Thanks in advance, Version is 7.5.0.342 (R2007b). How about simply using Fractional-order transfer function block:
            s^{1.4}+s^{0.8}+1
            —————–
            s^{0.8}
            instead of FOPID 0.6=mu, 0.8=lambda in Simulink ? Is there anyway to do this?

            Best regards,

          • Posted April 2, 2013 at 10:58 | Permalink

            You could try this. The fractional-order transfer function block, at this point, expects the polynomials to be supplied as strings. The FOMCON-specific fracpid() and poly2str() functions may be useful to automatically generate the corresponding polynomials of the FOPID controller.

          • Posted April 2, 2013 at 13:45 | Permalink

            It would also be very helpful if you could supply the model which upon simulation produces the aforementioned problem.

  6. David sharipova
    Posted April 4, 2013 at 12:11 | Permalink

    hello…I have interested identification fractional order system…I need data in frequency domain…
    please send data…

    • Posted April 4, 2013 at 12:41 | Permalink

      You can create such experimental data in MATLAB. Try for instance
      sys=rss(10,1);
      w=logspace(-3,3,100);
      r=squeeze(freqresp(sys,w));
      fid1 = ffidata(r,w);

      This will create a random single input, single output linear, time-invariant system as well as a frequency-domain identification dataset in the frequency range (0.001, 1000) rad/s. You can then investigate the fractional-order properties (if any) of this system by identifying a fractional-order transfer function from the generated data by means of the fotfrid tool.

  7. muralidhar
    Posted April 26, 2013 at 19:03 | Permalink

    Dear aleksei,
    Thanks for developing such a good software regarding fractional order systems. i m facing difficulties in tuning the parameters of fractional order PID controller in simulink by GUI models. these are the errors occurring while im running the program “Error while evaluating uicontrol Callback”,”@(hObject,eventdata)fpid_optim(‘btnOptimize_Callback’,hObject,eventdata,guidata(hObject))
    “.please refer to it and let me hear the solution.
    thanks in advance

    • Posted April 27, 2013 at 12:15 | Permalink

      Please provide the full text of the error. You can also report this problem on the forum.

      • muralidhar
        Posted April 29, 2013 at 09:04 | Permalink

        these are the errors listed below when in trying to run the GUI models,Please refer it and let me hear the solution……………………….

        Attempt to reference field of non-structure array.

        Error in fpid_optim>menuFix_Callback (line 957)
        set(handles.txtLam, ‘Enable’, expEnable);

        Error in gui_mainfcn (line 96)
        feval(varargin{:});

        Error in fpid_optim (line 24)
        gui_mainfcn(gui_State, varargin{:});

        Error in
        @(hObject,eventdata)fpid_optim(‘menuFix_Callback’,hObject,eventdata,guidata(hObject))

        Error while evaluating uicontrol Callback

        Attempt to reference field of non-structure array.

        Error in fpid_optim>menuFix_Callback (line 957)
        set(handles.txtLam, ‘Enable’, expEnable);

        Error in gui_mainfcn (line 96)
        feval(varargin{:});

        Error in fpid_optim (line 24)
        gui_mainfcn(gui_State, varargin{:});

        Error in
        @(hObject,eventdata)fpid_optim(‘menuFix_Callback’,hObject,eventdata,guidata(hObject))

        Error while evaluating uicontrol Callback

      • Posted April 29, 2013 at 09:48 | Permalink

        Which version of MATLAB are you using?

        • muralidhar
          Posted April 29, 2013 at 10:42 | Permalink

          matlab 2012

      • Posted April 29, 2013 at 12:35 | Permalink

        Are you trying to launch the GUI from the .fig file? The Fractional-order PID controller optimization tool should generally be launched using the fpid_optim command (or from other FOMCON graphical user interfaces in connection to a particular workflow).

        • muralidhar
          Posted April 29, 2013 at 12:43 | Permalink

          yeah im launching GUI from .fig file.then what is the purpose of the .fig files in GUI folder

        • muralidhar
          Posted April 29, 2013 at 13:52 | Permalink

          Dear Aleksei
          yeah im launching GUI from .fig file. Im Requesting you to explain the purpose of the .fig files in GUI folder…
          Thanks in Advance

        • Posted April 29, 2013 at 14:06 | Permalink

          MATLAB .fig files contain the general layout of the graphical user interface as well as basic properties of control elements. In MATLAB, user interfaces share the same underlying display mechanism as regular figures (function plots, etc.). GUI logic, however, is stored in corresponding .m files. In this case, there are two files: fpid_optim.fig and fpid_optim.m. The first one tells the MATLAB interpreter where the control elements of the GUI are located and what basic properties they have. In the second one, particular functional implementations for user actions are defined, e.g., if you press the “Optimize” button it will trigger a callback of a function in the fpid_optim.m file.

          • muralidhar
            Posted April 30, 2013 at 08:05 | Permalink

            Dear Alekesi
            I appreciate for your patience and Thanks for explaning such a valuble information
            Thanks

  8. muralidhar
    Posted April 26, 2013 at 20:06 | Permalink

    and also FPID optimization tool, when i execute this function its returning a table name FPID optimization tool in that table there are there are values to enter. how this table works? pls explain……..
    thanks in advance

  9. mural
    Posted May 1, 2013 at 09:35 | Permalink

    by using integer order plant model transfer function, im trying to run fpid_optimfun function but its returning the error listed below

    Undefined function or variable “Z_p”.

    Error in fpid_optimfun (line 82)
    [y, ~, t] = fpid_optimize_sim([Kp,Ki,lam,Kd,mu], …

    Error in optcheq3 (line 33)
    z = fpid_optimfun(x,G,opt)

    Please help in this regard
    thanks in advance

    • Posted May 1, 2013 at 11:18 | Permalink

      The transfer function you are using should be present in the workspace, e.g. suppose you have a variable G1 which is a state-space LTI model. Then, enter G1 into the LTI system field in the fpid_optim tool.

      • mural
        Posted May 1, 2013 at 12:00 | Permalink

        im doing the same procedure as you replied to me ,sorry to say this sir,but for fractional order transfer function as plant model it is working fine but when it comes to integer order transfer function as plant model its showing the above mentioned error……..

      • Posted May 1, 2013 at 12:27 | Permalink

        Can you provide the transfer function model causing the error?

  10. mural
    Posted May 1, 2013 at 12:33 | Permalink

    G=tf([0.8 0.5 ],[2.2 0.9 0])
    this is the model of transfer function
    this is the transfer function im calling from workspace

  11. rajinikanth.m
    Posted June 5, 2013 at 10:01 | Permalink

    dear sir,
    i am doing research on fractional order pid controller. i am using this toolbox to design fractional pid controller in matlab 2012 version. to get the step response of fotf it showing the error as below.

    Undefined function ‘varexists’ for input arguments of type ‘char’.

    Error in fotf/lsim (line 22)
    if varexists(‘pbar_show_’) && evalin(‘base’, ‘pbar_show_’)

    Error in fotf/step (line 16)
    y=lsim(G,u,t);

    >> step
    Error using step (line 12)
    Not enough input arguments.

    more over it is not supporting to get impulse response also.

    i am looking forward for your advice.
    regards
    rajinikanth.m

    • Posted June 5, 2013 at 10:15 | Permalink

      Dear Rajinikanth.M

      Please make sure that all of the FOMCON toolbox folders and subfolders are on MATLAB path.

  12. milad
    Posted July 12, 2013 at 14:21 | Permalink

    can i use it for fractional sliding mode control

    • Posted July 14, 2013 at 13:04 | Permalink

      At this time, the toolbox provides tools to work with linear systems and controls. You may, of course, use the FOMCON Simulink library to construct sliding mode controllers using the fractional derivative blocks.

      • milad
        Posted August 8, 2013 at 08:50 | Permalink

        Is there a method for solving nonlinear equations?
        I had trouble finishing my thesis!

        • Posted August 9, 2013 at 09:18 | Permalink

          Solving nonlinear equations can be done numerically in Simulink.

          • milad
            Posted August 15, 2013 at 22:01 | Permalink

            Thanks a lot Aleksei
            If I have my Simulink model files, Can I use the fractional derivative blocks in my model?

          • Posted August 20, 2013 at 16:50 | Permalink

            Yes; however, care must be taken in ensuring that an appropriate solver is chosen for simulation, especially so in case of complicated models.

          • Posted August 22, 2013 at 17:20 | Permalink

            I test the fractional block in simulation result with glfdiff(y,t,γ ) function in matlab code but The answers were different. why?

          • Posted August 23, 2013 at 13:34 | Permalink

            Could you provide more detail about how you compared the two results?

          • milad
            Posted August 23, 2013 at 19:39 | Permalink

            Igot derived from sin(t) by the function glfdiff(y,t,γ ) Also in the simulink by fractional derative block derived from it, but I had different answers.

          • Posted August 27, 2013 at 20:36 | Permalink

            The fractional derivative block uses the Oustaloup approximation method for computing the response to a signal while glfdiff(.) is a method based on the Grünwald-Letnikov approach. The methods are compatible within a (possibly short) history, so both methods have to give the same result with some tolerance.

        • milad
          Posted August 29, 2013 at 12:33 | Permalink

          thanks aleksi
          I used it for fractional sliding mode controller on fractional plant but for fractional sliding mode controlleron integer plant , initial value is not defined for a fractional integrator and answer is not correct.

          • milad
            Posted August 29, 2013 at 19:12 | Permalink

            The model can be used with both integer and non-integer block?

          • Posted August 30, 2013 at 04:15 | Permalink

            Which model?

          • milad
            Posted August 30, 2013 at 22:05 | Permalink

            for example a sliding mode controller model can be The combination both integer and non-integer block.

          • Posted August 31, 2013 at 18:49 | Permalink

            Yes, it should work.

  13. Mervin
    Posted July 18, 2013 at 10:04 | Permalink

    Dear Aleksei,
    This seems to be a very useful software in working with fractional order systems and controllers
    I tried converting a fractional order transfer function into its respective statespace form by using “tf2ss.m” (by changing the current working folder to @fotf inside which i have ” tf2ss.m” ) this function.I got this error
    “Error using tf2ss (line 34)
    Not enough input arguments.”On checking the error it refers to the default matlab function file “tf2ss.m” which means both functions are in same name but with different input arguments.

    So i changed the function name inside the “fotf” folder to “tf2ssfr” and tried simulating…I got another error
    Undefined function ‘fix_s’ for input arguments of type ‘double’.

    Error in fotf/comm_order (line 17)
    a1 = fix_s(100*a);

    Error in fotf/tfdata (line 12)
    q = comm_order(G);

    Error in fotf/tf2ssfr (line 7)
    [num,den,q] = tfdata(G);”

    So i also picked up the function files “fix_s.m”, ‘”fix.m”(referring inside “fix_s.m”) and plcaed it inside the “fotf” where my current working directory is set..but still i am getting the same error.

    Also i would like to have a tool that could convert fractional order transfer function to corresposnding discrete transfer function.

    Can u suggest me of how to get this solved.

  14. Mervin
    Posted July 18, 2013 at 19:03 | Permalink

    Dear Aleksei,
    This tool is very useful to work with Fractional order systems and controllers.I have a problem in converting fractional order transfer function model to state space form.I called the “tf2ss” (placed inside the @fotf folder)function in script after changing the current working directory to the path where “@fotf” is located but it is referring an error as shown below

    “Error using tf2ss (line 34)
    Not enough input arguments.” This error refers to the “tf2ss” function refers to the default continuous time transfer function model to state space conversion .I tried changing the file name to tf2ssfr as well the function name . In that case it shows another error referring “fix_s.m” is under defined. Although I placed “fix_s.m”,”fix.m”(The function file referred inside fix_s.m) and tf2ssfr.m all files under “@fotf” in my current working directory.But still the task s not executed.

    Also I am in need of a code to convert fractional order transfer function models to their respective discrete time models on urgent basis.

    So can u let me how to get this problem solved.

    • Posted July 20, 2013 at 09:54 | Permalink

      tf2ss() as implemented in FOMCON will only work with a fotf class variable. Example: enter the following in MATLAB: loadsets; tf2ss(G2). Does this work?
      Also, FOMCON does not currently offer discrete fractional system support. You can, however, use discrete integer-order approximations, if you wish.

  15. Emmanuel A. Gonzalez
    Posted September 3, 2013 at 14:37 | Permalink

    This toolbox is a fantastic addition to the available toolboxes for fractional-order systems. Good job to the team!

  16. muralidhar
    Posted September 5, 2013 at 20:04 | Permalink

    Dear Aleksei,
    by using fopid_optim gui tool and after optimization is completed, the results are displaying in terms of gain margin and phase margin.can you explain about these margins i.e, whether these margins corresponds to plant or controller or total closed loop system.
    Thanking you in advance

    • Posted September 6, 2013 at 11:22 | Permalink

      The gain and phase margins are derived from the open-loop frequency response of $C(j\omega)G(j\omega)$, where $C(\cdot)$ is the controller transfer function and $G(\cdot)$ is the plant transfer function.

  17. mural
    Posted September 11, 2013 at 08:59 | Permalink

    Dear Aleksei,
    in the fpid_optim GUI tool ,on what basis the gain margin,phase margin ,noise and disturbance rejection and gain variation robustness options showed in the GUI are taken. whether it taken from open loop plant frequency response?

    • Posted September 11, 2013 at 10:16 | Permalink

      These are taken from the open-loop frequency response of the control system. The selection of these parameters depends on the desired loop characteristics. You may learn about these from the excellent book listed here: http://fomcon.net/fo/overview-of-literature/

  18. mural
    Posted September 11, 2013 at 11:15 | Permalink

    Dear alekesi
    kindly tell me which chapter to refer from the book you mentioned above

    • Posted September 11, 2013 at 12:19 | Permalink

      Chapter 7. The the implementation of what is described there is slightly different in the FOPID optimization tool. For instance, we have the “Critical frequency and gain variation robustness” settings in which you should specify the required critical frequency $\omega_c$ and also $\omega_h$ which is the highest frequency such, that the open-loop phase response of the control system in the range $(\omega_c^2/\omega_h, \omega_h)$ be flat.

    • Posted October 8, 2013 at 08:10 | Permalink

      In the upcoming version of the toolbox (0.4a), the behavior of the “Gain variation robustness” criteria has been changed: it will be enough to set only the critical frequency (phase flatness property will be considered by the tool automatically without the need to specify any additional frequency range).

  19. mural
    Posted September 11, 2013 at 12:51 | Permalink

    Dear Aleksei,
    i want to design a fractional order controller for integer order plant. please tell me the appropriate tool in fomcon(except fpid_optim GUI tool).

    • Posted September 11, 2013 at 14:43 | Permalink

      No other tool is available for this purpose at this time.

      • mural
        Posted September 12, 2013 at 08:09 | Permalink

        thank you aleksei

      • Posted September 12, 2013 at 13:04 | Permalink

        There are, of course, plans to prepare a much more elaborate tuning tool within FOMCON. Unfortunately, it will not make this year’s update of the toolbox that is due end of September.

  20. muralidhar
    Posted September 12, 2013 at 12:11 | Permalink

    Dear Aleksei
    i want to know, generally how many iterations should be done in fpid_optim GUI tool

    • Posted September 12, 2013 at 13:01 | Permalink

      The number of iterations generally depends on a few factors like, for instance, the initial set of the FOPID controller gains/powers. Sometimes it is simply not possible to find a controller under the constraints provided by the user. The optimization algorithm may or may not stop automatically, that is why it is possible to limit the number of optimization steps (iterations).
      For example, if a poor initial point on the FOPID controller parameter space is chosen—that is, such, that leads to a local minimum of the performance index objective, then, depending on the optimization log that is output to the MATLAB command window, the user may wish to terminate the optimization process and choose another point—though currently this is only possible by using CTRL+C key combination.

  21. muralidhar
    Posted September 19, 2013 at 10:42 | Permalink

    Dear Aleksei,
    in fotfid gui tool, in option Source data structure, FIDATA coloum is not taking any model. please explain FIDATA object and how to enter a model in FIDATA object coloum? wheathr it takes from direct from workspace

    • Posted September 19, 2013 at 13:49 | Permalink

      Yes, the relevant fidata object must already be present in the workspace. You can also refresh the list once such objects are added/removed. Since we are dealing with SISO systems, in order to create the object you will need 1) experimental input vector $u$; 2) experimental output vector $y$; and 3) regularly spaced time instance vector in form $t=[0; t_{max}]$. Then you can create a fidata object id1 by using id1=fidata(y,u,t).

  22. Ammar
    Posted October 4, 2013 at 03:04 | Permalink

    dear sir
    i am interested in fractional PID controller implementation and try to realize the controller using Fomcon and try the fpid_optim gui ,its work properly but my question is that when we optimize step response show excellent improvement but when we take values and realize the controller in state space form its become huge matrix with nearly 38 states which is vary difficult to implement ,my question is how to reduce its order and states i check the model of DC motor a research paper already implemented using fractional order controller ,but the order is higher to implemented practical kindly guide me how to realize it practically
    thanx

    • Posted October 4, 2013 at 19:06 | Permalink

      Dear Ammar,
      It is possible to implement this controller as a digital filter, e.g. IIR. It seems that Oustaloup’s recursive filter, the order of which you can set (it is $2N+1$ in FOMCON when the order of approximation is $N$), can be used to compute continuous-time zeros and poles. Then one may use a suitable discretization method. See the impid tool in FOMCON.

      • Ammar
        Posted October 5, 2013 at 20:17 | Permalink

        dear sir thanks a lot i tried and check the results the state space model is reduced enough but when we plot transfer function in impid it becomes huge number of poles and zeros than how its state space model is such reduced.
        secondly how to choose the value of N for a system?

      • Posted October 7, 2013 at 12:19 | Permalink

        There is a paper by Prof. Alain Oustaloup of the CRONE research group: “Frequency-Band Complex Noninteger Differentiator: Characterization and Synthesis”. You may find several equations there relating the order $N$ to the desired characteristics of the approximation. The one that you may be interested in is the following \begin{equation}N=\frac{\log{\omega_N/\omega_0}}{\log{\alpha\eta}}.\end{equation}
        Here, $\alpha$ and $\eta$ are called recursive factors and $\alpha\eta>1$ is the constant ratio between consecutive zeros/poles. Other parameters involved in the calculation of $N$ in this case are $\omega_0=\alpha^{1/2}\omega_u$, $\omega_N=\eta^{-1/2}\omega_h$, and $\omega_u=\sqrt{\omega_b \omega_h}$ for the frequency range of approximation $(\omega_b, \omega_h)$.

  23. ahmed
    Posted October 8, 2013 at 17:57 | Permalink

    dear sir
    i have probleme with the closed-loop step reponses with the FO-[PI] controller,the first ordre plus time delay system P(s)=exp(-Ls)*(1/Ts+1) and the controller C(s)=(kp+ki/s)^lamda.
    thanx

    • Posted October 8, 2013 at 19:51 | Permalink

      Could you kindly elaborate? What would the problem be?

  24. Posted December 18, 2013 at 13:48 | Permalink

    sir i am doing project in fopid i want the method to find out lamda(integral term) and delta(derivative term) can u give me suggestion as early as possible as i have strucked with that.thanking you

  25. Posted December 18, 2013 at 18:13 | Permalink

    sir i am doing project on fopid. can u help me in finding lamda(integral term) and delta(derivative term) and give me resources how to find out the terms please as my project stopped due to that……thanking you

  26. Posted December 19, 2013 at 15:04 | Permalink

    dear sir,
    i am doing project on fopid, but i was strucked at finding the parameters lambda and delta can u please help in finding this i will be thank full to you..

    • Posted December 20, 2013 at 18:30 | Permalink

      You may use the FPID Optimization tool: fpid_optim

      Sorry for the delay in your comments appearing.

  27. simsim
    Posted February 20, 2014 at 03:48 | Permalink

    Hi,
    I am a beginner in FOPID. Exactly I don’t know how to use fomcon toolbox in MATLAB7.I mean I want to use a FOPID controller for a 1st order system and want to see the difference between integer PID response and non-integer PID response and compare the both.fpid_optimize simulink is not opening at all.Please advise.

    Thanks.

    • Posted February 20, 2014 at 10:41 | Permalink

      Hello,
      Exactly which version of MATLAB are you using? FOMCON may not work in early 7.x versions.
      First, make sure you have FOMCON properly installed—that is you have it copied into a stationary directory, added all FOMCON folders/subfolders to MATLAB path and saved the path for future sessions. Then, type fpid_optim in MATLAB. A GUI should then appear. You can work with FOPID optimization from there.
      If you would prefer to write scripts, use the command-line version of the optimization tool. It is, as you have correctly pointed out, run from a function fpid_optimize(). Please read the docs on how to use it. Several other data structures are needed for it to work correctly.

      • simsim
        Posted February 25, 2014 at 16:26 | Permalink

        Thank You Very much Sir…I used R2010a Matlab & I am now able to find the FOTF viewer and so on…I will get back if I get further queries…

  28. sakthi
    Posted February 28, 2014 at 08:09 | Permalink

    Dear Aleksei
    i have to design fractional order pid controller for two area AGC (automatic generation control) under deregulated power system. i am using fomcon toolbox, in which i had used fractional pid blocks from fod.mdl model. i am very new to this. problem is that i don’t know how to optimize or tune the parameters of fractional pid (kp,ki,kd,lamda,mu). looking forward to your reply.
    Thanks in advance………

    • Posted March 1, 2014 at 15:22 | Permalink

      Kindly refer to the book: http://fomcon.net/fo/overview-of-literature/
      and references therein.

      • sakthi
        Posted March 4, 2014 at 06:46 | Permalink

        Thank you for your replay sir

      • sakthi
        Posted March 7, 2014 at 07:29 | Permalink

        Dear Aleksei
        I had used fractional pid blocks from fod.mdl model. In that block, masked LTI consist “G1″. Is “G1″ is the transfer function of the whole plant ?

        Thanks in advance……..

        • Posted March 7, 2014 at 09:12 | Permalink

          In Simulink, Oustaloup approximation is used in all FOMCON blocks. Which one do you mean in particular? The continuous FOPID is comprised of fractional-order operator blocks, while the discrete-time one uses a single LTI approximation of the controller.

          • sakthi
            Posted March 10, 2014 at 08:47 | Permalink

            Aleksei
            I have used fractional order PID controller (continuous) block taken from fod.mdl for two area power system. To get better results i have to optimize it (kp,kd,ki,lamda,mu). when i tried to optimize fractional order PID block with PSO, i found error with passing the values to LTI block.
            looking forward to ur reply sir
            Thanks in advance…………

          • Posted March 10, 2014 at 09:11 | Permalink

            Kindly elaborate. How exactly are you passing the values and what sort of error are you getting?

          • sakthi
            Posted March 10, 2014 at 10:16 | Permalink

            Sir,
            I’ve used set_parameter function of MATLAB to pass the values generated in PSO to the simulink block.The error I’m facing when i simulate the mdl file is ‘annotation does not have a parameter’

          • Posted March 10, 2014 at 15:17 | Permalink

            I am using MATLAB R2012b to do the following: (1) Create a new model “test_sp.slx”; (2) Drag a “Fractional PID controller” block from the FOMCON library onto it; (3) Issue the following command in MATLAB: set_param('test_sp/Fractional PID controller','Kp','3.14'). The result is that the value of $K_p$ inside of the FOPID controller block changes to $3.14$. Is this similar to what you are trying to achieve?

          • sakthi
            Posted March 11, 2014 at 06:16 | Permalink

            Sir,
            Thank you for explaining elaborately. I will try this and reply you soon

  29. ehsan
    Posted March 31, 2014 at 09:37 | Permalink

    hi dear alexi,
    i just need to calculate step response of fractional order system in matlab,in my mfile.
    really i need to know whats the command of this calculate.
    and also need to calculate step response characteristic like overshoot and… .
    is fomcon do this for me?
    thanks to your help so much.

    • Posted March 31, 2014 at 11:09 | Permalink

      Depending on the complexity of your system I would suggest using Oustaloup approximations (function oustapp() in FOMCON, type help oustapp in MATLAB command line for details). You will then get an approximation of your fractional-order system in terms of a conventional LTI system. The Control System function step() can then be used which provides a bunch of information about step response characteristics. It is, of course, vital to choose suitable approximation parameters.

      Here is an example you may try in FOMCON.

      loadsets; % Load example systems
      Z2 = oustapp(G2); % Convert second system to i/o LTI
      step(Z2); % Use CS Toolbox to plot the response
      hold on;
      step(G2,0:0.01:50); % Response of original fractional system
      

      Notice, that overshoot information etc. is only provided for the LTI approximation.

      You can also “export” fractional-order transfer functions as Oustaloup filter LTI objects directly from the FOMCON front-end (launch it by calling either fotf_gui or fomcon from MATLAB.)

  30. s,vamsi
    Posted April 14, 2014 at 09:15 | Permalink

    how to load parameters to subsystems of interger order andderivative order in simulink block

    • Posted April 14, 2014 at 11:01 | Permalink

      Kindly elaborate on what you are trying to achieve.

  31. sakthi
    Posted April 21, 2014 at 12:05 | Permalink

    thanks a lot for your help sir. I had done my PG project successfully.

  32. Hala
    Posted May 9, 2014 at 09:59 | Permalink

    Dear Aleksei,
    I have tried the following transfer function
    G = fotf([2 1 -5], [1.7 0.3 0], [1 1], [0.5 0], 5)
    I received the error
    Undefined function ‘fomcon’ for input arguments of type ‘char’.
    Error in fotf/display (line 5)
    config = fomcon(‘config’);
    note (I used matlab version 8.1.0.604)

    • Posted May 9, 2014 at 10:13 | Permalink

      Dear Hala,
      This is most likely due to the fact, that the fomcon function is currently not on the MATLAB path. Please make sure that you add all of FOMCON toolbox folders onto MATLAB path and that you save the path afterwards.

      • Hala
        Posted May 9, 2014 at 11:03 | Permalink

        Dear Aleksei,
        Thank you very much for the help and best regards .

  33. anitha
    Posted May 31, 2014 at 08:21 | Permalink

    sir,
    how to drag a fpid from fomcon library as mentioned in for comment posted on march10,2014…can you explain..when fomcon library is opened,i.e FOTF viewer page is opening..what should I do to create a fractional order pid block?

    • Posted June 3, 2014 at 07:36 | Permalink

      Use the Simulink Library Browser and locate the FOMCON library in the left pane. Then create a new model and drag the block onto it:

      FOMCON Library: FOPID block

      • anitha
        Posted June 9, 2014 at 17:27 | Permalink

        sir,whenfpid I open the fomcon toolbox,as you have shown,i could find only two blocks both being discrete fpid.I didn’t find the other blocks as shown in the image.Iam using matlab 2009 version..Is the problem with this version.please suggest
        thnking you

  34. anitha
    Posted June 9, 2014 at 17:27 | Permalink

    sir,when I open the fomcon toolbox,as you have shown,i could find only two blocks both being discrete fpid.I didn’t find the other blocks as shown in the image.Iam using matlab 2009 version..Is the problem with this version.please suggest
    thnking you

  35. anitha
    Posted June 10, 2014 at 07:03 | Permalink

    thank you sir..

  36. Sakshi
    Posted June 20, 2014 at 13:43 | Permalink

    Sir,
    Is the toolbox compatible with Matlab 7.10.0 (R2010a)? When I am using the fomcon gui it gives error and doesnot simulate. Even the example
    G1 = fotf([1 1], [0.5 0], 1, 0);
    G2 = fotf([1 1 1], [2.5 1 0], [1 1], [0.3 0]);
    G3 = fotf([1 1], [0.1 0], 2, 0);
    G4 = fotf([15 1], [1 0], 1, 0);
    G = feedback(G1*(G2-G3), G4);

    gives error:
    ??? Reference to non-existent field ‘ioDelay’.

    Error in ==> fotf.plus at 13
    if G1.ioDelay == G2.ioDelay

    Error in ==> fotf.minus at 13
    G=G1+(-G2);

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*


9 × = fifty four

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>