vtsSetInterconnectionMode - 设置VT7001的电源输出模式
   功能:设置电源模块VT7001的三个可能电源和两个电源输出的互连模式。
注意:此函数不能在任何CAPL处理程序例程或ECU节点中调用。它只能在测试模块的MainTest方法上下文中调用;使用在测量开始时的测试模块设置初始状态。
Target:目标通道变量空间名称,例如:VTS::PowerSupply
Mode:连接模式。
Value  | Enum  | Short Description  | 
0  | eVTSInterconnectionModeSupInt  | 内部电源供电 (mode supint)  | 
1  | eVTSInterconnectionModeSup1  | 电源Supply 1供电 (mode sup1)  | 
2  | eVTSInterconnectionModeSup2  | 电源Supply 2供电 (mode sup2)  | 
3  | eVTSInterconnectionModeSupIntSup1  | OUT1和OUT2的两个独立电源:内部电源和电源1(mode supint_sup1)  | 
4  | eVTSInterconnectionModeSupIntSup2  | OUT1和OUT2的两个独立电源:内部电源和电源2 (mode supint_sup2)  | 
5  | eVTSInterconnectionModeSup1SupInt  | OUT1和OUT2的两个独立电源:电源1和内部电源 (mode sup1_supint)  | 
6  | eVTSInterconnectionModeSup1Sup2  | OUT1和OUT2的两个独立电源: power supply 1 and power supply 2 (mode sup1_sup2)  | 
7  | eVTSInterconnectionModeSup2SupInt  | OUT1和OUT2的两个独立电源: power supply 2 and internal power supply (mode sup2_supint)  | 
8  | eVTSInterconnectionModeSup2Sup1  | OUT1和OUT2的两个独立电源: power supply 2 and power supply 1 (mode sup2_sup1)  | 
9  | eVTSInterconnectionModeSupSeries  | 电源1和电源2串联连接 (sup_series)  | 
10  | eVTSInterconnectionModeSupParallel  | 电源1和电源2并联 (sup_parallel)  | 
返回值:
0:成功重置目标通道最大和最小值
-1:调用错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 指定的模式无效
-4: 未在测试模块的主方法上下文中调用该函数。因此,不可能等到从VT系统接收设置。否则,呼叫成功,但不确定呼叫返回时是否已接管设置。
Demo演示
内部电源单元提供电力,并且ECU连接到OUT1(KL30)、OUT2(KL15)和GND1(KL31)。在本例中,内部电源单元的通道名为“IntSupply”,两个输出通道名为为“Clamp30”和“Clamp15”,VT7001模块名为“PowerSupply”。
   InternalPowerSupply ()
{
   // 将模式设置为仅一个电源->内部电源
   vtsSetInterconnectionMode("VTS::PowerSupply", eVTSInterconnectionModeSupInt);
   // 设置电压 12.0 V
   vtsSetRefVoltageMode("VTS::IntSupply", 1);
   @sysvar::VTS::IntSupply::RefVoltage = 12.0;
   // 打开两个输出
   @sysvar::VTS::Clamp30::Active = eVTSOutputModeActive;
   @sysvar::VTS::Clamp15::Active = eVTSOutputModeActive;
   //通过卡箍15测量ECU消耗的电流
   //2秒后(结果写入写入窗口)
   TestWaitForTimeOut(2000);
   write("ECU is consuming %fmA.", @sysvar::VTS::Clamp30::AvgCurrent);
}
 vtsSetMaxCurrentMode -设置控制电压输出的模式
   功能:设置控制电压输出的模式,以控制电源的最大输出电流。
