コード例 #1
0
def test_three_level_flying_cap_leg(load_and_compile, VDC1,VDC2, iR1_expected):

    # Set source value
    hil.set_source_constant_value(name='VDC1', value=VDC1)
    hil.set_source_constant_value(name='VDC2', value=VDC2)

    for switch in range(1, 5):

        hil.set_pe_switching_block_control_mode(blockName='SwCapLeg7',
                                                  switchName="S_" + str(switch),
                                                  swControl=True)
        hil.set_pe_switching_block_software_value(blockName='SwCapLeg7',
                                                  switchName="S_" + str(switch),
                                                  value=1)
    # Start capture
    start_capture(duration=0.04, signals=['iR1'], executeAt=0)

    # Start simulation
    hil.start_simulation()

    # Data acquisition
    capture = get_capture_results(wait_capture=True)
    iR1 = capture['iR1']

    # Tests

    sig.assert_is_constant(iR1, during=(0.03 - 0.0001, 0.03 + 0.0001), at_value=around(iR1_expected, tol_p=0.01))

    # Stop simulation
    hil.stop_simulation()
コード例 #2
0
def test_synchronous_machine(convert_compile_load, Vsin_sm, f, Vf, torque,
                             Ism_exp, nr_exp):

    # Set source value
    hil.set_source_sine_waveform(name='Vsin_sm', rms=Vsin_sm, frequency=f)
    hil.set_source_constant_value(name='Vf', value=Vf)

    # Set machine torque
    hil.set_machine_constant_torque(name='SM', value=torque)

    # Start capture
    start_capture(duration=0.1,
                  signals=['Ism', 'machine mechanical speed'],
                  executeAt=1.0)

    # Start simulation
    hil.start_simulation()

    # Data acquisition
    capture = get_capture_results(wait_capture=True)
    Ism = capture['Ism']
    nr = capture['machine mechanical speed']

    # Stop simulation
    hil.stop_simulation()

    # Tests
    sig.assert_is_constant(Ism, at_value=around(Ism_exp, tol_p=0.01))
    sig.assert_is_constant(nr, at_value=around(nr_exp, tol_p=0.01))
コード例 #3
0
def test_diode(convert_compile_load, Vd1, Vd2, Vd3, f):

    # Set source value.
    hil.set_source_constant_value(name='Vd1', value=Vd1)
    hil.set_source_constant_value(name='Vd2', value=Vd2)
    hil.set_source_sine_waveform(name='Vd3', rms=Vd3, frequency=f)

    # Start capture
    start_capture(duration=0.1, signals=['Id1', 'Id2', 'Id3'], executeAt=0.2)

    # Start simulation
    hil.start_simulation()

    # Data acquisition
    capture = get_capture_results(wait_capture=True)
    Id1 = capture['Id1']
    Id2 = capture['Id2']
    Id3 = capture['Id3']

    # Expected currents
    R = 10
    Id1_exp = Vd1/R
    Id2_exp = 0
    Id3_exp = Vd3/R/np.sqrt(2)

    # Tests
    sig.assert_is_constant(Id1, at_value=around(Id1_exp, tol_p=0.01))
    sig.assert_is_constant(Id2, at_value=around(Id2_exp, tol_p=0.01))
    sig.assert_is_constant(Id3, at_value=around(Id3_exp, tol_p=0.01))

    # Stop simulation
    hil.stop_simulation()
コード例 #4
0
def test_synchronous_machine(convert_compile_load, Vsin_sm, f, Vf, torque,
                             Ism_exp, nr_exp):

    # Set source value
    hil.set_source_sine_waveform(name='Vsin_sm', rms=Vsin_sm, frequency=f)
    hil.set_source_constant_value(name='Vf', value=Vf)

    # Set machine torque
    hil.set_machine_constant_torque(name='SM', value=torque)

    # Start capture
    start_capture(duration=0.1,
                  signals=['Ism', 'machine mechanical speed'],
                  executeAt=1.0)

    # Start simulation
    hil.start_simulation()

    # Data acquisition
    capture = get_capture_results(wait_capture=True)
    Ism = np.mean(capture['Ism'])
    nr = np.mean(capture['machine mechanical speed'])

    # Stop simulation
    hil.stop_simulation()

    # Tests
    assert Ism == pytest.approx(expected=Ism_exp, rel=1e-2)
    assert nr == pytest.approx(expected=nr_exp, rel=1e-3)
