示例#1
0
def engine_demo_basic(engine_power, desired_rpm):
    """Turn on the engine, set the desired_rpm to the passed value for 20 seconds, and shut down the engine.

    You must access parameters through their ".value" property.
    """
    # You can access a channel with a ChannelReference
    engine_power_chan = ChannelReference('Aliases/EnginePower')
    desired_rpm_chan = ChannelReference('Aliases/DesiredRPM')
    engine_power_chan.value = engine_power.value
    desired_rpm_chan.value = desired_rpm.value
    wait(DoubleValue(20))
    engine_power_chan.value = False
    desired_rpm_chan.value = 0
示例#2
0
def arithmetic_shift_right_to_channel_ref():
    a = DoubleValue(0)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = 5.0
    localhost_wait()
    a.value = 1 >> b.value
    return a.value
示例#3
0
def arithmetic_shift_right_augassign_channel_ref():
    a = DoubleValue(1)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = 5.0
    localhost_wait()
    a.value >>= b.value
    return a.value
示例#4
0
def less_to_channel_ref():
    a = BooleanValue(False)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = 5.0
    localhost_wait()
    a.value = 1 < b.value
    return a.value
def sub_to_channel_ref():
    a = DoubleValue(0)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = 5.0
    localhost_wait()
    a.value = 1 - b.value
    return a.value
示例#6
0
def aug_mult_to_channel_ref():
    a = DoubleValue(2)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = 5.0
    localhost_wait()
    a.value *= b.value
    return a.value
示例#7
0
def aug_modulo_to_channel_ref():
    a = DoubleValue(3)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = 2.0
    localhost_wait()
    a.value %= b.value
    return a.value
示例#8
0
def modulo_with_channel_ref():
    a = DoubleValue(0)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = 2.0
    localhost_wait()
    a.value = 3 % b.value
    return a.value
def test_realtimesequence_channel_reference_param():
    desired_rpm = ChannelReference('Aliases/DesiredRPM')
    desired_rpm.value = 100.101
    rtseq = RealTimeSequence(func1)
    actual = rtseq.run({"p": desired_rpm})
    actual.wait_for_result()
    assert actual.ret_val == 100.101
def gt_equal_to_channel_ref():
    a = BooleanValue(False)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = 1.0
    localhost_wait()
    a.value = 1 >= b.value
    return a.value
示例#11
0
def abs_channel_ref():
    a = DoubleValue(0)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = -5.0
    localhost_wait()
    a.value = abs(b.value)
    return a.value
示例#12
0
def equal_to_channel_ref():
    a = BooleanValue(True)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = 5.0
    localhost_wait()
    a.value = 1 == b.value
    return a.value
def aug_bitwise_and_to_channel_ref():
    a = DoubleValue(1)
    b = ChannelReference("Aliases/DesiredRPM")
    b.value = 5.0
    localhost_wait()
    a.value &= b.value
    return a.value
示例#14
0
def for_loop_range_with_channel_ref():
    a = DoubleValue(0)
    b = ChannelReference('Aliases/DesiredRPM')
    b.value = 10.0
    localhost_wait(0.2)
    for x in range(b.value):
        a.value += x
    return a
def call_parameter_send_channel_ref_by_value():
    a = ChannelReference('Aliases/DesiredRPM')
    ret = DoubleValue(0)
    a.value = 67
    localhost_wait(0.5)
    _return_parameter_plus1_by_value(a)
    ret.value = a.value
    return ret.value
示例#16
0
def run_engine_demo_advanced():
    """Run the engine_demo_advanced example.

    To handle a condition that stops a task (such as, the engine temperature rising above a safe value),
    use a try/finally block.

    Regardless of the result of the execution, the finally block can be used to safely shut down the engine.
    """
    try:
        warmup_succeeded = BooleanValue(False)
        engine_power = ChannelReference('Aliases/EnginePower')
        desired_rpm = ChannelReference('Aliases/DesiredRPM')
        actual_rpm = ChannelReference('Aliases/ActualRPM')
        engine_temp = ChannelReference('Aliases/EngineTemp')
        engine_power.value = True
        warmup_succeeded.value = engine_demo_advanced(desired_rpm, actual_rpm, engine_temp)
    finally:
        engine_power.value = False
        desired_rpm.value = 0
    return warmup_succeeded.value
