CAN:CANape使用Scripts编制脚本

1 内容

      CANape中的Scripts,个人理解其功能在于特定条件自动运行,优势在于提升效率,例如车辆放置于环境温仓,每隔1h后判断环境温度达到限值-30℃,进行自动启机并记录5次启机时间。相关分享内容根据帮助文件编制,仅做提供思路和格式之用。

      脚本文件已测试,通过Compile,但未使用HCU调试。

在这里插入图片描述

2 硬件

      文中涉及的相关部件原理,参考文库“BorgWarner DCT Electrohydraulic Controls Ritschel” 中的知识点,内容如下:
在这里插入图片描述

3 功能

      思路为电磁阀Sweep测试(0-1000mA-0,步长100mA)测试,然后Step(0→1000mA),最后进行Sweep复测,对应的图表如下:

在这里插入图片描述

4 源程序

      脚本内容如下:

//Author: Morven_X.
//Data:2020-6-17.
//Email:morven_xie@163.com


//Function: Solenoid_Function_Check.
//Description: The script was developped to check that whether Solenoid Valve has stucktion.
//The current for Solenoid Valve from 0 to 1000mA.
//The test recommends P_Line =750kPa and T_Oil=100℃.

//Global Variables:Emergency_STOP;Flush_Repetition_Numbers;VFS_Max_Current;
//Project Function:Base_Calibration_Moving_Average_VFS;
//Signals:
//(1)Line Current Request:Current_Require_Line;
//(2)VFS1 Current Request:Current_Require_VFS1;
//(3)Line Switch:Status_Switch_Line;
//(4)VFS1 Switch:Status_Switch_VFS1;
//(5)Signal of Oil Temperature: Signal_Temp_Oil;
//(6)Signal of Motor Speed: Signal_Speed_Motor;
//(7)Signal of Line Pressure:Signal_Pressure_Line;
//(8)Signal of VFS1 Pressure:Signal_Pressure_VFS1;

Write("Script Started");
//HCU.Online();

//customer Input Object Information
long res;
char Object_ID[64];
res = UserSelectDialog("Please select or enter a name", 
                       "Advanced", "A\nB\nC", 1, -1, 1, Object_ID);
if (res == -2) 
Print("Error in UserSelectDialog: %d", res);
else
if (res == -1)
Print("UserSelectDialog was cancelled or nothing selected");
else
Print("Selected Index: %d. Name: %s ", res, Object_ID);

//Get Data of Hybrid Control Unit
double T_Oil;
double Motor_Spd;
double P_Line;
double P_VFS1;
//HCU.GetParameterPhysValue("Signal_Temp_Oil", T_Oil);
//HCU.GetParameterPhysValue("Signal_Speed_Motor", Motor_Spd);
//HCU.GetParameterPhysValue("Signal_Pressure_Line", P_Line);
//HCU.GetParameterPhysValue("Signal_Pressure_VFS1", P_VFS1)

char y_str[255],m_str[255],d_str[255],h_str[255],min_str[255],s_str[255];
long d,mo, y, h, mi, s;
//Get Time From System
GetSystemDate(d, mo, y);
GetSystemDate(h, mi, s);
Sprint(y_str,"%04d",y);
Sprint(m_str,"%02d", mo);
Sprint(d_str,"%02d",d);
Sprint(h_str,"%02d",h);
Sprint(min_str,"%02d",mi);
Sprint(s_str,"%02d",s);
char Filename_TXT[255]="F:\\Basedata\\VFS_Flush\\";
char Filename_MDF[255]="F:\\Basedata\\VFS_Flush\\";

