发布于 2012-02-26 00:23:53
23楼
请大家分析一下如下几种情况:
声明:1.我使用的是STEP7的仿真软件
2.每测试一种情况,我都会事先复位仿真PLC,重新下载程序
情况1:
FC 1:
L 10
T LW0
FC 2:
L LW0
T MW10
FC 3:
L LW0
T MW12
OB 1:
CALL FC1
CALL FC2
OB 35:
CALL FC3
执行的结果是 MW10=10 MW12=0
情况 2:
在FC1/FC2中分别定义临时变量TEMP1
FC 1:
L 10
T #TEMP1
FC 2:
L #TEMP1
T MW10
FC 3:
L LW0
T MW12
OB 1:
CALL FC1
CALL FC2
OB 35:
CALL FC3
执行结果 MW10=10 MW12=0 (A:将FC1/FC2中的临时变量名任意修改;B:或FC1/FC2中只有一个定义临时变量;C:FC3也定义临时变量,变量名任意;结果均同上)
情况 3:
FC 1:
L 10
T LW0
FC 2:
L LW0
T MW10
CALL FC3
FC 3:
L LW0
T MW12
OB 1:
CALL FC1
CALL FC2
执行结果 MW10=0 MW12=0 (因为在FC2中调用了FC3)
根据以上3种情况,请大家分析:
1.临时变量是谁的零时变量
2.临时变量的分配原则
可能我的例子还不足以说明问题,大家亦可举证说明。
临时变量要先定义后使用,这在实际的使用中是正确的,但这也掩盖了一些真相。
Zane
注册自动化系统工程师
Always save before download