Skip to content

Troubleshooting

Symptoms you may see while bringing up a BASIS-2, their causes and the fix for each, cheapest check first.

Start with the DriverError of the failing call and the LED: they tell transport problems (no reply, bad CRC) apart from instrument conditions (over range, valve hold).

No reply

Symptom Cause Fix
Timeout on every call, LED solid green Wrong baud rate The factory rate is 38400 8N1; if someone changed it, sweep 4800 to 115200
Timeout on every call, LED never flashes green Nothing reaches the instrument A and B swapped, DE/RE never asserted, TX and RX swapped, RS-232 model on an RS-485 bus
Timeout at one address only Wrong address DiscoverPresentAddresses() with only that instrument on the bus
Timeout after SetBaudRate() The host UART is still at the old rate Switch the host rate, then ReadIdentity() (API guide)
Timeout after FactoryRestore() Bus settings back to the factory values Power-cycle, then rediscover

Corrupted replies

Symptom Cause Fix
BadCrc or InvalidFrame now and then Noise, no termination on a long bus, no common ground 120 Ω at both ends, ground to pin 3, twisted pair
BadCrc every time at one address Two instruments at the same address Disconnect all but one, SetModbusAddress(), repeat
InvalidFrame that comes and goes The port's read() returns before all bytes arrived Wait for max bytes or the timeout (Porting)
ResponseMismatch A late reply to an earlier request Raise the timeout; flush_rx() must drop stale bytes

The instrument refuses

Symptom Cause Fix
ModbusException on a controller setting, IllegalDataAddress A meter has no control registers Expected on meters; see API guide
ModbusException on a read, IllegalDataAddress The register is not in this firmware (many were added in V3.0.0) Read the firmware version (register 25)
Setpoint writes have no effect Setpoint source is Analog SetSetpointSource(SetpointSource::DigitalUnsaved)
Setpoint jumps to 0, valve closes Communication watchdog expired Poll faster than the watchdog, or SetCommWatchdogMs(0)
The setpoint read back differs from the command A ramp is active, or the instrument rounded it SetMaxSetpointRamp(0) to disable ramping

Readings look wrong

Symptom Cause Fix
Flow 10, 100 or 1000 times off Wrong decimals passed to ReadInstantaneous() Compare with the ASCII data frame or calibration sheet (API guide)
Negative or offset flow at zero Poor tare Tare on the process gas with no flow; controllers: enable autotare
Readings inaccurate after a gas change Old gas still in the line, or not tared on the new gas Flow the new gas long enough, then tare
Readings will not settle The instrument is fast and sees real fluctuation SetFlowAveragingMs(); tune P and I (registers 519, 520)
Controller does not reach its setpoint Supply pressure too low, or a blocked port Raise inlet pressure; check for thread tape in the ports
LED blinks red fast, mass_flow_overrange set Flow above the range Reduce flow; check the full scale with ReadIdentity()
LED blinks red slowly, valve_thermal_management set A setpoint with no flow for a while Check that gas is supplied; the valve resumes when flow changes

Getting help

Open an issue at https://github.com/hardfoc/hf-alicat-basis2-driver/issues with the driver version (GetDriverVersion()), the output of ReadIdentity(), your platform and a byte trace of the failing request and reply.