コード例 #5
0
def test_diode(convert_compile_load, Vd1, Vd2, Vd3, f):

    # Set source value.
    hil.set_source_constant_value(name='Vd1', value=Vd1)
    hil.set_source_constant_value(name='Vd2', value=Vd2)
    hil.set_source_sine_waveform(name='Vd3', rms=Vd3, frequency=f)

    # Start capture
    start_capture(duration=0.1, signals=['Id1', 'Id2', 'Id3'], executeAt=0.2)

    # Start simulation
    hil.start_simulation()

    # Data acquisition
    capture = get_capture_results(wait_capture=True)
    Id1 = np.mean(capture['Id1'])
    Id2 = np.mean(capture['Id2'])
    Id3 = np.mean(capture['Id3'])

    # Expected currents
    R = 10
    Id1_exp = Vd1 / R
    Id2_exp = 0
    Id3_exp = Vd3 / R / np.sqrt(2)

    # Tests
    assert Id1 == pytest.approx(Id1_exp, rel=1e-2)
    assert Id2 == pytest.approx(Id2_exp, abs=0.1)
    assert Id3 == pytest.approx(Id3_exp, rel=1e-2)

    # Stop simulation
    hil.stop_simulation()
コード例 #6
0
def test_three_phase_T_type_converter(load_and_compile, VDC1, VDC2,
                                      iA_expected, iB_expected, iC_expected):

    # Set source value
    hil.set_source_constant_value(name='VDC1', value=VDC1)
    hil.set_source_constant_value(name='VDC2', value=VDC2)
    for switch in range(1, 5):

        hil.set_pe_switching_block_control_mode(blockName='Ttype',
                                                switchName="Sa_" + str(switch),
                                                swControl=True)
        hil.set_pe_switching_block_software_value(blockName='Ttype',
                                                  switchName="Sa_" +
                                                  str(switch),
                                                  value=1)
        hil.set_pe_switching_block_control_mode(blockName='Ttype',
                                                switchName="Sb_" + str(switch),
                                                swControl=True)
        hil.set_pe_switching_block_software_value(blockName='Ttype',
                                                  switchName="Sb_" +
                                                  str(switch),
                                                  value=1)
        hil.set_pe_switching_block_control_mode(blockName='Ttype',
                                                switchName="Sc_" + str(switch),
                                                swControl=True)
        hil.set_pe_switching_block_software_value(blockName='Ttype',
                                                  switchName="Sc_" +
                                                  str(switch),
                                                  value=1)
    # Start capture
    start_capture(duration=0.04, signals=['iA', 'iB', 'iC'], executeAt=0)

    # Start simulation
    hil.start_simulation()

    # Data acquisition
    capture = get_capture_results(wait_capture=True)
    iA = capture['iA']
    iB = capture['iB']
    iC = capture['iC']

    # Tests
    sig.assert_is_constant(iA,
                           during=(0.015 - 0.001, 0.015 + 0.001),
                           at_value=around(iA_expected, tol_p=0.01))

    sig.assert_is_constant(iB,
                           during=(0.015 - 0.001, 0.015 + 0.001),
                           at_value=around(iB_expected, tol_p=0.01))

    sig.assert_is_constant(iC,
                           during=(0.03 - 0.001, 0.03 + 0.001),
                           at_value=around(iC_expected, tol_p=0.01))

    # Stop simulation
    hil.stop_simulation()
