' ----- Variable Declarations ----- Public VW(6) ' VW measurement array (6 values with thermistor) Public Freq_Hz As Float ' Frequency in Hz Public Digits As Float ' Reading in digits (Hz²/1000) - MUST BE FLOAT! Public Temp_C As Float ' Temperature (°C) Public Pressure_Lin ' Linear pressure (kPa) Public Pressure_Poly ' Polynomial pressure (kPa) Public BattV ' ----- Data Table ----- DataTable(TransducerData, True, -1) DataInterval(0, 5, Min, 10) Average(1, Pressure_Lin, FP2, False) Average(1, Pressure_Poly, FP2, False) Sample(1, Freq_Hz, FP2) Sample(1, Digits, IEEE4) ' Use IEEE4 for full precision Sample(1, Temp_C, FP2) Sample(1, BattV, FP2) EndTable ' ----- Main Program ----- BeginProg Scan(5, Min, 0, 0) ' Battery check Battery(BattV) ' Vibrating Wire Measurement - CR6 built-in VSPECT ' Wiring: VW+ to U1, VW- to U2, Therm+ to U3, Therm- to U4 VibratingWire(VW(), 1, U1, 450, 6000, 1, 0.01, "", _60Hz, ThermA, ThermB, ThermC) ' Extract values Freq_Hz = VW(1) ' Frequency in Hz Temp_C = VW(6) ' Temperature in °C ' CRITICAL FIX: Convert frequency to digits with explicit float math ' Digits = Frequency² ÷ 1000 Digits = (Freq_Hz * Freq_Hz) / 1000.0 ' Linear Pressure: P = G × (R1 - R0) + K × (T1 - T0) Pressure_Lin = G * (Digits - R0) + K * (Temp_C - T0) ' Polynomial Pressure: P = A×R1² + B×R1 + C + K×(T1 - T0) Pressure_Poly = A_coef * (Digits * Digits) + B_coef * Digits + C_coef + K * (Temp_C - T0) CallTable(TransducerData) NextScan EndProg