回复:PLC控制伺服电机运行做数据采集统计某段行程最大值、最小值、平均值

已锁定

zhangli0

西门子1847工业学习平台

  • 帖子

    17423
  • 精华

    65
  • 被关注

    922

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 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是平均值。

这是纯手动打出的代码逻辑,自己按照这个逻辑写正确的代码。异常情况未处理

活到老,学到老!为了生活学习吧!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有11106条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。