-
Notifications
You must be signed in to change notification settings - Fork 126
Compute AMBs sensitivities #1149
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
Compute AMBs sensitivities #1149
Conversation
…(in accordance with ISO 14839-3).
…e_results() methods. Updated tutorial_part_2_2.ipynb file to include detailed instructions regarding the sensitivity calculation.
…he name of the rotor_amb_example tags.
…pute_freq_resp method doctest.
|
Hi there!
|
…vity # Conflicts: # docs/user_guide/tutorial_part_2_2.ipynb # ross/bearing/cylindrical.py # ross/rotor_assembly.py # ross/utils.py
…ação do tipo chirp e da rotação do eixo de referência dos sensores.
…nctions to the SensitivityResults class, adjustment of the method names in the SensitivityResults class that contained the word run, adaptation of the load and save methods to the new format of the SensitivityResults class, optimization of the imports in the rotor_assembly.py module, removal of the ignore parameter from the K() and C() methods, update of the integrate_system method to include the definition of the rotor object (identical to self, but without the magnetic bearings), and reallocation of the code responsible for computing the control current (compute_pid_amb) to the MagneticBearingElement class.
|
The requested changes have been implemented and are briefly described below. 1. AMB PID Control Logic EncapsulationThe PID (Proportional-Integral-Derivative) control logic for Active Magnetic Bearings has been refactored.
2. Sensitivity Analysis CalculationThe responsibility for calculating frequency-domain sensitivity functions has been shifted from the
3. Robust Serialization for Sensitivity Analysis ResultsThe
4. Adjustment of the
|
…-sensitivity # Conflicts: # ross/results.py # ross/rotor_assembly.py # ross/tests/test_labyrinth.py
…ization of the AMBs associated with the rotor, aiming to reduce the cognitive complexity of the integrate_system method.
…-sensitivity # Conflicts: # ross/rotor_assembly.py
|
Creation of the init_ambs_for_integrate method to isolate the initialization of the AMBs associated with the rotor, aiming to reduce the cognitive complexity of the integrate_system method. |
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1149 +/- ##
==========================================
+ Coverage 82.82% 83.27% +0.45%
==========================================
Files 42 42
Lines 11561 11894 +333
==========================================
+ Hits 9575 9905 +330
- Misses 1986 1989 +3
Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
Document the new run_amb_sensitivity() method added in PR petrobras#1149, which enables compliance with ISO 14839-3 and API STANDARD 617 requirements for Active Magnetic Bearing stability assessment. Includes usage example showing how to compute sensitivities and access results for AMB control system analysis.
The API STANDARD 617 document (produced by the American Petroleum Institute) requires that rotors supported by active magnetic bearings (AMBs) have their stability assessed based on a series of criteria. One of these criteria involves analyzing the sensitivity of the closed-loop control system that enables the AMB operation.
ISO 14839-3 defines how the sensitivity of active magnetic bearings should be measured. This ISO standard assumes that the control system associated with the AMB can be represented as follows:
where$G_p$ is the rotor's transfer function, $E$ is a disturbance associated with the sensor signal (which can represent white noise or a harmonic signal), and $F_d$ is a force that represents a disturbance applied directly to the rotor.
The system above can be simplified so that:
Based on these representations, the ISO standard proposes that the open-loop, closed-loop, and sensitivity transfer functions, represented by$G_o$ , $G_c$ , and $G_s$ , respectively, be computed as follows:
To compute the sensitivities associated with the rotor's AMBs, the
run_amb_sensitivity()method was implemented. Therun_amb_sensitivity()method invokesrun_time_response()and specifies that the Newmark integrator should be used. During the execution ofrun_time_response(), themagnetic_bearing_controller()method (responsible for computing the forces applied by the AMB based on the shaft position) is invoked. This method was modified to include an impulse-type disturbance signal in the shaft position (which in this case is obtained numerically but would be acquired from a sensor in a practical application).The$2 N_{AMB}$ times, where $N_{AMB}$ is the number of AMBs present in the rotor under analysis. With each execution, the disturbance signal is applied to a different degree of freedom ($x$ or $y$ ) of a different AMB.
run_time_response()method is invokedFinally, the frequency-domain equivalents of the displacement vectors produced in each execution and the disturbance signals associated with them are obtained (using the Fourier Transform). By relating both signals in the frequency domain, the frequency response representing the sensitivity is obtained.
Below is an example of using the
run_amb_sensitivity()method.The expected parameters for this method are described below:
speedfloatt_maxfloatdtfloatdisturbance_amplitudefloat, optional10e-6.disturbance_min_frequencyfloat, optionaldisturbance_max_frequency. Defaults to0.001Hz.disturbance_max_frequencyfloat, optional150Hz.amb_tagslist[str], optionalNone, all magnetic bearings in the rotor model are analyzed. Defaults toNone.sensors_thetafloat, optional45degrees.The
SensitivityResultsobject, resulting from the execution of therun_amb_sensitivity()method, contains the following attributes:sensitivities_frequenciesnp.ndarraysensitivities_absdict{amb_tag: {'x': array, 'y': array}}.sensitivities_phasedict{amb_tag: {'x': array, 'y': array}}.sensitivitiesdict{amb_tag: {'x': array, 'y': array}}.max_abs_sensitivitiesdictsensitivity_run_time_resultsdictt, and for each AMB and axis, theexcitation_signal,disturbed_signaland the originalsensor_signal(displacement from FEM model).sensitivity_compute_dofsdictnumber_dofintTo check, for example, the maximum sensitivity associated with the bearing controller
Bearing 0that regulates the shaft position in thexdirection, simply access themax_abs_sensitivitiesattribute as shown below.The attributes of the
SensitivityResultsobject are dictionaries that organize the data produced during the execution of therun_amb_sensitivity()method based on the tags of each AMB and their degrees of freedom. For example, considering that the rotor under analysis has two AMBs assigned the tagsBearing 0andBearing 1, themax_abs_sensitivitiesattribute would be defined as follows. The other attributes are defined similarly.The use of the
SensitivityResults.plot()method allows for a graphical representation of the magnitude and phase of the sensitivities associated with each AMB present in the rotor under analysis.The use of the
SensitivityResults.plot_run_time_results()method allows for a graphical representation of the time-domain data that served as the basis for computing the sensitivities. Note that if the time response diverges, inconsistent sensitivity values may be determined.Finally, it is worth noting that the file
tutorial_part_2_2.ipynbhas been updated to include detailed instructions regarding the sensitivity calculation.