技术论坛

数组依次传递

作者 主题
游民

经验值: 63
发帖数: 1
精华帖: 0
主题:【求助】数组依次传递


只看楼主 楼主 2020-08-31 20:20:09

现场采集一组电压值,数组:Array[0..100]
一共100个电压;
然后每个电压值需要用当前值去和30s之前去比较;


1s钟采集一次, 当前采集的值和30s之前的值对比。超过阈值报警


请教大虾。


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1640226&b_id=50&s_id=0&num=5

侠圣

经验值: 2625
发帖数: 734
精华帖: 3
回复:数组依次传递


只看楼主 2楼 2020-09-01 15:48:57

先搞清楚1个电压信号的比较逻辑,再来谈100个电压信号的问题。建一个0..30的数组。每秒钟采样一下,新数据替换数组中最早的那一条(可以做一个静态变量跟踪最新数据的位置),然后比较这一条数据与最早的。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 43582
发帖数: 15779
精华帖: 61
回复:数组依次传递


只看楼主 3楼 2020-09-02 20:44:51

程序放到1s的中断中执行:

alarm:=0;

for i:=1 to 29 do

mydata[i]:=mydata[i+1];

end_for;

//前30s不管,30秒后判断

if mydata[1]>0 and abs(pv-mydata[1])>=deta then//mydata[1]>0说明数组已经满了,时间达到30s了

  alarm:=1;

end_if;

mydata[30]:=pv;//当前值保存到数组中

100个电压的只是定义一个udt,数据类型为30个元素的数组,然后再定义一个db,db中的元素是数组,数组的数据类型是你定义的udt。然后把上面的程序嵌套到一个for循环中。


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
版主

经验值: 76166
发帖数: 19135
精华帖: 378
回复:数组依次传递


只看楼主 4楼 2020-09-02 22:09:09

Array[0..100]是101个值


Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
至圣

经验值: 19341
发帖数: 2076
精华帖: 72
回复:数组依次传递


只看楼主 5楼 2020-09-03 08:56:50

一组数据,真正有用的就那么几个:


经常使用excel的人,对数据敏感,会将一组大数据作个预处理,也就是记住关键的几个数据,最大值、最小值、极差、数组计数、均值,每个周期去比较这些具有代表性的数据,效率高很多的。


大道至简,知易行难
以下网友喜欢您的帖子:

  
至圣

经验值: 43582
发帖数: 15779
精华帖: 61
回复:数组依次传递


只看楼主 6楼 2020-09-04 08:35:11

@楼中楼,这种情况,不要发评论,你评论了,怎么回复你?

abs(pv-mydata[1])>=deta,就是判断当前值和数组中的第一个数组的差值的绝对值是否大于等于deta,deta是你设定的一个允许范围。


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
数组依次传递
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。