优先选择

我想做一个功能块,输入有4对整数,ID1对应SP1,ID1对应SP2,ID3对应SP3,ID4对应SP4,输出为拥有最小的SP对应的ID。
逻辑控制,ID1~4的值不为0时,将SP1~4中的值选出最小值找出来,(如果ID2==0,SP2就不参与)。
如果最小值属于唯一的ID,如果ID3等于最小值,就将ID3的值赋值给输出ID。
如果最小值不唯一的ID; ID1,ID2,ID3都是等于最小值,就将ID1,ID2,ID3谁的值最大,就将最大的ID1~3中那个值最大就赋值给输出ID。

举例1:
ID1=1, SP1=51
ID2=3, SP2=21
ID3=6, SP3=48
ID4=0, SP4=2
输出 ID=3

举例2:
ID1=1, SP1=21
ID2=3, SP2=21
ID3=0, SP3=2
ID4=4, SP4=21
输出 ID=4

最佳答案

你这个程序非常好写!说下思路:
由于PLC的执行顺序是由上而下,因此你只需要进行SP最小值判断和ID最大值判断即可。假设SP最小值变量为MIN,初始值=0;ID最大值为变量MAX,初始值=0。

1、ID1

ID1=0,调转ID2;ID1!=0,MAX=ID1;MIN=SP1;

2、ID2

ID2=0,跳转ID3;
ID2!=0,MIN与SP2比较:
若SP2<MIN,则 { MIN=SP2,MAX=ID2}   跳转ID3
若SP2=MIN,则 {ID与MAX比较,较大值送入MAX} 跳转ID3
若SP2>MIN,  则跳转ID3

3、ID3

同上

4、ID4

同上

ID=MAX

提问者对于答案的评价:
OK

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc124882.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年5月28日 上午12:52
下一篇 2017年5月28日

相关推荐