今天我们继续介绍VT板卡VT1004和VT1104相关的函数
![](https://i-blog.csdnimg.cn/blog_migrate/43bfee88730d74cd28d6c59f281af6b1.png)
vtsSetPWMMeasurementDuration - 设置PWM边缘检测时间
![](https://i-blog.csdnimg.cn/blog_migrate/988a728b70be108858b00c34f54ec412.png)
功能:在使用模块VT1004/VT1104、VT2516或VT2848测量PMW参数期间,如果在规定的时间内未识别到边缘,则显示0或100%的占空比。此时间由vtsSetPWMMmeasurementDuration(SetPWMMmeasurationDuration)设置。有用的是,设置时间应大于要测量的最低频率的周期。为了尽快识别0%或100%的占空比,时间不应设置得太高,因为此时仍显示旧值。
Target:目标通道变量空间名称,例如:VTS::RPMSensor
Duration:测量PWM信号的时间窗口(秒)。
VT1004/VT1104、VT2516和VT2848:时间窗口可设置在10ms(0.01)和1min(60)之间,步长为10ms。如果指定了无效值,则将设置舍入到下一个最高值。
返回值:
0:成功重置目标通道最大和最小值
-1:调用函数错误
-2:参数target不存在映射到CANoe工程中的通道,或者不是有效的名称,抑或这个通道不支持重置
-4:调用成功,但不确定调用返回值是否已经被重置;或者在特定时间内没有接收到重置成功的返回信息
Demo演示
Demo中展示了如何在VT1004模块的通道上进行PWM测量。在该示例中,该通道被称为RPMSensor,并假设连接到生成PWM信号的传感器。每秒将测得的频率和占空比写入CANoe的Write窗口或者测试报告。
![](https://i-blog.csdnimg.cn/blog_migrate/1dfebde56c8d14bd12e1109f9db857f9.png)
PerformPWMMeasurement ()
{
// 声明变量以保存测量数据
float frequency;
float dutyCycle;
// 配置PWM测量通道
vtsSetPWMMeasurementDuration("VTS::RPMSensor", 0.1); // 100ms
vtsSetPWMThreshold("VTS::RPMSensor", 2.5); // 2.5V
// 每秒打印一次测量结果到Write窗口
while(1)
{
// 从VT系统变量获取测量值
frequency = @sysvar::VTS::RPMSensor::PWMFreq;
dutyCycle = @sysvar::VTS::RPMSensor::PWMDC;
write("Frequency: %0.2fHz, Duty Cycle: %0.2f%%.", frequency, dutyCycle);
TestWaitForTimeOut(1000);
}
}
/*同类型调用方法*/
sysvar::VTS::RPMSensor.SetPWMMeasurementDuration(0.1); // 100ms
sysvar::VTS::RPMSensor.SetPWMThreshold(2.5); // 2.5V
SetPWMThreshold - 设置PWM触发阈值
![](https://i-blog.csdnimg.cn/blog_migrate/49daaea9dc00490b9a8fa53bc3ba8b7e.png)
功能:设置区分高低级别的阈值。超过该阈值的输入电压被评估为高电平,低于该阈值的电压则被评估为低电平
Target:目标通道变量空间名称,例如:VTS::LowBeamLeft
Threshold:可设置电压值值
Comparison Table | VT1004 | VT1004A | VT1104 |
Voltage value in volts in the range from ... | -32 V to +32 V | -40 V to +40 V | -60 V to +60 V |
返回值:
0:成功重置目标通道最大和最小值
-1:调用函数错误
-2:参数target不存在映射到CANoe工程中的通道,或者不是有效的名称,抑或这个通道不支持重置
-4:调用成功,但不确定调用返回值是否已经被重置;或者在特定时间内没有接收到重置成功的返回信息
Demo演示
Demo中展示了如何在VT1004模块的通道上进行PWM测量。在该示例中,该通道被称为RPMSensor,并假设连接到生成PWM信号的传感器。每秒将测得的频率和占空比写入CANoe的Write窗口或者测试报告。
![](https://i-blog.csdnimg.cn/blog_migrate/1dfebde56c8d14bd12e1109f9db857f9.png)
PerformPWMMeasurement ()
{
// 声明变量以保存测量数据
float frequency;
float dutyCycle;
// 配置PWM测量通道
vtsSetPWMMeasurementDuration("VTS::RPMSensor", 0.1); // 100ms
vtsSetPWMThreshold("VTS::RPMSensor", 2.5); // 2.5V
// 每秒打印一次测量结果到Write窗口
while(1)
{
// 从VT系统变量获取测量值
frequency = @sysvar::VTS::RPMSensor::PWMFreq;
dutyCycle = @sysvar::VTS::RPMSensor::PWMDC;
write("Frequency: %0.2fHz, Duty Cycle: %0.2f%%.", frequency, dutyCycle);
TestWaitForTimeOut(1000);
}
}
/*同类型调用方法*/
sysvar::VTS::RPMSensor.SetPWMMeasurementDuration(0.1); // 100ms
sysvar::VTS::RPMSensor.SetPWMThreshold(2.5); // 2.5V
vtsSetImpedanceMode - VT1004A在高阻抗模式(默认状态)和低阻抗模式之间切换
![](https://i-blog.csdnimg.cn/blog_migrate/6c6cd9325ae171a7d7e84fc1381e4883.png)
功能:该函数可以同时在板卡VT1004、VT1104、VT2816上面使用,不过在VT1004、VT1104上面使用时可以直接和滤波差分电压测量以及引脚a或b到参考地(AGND)的测量之间切换。而在VT2816上面使用则是可以在12个测量通道的每个通道上进行不同的电压测量模式和电流测量模式之间切换。
注意:该函数只能在VT系统模块的适当通道的系统变量命名空间上调用,函数仅支持VT1004A变体和VT1104模块支持。
Target:目标通道变量空间名称,例如:VTS::TempSensor
Mode:切换到特定的模式,可选模式如下表:
Value | Enum | Short Description |
0 | eVTSImpedanceModeHigh | 高阻抗(默认状态) |
1 | eVTSImpedanceModeLow | 低阻抗(有利于测量PWM频率和占空比) |
返回值:
0:成功重设置模式
-1:调用函数错误
-2:参数target不存在映射到CANoe工程中的通道,或者不是有效的名称,抑或这个通道不支持重置
-4:调用成功,但不确定调用返回值是否已经被重置;或者在特定时间内没有接收到重置成功的返回信息
-6:所使用的模块变体不支持该功能
Demo演示
阻抗模式切换时的PWM测量
MeasurementAToAGnd ()
{
double frequency;
double dutyCycle;
// 将PWM阈值设置为12V
vtsSetPWMThreshold( "LowBeamLeft", 12);
// 将PWM测量持续时间设置为100ms
vtsSetPWMMeasurementDuration( "LowBeamLeft", 0.1);
// 启用低阻抗模式以提高PWM测量精度
vtsSetImpedanceMode( "LowBeamLeft", eVTSImpedanceModeLow);
// 等待200ms直到PWM测量完成
testWaitForTimeout(200);
// 获取测量值
frequency = @sysvar::VTS::LowBeamLeft::PWMFreq;
dutyCycle = @sysvar::VTS::LowBeamLeft::PWMDC;
// 检查频率和占空比
if( frequency > 50 && dutyCycle > 20 )
{
testStepPass();
}
else
{
testStepFail();
}
}
//同功能另外做法
sysvar::VTS::LowBeamLeft.SetImpedanceMode(eVTSImpedanceModeLow);
vtsSetIntegrationTime - 设置平均值和RMS值的积分时间
在移动测量时间窗口中计算平均值和RMS值,可以使用此功能设置时间窗口的长度。
![](https://i-blog.csdnimg.cn/blog_migrate/3edb2f1c616296a2f7f0f1f0d802b51f.png)
Target:目标通道变量空间名称,例如:VTS::TempSensor::Avg
IntTime:测量时间窗口(秒)。
VT1004/VT1104:唯一允许的时间设置为128µs(=0.000128;仅限均值)、1 ms(仅限均值值)、10 ms、100 ms和1 s。
VT2516/VT7001:允许时间设置取决于具体测量值,与VT系统配置对话框中的可能设置类似。
如果指定了无效值,则调用将失败。
返回值:
0:调用成功
-1:调用错误,即系统变量不属于有效的VT系统读取值或积分时间无效
-2:调用命令的系统变量无效
Demo演示
demo演示了读取的传感器连接到VT1004模块的名为TempSensor的通道,如何在测量期间更改VT系统变量的积分时间。积分时间设置为1秒,以消除传感器读数中的噪声。
SetIntegrationTime ()
{
// 将积分时间设置为1秒
vtsSetIntegrationTime("VTS::TempSensor::Avg", 1.0);
// 每秒在Write窗口输出传感器读数
while(1)
{
write("Average sensor value: %fV", @sysvar::VTS::TempSensor::Avg);
TestWaitForTimeOut(1000);
}
}