コード例 #7
0
def test_resistor_divider(convert_compile_load, VDC, Vin, Vout, I):

    # Start simulation
    hil.start_simulation()

    # Set source value
    hil.set_source_constant_value(name='VDC', value=VDC)
    hil.wait_msec(1.0)

    # Tests
    assert capture.read('VDC') == VDC
    assert capture.read('Vin') == Vin
    assert capture.read('Vout') == Vout
    assert capture.read('I') == I

    # Stop simulation
    hil.stop_simulation()
コード例 #8
0
def test_resistor(load_and_compile, VDC, iR1_expected, Vout_expected,
                  Vin_expected):

    # Set source value
    hil.set_source_constant_value(name='VDC', value=VDC)

    # Start capture
    start_capture(duration=0.2, signals=['iR1', 'Vout', 'Vin'], executeAt=0)

    # Start simulation
    hil.start_simulation()

    # Data acquisition
    capture = get_capture_results(wait_capture=True)
    iR1 = capture['iR1']
    Vout = capture['Vout']
    Vin = capture['Vin']

    # Tests
    sig.assert_is_constant(iR1,
                           during=(0.005 - 0.000001, 0.005 + 0.000001),
                           at_value=around(iR1_expected, tol_p=0.01))
    sig.assert_is_constant(iR1,
                           during=(0.01 - 0.000001, 0.01 + 0.000001),
                           at_value=around(iR1_expected, tol_p=0.01))
    sig.assert_is_constant(Vout,
                           during=(0.005 - 0.000001, 0.005 + 0.000001),
                           at_value=around(Vout_expected, tol_p=0.01))
    sig.assert_is_constant(Vout,
                           during=(0.01 - 0.000001, 0.01 + 0.000001),
                           at_value=around(Vout_expected, tol_p=0.01))
    sig.assert_is_constant(Vin,
                           during=(0.005 - 0.000001, 0.005 + 0.000001),
                           at_value=around(Vin_expected, tol_p=0.01))
    sig.assert_is_constant(Vin,
                           during=(0.01 - 0.000001, 0.01 + 0.000001),
                           at_value=around(Vin_expected, tol_p=0.01))

    # Stop simulation
    hil.stop_simulation()
コード例 #9
0
def test_inductor_dc(convert_compile_load, VDC1, L1, IL1_0):

    # Set sources before starting the simulation
    hil.set_source_constant_value(name='VDC1', value=VDC1)

    # Start capture
    channel_list = ["IL1"]
    capture_time = 0.01

    # Expected current
    IL1_expected = VDC1 * capture_time / L1 + IL1_0

    capture.start_capture(duration=capture_time,
                          rate=1000,
                          signals=channel_list,
                          trigger_source="Forced",
                          trigger_use_first_occurence=True,
                          fileName="")

    # Start simulation
    hil.start_simulation()

    # Wait capture to finish()
    capture.wait_capture_finish()

    # Stop simulation
    hil.stop_simulation()

    # Evaluate capture results
    meas_res = capture.get_capture_results()
    measurements = meas_res["IL1"]

    # Calculate the measured current after one second
    IL1_measured = measurements[-1]

    # Check if captured current ise the ramp with the last value equal to the I_l_expected
    slope = VDC1 / L1  # slope of the linear voltage growth
    tolerance = 0.01 * IL1_expected
    assert signal.is_ramp(measurements, slope=slope, tol=tolerance)
    assert IL1_measured == pytest.approx(IL1_expected, abs=tolerance)
コード例 #10
0
def test_1ph_core_coupling(load_and_compile, VDC, iR1_expected):

    # Set source value
    hil.set_source_constant_value(name='VDC', value=VDC)

    # Start capture
    start_capture(duration=0.04, signals=['iR1'], executeAt=0)

    # Start simulation
    hil.start_simulation()

    # Data acquisition
    capture = get_capture_results(wait_capture=True)
    iR1 = capture['iR1']

    # Tests
    # Peak
    sig.assert_is_constant(iR1,
                           during=(0 + 0.000001, 0.04),
                           at_value=around(iR1_expected, tol_p=0.001))

    # Stop simulation
    hil.stop_simulation()