Target:目标通道变量空间名称,例如:VTS::ExtSupply
Mode:连接模式。
Value  | Short Description  | 
0  | 最大电流控制电压输出未激活  | 
1  | 恒定值,由相应的输出系统变量确定  | 
Factor:根据定义的(使用系统变量或波形)电源最大电流值确定控制电压的系数。
电源最大电流*因数=控制电压
测量开始时,该系数的默认值为1.0。如果在没有因子参数的情况下调用函数,则保留当前设置的因子。
返回值:
0:成功重置目标通道最大和最小值
-1:调用错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 指定的模式无效
-4: 未在测试模块的主方法上下文中调用该函数。因此,不可能等到从VT系统接收设置。否则,呼叫成功,但不确定呼叫返回时是否已接管设置。
Demo演示
在以下示例中,最大电流模式在VT7001模块的电源通道ExtSupply上激活。最大电流输出设置为10A。最后激活VT7001的输出Clamp30。为了设置10A的最大电流,例如,必须向电源提供5.0 V的控制电压。因此,必须使用系数0.5。
   SetMaxCurrentMode ()
{
   // 将模式设置为仅一个电源->外部电源1
   vtsSetInterconnectionMode("VTS::PowerSupply", 1);
   // 用定值模式激活最大电流模式
   // 系数为0.5
   vtsSetMaxCurrentMode("VTS::ExtSupply", 1, 0.5);
   // 将电源设置为最大10A
   @sysvar::VTS::ExtSupply::MaxCurrent = 10.0;
   // 打开开关输出
   @sysvar::VTS::Clamp30::Active = 1;
}
 vtsSetMinCurrentMeasurementRange -设置VT7001模块自动测量范围转换时应使用的当前测量范围
   功能:设置VT7001/VT2808模块自动测量范围转换应使用的当前测量范围。将不再使用低于范围参数中设置的范围的安培范围。这防止了在专用情况下的测量范围转换。即使未使用指定安培数的测量范围,这并不意味着无法进行测量。由于在这种情况下不使用最佳分流器,因此测量精度降低到手册给定值以下。使用的测量范围与最佳值的差异越大,精度越低。因此,应谨慎设置范围。
Target:目标通道变量空间名称,例如:VTS::ECUSupplyModule
Range:确定自动测量范围转换可切换到的范围。
Value  | Enum  | Short Description  | 
0  | eVTSCurrentMeasurementRange100uA  | 将使用所有测量范围。  | 
1  | eVTSCurrentMeasurementRange1mA  | 最低使用范围:100µA…1mA  | 
2  | eVTSCurrentMeasurementRange10mA  | 最低使用范围:1mA…10mA  | 
3  | eVTSCurrentMeasurementRange100mA  | 最低使用范围:10mA…100mA  | 
4  | eVTSCurrentMeasurementRange1A  | 最低使用范围:100mA…1A  | 
5  | eVTSCurrentMeasurementRange10A  | 最低使用范围:1A…10A  | 
6  | eVTSCurrentMeasurementRange100A  | 最低使用范围:10A…100A  | 
返回值:
0:成功重置目标通道最大和最小值
-1:调用错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 指定的模式无效
-4: 未在测试模块的主方法上下文中调用该函数。因此,不可能等到从VT系统接收设置。否则,呼叫成功,但不确定呼叫返回时是否已接管设置。
Demo演示
本示例显示了在负载接通之前,如何锁定高达100mA的测量范围进行测量
PerformMeasurementAtActivation()
{
   //准备VT7001模块(固定电压的外部电源
   //连接到PS1连接器)
   vtsSetInterconnectionMode( "VTS::ECUSupplyModule", eVTSInterconnectionModeSup1);
   //配置输出以使用大于100mA的电流测量范围
   //并等待应用设置。预期电流低于1A
   //因此不应进行测量范围转换。
   vtsSetMinCurrentMeasurementRange( "VTS::ECUSupply", eVTSCurrentMeasurementRange1A);
   TestWaitForTimeOut(50);
   // 激活电源输出
   @sysvar::VTS::ECUSupply::Active = 1;
   // 可以在不改变测量范围的情况下测量激活
}
 vtsSetRefVoltageMode -设置参考电压输出的模式
   功能:设设置参考电压输出的模式,以控制电源的输出电压
