楼主最近还看过
"stonezmy" 的回复,发表在1楼
对内容: 【这个不难啊。在1个传感器数值里取4个最小值,那肯定是四个时间区间。做四个时间继电器T1 T2 T3 T4,T1区间内设最小值存放寄存器为D50,用T1开始脉冲把传感器1的值MOV进去,随后T1区间内一...】进行回复:
-----------------------------------------------------------------
昂~动作流程是电机带动测量台旋转(电机启动后0.5S传感器开始采集数据),因为传感器是随着零件的转动,所以采集到的值也是时时变化的,那请问我应该怎么去获取到这个最小的值呢?
"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