コード例 #11
0
def test_capacitor_electrolytic_dc(convert_compile_load, IDC2, C_el1,
                                   VC_el1_0):

    # Set sources before starting the simulation
    hil.set_source_constant_value(name="IDC2", value=IDC2)

    # Set capture
    channel_list = ["VC_el1"]
    capture_time = 0.01

    # Expected voltage
    VC_el1_expected = VC_el1_0 + IDC2 / C_el1 * capture_time

    capture.start_capture(duration=capture_time,
                          rate=1000,
                          signals=channel_list,
                          trigger_source="Forced",
                          trigger_use_first_occurence=True,
                          fileName="")

    # Start simulation
    hil.start_simulation()

    # Wait capture to finish
    capture.wait_capture_finish()

    # Stop simulation
    hil.stop_simulation()

    # Evaluate capture results
    meas_res = capture.get_capture_results()
    measurements = meas_res["VC_el1"]

    # Calculate the measured voltage after one second
    VC1_measured = measurements[-1]

    assert VC1_measured == pytest.approx(VC_el1_expected, rel=0.01)
コード例 #12
0
def test_igbt_leg(load_and_compile, VDC1, iR1_expected):

    # Set source value
    hil.set_source_constant_value(name='VDC1', value=VDC1)

    hil.set_pe_switching_block_control_mode('SwitchingLeg', "S_top", swControl=True)
    hil.set_pe_switching_block_software_value('SwitchingLeg', "S_top", value=1)
    hil.set_pe_switching_block_control_mode('SwitchingLeg', "S_bot", swControl=True)
    hil.set_pe_switching_block_software_value('SwitchingLeg', "S_bot", value=1)

    start_capture(duration=0.04, signals=['iR1'], executeAt=0)

    # Start simulation
    hil.start_simulation()

    # Data acquisition
    capture = get_capture_results(wait_capture=True)
    iR1 = capture['iR1']

    # Tests
    sig.assert_is_constant(iR1, during=(0.01 - 0.0001, 0.01 + 0.0001), at_value=around(iR1_expected, tol_p=0.01))

    # Stop simulation
    hil.stop_simulation()
コード例 #13
0
def test_5ph_core_coupling(load_and_compile, VDC1, iRA_expected, VDC2,
                           iRB_expected, VDC3, iRC_expected, VDC4,
                           iRD_expected):

    # Set source value
    hil.set_source_constant_value(name='VDC1', value=VDC1)
    hil.set_source_constant_value(name='VDC2', value=VDC2)
    hil.set_source_constant_value(name='VDC3', value=VDC3)
    hil.set_source_constant_value(name='VDC4', value=VDC4)

    # Start capture
    start_capture(duration=0.04,
                  signals=['iRA', 'iRB', 'iRC', 'iRD'],
                  executeAt=0)

    # Start simulation
    hil.start_simulation()

    # Data acquisition
    capture = get_capture_results(wait_capture=True)
    iRA = capture['iRA']
    iRB = capture['iRB']
    iRC = capture['iRC']
    iRD = capture['iRD']

    # Tests
    sig.assert_is_constant(iRA,
                           during=(0 + 0.000001, 0.04),
                           at_value=around(iRA_expected, tol_p=0.001))
    sig.assert_is_constant(iRB,
                           during=(0 + 0.000001, 0.04),
                           at_value=around(iRB_expected, tol_p=0.001))
    sig.assert_is_constant(iRC,
                           during=(0 + 0.000001, 0.04),
                           at_value=around(iRC_expected, tol_p=0.001))
    sig.assert_is_constant(iRD,
                           during=(0 + 0.000001, 0.04),
                           at_value=around(iRD_expected, tol_p=0.001))

    # Stop simulation
    hil.stop_simulation()