Using EQ's netgpib infrastructure, I was able to communicate with our PLL Marconi remotely. This will enable us to continually lock our PLL despite the crazy MHz-per-hour fluctuations in the trans beatnote frequency we see.
In the labutils/netgpibdata/ git repo, there is a function called netgpibcmd. If you know your GPIB's IP address, make sure it's on your network, plug it in to the back of the Marconi and look up the GPIB address in the Marconi's menus.
In the PSL lab, our GPIB's IP address is 10.0.1.63. Our Marconi's GPIB address was 17. So I typed in:
./netgpibcmd -i 10.0.1.63 -a 17 'CFRQ 90.0MHz'
This changed the Marconi carrier frequency to 90.0 MHz.
Other convenient commands:
'CFRQ?' queries the Marconi for its current carrier frequency. The '?' at the end of any of the following commands will return the Marconi's current settings.
'FM:DEVN 10kHz' changes the frequency modulation rails to 10 kHz/Vrms
'RFLV 13dBm' changes the radio frequency signal level to 13 dBm.
'RFLV:ON' turns on the carrier frequency output. You can also turn it off using 'RFLV:OFF'
'MODE FM' changes the mode to frequency modulation, as opposed to phase modulation 'PM' or amplitude modulation 'AM'.
'MOD:ON' turns on the modulation of the carrier frequency.
I plan to write a script called Marconi2023A_BeatnoteTrack.py which takes in a PLL control signal channel and a railing voltage.
If the control signal gets close to the rail, the script automatically adjusts the Marconi carrier frequency by a percentage of the FM modulation to get the PLL control voltage back to zero.
In order to do this, however, I need to fix our acromags. Acromag maul (10.0.1.42) should have 4 ADC channels we can use, but all of them are railed at -8 volts. Gotta see what's up.
EDIT: Fixed the acromag maul. Turns out the analog input channel names in some of the .db files were the same.
For instance, C3:PSL-PLL_CONTROL_SIGNAL and C3:PSL-VACCAN_TEMP were both reading from C3:ACROMAG_INPUT7. Since the TempCtrl.db file was initialized by iocInit last, the -8 volts I was seeing for the C3:PSL-PLL_CONTROL_SIGNAL was actually the output of the uncalibrated C3:PSL-VACCAN_TEMP. To rectify, I changed all the analog input channel names in LaserSlowControlsAndMonitors.db from C3:ACROMAG_INPUT7 to C3:ACROMAG_INPUT_MAUL7.