def call_clearfault():
    a = ChannelReference("Aliases/DesiredRPM")
    b = DoubleValue(0)
    c = BooleanValue(False)
    # Store initial channel value
    b.value = a.value
    fault(a, 1001)
    clearfault(a)
    # Try to assign back to the channel the initial value
    a.value = b.value
    # If everything went well the initial value and the current value should now be equal
    c.value = b.value == a.value
    return c.value
示例#18
0
def self_check():
    # *** initialization
    # variables
    TestPass = BooleanValue(True)
    # channel references
    Power_On_chan = ChannelReference(
        'Targets/TruckSim_TTC580/Hardware/Chassis/DAQ/PXI1Slot2/Digital Output/port0/Power on')
    ReAX_GearA_Disable_chan = ChannelReference(
        'Targets/TruckSim_TTC580/User Channels/NI-XNET/VCAN-B/ReAX_GearA (486535187)/ReAX_GearA (486535187) Disable')
    ReAX_GearB_Disable_chan = ChannelReference(
        'Targets/TruckSim_TTC580/User Channels/NI-XNET/VCAN-B/ReAX_GearB (486535443)/ReAX_GearB (486535443) Disable')
    RemoteAccelPedalPos_chan = ChannelReference(
        'Targets/TruckSim_TTC580/Hardware/Chassis/NI-XNET/CAN/Vehicle CAN/Incoming/Single-Point/EEC2_CMD (418382648)/RemoteAccelPedalPos')
    XBRBrakeDemand_chan = ChannelReference(
        'Targets/TruckSim_TTC580/Hardware/Chassis/NI-XNET/CAN/Vehicle CAN/Incoming/Single-Point/XBR (201591804)/XBRBrakeDemand')
    XPRPReq_chan = ChannelReference(
        'Targets/TruckSim_TTC580/Hardware/Chassis/NI-XNET/CAN/VCAN-B/Incoming/Single-Point/XPRCmd (218060344)/XPRPReq')

    # *** end initialization

    # *** steps
    # start sending lateral drive
    ReAX_GearA_Disable_chan.value = 0
    ReAX_GearB_Disable_chan.value = 0

    # power on VCU
    Power_On_chan.value = 1

    wait(DoubleValue(3))
    # check RemoteAccelPedalPos, XBRBrakeDemand and XPRPReq has been zeroed
    if RemoteAccelPedalPos_chan.value != 0 or \
            -0.02 > XBRBrakeDemand_chan.value or XBRBrakeDemand_chan.value > 0.02 or \
            XPRPReq_chan.value != 0:
        TestPass.value = False

    # wait for relays to switch on
    wait(DoubleValue(5))
    # *** end steps
    return TestPass.value
def measure_set_point_response(setpoint, timeout, tolerance):
    """Sets the desired rpm to the specified setpoint and wait until the signal settles.

    The tolerance is used to create upper and lower boundaries for the signal.
    Returns the amount of time it takes the signal to settle or timeout.
    """
    actual_rpm = ChannelReference('Aliases/ActualRPM')
    desired_rpm = ChannelReference('Aliases/DesiredRPM')
    start_time = DoubleValue(0)
    settle_time = DoubleValue(0)

    desired_rpm.value = setpoint.value
    # Waits .5 seconds, so the gateway has time to update.
    localhost_wait(0.5)

    start_time.value = seqtime()
    wait_until_settled(actual_rpm, desired_rpm.value + tolerance.value,
                       desired_rpm.value - tolerance.value, DoubleValue(2.0),
                       timeout.value)
    settle_time.value = seqtime() - start_time.value
    return settle_time.value
