恭喜,你发布的帖子
发布于 2021-12-30 12:07:07
3楼
你0度到60度,60度到0度需要多少时间呢?假设是都是10s,那么你0.1s采集一个点,那么一个行程需要100个点,三个往复就是600个点,那么你定义一个db,"mydb",里面顶一个一个包含600个实数的数组mydata,array[0..599]of real。启动测量时数组赋值-100.0(只要远远小于实际的扭矩就行了),然后每一个扫描周期循环查找db中小于100.0的位置,将当前扭矩保存到这个位置。
三个往复后计算
max1:=-10000.0
max2:=-10000.0
max3:=-10000.0
min1:=10000.0
min2:=10000.0
min3:=10000.0
sum1:=0.0
sum2:=0.0
sum3:=0.0
for i:=0 to 99
if "mydb".mydata[i]>max1 then
max1:= "mydb".mydata[i];
end if;
if "mydb".mydata[i]<min1 then
min1:= "mydb".mydata[i];
end if;
sum1:=sum1+"mydb".mydata[i];
if "mydb".mydata[i+100]>max2 then
max2:= "mydb".mydata[i+100];
end if;
if "mydb".mydata[i+100]<min2 then
min2:= "mydb".mydata[i+100];
end if;
sum2:=sum2+"mydb".mydata[i+100];
if "mydb".mydata[i+200]>max3 then
max3:= "mydb".mydata[i+200];
end if;
if "mydb".mydata[i+200]<min3 then
min3:= "mydb".mydata[i+200];
end if;
sum3:=sum3+"mydb".mydata[i+200];
end for;
aver1:=sum1/100.0;
aver2:=sum2/100.0;
aver3:=sum3/100.0;
max就是三次的最大值,min是三次的最小值,aver是平均值。
这是纯手动打出的代码逻辑,自己按照这个逻辑写正确的代码。异常情况未处理
请填写推广理由:
分享
只看
楼主