我在理解PLC时,本想找到DB35.DBX1.5/1.6这个轴半闭环和全闭环是由什么控制的, 涉及到1.5/1.6的程序块是FC37,程序如下所示:
AN #IN0
BEC
L #IN1
L 30
+I
T #TEMP12
OPN DB [#TEMP12]
A DBX 93.5
A DB10.DBX 104.7
A DB10.DBX 108.7
AN DB10.DBX 106.1
A #IN6
A(
ON #IN8
O DB126.DBX 64.4
)
A(
ON #IN9
O DB126.DBX 234.5
)
A(
A DB109.DBX 46.1
AN DB109.DBX 46.0
ON #IN10
)
A(
ON #IN11
O DB126.DBX 57.1
)
OPN DB [#TEMP12]
= DBX 2.1
SET
= DBX 21.7
A(
A #IN11
A DB126.DBX 57.4
O
AN #IN11
)
OPN DB [#TEMP12]
AN #IN7
= DBX 1.5
A(
A #IN11
A DB126.DBX 57.4
O
AN #IN11
)
OPN DB [#TEMP12]
A #IN7
= DBX 1.6
SET
= DBX 1.7
A #IN5
= DBX 12.7
A #IN2
AN #IN4
= DBX 12.0
A #IN2
AN #IN3
= DBX 12.1
SET
= DB21.DBX 6.6
= DBX 6.7
= DBX 25.3
可以看出#IN7的常闭控制1.5,常开控制1.6,后来查到调用FC37的程序块FB92,如下所示:
L DB126.DBW 412
L 0
==I
JC M001
L DB20.DBB 131
L 0
==I
JC M001
L 6
L 8
*I
L DB126.DBW 412
+I
LAR1
SET
OPN DI 92
= DBX [AR1,P#0.0]
M001: NOP 0
L 1
M002: T #STAT0
L 1
-I
LAR1
OPN DB 20
A DBX [AR1,P#118.1]
= #STAT1[1]
A DBX [AR1,P#104.1]
= #STAT1[2]
A DBX [AR1,P#152.1]
= #STAT1[3]
A DBX [AR1,P#114.1]
= #STAT1[4]
A DBX [AR1,P#112.1]
= #STAT1[5]
A DBX [AR1,P#106.1]
= #STAT1[6]
OPN DI 92
A DBX [AR1,P#6.1]
= #STAT1[10]
L #STAT0
L 19
+I
SLW 3
L DW#16#0
OD
T #TEMP3[1]
TAK
L DW#16#1
OD
T #TEMP3[2]
TAK
L DW#16#2
OD
T #TEMP3[3]
OPN DB 109
A DBX [#TEMP3[1]]
= #STAT1[7]
A DBX [#TEMP3[2]]
= #STAT1[8]
A DBX [#TEMP3[3]]
= #STAT1[9]
CALL FC 37
IN0 :=#STAT1[1]
IN1 :=#STAT0
IN2 :=#STAT1[3]
IN3 :=#STAT1[8]
IN4 :=#STAT1[9]
IN5 :=#STAT1[7]
IN6 :=Q1.7
IN7 :=#STAT1[2]
IN8 :=#STAT1[4]
IN9 :=#STAT1[5]
IN10:=#STAT1[10]
IN11:=#STAT1[6]
L DB126.DBW 408
L #STAT0
==I
JC M003
INC 1
JU M002
M003: NOP 0
我自己推理#STAT0=1时,AR1=0,就是第一个轴DB31,以此类推#STAT0=5时,AR1=4,就是第5个轴DB35,DB20.DBX108.1控制闭环和半闭环的点,同时查到MD14504=50,MD14506=60,推理得出14512[8]中的第一位的状态控制DB35.DBX1.5/1.6的状态,而现场参数状态证明我的理解是错误的,请大家帮忙分析一下,应该如何理解这个程序,不胜感激!