才接触300PLC,因为要用到一个2*4的矩阵键盘,好不容易把程序弄出来了,功能也实现了,但感觉程序太大了,大家能不能帮我优化,或者有什么别的方法实现吗?
电路图:

思路,接通Q4.0,判断I0.0=1时BCD写入1,,I0.1=1时BCD写入5,接通Q4.1,判断I0.0=1时BCD写入2,I0.1=1时BCD写入6,一直到Q4.3。 I0.0或I0.1有输入时锁定对应按键的输出Q。
我的程序:
A Q 4.0
A I 0.0
JCN mov1
L 1
T #BCD
JCN mov9
mov1: A Q 4.1
A I 0.0
JCN mov2
L 2
T #BCD
JCN mov9
mov2: A Q 4.2
A I 0.0
JCN mov3
L 3
T #BCD
JCN mov9
mov3: A Q 4.3
A I 0.0
JCN mov4
L 4
T #BCD
JCN mov9
mov4: A Q 4.0
A I 0.1
JCN mov5
L 5
T #BCD
JCN mov9
mov5: A Q 4.1
A I 0.1
JCN mov6
L 6
T #BCD
JCN mov9
mov6: A Q 4.2
A I 0.1
JCN mov7
L 7
T #BCD
JCN mov9
mov7: A Q 4.3
A I 0.1
JCN mov8
L 8
T #BCD
JCN mov9
mov8: AN I 0.0
AN I 0.1
JCN mov9
L 0
T #BCD //没有输入,BCD写0
//
mov9: AN T 2 //循环输出Q4.0~Q4.3
L S5T#50MS
SD T 1
A T 1
L S5T#50MS
SF T 2
A T 2
L S5T#20MS
SD T 3
AN T 2
L S5T#20MS
SD T 4
A T 2
AN T 3
O(
A I 0.0
O I 0.1
A Q 4.0 //检测到有按键按下锁定输出
)
AN Q 4.1
AN Q 4.2
AN Q 4.3
= Q 4.0
A T 2
A T 3
O(
A I 0.0
O I 0.1
A Q 4.1
)
AN Q 4.0
AN Q 4.2
AN Q 4.3
= Q 4.1
AN T 2
AN T 4
O(
A I 0.0
O I 0.1
A Q 4.2
)
AN Q 4.1
AN Q 4.0
AN Q 4.3
= Q 4.2
AN T 2
A T 4
O(
A I 0.0
O I 0.1
A Q 4.3
)
AN Q 4.1
AN Q 4.2
AN Q 4.0
= Q 4.3