Skip to content

Client Advanced Features

Jens De Ketelaere edited this page Oct 31, 2025 · 6 revisions

This page covers advanced scanning features for discovering Unit IDs and register data.

image

Scan Unit IDs

Scan a range of Unit IDs to discover which Unit IDs respond on the connected device.

image

How to Use

  1. Ensure you're connected to a device
  2. Click the COG icon (Settings menu) in the toolbar
  3. Select Scan Unit IDs
  4. A modal opens with scan parameters:
    • Min Unit ID: First Unit ID to scan (0-247)
    • Max Unit ID: Last Unit ID to scan (0-247)
    • Register Type: Select which register types to test (Coils, Discrete Inputs, Input Registers, Holding Registers)
    • Address: Test register address
    • Length: Number of registers to read
    • Timeout: How long to wait for response (ms)
  5. Click Start Scanning

Results

The scan displays a grid showing:

  • Unit ID: The scanned Unit ID
  • Register Type Columns: Shows OK or ERROR for each selected register type
    • Green "OK" chip: Unit ID responded successfully for this register type
    • Red "ERROR" chip: Unit ID failed for this register type
  • Error: Detailed error messages per function code (FC1/FC2/FC3/FC4)

Use Cases

  • Discovery: Find which Unit IDs are present on a device (e.g., Huawei SmartLogger with multiple inverters)
  • Debugging: Verify which Unit IDs are active
  • Configuration: Identify Unit IDs for connected equipment
  • Protocol Testing: Check which register types each Unit ID supports

Tips

  • Scanning 0-247 can take time (adjust timeout for speed)
  • Start with a small range (e.g., 1-10) for testing
  • Use a common register like address 0, length 1
  • Lower timeout for faster scans (but may miss slow Unit IDs)
  • Select only the register types you need to test
  • For TCP: You're scanning Unit IDs on the same IP address (device may have multiple Unit IDs)
  • For RTU: You're scanning Unit IDs on the same serial bus (multiple devices on one bus)

Important: False Negatives

If you get errors for all Unit IDs, the Unit IDs may still exist but your scan address is invalid:

  • Example: Device only has registers starting at address 3000
  • Scanning with address 0-100 will return errors for all Unit IDs
  • This gives false negatives - Unit IDs exist but appear as errors
  • Solution: Try different addresses (0, 100, 1000, 3000, 40000) or consult device documentation
  • If you don't know which registers exist, you may get errors even though the Unit ID is valid

Scan Registers

Scan an address range to find registers containing non-zero values.

image

Warning: Scanning sends many read requests to your device in quick succession. Make sure your device can handle the load - some devices may become unresponsive or slow during intensive scanning. Start with small address ranges to test.

How to Use

  1. Ensure you're connected to a device
  2. Click the COG icon (Settings menu) in the toolbar
  3. Select Scan Registers
  4. A modal opens at the top of the screen with scan parameters:
    • Start Address: First address to scan (0-65535)
    • End Address: Last address to scan (0-65535)
    • Length: Registers per read operation
    • Timeout: Response timeout (ms)
    • Register Type: Uses current register type from Register Configuration Panel
  5. Click Start Scan

How It Works

The scanner:

  1. Reads registers in chunks (based on Length parameter)
  2. Moves to the next address range
  3. Records successful reads
  4. Populates the grid with registers containing non-zero values
  5. Displays real-time progress

Results

After scanning:

  • Grid shows only registers with non-zero values
  • Useful for quickly identifying active/used registers
  • Important: Registers with value 0 are filtered out
    • Even if the register exists and 0 is a valid value (e.g., 0% percentage)
    • This is for discovery only - to find where data exists, not for complete mapping
    • If you need all registers including zeros, use regular Read with configured address/length

Use Cases

  • Mapping: Discover which registers a device uses
  • Documentation: Create register maps for undocumented devices
  • Quick Discovery: Find active registers without reading everything
  • Validation: Verify device memory layout

Tips

  • Use Length=1 for precise mapping (reads individual registers)
  • Use Length=10+ for faster scans (but less precise, may skip registers)
  • Start with small address ranges (0-100) for testing
  • Scan results populate your grid - you can then configure data types on the found registers
  • Some devices have gaps in their register layout - use smaller lengths to find all active registers
  • Errors during scanning are normal - devices return errors for non-existent registers, keep scanning
  • Don't stop the scan if you see errors - it will continue and find valid registers

Troubleshooting

No Data Appears After Read

  1. Check connection status (button should be yellow)
  2. Verify Unit ID is correct
  3. Try different register types (Holding vs Input registers)
  4. Use Scan Registers to find valid addresses
  5. Check timeout settings (increase if device is slow)
  6. Try different read lengths (some devices are strict about frame sizes)
  7. Check Transaction Log (SHOW LOG button) for error details

Scan Not Finding Unit IDs

  1. Increase timeout value (slow devices need more time)
  2. Try different register types (some devices only support specific types)
  3. Try different addresses (some devices don't have data at address 0)
  4. Verify connection and network/serial settings
  5. For RTU: Check wiring polarity (A/B or D+/D-)
  6. Check Transaction Log for error patterns

Scan Not Finding Registers

  1. Increase timeout value
  2. Try different register types
  3. Reduce scan length for more precision (try Length=1)
  4. Check device documentation for valid address ranges
  5. Verify Unit ID is correct
  6. Some devices only have non-zero values in specific ranges

Performance Issues During Scanning

  1. Increase timeout (don't make it too short)
  2. Reduce scan range (scan in smaller chunks)
  3. Use larger Length values (faster but less precise)
  4. Check network latency for TCP connections
  5. For RTU: Check baud rate settings

Next Steps

Clone this wiki locally