Giter Site home page Giter Site logo

fomcon-matlab's Introduction

View FOMCON Toolbox for MATLAB on File Exchange Open in MATLAB Online

FOMCON Toolbox for MATLAB

FOMCON toolbox for MATLAB.

Version compatibility: R2014b+

May be compatible with MATLAB down to R2010a as well (if you need a compatible Simulink library, it can be created by exporting it in an older format from a newer Matlab release).

Installation Instructions

Prerequisites

The following MATLAB toolboxes are required for FOMCON to work:

  • Control System toolbox;
  • Optimization toolbox. However, even if the Optimization toolbox is not available in the MATLAB installation, it is still possible to use certain toolbox features.

Installation

Automatic

In recent MATLAB versions, locate the Add-On Explorer:

addon-explorer.png

There, search for FOMCON:

Click on the title and then on Add. Agree to the terms and install the toolbox. You're done!

Manual, for older MATLAB versions

The installation currently comprises the following steps:

  • Decompress the zipped folder into a directory of your choice, e.g. *C:\fomcon*
  • Setup the directory in your MATLAB path. In the MATLAB, go to File > Set Path... and click on Add with Subfolders.... Now, select the directory that contains the fomcon folder.
  • Save the path for future MATLAB sessions (usually administrator priveleges are necessary). This completes the installation.

Checking if installation succeeded

In MATLAB, type fomcon. If you can see a graphical user interface, the toolbox has been successfully installed.

Support

If you encounter problems, please open corresponding issues on GitHub: Issues · extall/fomcon-matlab · GitHub

Support is also offered through the official website at http://fomcon.net/ through the documentation.

Contribute to FOMCON development

The easiest way to do this, is by starring ⭐ the project on github (top right corner). This gives the toolbox more exposure and potentially attracts interested parties who can contribute to the development of the toolbox.

Other than that, PR can also be considered. At the moment, coding practice guidelines are not available for the toolbox. For that reason, PRs may take a significant time to review.

Potential contributions that are being sought at the moment:

  • Writing tests for low-level functions. For a long time the toolbox had been tested mostly in an ad-hoc fashion, by considering specific applications, and if some problems arose, they were tended to then and there. However, to increase trust in the toolbox, automatic tests could also be deployed for such features like polynomial to string conversion, certain utilities, and so on.

Citing FOMCON Toolbox in Academic Works

If you find FOMCON useful in your research projects, kindly cite one or more of the following references choosing the one that is most suitable for your particular research topic. This helps exposing the toolbox to potential future users.

Newest book chapter about FOMCON:

  • A. Tepljakov, E. Petlenkov, and J. Belikov, FOMCON toolbox for modeling, design and implementation of fractional-order control systems. Applications in Control. DOI: https://doi.org/10.1515/9783110571745-010. De Gruyter, Berlin/Munich/Boston, 2019.

Older publications:

  • A. Tepljakov, E. Petlenkov, and J. Belikov, “Gain and Order Scheduled Fractional-order PID Control Of Fluid Level in a Multi-Tank System,” in 2014 International Conference on Fractional Differentiation and its Applications, 2014, pp. 1–6.
  • A. Tepljakov, E. Petlenkov, and J. Belikov, “Closed-Loop Identification of Fractional-order Models using FOMCON Toolbox for MATLAB,” in Proc. 14th Biennial Baltic Electronics Conference, 2014, pp. 213–216.
  • A. Tepljakov, E. Petlenkov, and J. Belikov, “Efficient analog implementations of fractional-order controllers,” in Proc. of the 14th International Carpathian Control Conference (ICCC), 2013, pp. 377–382.
  • A. Tepljakov, E. Petlenkov, J. Belikov, and J. Finajev, “Fractional-order controller design and digital implementation using FOMCON toolbox for MATLAB,” in Proc. of the 2013 IEEE Multi-Conference on Systems and Control conference, 2013, pp. 340–345.
  • A. Tepljakov, E. Petlenkov, J. Belikov, and M. Halás, “Design and Implementation of Fractional-order PID Controllers for a Fluid Tank System,” in Proc. 2013 American Control Conference (ACC), Washington DC, USA, 2013, pp. 1780–1785.
  • A. Tepljakov, E. Petlenkov, and J. Belikov, “FOMCON: a MATLAB toolbox for fractional-order system identification and control,” International Journal of Microelectronics and Computer Science, vol. 2, no. 2, pp. 51–62, 2011.
  • A. Tepljakov. (2012) FOMCON: Fractional-order Modeling and Control. [Online]. Available: http://www.fomcon.net/