Target:目标通道变量空间名称,例如:VTS::ExtSupply
Mode:
Value  | Enum  | Short Description  | 
0  | eVTSRefVoltageModeInactive  | 参考电压输出未激活  | 
1  | eVTSRefVoltageModeConstant  | 恒定值,由相应的输出系统变量确定  | 
2  | eVTSRefVoltageModeAnalogWaveForm  | 模拟波形;使用LoadWFVoltage加载,然后使用StartStimulation启动  | 
返回值:
0:成功重置目标通道最大和最小值
-1:调用错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 指定的模式无效
-4: 未在测试模块的主方法上下文中调用该函数。因此,不可能等到从VT系统接收设置。否则,呼叫成功,但不确定呼叫返回时是否已接管设置。
Demo演示
为了输出导致所需输出电压VOut的控制电压(V_Control),VT7001必须知道电源因数。
下面示例中,外部电源的因数为0.1,期望的输出电压V_Out为15V。
为了获得所需的输出电压(V_Out),VT7001自动计算并设置控制电压(V_Control)(1.5 V=15*0.1),从而产生15 V的输出电压。
SetRefVoltageMode ()
{
   // 将模式设置为仅一个电源->外部电源1
   vtsSetInterconnectionMode("VTS::PowerSupply", eVTSInterconnectionModeSup1);
   // 外部电源的因数0.1传输至VT7001
   vtsSetRefVoltageMode("VTS::ExtSupply", eVTSRefVoltageModeConstant, 0.1);
   //下面的线将输出电压设置为15V,
   //VControl(1.5 V)用给定的系数自动计算
   @sysvar::VTS::ExtSupply::RefVoltage = 15;
   // 打开输出开关
   @sysvar::VTS::Clamp30::Active = eVTSOutputModeActive;
}
 vtsSerialSetOnErrorHandler -设置在发送或接收操作期间发生错误时发出通知的回调
   功能:设置在发送或接收操作期间发生错误时发出通知的回调。
set回调必须具有以下签名:void<OnSerialError>(dword errorFlags)
Target:目标通道变量空间名称,例如:VTS::ExtSupply
onErrorCallback:CAPL回调函数名
返回值:
0:成功重置目标通道最大和最小值
-1:非特定错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 传递的回调没有所需的签名。
Demo演示
为了输出导致所需输出电压VOut的控制电压(V_Control),VT7001必须知道电源因数。
下面示例中,外部电源的因数为0.1,期望的输出电压V_Out为15V。
为了获得所需的输出电压(V_Out),VT7001自动计算并设置控制电压(V_Control)(1.5 V=15*0.1),从而产生15 V的输出电压。
RS232Init_Example ()
{
   //声明RS232通信的变量
   char stringToSend[20] = "Hello World !"; // 字符串发送
   byte sendBuffer[20];                     // 用于保存发送数据的字节数组
   byte receiveBuffer[20];                  // 定义接收buffer
   int i;                                   // 字符长度
   //注册RS232回调函数
   vtsSerialSetOnErrorHandler("VTS::ECUPowerSupply", "OnRS232Error");
   vtsSerialSetOnReceiveHandler("VTS::ECUPowerSupply", "OnRS232Receive");
   vtsSerialSetOnSendHandler("VTS::ECUPowerSupply", "OnRS232Sent");
   //配置串行端口,即用于与外部通信
   //ECU电源至9600波特,8个数据位,1个停止位,无奇偶校验
   vtsSerialConfigure("VTS::ECUPowerSupply", eVTSBaudRate9600, eVTSDataBitsEight, eVTSStopBitsOne, eVTSParityNone);
   // 打开串行端口,即与外部ECU电源通信
   vtsSerialOpen("VTS::ECUPowerSupply");
  // 短暂等待以确保应用了设置并且端口已就绪
   TestWaitForTimeOut(10);
   // 关闭串口
   vtsSerialClose("VTS::ECUPowerSupply");
}
 VT7001作为VT系统的电源板卡,几乎所有的VT 系统都要选择该板卡,其重要性不言而喻,因此介绍的相关函数均有极大可能在自动化开发中使用,大家可以提前做个了解,后面真正使用的时候可以作为参考。










![[MySQL]基本数据类型及表的基本操作](https://img-blog.csdnimg.cn/img_convert/cb75587e0710f47888e68e907eb130f2.gif)








