@@ -363,6 +363,47 @@ TEST_CASE("Test voltage sensor") {
363
363
CHECK (sym_voltage_sensor_asym_output.u_angle_residual [2 ] == doctest::Approx (-0.2 ));
364
364
}
365
365
366
+ SUBCASE (" Angle = ± pi ∓ 0.1" ) {
367
+ RealValue<symmetric_t > const u_measured{10.1e3 };
368
+ RealValue<symmetric_t > const u_angle_measured{pi - 0.1 };
369
+ double const u_sigma = 1.0 ;
370
+ double const u_rated = 10.0e3 ;
371
+
372
+ VoltageSensorInput<symmetric_t > voltage_sensor_input{};
373
+ voltage_sensor_input.id = 0 ;
374
+ voltage_sensor_input.measured_object = 1 ;
375
+ voltage_sensor_input.u_sigma = u_sigma;
376
+ voltage_sensor_input.u_measured = u_measured;
377
+ voltage_sensor_input.u_angle_measured = u_angle_measured;
378
+
379
+ VoltageSensor<symmetric_t > const voltage_sensor{voltage_sensor_input, u_rated};
380
+
381
+ ComplexValue<symmetric_t > const u_calc_sym{1.02 * exp (1i * (-pi + 0.1 ))};
382
+ VoltageSensorOutput<symmetric_t > sym_voltage_sensor_sym_output =
383
+ voltage_sensor.get_output <symmetric_t >(u_calc_sym);
384
+
385
+ ComplexValue<asymmetric_t > const u_calc_asym{1.02 * exp (1i * (-pi + 0.1 )), 1.03 * exp (1i * (-pi + 0.2 )),
386
+ 1.04 * exp (1i * (-pi + 0.3 ))};
387
+ VoltageSensorOutput<asymmetric_t > sym_voltage_sensor_asym_output =
388
+ voltage_sensor.get_output <asymmetric_t >(u_calc_asym);
389
+
390
+ // Check sym output
391
+ CHECK (sym_voltage_sensor_sym_output.id == 0 );
392
+ CHECK (sym_voltage_sensor_sym_output.energized == 1 );
393
+ CHECK (sym_voltage_sensor_sym_output.u_residual == doctest::Approx (-100.0 ));
394
+ CHECK (sym_voltage_sensor_sym_output.u_angle_residual == doctest::Approx (-0.2 ).epsilon (1e-12 ));
395
+
396
+ // Check asym output
397
+ CHECK (sym_voltage_sensor_asym_output.id == 0 );
398
+ CHECK (sym_voltage_sensor_asym_output.energized == 1 );
399
+ CHECK (sym_voltage_sensor_asym_output.u_residual [0 ] == doctest::Approx (-100.0 / sqrt3));
400
+ CHECK (sym_voltage_sensor_asym_output.u_residual [1 ] == doctest::Approx (-200.0 / sqrt3));
401
+ CHECK (sym_voltage_sensor_asym_output.u_residual [2 ] == doctest::Approx (-300.0 / sqrt3));
402
+ CHECK (sym_voltage_sensor_asym_output.u_angle_residual [0 ] == doctest::Approx (-0.2 ).epsilon (1e-12 ));
403
+ CHECK (sym_voltage_sensor_asym_output.u_angle_residual [1 ] == doctest::Approx (-0.3 ));
404
+ CHECK (sym_voltage_sensor_asym_output.u_angle_residual [2 ] == doctest::Approx (-0.4 ));
405
+ }
406
+
366
407
SUBCASE (" Angle = nan" ) {
367
408
RealValue<symmetric_t > const u_measured{10.1e3 };
368
409
RealValue<symmetric_t > const u_angle_measured{nan };
0 commit comments