Your support is appreciated!

fomcon-matlab's People

Contributors

extall avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

fomcon-matlab's Issues

MATLAB fcn using oustaloup approximation doesn't work

image_2024-05-27_145413267
Hello everyone
Im trying to implement a fractional integrator for processor in the loop simulation in MATLAB, but the software and the card i am using only supports data of type single, which fomcon fractional integrator does not provide, to solve this, i tried using the approximation of oustaoup inside a MATLAB fcn block in simulink, I've managed to make the simulation run, but the output of the fractional integrator is a constant negligible value which nowhere close to the output of the fractional integrator block.

Modfiy the `fidata` object to being able to include additional meta information about signals like measurement units

Currently, the native object for storing time series data intended for “fractional identification” — fidata — does not store any meta information about the given time series outside of a timestamp of when the object was created.

This is somewhat limiting for real-life applications, and should be updated, namely more metadata should be supported, such as

  • Measurement units for both input and output series
  • Time units (by default, seconds are assumed)
  • Comments about the dataset — “dataset info” for storing related user notes

Since the implementation of this feature will be added to backlog, users are welcome to suggest other fields the object could have.

Error due to a field missing from the info.xml file with MATLAB R2022a

With the toolbox installed, upon launch of MATLAB R2022a, the following error is displayed in the MATLAB workspace:

Unrecognized field name "help_location".

Error in matlab.internal.doc.project.buildToolboxStruct>getSourceFileStruct/updateDocSourceFileStruct (line 88)
        xmlFileStruct.help_location = fixSlashes(xmlFileStruct.help_location);

Error in matlab.internal.doc.project.buildToolboxStruct>getSourceFileStruct (line 76)
            updateDocSourceFileStruct;

Error in matlab.internal.doc.project.buildToolboxStruct>getSourceFileStructArray (line 55)
        fileStruct = getSourceFileStruct(file);

Error in matlab.internal.doc.project.buildToolboxStruct (line 3)
    docFileStructArray = getSourceFileStructArray(docFiles);

Error in matlab.internal.doc.project.getCustomToolboxes (line 12)
        customToolboxes = matlab.internal.doc.project.buildToolboxStruct(docFiles,demoFiles);

Error in matlab.internal.doc.updateCustomDocContent (line 2)
    matlab.internal.doc.project.getCustomToolboxes;

The reason for this is a missing field (help_location) in the info.xml file.

Fractional order transfer function

Is there a way to pass the transfer function parameters via command window or a m file? As of now, I can't write a variable in the block, unlike the regular Simulink transfer function block.

fractional version problem 2

sorry for typing again
I used the fod_v2_R2012b.zip you give me install in matlab 2012a. when i set the lanbda from fractional PID controller. i got a message from UI . It shows an error said "Error in 'untitled/ Fractional PID controller':Intialization commands cannot be evaluted --> Error: File fotf.m Line:1 Column 10 A class definition must be in an "@"directory". What is the problem about this message.is it still the version problem about it?(when i use the library of the block it shows ??? on it).
thank you for your patience.

GUI issue with MATLAB on Windows

There is an issue with text fields in, e.g., fotfid identification tool in MATLAB R2021a/b (other versions not yet checked) running on Windows platform. Specific details are being investigated. But if something like this is seen (see image), it is that bug.

example_issue

fomcon version problem

I have a motor control block only use on matlab 2012a to control it. Is there have a lowest version to cover the 2012a matlab?

Issue with Fractional PI Controller

Hi

I have noticed that the command isstable(SYS) always showing zero for the fractional PI controller, which means that the system is unstable.

I have changed the open-loop and closed-loop transfer functions with many others, and I have optimized the fractional exponent. However, every time I run that command, it shows me an unstable system!