示例#20
0
def enter_30():
    error_status = BooleanValue(True)
    # channel references
    Power_On_chan = ChannelReference(
        'Targets/TruckSim_TTC580/Hardware/Chassis/DAQ/PXI1Slot2/Digital Output/port0/Power on')
    ReAX_GearA_Disable_chan = ChannelReference(
        'Targets/TruckSim_TTC580/User Channels/NI-XNET/VCAN-B/ReAX_GearA (486535187)/ReAX_GearA (486535187) Disable')
    ReAX_GearB_Disable_chan = ChannelReference(
        'Targets/TruckSim_TTC580/User Channels/NI-XNET/VCAN-B/ReAX_GearB (486535443)/ReAX_GearB (486535443) Disable')
    RemoteAccelPedalPos_chan = ChannelReference(
        'Targets/TruckSim_TTC580/Hardware/Chassis/NI-XNET/CAN/Vehicle CAN/Incoming/Single-Point/EEC2_CMD (418382648)/RemoteAccelPedalPos')
    XBRBrakeDemand_chan = ChannelReference(
        'Targets/TruckSim_TTC580/Hardware/Chassis/NI-XNET/CAN/Vehicle CAN/Incoming/Single-Point/XBR (201591804)/XBRBrakeDemand')
    XPRPReq_chan = ChannelReference(
        'Targets/TruckSim_TTC580/Hardware/Chassis/NI-XNET/CAN/VCAN-B/Incoming/Single-Point/XPRCmd (218060344)/XPRPReq')
    Autonomous_Drive_chan = ChannelReference('Targets/TruckSim_TTC580/Hardware/Chassis/DAQ'
                                             '/PXI1Slot2/Digital Output/port0/Autonomous Drive')
    MODE_TRANS_chan = ChannelReference(
        'Targets/TruckSim_TTC580/Simulation Models/Models/trucksim_LVRT/Inports/MODE_TRANS')
    SystemStatus_chan = ChannelReference(
        'Targets/TruckSim_TTC580/Hardware/Chassis/NI-XNET/CAN/Server CAN/Incoming/Single-Point/SystemStatus (69785)/SystemStatus')

    # *** end initialization

    # *** steps
    # start sending lateral drive
    ReAX_GearA_Disable_chan.value = 0
    ReAX_GearB_Disable_chan.value = 0

    # power on VCU
    Power_On_chan.value = 1

    wait(DoubleValue(3))
    if SystemStatus_chan.value != 25:
        error_status.value = False
    Autonomous_Drive_chan.value = 1
    wait(DoubleValue(1))
    Autonomous_Drive_chan.value = 0
    if SystemStatus_chan.value != 30:
        error_status.value = False
    MODE_TRANS_chan.value = 18
    return error_status.value
def set_engine_power(on_off):
    """Turns the engine on or off."""
    engine_power = ChannelReference('Aliases/EnginePower')
    engine_power.value = on_off.value
#Set Stop Trigger (Duration)
Logging_Specification_Ref.StopTrigger = DefaultTrigger(True)
Logging_Specification_Ref.PostTriggerDuration = 4

#Start Data Logging Session
Data_Logging_Manager_Ref.StartDataLoggingSession("myLoggingSession",Logging_Specification_Ref)

#################################################
###Changes channel values, wait and reset ###

#Prepare values that will be assigned
engine_power = BooleanValue(True)
desired_rpm = DoubleValue(3000)
wait_time = DoubleValue(10)

# You can access a channel with a ChannelReference
engine_power_chan = ChannelReference('Aliases/EnginePower')
desired_rpm_chan = ChannelReference('Aliases/DesiredRPM')
engine_power_chan.value = engine_power.value
desired_rpm_chan.value = desired_rpm.value
wait(wait_time.value)
engine_power_chan.value = False
desired_rpm_chan.value = 0

###############################################
#Stop Data Logging Session
logs_array = ["logs"]
Data_Logging_Manager_Ref.StopDataLoggingSession("myLoggingSession",True,Array[str](logs_array))

def test_run_py_as_rtseq_channel_reference_param():
    desired_rpm = ChannelReference('Aliases/DesiredRPM')
    desired_rpm.value = 100.101
    actual = realtimesequencetools.run_py_as_rtseq(func1, {"p": desired_rpm})
    assert actual == 100.101