Optical Path Difference and
Vibration
Monitoring
System (
OVMS) uses fast accelerometers to collect fast measurements (routinely 1 kHz) from the telescope. It's primarily used for
LBTI to measure and correct telescope vibrations. It's also used by engineering teams to monitor telescope vibrations.
Where it runs
- ovms-uei - OVMS PowerDNA cube (a.k.a. RACKtangle). PowerPC running modified Linux Kernel. ssh is allowed. Located at LLTH (Lower Left Tree House), has 12 I/O boards for data collection. ssh root@ovms-uei
- ovms - Linux PC with OVMS INDI interface (only visible from LBT network/VPN). Runs the telemetry daemon, client, and the monitor GUI. ssh ovms@ovms
How it runs
- accelerometers collect data, feed them through I/IO into PowerDNA cube
- PowerDNA runs in its FPGA data collection
- Data are transmitted to PowerDNA main CPU
- Data are sent from PowerDNA as UDP multicast
- Clients collect data from UDP multicast and do what they need to do, primarily
- ovmsMonitor GUI (for big displays)
- LBTO Telemetry client (records hdf5)
- OVMS+IF/piston, used by LBTI
- OVMS+AO/TT - currently (Sep, 2018) under development by MPIA/Microgate/Arcetri/LBTO/NotreDame
Links
Software Build and Installation Notes
README.md
Note that if you stop/restart the real-time software while telemetry is being recorded (unpaused),
the telemetry collection will go down and the telemetry daemon must be restarted and telemetry must be resumed.
Testing Notes & Quick Look
Sniffer
Since the data is so voluminous, it's hard to verify. For telemetry testing, you can compare sniffer out put with telemetry (HDF5), both run for just a few seconds.
To use the sniffer on the ovms host:
%CODE{lang="bash"}%
ovmsSniffer -i 192.168.53.60 -f 1000 -s
%ENDCODE%
You can dump this to an output file and then edit the file to get a CSV:
- delete the header lines
- replace the blanks with commas
- sometimes the end-of-the-line ends up with a comma after that - delete it
- add a header line - this is tricky because the header is different based on the real-time prediction mode options
If you were running with 11 slots, you could use these files as the headers
sniff-header-11chans-noest.txt
sniff-header-11chans-estmode1.txt
sniff-header-11chans-estmode2.txt
sniff-header-11chans-estmode3.txt
Dump to CSV
You can use
h5csv
to dump the estimation mode telemetry or the accel data to CSV:
%CODE{lang="bash"}%
h5csv -u -d opd_estimation_mode3_01 201602102059.ovms.opd_estimation_mode3.h5 > 201602102059.ovms.opd_estimation_mode3.csv
h5csv -u -d internal_system_monitor_01 201602102059.ovms.internal_system_monitor.h5 > 201602102059.ovms.internal_system_monitor.csv
%ENDCODE%
Telemetry Visualization
You can use
graph_local to bring up these files and compare fields
Quick Statistics
J. Hill has a csh script that calls sniffer
(as user telescope), prints a header and does statistics.
/home/lbcobs/supportscripts/TelemetrySupport/stats_ovms.csh
or
/lbt/lbto/supportscripts/TelemetrySupport/stats_ovms.csh
UEI Setup
Output from sample program that dumps device information
model = 3012
sernum = 0047745
mfgdate = 3/30/2009
caldate = 3/30/2009
Model: 211 Option: 1
Serial: 49330
IRQ: 12
Slot: 1
Address: 0xc9080000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 211 Option: 1
Serial: 49331
IRQ: 12
Slot: 2
Address: 0xc9090000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 211 Option: 1
Serial: 49332
IRQ: 12
Slot: 3
Address: 0xc90a0000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 211 Option: 1
Serial: 49333
IRQ: 12
Slot: 4
Address: 0xc90b0000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 211 Option: 1
Serial: 49334
IRQ: 12
Slot: 5
Address: 0xc90c0000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 211 Option: 1
Serial: 164791
IRQ: 12
Slot: 6
Address: 0xc90d0000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 211 Option: 1
Serial: 164818
IRQ: 12
Slot: 7
Address: 0xc90e0000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 211 Option: 1
Serial: 48574
IRQ: 12
Slot: 9
Address: 0xc9100000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 211 Option: 1
Serial: 49158
IRQ: 12
Slot: 10
Address: 0xc9110000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 211 Option: 1
Serial: 49161
IRQ: 12
Slot: 11
Address: 0xc9120000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 211 Option: 1
Serial: 164832
IRQ: 12
Slot: 12
Address: 0xc9130000
Subsystem AI
Number of channels: 4
Resolution: 24
Maximum rate: 125000.000000
Model: 20 Option: 1
Serial: 37412
IRQ: 12
Slot: 13
Address: 0xc9140000
Subsystem DO
Number of channels: 1
Resolution: 16
Maximum rate: 10.000000
Subsystem AI
Number of channels: 16
Resolution: 24
Maximum rate: 10.000000
Model: 40 Option: 1
Serial: 47772
IRQ: 15
Slot: 14
Address: 0xc9150000
Subsystem DO
Number of channels: 1
Resolution: 16
Maximum rate: 10.000000
Subsystem AI
Number of channels: 16
Resolution: 24
Maximum rate: 10.000000
Configuration Files
There are four config files used by the processes on the ovms machine. Some of the info is just for the Ice protocol.
src/Monitor/ovmsMonitor.cfg
The monitor config file contains details for the accelerometer components. Each accelerometer has a slot and a channel, and threshold values for each.
This file is also used to create the telemetry components. If this file does not match the hardware configuration, the telemetry data will be incorrect.
# -------------------------------- #
# Component configuration: #
# #
# - number of components #
# - components name, description #
# Note: this should be quite fixed #
# -------------------------------- #
Comp.Number=9
Comp.1.Name=SX_M1
Comp.1.Description=Primary Left
Comp.2.Name=SX_M2
Comp.2.Description=Secondary Left
Comp.3.Name=SX_M3
Comp.3.Description=Tertiary Left
.......
# --------------------------------- #
# Accelerometer configuration #
# #
# - component, name, slot, channel #
# - PSD thresholds for each of the #
# frequency regions #
# - Active: if accelerometer is at #
# the moment connected with the #
# UEI (1: active) or not (0) #
# --------------------------------- #
# Number of Accelerometers
Acc.Number=45
......
# ------------------------------------- #
# Accelerometers for component 1: #
# OVMS_SX_M1 #
# ------------------------------------- #
Acc.1.Comp=1
Acc.1.Name=OVMS_SX_M1_1
Acc.1.Slot=3
Acc.1.Channel=3
Acc.1.Active=1
Acc.1.SerialNumber=25844
# 10 V per G
Acc.1.Volt2microGfactor=100000
Acc.1.Threshold.Region.1=0.8
Acc.1.Threshold.Region.2=0.8
Acc.1.Threshold.Region.3=0.5
Acc.1.Threshold.Region.4=0.8
Acc.1.Threshold.Region.5=0.8
Acc.1.Threshold.Region.6=0.8
Acc.1.Threshold.Region.7=0.8
Acc.1.Threshold.Region.8=0.8
Acc.1.Threshold.Region.9=0.8
Acc.1.Threshold.Region.10=0.8
....
accelerometer configuration for each component
Data.Update.Replot.msec=500
Uei.Update.msec=5000
Telemetry.Update.msec=5000
src/Telemetry/ovmsTelClientConfig.cfg
only Ice parameters in here, nothing application specific
src/Telemetry/ovmsTelConfig.cfg
Log level defaults to "debug". Make sure the HDF5 file directory and telemetry buffer area are available.
...
# Ice Logging system
#
# 0 = no logging
# 1 = logging in /var/log/messages
#
TelService.Logger.Level=1
...
#
# LBT Telemetry parameters
#
TelService.hdf_path_name=/lbt/telemetry_data
TelService.disk_buffer_dir=/tmp
TelService.disk_buffer_size=500000
TelService.leap_seconds_file_name=/lbt/UT/leap-seconds.list
TelService.tel_name=ovmstelemetry
src/Monitor/ovmsUEI.cfg
Make sure the IP address matches that of the
ovms
host.
# -------------------------------------- #
# This is the configuration file for the #
# UEI. #
# #
# The ovmsMonitor and the ovmsTelemetry #
# service read data from the UEI via the #
# multi-cast socket connection specified #
# here. #
# #
# !! NOTE !! #
# Restart monitor and telemetry service #
# after changing this file. #
# -------------------------------------- #
UEI.Socket.Tv.sec=4
UEI.Socket.Tv.usec=500000
UEI.Socket.Timeouts=3
UEI.Socket.Mcastgroup=226.1.1.1
UEI.Socket.InterfaceIP=192.168.53.60
#UEI.Socket.InterfaceIP=192.168.100.1
#UEI.Socket.InterfaceIP=127.0.0.1
UEI.Socket.Port=4321
UEI.Socket.Data.Slots=1
UEI.Socket.Data.Chans=4