StrCat(Filename_TXT,"ID_");
StrCat(Filename_MDF,"ID_");
StrCat(Filename_TXT,Object_ID);
StrCat(Filename_MDF,Object_ID);
StrCat(Filename_TXT,"_VFSFlush_");
StrCat(Filename_MDF,"_VFSFlush_");
StrCat(Filename_TXT,y_str);
StrCat(Filename_MDF,y_str);
StrCat(Filename_TXT,m_str);
StrCat(Filename_MDF,m_str);
StrCat(Filename_TXT,d_str);
StrCat(Filename_MDF,d_str);
StrCat(Filename_TXT,"_");
StrCat(Filename_MDF,"_");
StrCat(Filename_TXT,h_str);
StrCat(Filename_MDF,h_str);
StrCat(Filename_TXT,min_str);
StrCat(Filename_MDF,min_str);
StrCat(Filename_TXT,s_str);
StrCat(Filename_MDF,s_str);
StrCat(Filename_TXT,".txt");
StrCat(Filename_MDF,".MDF");
Write("File MDF created: %s",Filename_MDF);
Write("File TXT created: %s",Filename_TXT);
Write("Opening File of TXT and MDF");
Write(Filename_TXT);
Write(Filename_MDF);
long TXT_File;
TXT_File=OpenFile(Filename_TXT,"w");
SetMeasurementFileName(Filename_MDF);
Start();

Write("Set Current_value and Switch_Value");
//Set Current Value 
//HCU.SetParameterPhysValue("Current_Require_Line",500);
//HCU.SetParameterPhysValue("Current_Require_VFS1",0);

//Set Current Status ON/OFF 
Write("Set Current value");
//HCU.SetParameterPhysValue("Status_Switch_Line",1);
//HCU.SetParameterPhysValue("Status_Switch_VFS1",1);
write("Require_value and Switch_Value OverWrited");
sleep(1000);

//Add Information for the TXT Header
FPrint(TXT_File,"__________________________________________\n");
Fprint(TXT_File,"Date:%04d-%02d-%02d\n", y,mo,d);
FPrint(TXT_File,"Time:%02d:%02d: %02d\n", h, mi,s);
FPrint(TXT_File,"Vehicle: %s", Object_ID);
FPrint(TXT_File,"_Clutch_VFS_Flush_Data\n");
FPrint(TXT_File,"Trans. OilTemp: %d \n", T_Oil);
FPrint(TXT_File,"Motor Speed: %d \n", Motor_Spd);
FPrint(TXT_File,"Line Pressure %d\n", P_Line);
FPrint(TXT_File,"Test_Temp %d degree,Motor Speed %d rpm,Line Pressure %d kPa", T_Oil, Motor_Spd, P_Line);
FPrint(TXT_File,"____________________________________________\n");
FPrint(TXT_File,"\n");

//Check Test Condition

if ((P_Line)>=750 && (T_Oil)>=100) {

  Write("Test Condition is OK");

}

else {

  Write("Take aciton, Test Condition is NOK");
  Write("Script finished");
  FPrint(TXT_File, "Take aciton, Test Condition is NOK");
  CloseFile(TXT_File);
  Call("Notepad.exe", Filename_TXT);
  break;

}

//Initial Data of P-I Test
write("Initial VFS P-I Data Test Before Flush:");
Sleep(1000);
FPrint(TXT_File,"Initial VFS P-I Data Test Before Flush:\n");
int Require_current=0;
double Act_Pressure =0;
FPrint(TXT_File, "Current, Act_Pressure\n");
while ((Require_current<VFS_Max_Current)&&(Emergency_STOP==0))
{
  //HCU.SetParameterPhysValue("Current_Require_VFS1",Require_current);
  Sleep(3000);
  //Act_Pressure =Base_Calibration_Moving_Average_VFS;
  Write("Current: %d Pressure %f ", Require_current,Act_Pressure);
  FPrint(TXT_File, "%d %f \n", Require_current, Act_Pressure);
  Require_current=Require_current+50;
}

Require_current=1000;
while((Require_current >=0) & (Emergency_STOP ==0))
{
  //HCU.SetParameterPhysValue("Current_Require_VFS1",Require_current);
  Sleep(3000);
  //Act_Pressure =Base_Calibration_Moving_Average_VFS;
  Write("Current: %d Pressure %f ",Require_current,Act_Pressure);
  FPrint(TXT_File, "%d %f \n", Require_current, Act_Pressure);
  Require_current=Require_current-50;
}
//HCU.SetParameterPhysValue("Current_Require_VFS1",0);
FPrint(TXT_File,"\n");

