最近有个CASE,有2个一样是设备,一样的控制方式,想写一个子程序,重复调用,结果发现在2个使能信号都ON的时候,只有前面一个子程序运行正常,而后面的子程序不计数或是停止计数,我已经把计数的地址写成了IN_OUT型的形参了,怎么还会这样?就这点跟300相比是不是弱爆了。。。
以下程序请复制到写字板,格式改成.awl,在导入200软件。
ORGANIZATION_BLOCK 主程序:OB1
TITLE=程序注释
BEGIN
Network 1
LD M0.0
= L60.0
LD I0.0
= L63.7
LD I0.1
= L63.6
LD L60.0
CALL SBR4, L63.7, L63.6, Q2.1, Q2.2, M0.0, VW0
Network 2
LD M0.1
= L60.0
LD I0.4
= L63.7
LD I0.5
= L63.6
LD L60.0
CALL SBR4, L63.7, L63.6, Q2.4, Q2.5, M0.1, VW2
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_1:SBR4
TITLE=子程序注释
VAR_INPUT
信号1:BOOL;
信号2:BOOL;
END_VAR
VAR_IN_OUT
启动:BOOL;
停止:BOOL;
使能:BOOL;
计算:WORD;
END_VAR
BEGIN
Network 1 // 网络标题
// 网络注释
LD L0.4
A SM0.5
ED
+I +1, LW1
Network 2 // 网络标题
// 网络注释
LD L0.4
LPS
AW<= LW1, +2
A SM0.5
= L0.3
LPP
AW>= LW1, +3
A SM0.5
= L0.2
Network 3
LD L0.1
A L0.0
R L0.4, 1
EU
MOVW +0, LW1
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
END_INTERRUPT_BLOCK