ics-simlab-config-gen-claude/tests/fixtures/control_plan_electrical_like.json

76 lines
2.0 KiB
JSON

{
"version": "v0.1",
"hils": [
{
"name": "power_grid_hil",
"warmup_s": 2.0,
"init": {
"bus_voltage": 230.0,
"bus_frequency": 50.0,
"generator_power": 0.0,
"load_power": 0.0,
"grid_stable": 1,
"generator_cmd": 0,
"generator_setpoint": 0.0,
"load_demand": 500.0
},
"params": {
"nominal_voltage": 230.0,
"nominal_frequency": 50.0,
"voltage_tolerance": 10.0,
"frequency_tolerance": 0.5,
"generator_max": 1000.0,
"load_sensitivity": 0.01
},
"tasks": [
{
"type": "loop",
"name": "grid_dynamics",
"dt_s": 0.1,
"actions": [
{
"if": "generator_cmd > 0.5",
"then": [
{"set": ["generator_power", "clamp(generator_setpoint, 0, generator_max)"]}
],
"else": [
{"set": ["generator_power", "0"]}
]
},
{"set": ["load_power", "load_demand"]},
{
"set": ["bus_frequency", "nominal_frequency + (generator_power - load_power) * load_sensitivity"]
},
{
"set": ["bus_voltage", "nominal_voltage * (0.95 + 0.1 * (generator_power / max(generator_max, 1)))"]
},
{
"if": "abs(bus_frequency - nominal_frequency) < frequency_tolerance and abs(bus_voltage - nominal_voltage) < voltage_tolerance",
"then": [
{"set": ["grid_stable", "1"]}
],
"else": [
{"set": ["grid_stable", "0"]}
]
}
]
},
{
"type": "playback",
"name": "load_variation",
"dt_s": 1.0,
"target": "load_demand",
"profile": {
"kind": "gaussian",
"height": 500.0,
"mean": 0.0,
"std": 50.0,
"entries": 100
},
"repeat": true
}
]
}
]
}