逻辑阵列要求:给定零点坐标,自动将其他点的数据进行运算,结果存入数组中。通过特定算法,可以知道某个点位的坐标值。
程序一,用两个一维数组编写:

IF LDP(1,X0)THEN(*如果x0上升沿接通,清零*)
FMOV(1,K0,K20,D100);(*清零,把0传送到d100开始的20个D*)
FMOV(1,K0,K5,行数[0]);(*清零,一维数组的1-5行清零*)
FMOV(1,K0,K7,列数[0]);(*清零,一维数组的1-7列清零*)
END_IF;
IF LDP(1,X1)THEN(*如果x1上升沿接通,启动重复*)
FOR D100:=0 TO 6 BY 1 DO(*0-6列的重复*)
列数[D100]:=D110 ; (*d110初值为0*)
D110:=D110+50;(*d110循环一次加50*)
END_FOR;
FOR D101:=0 TO 4 BY 1 DO(*0-4行的重复*)
行数[D101]:=D115 ;(*d115初值为0*)
D115:=D115+50;(*d115循环一次加50*)
END_FOR;
END_IF; (*上面已把坐标数据存入数组*)
D300:=列数[D105]; (*输入列数,把数据读到d300*)
D400:=行数[D106]; (*输入行数,把数据读到d400*)

程序二,用一个二维数组编写:

IF LDP(1,X0)THEN (*当x0上升沿接通,清零*)
FMOV(1,K0,20,D100); (*复位d100-d119*)
FMOV(1,K0,35,矩阵[0,0]); (*复位矩阵0,0-4,6*)
END_IF;
IF LDP(1,X1)THEN (*当x1上升沿接通,循环*)
FOR D100:=0 TO 4 BY 1 DO (*执行行数*)
FOR D101:=0 TO 6 BY 1 DO (*执行每行列数*)
矩阵[D100,D101]:=D110; (*d110初值为0*)
INC(1,D110);(*d110自加1*)
END_FOR;
END_FOR;
END_IF; (*矩阵的点的位置已经保存*)
D300:=矩阵[D105,D106]/7*50; (*求数在几行,除7乘50*)
D400:=矩阵[D105,D106] MOD 7*50; (*求数在几列,除7余数乘50*)

ST语言编写的程序可以方便的复制、粘贴,有兴趣的朋友可以复制回去实验一下哦。
#PLC##电工交流圈##电工#