Skip to content
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

Add feedback control using a PID controller for magnetic bearings #1126

Draft
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

mcarolalb
Copy link
Collaborator

This pull request proposes the use of a feedback control in rotors using magnetic bearings.
It is known that magnetic forces have an unstable nature. Thus, a closed-loop control law must be implemented to ensure the stability of the system and safe operation. In modeling this magnetic force, several assumptions must be considered regarding the presence of non-linearities. These are listed below:

  • The magnetic flux is always below the saturation level of the ferromagnetic material;
  • The rotor displacements are of small amplitude compared to the bearing clearance;
  • The distribution of the magnetic flux is relatively uniform;
  • Electrical losses and the presence of eddy currents are minimal.

According to Schweitzer et al. (2009), these assumptions lead to an error of 5 to 15% in the modeling. That said, here is proposed the implementation of a feedback controller for the magnetic bearings, using a PID methodology. Instead of using the coefficients for both bearings, here we are using the magnetic force in each degree of freedom of the said bearings. The magneric force is defined as:

$$ f_{x}=\frac{4ki_{0}}{x_{0}^{2}}(\cos\alpha)i_{x}+\frac{4ki_{0}}{x_{0}^{3}}(\cos\alpha)x=k_{i}i_{x}+k_{s}x $$ $$ k_{i}\equiv\frac{4ki_{0}}{x_{0}^{2}}(\cos\alpha) $$ $$ k_{s}\equiv\frac{- 4ki_{0}}{x_{0}^{3}}(\cos\alpha) $$

The additions in the code are listed below:

  • Add the parameter ki_pid, control_signal and magnetic_force array in MagneticBearingElement() (commit f0a8fb9, d8035a0);
  • Add the method magnetic_bearing_controller() in rotor_assemply.py (commit 401b5ff, 8b09f80)
  • Add rotor_amb_example() in rotor_assembly.py (commit 19bae5d);
  • Add test_amb_controller() in test_rotor_assembly.py (commit 70a33a6);
  • Changes in the external force system of integrate_system() when using the Newmark method (commit 30a6463);

@codecov-commenter
Copy link

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 82.29%. Comparing base (18238c4) to head (4585c09).
Report is 10 commits behind head on main.

❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1126      +/-   ##
==========================================
- Coverage   83.53%   82.29%   -1.25%     
==========================================
  Files          37       38       +1     
  Lines        8092     8330     +238     
==========================================
+ Hits         6760     6855      +95     
- Misses       1332     1475     +143     
Files with missing lines Coverage Δ
ross/bearing_seal_element.py 93.00% <100.00%> (+0.10%) ⬆️
ross/rotor_assembly.py 94.37% <100.00%> (+0.28%) ⬆️

... and 2 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e01df5e...4585c09. Read the comment docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants