求助各位前辈,大佬们。第一次独自接手一个项目,但是卡在取值与计算这块。本人属于小白类型,翻阅了两天的资料都没找到解决方法......
用的是信捷XL3-16的PLC,扩展了一个8AD模块采集数据。老大要求在传感器1和传感器2中各获取4个最小值,然后上位机最终显示这两组最小值的平均值。
头都大了,实在不知道怎么实现~无奈只能求助各位大佬~
求助各位前辈,大佬们。第一次独自接手一个项目,但是卡在取值与计算这块。本人属于小白类型,翻阅了两天的资料都没找到解决方法......
用的是信捷XL3-16的PLC,扩展了一个8AD模块采集数据。老大要求在传感器1和传感器2中各获取4个最小值,然后上位机最终显示这两组最小值的平均值。
头都大了,实在不知道怎么实现~无奈只能求助各位大佬~
这个不难啊。在1个传感器数值里取4个最小值,那肯定是四个时间区间。做四个时间继电器T1 T2 T3 T4,T1区间内设最小值存放寄存器为D50,用T1开始脉冲把传感器1的值MOV进去,随后T1区间内一直用D50跟传感器值比较,只要D50大,就把传感器1的值MOV进D50,可以得到T1区间内的最小值。同理T2 T3 T4可以得到四个最小值,然后四个相加除4取均值就可以。然后就是下一个时间区间了,如此循环往复。提供一种思路,可能会有更好的方法。
"stonezmy" 的回复,发表在1楼
对内容: 【这个不难啊。在1个传感器数值里取4个最小值,那肯定是四个时间区间。做四个时间继电器T1 T2 T3 T4,T1区间内设最小值存放寄存器为D50,用T1开始脉冲把传感器1的值MOV进去,随后T1区间内一...】进行回复:
-----------------------------------------------------------------
昂~动作流程是电机带动测量台旋转(电机启动后0.5S传感器开始采集数据),因为传感器是随着零件的转动,所以采集到的值也是时时变化的,那请问我应该怎么去获取到这个最小的值呢?
所以要确定时间区间,才能取最小值。比如每10秒一个区间,那么就是每10秒取1个最小值,40秒就取了4个最小值。不然只有1个最小值,不会有4个最小值。上面说的很清楚了已经,就是做比较,然后MOV
"stonezmy" 的回复,发表在3楼
对内容: 【所以要确定时间区间,才能取最小值。比如每10秒一个区间,那么就是每10秒取1个最小值,40秒就取了4个最小值。不然只有1个最小值,不会有4个最小值。上面说的很清楚了已经,就是做比较,然后MOV...】进行回复:
-----------------------------------------------------------------
前辈能写个案例看看吗?我好像不是很明白。今天咨询了400,信捷建议我用偏移量把传感器的数据都储存起来,然后逐个比较,找出最小值。但是具体怎么实现我好像也不明白,而且这也只能找出这两个传感器各自的最小值吧。那我要这些数据中倒数的4个值又应该怎么办?
按下【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
第一个扫描采集D4,第二个扫描采集D3,第三个扫描采集D2,第四个扫描采集D1,以后的扫描采集值与D1~D4比较,符合条件的写入
信jie 有c语言功能,建立一个数组,排序下,取最小值
刷积啦啦。。。。1123
原来如此,多谢,学习了
感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。
对于求助者要求:
1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;
2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。
学习了
来学习的
学习到了。。。谢谢分享!!!