第一次独自操作就卡住了~求助大佬 点击:482 | 回复:7



zzir

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 3回
  • 年度积分:29
  • 历史总积分:29
  • 注册:2020年10月15日
发表于:2020-10-15 16:32:32
楼主
求助帖40分-已结帖

求助各位前辈,大佬们。第一次独自接手一个项目,但是卡在取值与计算这块。本人属于小白类型,翻阅了两天的资料都没找到解决方法......

用的是信捷XL3-16的PLC,扩展了一个8AD模块采集数据。老大要求在传感器1和传感器2中各获取4个最小值,然后上位机最终显示这两组最小值的平均值。1602750122(1).jpg

头都大了,实在不知道怎么实现~无奈只能求助各位大佬~




stonezmy

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 54回
  • 年度积分:93
  • 历史总积分:223
  • 注册:2010年5月10日
发表于:2020-10-15 17:14:10
1楼

这个不难啊。在1个传感器数值里取4个最小值,那肯定是四个时间区间。做四个时间继电器T1 T2 T3 T4,T1区间内设最小值存放寄存器为D50,用T1开始脉冲把传感器1的值MOV进去,随后T1区间内一直用D50跟传感器值比较,只要D50大,就把传感器1的值MOV进D50,可以得到T1区间内的最小值。同理T2 T3 T4可以得到四个最小值,然后四个相加除4取均值就可以。然后就是下一个时间区间了,如此循环往复。提供一种思路,可能会有更好的方法。

zzir

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 3回
  • 年度积分:29
  • 历史总积分:29
  • 注册:2020年10月15日
发表于:2020-10-15 18:29:51
2楼

"stonezmy" 的回复,发表在1楼
        对内容: 【这个不难啊。在1个传感器数值里取4个最小值,那肯定是四个时间区间。做四个时间继电器T1 T2 T3 T4,T1区间内设最小值存放寄存器为D50,用T1开始脉冲把传感器1的值MOV进去,随后T1区间内一...】进行回复:

        -----------------------------------------------------------------


昂~动作流程是电机带动测量台旋转(电机启动后0.5S传感器开始采集数据),因为传感器是随着零件的转动,所以采集到的值也是时时变化的,那请问我应该怎么去获取到这个最小的值呢?

stonezmy

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 54回
  • 年度积分:93
  • 历史总积分:223
  • 注册:2010年5月10日
发表于:2020-10-16 08:14:45
3楼

所以要确定时间区间,才能取最小值。比如每10秒一个区间,那么就是每10秒取1个最小值,40秒就取了4个最小值。不然只有1个最小值,不会有4个最小值。上面说的很清楚了已经,就是做比较,然后MOV

zzir

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 3回
  • 年度积分:29
  • 历史总积分:29
  • 注册:2020年10月15日
发表于:2020-10-16 11:15:42
4楼

"stonezmy" 的回复,发表在3楼
        对内容: 【所以要确定时间区间,才能取最小值。比如每10秒一个区间,那么就是每10秒取1个最小值,40秒就取了4个最小值。不然只有1个最小值,不会有4个最小值。上面说的很清楚了已经,就是做比较,然后MOV...】进行回复:

        -----------------------------------------------------------------


前辈能写个案例看看吗?我好像不是很明白。今天咨询了400,信捷建议我用偏移量把传感器的数据都储存起来,然后逐个比较,找出最小值。但是具体怎么实现我好像也不明白,而且这也只能找出这两个传感器各自的最小值吧。那我要这些数据中倒数的4个值又应该怎么办?

gaoyingchun

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 5回
  • 年度积分:103
  • 历史总积分:209
  • 注册:2009年7月17日
发表于:2020-10-21 16:22:22
5楼

按下【i_采集开始】按钮,开始采集数据,寄存器清零,数据按照PLC扫描周期写入D1~D4寄存器

IF i_采集开始 THEN D1:=0;D2:=0;D3:=0;D4:=0; END_IF


IF D4<>0 AND D3<>0 AND D2<>0 AND D1=0 THEN

IF D0<D4 THEN D1:=D2;D2:=D3;D3:=D4;D4:=D0;

    ELSIF D0>D4 AND D0<D3 THEN D1:=D2;D2:=D3;D3:=D0;

ELSIF D0>D3 AND D0<D2 THEN D1:=D2;D2:=D0;

ELSE D1:=D0;

END_IF

END_IF


IF D4<>0 AND D3<>0 AND D2=0 AND D1=0 THEN

IF D0<D4 THEN D2:=D3;D3:=D4;D4:=D0;

    ELSIF D0>D4 AND D0<D3 THEN D2:=D3;D3:=D0;

ELSE D2:=D0;

END_IF

END_IF


IF D4<>0 AND D3=0 AND D2=0 AND D1=0 THEN

IF D0<D4 THEN D3:=D4;D4:=D0;

ELSE D3:=D0;

END_IF

END_IF


IF D4=0 AND D3=0 AND D2=0 AND D1=0 THEN D4:=D0;

END_IF


IF D4<>0 AND D3<>0 AND D2<>0 AND D1<>0 THEN

IF D0<D4 THEN D1:=D2;D2:=D3;D3:=D4;D4:=D0;

    ELSIF D0>D4 AND D0<D3 THEN D1:=D2;D2:=D3;D3:=D0;

ELSIF D0>D3 AND D0<D2 THEN D1:=D2;D2:=D0;

ELSIF D0>D2 AND D0<D1 THEN D1:=D0;

END_IF

END_IF


gaoyingchun

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 6回
  • 年度积分:104
  • 历史总积分:210
  • 注册:2009年7月17日
发表于:2020-10-21 16:33:34
6楼

第一个扫描采集D4,第二个扫描采集D3,第三个扫描采集D2,第四个扫描采集D1,以后的扫描采集值与D1~D4比较,符合条件的写入

落叶归根87

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 247回
  • 年度积分:0
  • 历史总积分:71
  • 注册:2013年8月05日
发表于:2020-10-24 11:27:29
7楼

信jie 有c语言功能,建立一个数组,排序下,取最小值


相关主题

官方公众号

智造工程师