Even if I plot the response for 100000 seconds, it shows me a perfect response without any oscillation or divergence!

I think that there is an issue with the fractional PI controller. Also, the following unsolved issue emphasizes my point about the fractional PI controller:
#3

Thanks

Discrete FPID Block in Simulink

Hi,
I was using Discrete Fractional PID block in my simulink model for controlling a plant. Once I used the pre given values then results are OK. But when I use GA algorithm to optimize it's parameters then Discrete Fractional PID block doesn't work as per expectation and it gives different result even on the previous values.
When I delete the block and use new block it again give correct values and this loop continues....

Please have a look into this issue. I can even show you the problem through skype or some other mean.

Looking forward to hear from you.

With Regards
Sachin Sharma

Solver for Fractional Order System

Sir,

I wanted to check which fixed-step size solver would be appropriate for using FOMCON. The ones mentioned in your paper are variable step size and would not be applicable to my code.

I have tried running the code with ODE-4 Runge-Kutta, however, that results in an error.

Fractional PID results not as intended

Im trying to work with the toolbox with a water tank system to test my fractional PI controller. It was producing weird results and even when I tried to test it with an integer pi by setting lambda=1 I dont get the same behavior that I get with my integer PI. I assume there is some problem in the fractional integration that I cant figure out. I need help

Provide coherent documentation for FOMCON v1.50.x

Currently, the biggest source of information about FOMCON, its usage, and use cases can be obtained from the following sources:

However, a true FOMCON manual is still nonexistent. Hence, this issue. The manual ought to target v1.50.x, because of the planned changes to FOMCON v2.x.

Considering plant delay in @fotf/mtimes.m

In @fotf/mtimes.m at line #22 only the .ioDelay parameter of the TF class is used. However, in MATLAB the TF class contains three following fields: .IODelay, .InputDelay, and .OutputDelay. The first two can store the information about a delay, depending on which calculation methods have been used. My suggestion is to check both of these parameters.

`fotf` object initialized incorrectly if input arguments `a`, `na`, `b`, and `nb` passed as column vectors rather than row vectors

Simple test that results in an error:

G = fotf([1;2], [0.5; 1], [4;5], [1;0])
bode(G);

One needs to be careful here, because the first line will actually execute successfully and display the fotf object, but running bode to plot its frequency characteristics will fail in the second line.

The fix is simple, convert all input argument vectors into row vectors and/or perform additional checks of input arguments.

The solution will be introduced in the next bugfix release.

Model Identification

Is there a way in the FOMCON toolbox to directly identify a non-commensurate fractional order model of a given structure not necessarily with unity gain from a given higher order integer model i.e. without resorting to any input-output data?

Integer Order System using FOMCON

Thank you Aleksei for the useful toolbox. I wonder why the results using lsim are not the same for X and Z below. Would really appreciate your advice.

X=fotf([1 1], [1 0], 1, 0)
Fractional-order transfer function:
1


s+1

Z=tf(1,[1 1])
Z =
1


s + 1

yX=lsim(X,[1;0;0],[0:2])
yX =
0
0
0

yZ=lsim(Z,[1;0;0],[0:2])
yZ =
0
0.6321
0.2325

yX=lsim(X,[0;1;0],[0:2])
yX =
0
0.5000
0.2500

yZ=lsim(Z,[0;1;0],[0:2])
yZ =
0
0
0.6321

Depending on kind of install of FOMCON, `poly2str` function may get shadowed by an obsoleted Control System toolbox function

The issue is that depending on MATLAB path configuration, the FOMCON-specific function poly2str may be shadowed by an obsoleted function from the Control System toolbox function having the same name. This seems to always happen with the Add-on installation of the toolbox.

The net result is that when the function is called internally in FOMCON, the obsoleted function gets invoked instead. Because the signatures are similar (and there is no check for types), this results in poly2str of CST to generate gibberish instead of the actual output that should have been produced by the FOMCON function.

To see the order in which the functions are invoked, type
which -all poly2str

If the obsoleted function is shown first in the list, you will be affected by this bug. The solution is to install FOMCON manually by downloading the code from github and adding all of its files/folders to path. That way, the correct function will be called.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.