//VFS Flush Test
write("VFS Flush start");
int i=0;
while((i<=Flush_Repetition_Numbers)&&(Emergency_STOP == 0))
{
  //HCU.SetParameterPhysValue("Current_Require_VFS1",0);
  Sleep(3000);
  //HCU.SetParameterPhysValue("Current_Require_VFS1",VFS_Max_Current);
  Sleep(3000);
  i=i+1;
}
Write("VFS has Flushed %d times", Flush_Repetition_Numbers);
FPrint(TXT_File, "VFS has Flushed %d times. \n",Flush_Repetition_Numbers);
write("Flush Over");

//Final Data of P-I Test
write("Final VFS P-I Data Test after Flush:");
Sleep(1000);
FPrint(TXT_File,"Final VFS P-I Data Test after Flush:\n");
Require_current=0;
Act_Pressure =0;
FPrint(TXT_File, "Current, Act_Pressure\n");
while ((Require_current<VFS_Max_Current)&&(Emergency_STOP==0))
{
  //HCU.SetParameterPhysValue("Current_Require_VFS1",Require_current);
  Sleep(3000);
  //Act_Pressure =Base_Calibration_Moving_Average_VFS;
  Write("Current: %d Pressure %f ", Require_current,Act_Pressure);
  FPrint(TXT_File, "%d %f \n", Require_current, Act_Pressure);
  Require_current=Require_current+50;
}

Require_current=1000;
while((Require_current >=0) & (Emergency_STOP ==0))
{
  //HCU.SetParameterPhysValue("Current_Require_VFS1",Require_current);
  Sleep(3000);
  //Act_Pressure =Base_Calibration_Moving_Average_VFS;
  Write("Current: %d Pressure %f ",Require_current,Act_Pressure);
  FPrint(TXT_File, "%d %f \n", Require_current, Act_Pressure);
  Require_current=Require_current-50;
}
//HCU.SetParameterPhysValue("Current_Require_VFS1",0);
FPrint(TXT_File,"\n");

Write("Set Current value");
//Set Current Value 
//HCU.SetParameterPhysValue("Current_Require_Line",500);
//HCU.SetParameterPhysValue("Current_Require_VFS1",0);
//Set Current Status ON/OFF 
//HCU.SetParameterPhysValue("Status_Switch_Line",0);
//HCU.SetParameterPhysValue("Status_Switch_VFS1",0);
write("Require_value and Switch_Value Back to System Original Value.");
FPrint(TXT_File, "Require_value and Switch_Value Back to System Original Value.\n");
CloseFile(TXT_File);
Call("Notepad.exe", Filename_TXT);
Write("Script finished");
break;

      运行脚本时注意全局变量的设置,此处不多叙述。

>> 更多相关内容,点击Morven_Xie博客概览

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Canape是一种用于Web应用程序渗透测试和安全评估的脚本语言。它是由一家名为Context Information Security的技术公司开发的。Canape的设计目标是为渗透测试人员提供一个直观、易于使用的工具,以便他们可以对Web应用程序进行安全测试和漏洞分析。 Canape可以用于执行各种各样的自动化任务,如发现和利用Web应用程序的漏洞,例如跨站脚本(XSS)和SQL注入。它还支持对认证、授权和会话管理等关键Web安全功能进行测试。渗透测试人员可以使用Canape来检查Web应用程序是否存在缺陷,并提供修复建议。 Canape脚本语言使用了自定义的语法,其中包含了一系列预定义的函数和命令,用于执行各种任务。脚本可以以文本文件的形式编写,并通过Canape解释器来执行。Canape提供了许多内置功能,例如HTTP请求和响应处理、数据解析和处理、漏洞利用等。 使用Canape进行渗透测试可以提高工作效率,并降低出错的风险。它可以帮助渗透测试人员快速地分析和测试大量的Web应用程序,并生成详细的测试报告。此外,Canape还支持对现有脚本进行扩展和自定义,以满足特定渗透测试需求。 总的来说,Canape是一种功能强大、易于使用脚本语言,适用于Web应用程序的渗透测试和安全评估。它能够帮助渗透测试人员发现和利用各种Web应用程序的漏洞,并提供修复建议。通过使用Canape,渗透测试人员可以更有效地执行测试任务并提供准确和全面的报告。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值