纵使生活有白般不顺,我们依然要千般喜乐,万般热爱,只因那些我们喜爱和爱我们的人儿。
vtsLoadWFResistance - 从指定文件加载通道的电阻曲线
功能:此函数从指定文件加载VT2004通道的电阻曲线
注意:该函数不能在任何CAPL处理程序例程或ECU节点中调用。它只能在测试模块的MainTest方法上下文中调用;
Target:目标通道变量空间名称,例如:VTS::Temp_Sensor
filepth:包含电阻曲线的文件路径,可以是绝对路径地址也可以是相对路径地址。
返回值:
0:成功重置目标通道最大和最小值
-1:未知错误
-2:调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3:访问文件时出错。例如,这可能意味着找不到文件或文件格式与预期不同。
-4:传输错误–波形无法正确传输。
Demo演示
以下示例演示了如何使用VT2004通道的波形电阻输出来模拟传感器。在本例中,名为waveform.TXT的波形加载并在Temp_Sensor通道上回放
SimulateSensorResistanceWF ()
{
// 选择电阻刺激和波形曲线类型
vtsSetStimulationMode("VTS::Temp_Sensor", 3);
vtsSetCurveType("VTS::Temp_Sensor", 2);
// 负载波形(波形.TXT的内容如下所示)
vtsLoadWFResistance("VTS::Temp_Sensor", "C:\\WaveForm.TXT");
//同功能用法
//sysvar::VTS::Temp_Sensor.LoadWFResistance("C:\\WaveForm.TXT");
//配置波形、参数:
//TimeIncrement(保存每个样本的时间)=65ms
//暂停(两次波形重复之间暂停)=2s
//重复次数(重复次数)=3
vtsSetWFParams("VTS::Temp_Sensor", 0.065, 2.0, 3);
// 使用先前配置的波形开始触发
vtsStartStimulation("VTS::Temp_Sensor");
}
vtsLoadWFVoltage - 从指定文件加载通道的电压曲线
功能:该函数从指定文件加载通道的电压曲线。
注意:该函数不能在任何CAPL处理程序例程或ECU节点中调用。它只能在测试模块的MainTest方法上下文中调用;
Target:目标通道变量空间名称,例如:VTS::Temp_Sensor
filepth:包含电压曲线的文件路径,可以是绝对路径地址也可以是相对路径地址。
返回值:
0:成功重置目标通道最大和最小值
-1:未知错误
-2:调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3:访问文件时出错。例如,这可能意味着找不到文件或文件格式与预期不同。
-4:传输错误–波形无法正确传输。
Demo演示
以下示例演示如何使用VT2004通道的波形电压输出来模拟传感器。示例中添加名为waveform.TXT的波形加载并在Temp_Sensor通道上回放。
SimulateSensorVoltageWF ()
{
// 选择电压仿真和波形曲线类型
vtsSetStimulationMode("VTS::Temp_Sensor", 1);
vtsSetCurveType("VTS::Temp_Sensor", 2);
// 负载波形(waveform.TXT的内容如下所示)
vtsLoadWFVoltage("VTS::Temp_Sensor", "C:\\WaveForm.TXT");
//配置波形、参数:
//TimeIncrement(保存每个样本的时间)=65ms
//暂停(两次波形重复之间暂停)=2s
//NumberOfRepeats(重复次数)=0(无限制)
vtsSetWFParams("VTS::Temp_Sensor", 0.065, 2.0, 0);
// 输出配置波形10秒
vtsStartStimulation("VTS::Temp_Sensor");
TestWaitForTimeout(10000);
vtsStopStimulation("VTS::Temp_Sensor");
}
//同功能不同实现方法
sysvar::VTS::Temp_Sensor.LoadWFVoltage("C:\\WaveForm.TXT");
以下示例展示了如何在VT7001电源信道上输出波形。在此示例中使用了外部电源单元(名称空间ExtSupply)。ECU连接到OUT1(名称空间ECUpower)和GND1;VT7001模块被命名为电源模块。输出电压由预定义曲线(powercycle.TXT)确定。曲线内插点的时间增量为65ms;曲线持续10秒。
ExternalSupplyWithCurve ()
{
// 将模式设置为仅一个电源->外部电源1
vtsSetInterconnectionMode("VTS::PowerSupply", 1);
//从文件加载波形
//因数设置为0.2:1 V控制电压->电源输出5 V
vtsSetRefVoltageMode("VTS::ExtSupply", 2, 0.2);
vtsLoadWFVoltage("VTS::ExtSupply", "powercycle.TXT");
vtsSetWFParams("VTS::ExtSupply", 0.00005, 0.2, 0);
// 打开输出开关并启动输出曲线
@sysvar::VTS::Clamp30::Active = 1;
vtsStartStimulation("VTS::ExtSupply");
//等待5秒,停止回放
TestWaitForTimeOut(5000);
vtsStopStimulation("VTS::ExtSupply");
}
//同功能不同实现方法
sysvar::VTS::ExtSupply.LoadWFVoltage("powercycle.TXT");
vtsSetCurveType - 设置曲线的模式
功能:指定刺激信号的形式(动态)。
Namespace:目标通道变量空间名称,例如:VTS::RPM_Sensor
Type:类型值,可参考下表。
Value | Enum | Short Description |
0 | eVTSCurveTypeConstant | 常量值,由相应的输出系统变量确定。然而,也可以通过更改中变量的值来动态使用该值。 |
1 | eVTSCurveTypePWM | PWM |
2 | eVTSCurveTypeAnalogWaveform | 模拟波形;使用LoadWFVoltage(仅适用于VT2004和VT2816)或LoadWFResistance(仅适用于VT2004)加载,然后使用StartStimulation启动。 |
3 | eVTSCurveTypeBitStream | Bit stream(=数字波形);使用LoadWFBitStream加载,然后使用StartStimulation启动(仅适用于VT2516和VT2848)。 |
4 | eVTSCurveTypeUserFPGA | 用户FPGA。如果模块的输出应由用户可编程FPGA控制,则必须设置该类型。只有当模块包含用户可编程FPGA时,才能使用此类型 |
返回值:
0:成功重置目标通道最大和最小值
-1:调用错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 指定的类型无效
-4: 未在测试模块的主方法上下文中调用该函数。因此,不可能等到从VT系统接管设置。否则,回调成功,但不确定回调返回时是否已接管设置。
vtsSetStimulationMode - 设置激励模式
功能:设置内部电压或电阻刺激的模式。。
Target:目标通道变量空间名称,例如:VTS::RPM_Sensor
Mode:类型值,可参考下表。
Value | Enum | Short Description |
0 | eVTSStimulationModeNone | 内部激励未激活 |
1 | eVTSStimulationModeVoltage | 电压激励 |
2 | eVTSStimulationModePotentiometer | 电位计激励(仅VT2004) |
3 | eVTSStimulationModeResistanceGreater | 电阻激励R>(在电阻值之间切换时,仅出现电阻值高于输出或目标电阻的中间状态 (VT2004) |
4 | eVTSStimulationModeResistanceLower | 电阻激励R<(在电阻值之间切换时,仅出现电阻值较低的中间状态)(VT2004) |
返回值:
0:成功重置目标通道最大和最小值
-1:调用错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 指定的类型无效
-4: 未在测试模块的主方法上下文中调用该函数。因此,不可能等到从VT系统接管设置。否则,回调成功,但不确定回调返回时是否已接管设置。
Demo演示
以下示例演示了如何使用VT2004通道的PWM输出来模拟基于PWM的传感器(例如RPM传感器)。本例中使用的通道称为RPM_Sensor。
SimulateSensorPWM ()
{
// 频率设置 (100Hz)
float currentFrequency = 100.0;
// 选择电压刺激和PWM曲线类型
vtsSetStimulationMode("VTS::RPM_Sensor", eVTSStimulationModeVoltage);
vtsSetCurveType("VTS::RPM_Sensor", eVTSCurveTypePWM);
// PWM信号将在0V和5V之间切换
vtsSetPWMVoltageLow("VTS::RPM_Sensor", 0.0);
vtsSetPWMVoltageHigh("VTS::RPM_Sensor", 5.0);
// 将重复次数设置为无限
vtsSetPWMRepeats("VTS::RPM_Sensor", 0);
// 设置初始频率(100Hz)和占空比(50%)值
@sysvar::VTS::RPM_Sensor::PWMFreq = currentFrequency;
@sysvar::VTS::RPM_Sensor::PWMDC = 50.0;
// 开始仿真
vtsStartStimulation("VTS::RPM_Sensor");
// To stimulate different sensor readings increase
// frequency of the PWM signal over time
//使用不同的激励传感器
//PWM信号随时间的频率
while(currentFrequency < 200)
{
// 每100ms将频率增加1Hz
TestWaitForTimeOut(100);
currentFrequency += 1;
@sysvar::VTS::RPM_Sensor::PWMFreq = currentFrequency;
}
//停止仿真
vtsStopStimulation("VTS::RPM_Sensor");
}
//同功能不同实现方法
sysvar::VTS::RPM_Sensor.SetCurveType(eVTSCurveTypePWM);