fix: Use consistent Modbus register addresses

- Fixed random register generation in signals endpoint
- Each pump now gets consistent register blocks (40011-40014, 40021-40024, etc.)
- Addresses now follow logical pattern for industrial SCADA systems
This commit is contained in:
openhands 2025-11-01 14:12:05 +00:00
parent c33f970b1c
commit 769f64ad40
1 changed files with 8 additions and 4 deletions

View File

@ -571,11 +571,15 @@ async def get_signals():
])
# Modbus signals for this pump
# Use consistent register addresses for each pump type
pump_num = int(pump_id.split('_')[1]) # Extract pump number from PUMP_001, PUMP_002, etc.
base_register = 40000 + (pump_num * 10) # Each pump gets 10 registers starting at 40001, 40011, etc.
signals.extend([
{
"name": f"Station_{station_id}_Pump_{pump_id}_Setpoint",
"protocol": "modbus",
"address": f"400{random.randint(1, 99)}",
"address": f"{base_register + 1}",
"data_type": "Integer",
"current_value": f"{random.randint(0, 500)} Hz (x10)",
"quality": "Good",
@ -584,7 +588,7 @@ async def get_signals():
{
"name": f"Station_{station_id}_Pump_{pump_id}_ActualSpeed",
"protocol": "modbus",
"address": f"400{random.randint(1, 99)}",
"address": f"{base_register + 2}",
"data_type": "Integer",
"current_value": f"{random.randint(0, 500)} Hz (x10)",
"quality": "Good",
@ -593,7 +597,7 @@ async def get_signals():
{
"name": f"Station_{station_id}_Pump_{pump_id}_Power",
"protocol": "modbus",
"address": f"400{random.randint(1, 99)}",
"address": f"{base_register + 3}",
"data_type": "Integer",
"current_value": f"{random.randint(0, 750)} kW (x10)",
"quality": "Good",
@ -602,7 +606,7 @@ async def get_signals():
{
"name": f"Station_{station_id}_Pump_{pump_id}_Temperature",
"protocol": "modbus",
"address": f"400{random.randint(1, 99)}",
"address": f"{base_register + 4}",
"data_type": "Integer",
"current_value": f"{random.randint(20, 35)} °C",
"quality": "Good",