Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

named transfer functions #885

Closed
mzaffalon opened this issue Oct 12, 2023 · 5 comments
Closed

named transfer functions #885

mzaffalon opened this issue Oct 12, 2023 · 5 comments

Comments

@mzaffalon
Copy link
Contributor

Would you consider having named transfer functions and perhaps even moving named_ss from RobustAndOptimalControl.jl to ControlSystems.jl?

I am asking because the bodeplot gives generic names to the outputs and because for LTISystems, the default name is empty

@baggepinnen
Copy link
Member

baggepinnen commented Oct 12, 2023

I have considered implementing a new StateSpace type that includes a lot of the functionality that is currently scattered across multiple different statespace types, such as

  • Named signals
  • Delays
  • Uncertainties
  • Static nonlinearities in feedback path

Unfortunately, moving the implementation of a function from ROC to CS cannot be done in a non-breaking way if we want to export the function from CS. I'm also hesitant bringing all that code into ControlSystems, the NamedStateSpace type is still quite immature with lots of problems in how it interacts with other system types and functions not handling it properly etc. I'm thus not yet ready to bring it here and signal that it's ready and stabe. RobustAndOptimalControl is still at version 0.x, which accurately signals that it's not quite as mature as ContorlSystems is.

What exactly is the problem with bodeplot, you should be able to set the names yourself using the regular Plots keywords?

As for named transfer functions, implementing such a type would be a ton of effort, the incomplete implementation of NamedStateSpace is already very long, and it still has a lot of gaps. Do you have a use case for which converting your transfer function to a statespace system wouldn't work?

@mzaffalon
Copy link
Contributor Author

I understand.

No particular application in mind except for having the plots automatically add the label.

I also liked the ease with which one can build complicated connections used named_ss and wondered why one has to import an extra package for something that would ideally belong to ControlSystems.jl or even ControlSystemsBase.jl.

@baggepinnen
Copy link
Member

Yeah, the reason there is simply that I don't want to put experimental and immature features in a package that aims at being stable and mature :)

Control engineers are often risk averse (for good reasons, we don't want planes falling out of the sky), so trying hard to signal stability and maturity is especially important for CS.jl.

@baggepinnen
Copy link
Member

I should mention that there is nothing preventing you from implementing a package NamedTransferFuncitons.jl, as long as you extend the appropriate functions

  • ControlSystemsBase.state_names
  • ControlSystemsBase.input_names
  • ControlSystemsBase.output_names

The bodeplot will work as you want

@mzaffalon
Copy link
Contributor Author

mzaffalon commented Oct 12, 2023

Ah, and the other reason was that RobustAndOptimalControl requires anyway ControlSystems. That said, you are the best person with an overview of the packages development.

As for you other comment: one should also extend TransferFunction to have entries for system, inputs and outputs names.

@JuliaControl JuliaControl locked and limited conversation to collaborators Oct 12, 2023
@baggepinnen baggepinnen converted this issue into discussion #886 Oct 12, 2023

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants