硬件设备: canoe 、数显仪表、keysight E3640A程控电源;直流电源
设备连接:仪表正常与直流电源连接,程控电源正极连接直流电源正极;程控电源负极连接仪表测试盒IGN 。程控电源的USB接口接电脑,电脑自动识别com口。
接下来开始打开canoe ,实现自动化操作IGN
创建一个canoe工程,选择一个Test Module 。
接下来开始进行capl编程:
includes
{
#pragma library ("capldll.dll")
}
variables
{
float systime = 0.0;
float systime1 = 0.0;
float delt_time = 0.0;
int count= 0;
}
void PowerInit(void)
{
char Reset[20]="voltage:range high";
byte buffer1[20];
int length1;
int i;
if(1 == rs232Open(5))
{
write("port 5 has been opened.");
RS232Configure(5,9600,8,1,0);
}
length1=strlen(Reset);
write("length1 is %d",length1);
for(i=0;i<length1;i++)
{
buffer1[i]=Reset[i];
//write("send CMD byte %d is %x",j,buffer1[j]); //"volt 11";
}
buffer1[length1]=10; //end
//write("send CMD byte %d is %x ",(length1),buffer1[length1]); //"0x0a"
//write("send CMD byte %d is %x ",(length1+1),buffer1[length1+1]); //"0x0a"
i = rs232Send(5,buffer1,length1+1);//length1+1
write("Error %d",i);
strncpy(Reset,"voltage:range high",elCount(Reset));
testwaitfortimeout(1500);
write("PowerInit done");
}
void Poweroutput(int i)
{
char output1[20]="output on";
char output2[20]="output off";
byte buffer1[20];
byte buffer2[20];
int length1;
int length2;
int j;
if(i==1)
{
length1=strlen(output1);
//write("length1 is %d",length1);
for(j=0;j<length1;j++)
{
buffer1[j]=output1[j];
//write("send CMD byte %d is %x",j,buffer1[j]); //"volt 11";
}
buffer1[length1]=10; //end
//write("send CMD byte %d is %x ",(length1),buffer1[length1]); //"0x0a"
//write("send CMD byte %d is %x ",(length1+1),buffer1[length1+1]); //"0x0a"
rs232Send(5,buffer1,length1+1);
testwaitfortimeout(2);
// @Env_KL15ON=1;
// @Env_K30_Switch=1;
write("power on");
}
else
{
length2=strlen(output2);
//write("length2 is %d",length2);
for(j=0;j<length2;j++)
{
buffer2[j]=output2[j];
//write("send CMD byte %d is %x",j,buffer2[j]); //"volt 11";
}
buffer2[length2]=10; //end
//write("send CMD byte %d is %x ",(length2),buffer2[length2]); //"0x0a"
//write("send CMD byte %d is %x ",(length2+1),buffer2[length2+1]); //"0x0a"
rs232Send(5,buffer2,length2+1);
testwaitfortimeout(2);
// @Env_K30_Switch=0;
write("power off");
}
strncpy(output1,"output on",elCount(output1));
strncpy(output2,"output off",elCount(output2));
write("Poweroutput done");
}
void SetVoltage(float voltage)
{
char SetVolt[20]="volt ";
byte buffer[20];
char StrVolt[9];
int length;
int i;
_gcvt(voltage,10,StrVolt);
strncat(SetVolt,StrVolt,elCount(SetVolt)); //add to setvolt
length=strlen(SetVolt);
for(i=0;i<length;i++)
{
buffer[i]=SetVolt[i];
//write("send CMD byte %d is %x",j,buffer2[j]); //"volt 11";
}
buffer[length]=0x0a;
rs232Send(5,buffer,length+1);
testwaitfortimeout(2);
strncpy(SetVolt,"volt ",elCount(SetVolt));
write("voltage %.2f",voltage);
// @Env_Voltage = voltage;
}
void maintest()
{
while(1)
{
PowerInit();
Poweroutput(0); //开
testwaitfortimeout(10000);
Poweroutput(1); //关
SetVoltage(13.8);
testwaitfortimeout(15000); //10s
}
}