You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: documentation/mdbook/src/appendix_b.md
+23-23Lines changed: 23 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -575,7 +575,7 @@ As we fill out the channel table, we enter the physical device and channel that
575
575
576
576
Note that when assigning a node and direction to the voltage signal, you do not want to use the same values as for the drive point, otherwise Rattlesnake will not be able to determine which frequency response function is the drive point FRF. The author's practice is to use the same node number as the force sensor, but offset by some value (e.g. 100 in this case). In the case of multiple shakers, it will be clear which voltage corresponds to which shaker if such a convention is followed.
577
577
578
-
With the channel table set up, we can now start Rattlesnake and load the channel table. We will again select the Modal Testing environment, click the `Load Channel Table` button and load our file. We will again set the `Sample Rate` to `5120` Hz. With these parameters set, we can click the `Initialize Data Acquisition` button to proceed. Figure \ref{fig:examplecdaqmodalshakerdaqsettings} shows these settings in the Rattlesnake \ac{GUI}.
578
+
With the channel table set up, we can now start Rattlesnake and load the channel table. We will again select the Modal Testing environment, click the `Load Channel Table` button and load our file. We will again set the `Sample Rate` to `5120` Hz. With these parameters set, we can click the `Initialize Data Acquisition` button to proceed. Figure \ref{fig:examplecdaqmodalshakerdaqsettings} shows these settings in the Rattlesnake GUI.
579
579
580
580
<!--
581
581
\begin{figure}[H]
@@ -601,7 +601,7 @@ In the `Channel Selections` box, we select the Force channel as the reference.
601
601
602
602
In the `Signal Generator` portion of the window, we select the `Pseudorandom` tab to set up a Pseudorandom signal. We can truncate the `Frequency Range` from `10 -- 2000` to remove the large rigid body motion that can occur at low frequency, as well as the portion of the excitation that is in the antialiasing filters of the system. We will set the `RMS` value to `0.1` V.
603
603
604
-
With these parameters set, we can click the `Initialize Environments` button to proceed. Figure B-31<!--\ref{fig:examplecdaqmodalpseudorandomsettings}--> shows these settings in the Rattlesnake \ac{GUI}.
604
+
With these parameters set, we can click the `Initialize Environments` button to proceed. Figure B-31<!--\ref{fig:examplecdaqmodalpseudorandomsettings}--> shows these settings in the Rattlesnake GUI.
605
605
606
606
<!--
607
607
\begin{figure}[H]
@@ -681,7 +681,7 @@ We will return to the `Environment Definition` tab and set up a `Burst Random` t
681
681
682
682
In the `Signal Generator` section, we will select a `Burst Random` signal and set the `On Percentage` to `33%` to provide a 1 second burst and 2 second ring down. We will keep the other parameters the same as our previous Pseudorandom test.
683
683
684
-
Figure B-35<!--\ref{fig:examplecdaqburstrandomparameters}--> shows the parameters in the Rattlesnake \ac{GUI}. Click the `Initialize Environments` button to proceed, and return to the `Run Test` tab.
684
+
Figure B-35<!--\ref{fig:examplecdaqburstrandomparameters}--> shows the parameters in the Rattlesnake GUI. Click the `Initialize Environments` button to proceed, and return to the `Run Test` tab.
685
685
686
686
<!--
687
687
\begin{figure}[H]
@@ -713,7 +713,7 @@ We can preview the signal by clicking the `Preview Acquisition` button to ensure
713
713
714
714
Apparently the shaker adds enough damping that the structure stops ringing by approximately 1/2 second after the burst finishes. Let's therefore `Stop Acquisition`, `Disarm Data Acquisition`, and return to the `Environment Definition` tab. We will update the `Samples Per Frame` value to `5120` to achieve a 1 second measurement frame. We will also change the burst `On Percentage` to `50%`.
715
715
716
-
Figure B-37<!--\ref{fig:examplecdaqburstrandomparametersv2}--> shows the updated parameters in the Rattlesnake \ac{GUI}. Click the `Initialize Environments` button to confirm these settings, and return to the `Run Test` tab.
716
+
Figure B-37<!--\ref{fig:examplecdaqburstrandomparametersv2}--> shows the updated parameters in the Rattlesnake GUI. Click the `Initialize Environments` button to confirm these settings, and return to the `Run Test` tab.
**Figure B-43. Truncated acceleration data that we will turn into vibration specifications.**
888
888
889
-
To construct a random vibration environment, we will compute \ac{CPSD}s from this signal. While this isn't really an appropriate signal for a random vibration specification, it is good enough to demonstrate Rattlesnake's capabilities. Figure B-44<!--\ref{fig:examplecdaqcpsdspecification}--> shows the \ac{APSD}s, which are the diagonal entries of the \ac{CPSD} specification matrix.
889
+
To construct a random vibration environment, we will compute CPSDs from this signal. While this isn't really an appropriate signal for a random vibration specification, it is good enough to demonstrate Rattlesnake's capabilities. Figure B-44<!--\ref{fig:examplecdaqcpsdspecification}--> shows the APSDs, which are the diagonal entries of the CPSD specification matrix.
**Figure B-44. Diagonal entries of the random vibration specification \ac{CPSD} matrix.**
914
+
**Figure B-44. Diagonal entries of the random vibration specification CPSD matrix.**
915
915
916
916
We will also construct a transient specification that we will use to test the transient vibration control, shown in Figure B-45<!--\ref{fig:examplecdaqtransientspecification}-->.
917
917
@@ -1030,20 +1030,20 @@ In the `Control Channels` section, we will select all four acceleration channels
1030
1030
1031
1031
Finally we will click the `Load Spec` button and navigate to our random specification file `random_specification.npz` from SDynPy. The specification should then appear in the plots.
1032
1032
1033
-
With these parameters selected, we can click the Initialize Environments button to proceed. Figure B-51 <!--\ref{fig:examplecdaqrandomvibrationparameters}--> shows the parameters in the Rattlesnake \ac{GUI}.
1033
+
With these parameters selected, we can click the Initialize Environments button to proceed. Figure B-51 <!--\ref{fig:examplecdaqrandomvibrationparameters}--> shows the parameters in the Rattlesnake GUI.
**Figure B-51. Random vibration parameters specified in the Rattlesnake \ac{GUI}.**
1046
+
**Figure B-51. Random vibration parameters specified in the Rattlesnake GUI.**
1047
1047
1048
1048
At this point, we must run the `System Identification` phase of the controller. We will set the Level to `0.1 V RMS`, then click `Start` to start the system identification. A noise floor check will first be run, then the system identification follows. Rattlesnake will determine the transfer functions between the two shaker drive signals and the four accelerometer channels. When the specified number of averages have been obtained, the System Identification will stop automatically. Figure B-52 <!--\ref{fig:examplecdaqrandomvibrationsystemid}--> shows the system identification phase of the controller.
1049
1049
@@ -1084,7 +1084,7 @@ On the `Run Test` tab, we see a different interface than the one we saw for the
1084
1084
1085
1085
To start, we will set the `Current Test Level` to `-12` dB to ensure when we start the test we don't break anything. We will then step up slowly to the full `0` dB level test.
1086
1086
1087
-
We can then click the `Start Environment` button to start the test. Figure B-54<!--\ref{fig:examplecdaqrandomvibrationstart}--> shows the \ac{GUI} prior to starting the test with the test level turned down to -12 dB.
1087
+
We can then click the `Start Environment` button to start the test. Figure B-54<!--\ref{fig:examplecdaqrandomvibrationstart}--> shows the GUI prior to starting the test with the test level turned down to -12 dB.
1088
1088
1089
1089
<!--
1090
1090
\begin{figure}[H]
@@ -1099,33 +1099,33 @@ We can then click the `Start Environment` button to start the test. Figure B-54
1099
1099
1100
1100
**Figure B-54. Ready to start a random vibration test in Rattlesnake**
1101
1101
1102
-
As the test is running, the main Rattlesnake interface will show the sum of \ac{APSD}s, which is the trace of the \ac{CPSD} matrix and can be thought of as an average response of the test (Figure B-55<!--\ref{fig:examplecdaqrandomvibrationsumasds}-->). To visualize individual channels, windows can be created in the `Data Display` section of the window (Figure B-56<!--\ref{fig:examplecdaqrandomvibrationindividualchannels}-->).
1102
+
As the test is running, the main Rattlesnake interface will show the sum of APSDs, which is the trace of the CPSD matrix and can be thought of as an average response of the test (Figure B-55<!--\ref{fig:examplecdaqrandomvibrationsumasds}-->). To visualize individual channels, windows can be created in the `Data Display` section of the window (Figure B-56<!--\ref{fig:examplecdaqrandomvibrationindividualchannels}-->).
**Figure B-56. Individual channel \ac{APSD}s showing how well each channel is matching the test level.**
1128
+
**Figure B-56. Individual channel APSDs showing how well each channel is matching the test level.**
1129
1129
1130
1130
If the controller is controlling sufficiently well, we can step up the level to `0` dB as shown in Figure B-57 <!--\ref{fig:examplecdaqrandomvibrationsumasdsfulllevel}-->.
1131
1131
@@ -1155,7 +1155,7 @@ Feel free to investigate other control laws in the `control_laws.py` file, as th
1155
1155
1156
1156
Clearly, Rattlesnake has obtained relatively good control for this test.
1157
1157
1158
-
To save data from the test, we can either stream time data using the same approach used previously, or we can simply use the `Save Current Spectral Data` to save out the current realizations of the control \ac{CPSD}s, which we will call `random_vibration_spectral_results.nc4`. This is the quickest way to do comparisons between the specification and the control achieved. We can load this file with SDynPy and use SDynPy to make comparisons between the test and specification. The results are shown in Figure B-59<!--\ref{fig:examplecdaqrandomvibrationerrorsummary}-->.
1158
+
To save data from the test, we can either stream time data using the same approach used previously, or we can simply use the `Save Current Spectral Data` to save out the current realizations of the control CPSDs, which we will call `random_vibration_spectral_results.nc4`. This is the quickest way to do comparisons between the specification and the control achieved. We can load this file with SDynPy and use SDynPy to make comparisons between the test and specification. The results are shown in Figure B-59<!--\ref{fig:examplecdaqrandomvibrationerrorsummary}-->.
**Figure B-60. Selecting the \ac{MIMO} Transient environment**
1197
+
**Figure B-60. Selecting the MIMO Transient environment**
1198
1198
1199
1199
We will set the `Data Acquisition Setup` tab identical to what was used before, as shown in Figure B-50<!--\ref{fig:examplecdaqvibrationdataacquisitionsetup}-->. Click the `Initialize Data Acquisition` button to proceed.
1200
1200
1201
1201
On the `Environment Definition tab`, we will again `Load` a control law file. This time we will load the `transient_control_laws.py` file, which contains transient control laws for Rattlesnake. We will select the `pseudoinverse_control` function.
1202
1202
1203
1203
In the `Control Channels` section, we will again select all four accelerometer channels as the control channels.
1204
1204
1205
-
Finally, we will select the `Load Signal` button to load in our specification file `transient_specification.npz`. Figure B-61<!--\ref{fig:examplecdaqtransientparameters}--> shows these parameters set in the Rattlesnake \ac{GUI}. With these parameters set, we will click the `Initialize Environments` button to proceed.
1205
+
Finally, we will select the `Load Signal` button to load in our specification file `transient_specification.npz`. Figure B-61<!--\ref{fig:examplecdaqtransientparameters}--> shows these parameters set in the Rattlesnake GUI. With these parameters set, we will click the `Initialize Environments` button to proceed.
**Figure B-61. Parameters set for the Transient environment in the Rattlesnake \ac{GUI}.**
1218
+
**Figure B-61. Parameters set for the Transient environment in the Rattlesnake GUI.**
1219
1219
1220
1220
The Transient environment will also need to perform a `System Identification`. Again set the `Level` to `0.1 V RMS` and click `Start` to start the noise floor and system identification. Here it may be useful to look at the `Impulse Response`, as that is useful to understand how transient control will be performed. This is shown in Figure B-62<!--\ref{fig:examplecdaqtransientsystemid}-->.
1221
1221
@@ -1319,4 +1319,4 @@ This appendix has walked through several example tests using real hardware with
1319
1319
1320
1320
Modal testing was performed using both hammer impacts and shaker excitation. Modes were fit to the data using the SDynPy Python package.
1321
1321
1322
-
Vibration testing was performed using modal shakers. An impact hammer was used to create an environment that the vibration test would aim to replicate. Both \ac{MIMO} Random and \ac{MIMO} transient vibration tests were run, where the \ac{MIMO} Random attempted replicate a prescribed \ac{CPSD} matrix, and the \ac{MIMO} Transient attempted to replicate the time history directly. Both control schemes achieved good results.
1322
+
Vibration testing was performed using modal shakers. An impact hammer was used to create an environment that the vibration test would aim to replicate. Both MIMO Random and MIMO transient vibration tests were run, where the MIMO Random attempted replicate a prescribed CPSD matrix, and the MIMO Transient attempted to replicate the time history directly. Both control schemes achieved good results.
0 commit comments