我想做一个功能块,输入有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