下面这段程序是EM235模拟量输入处理程序,出自S7200系统手册上的例子,大家肯定非常熟悉。但是有个问题请教:
在SBR3中
LDW<= VW20, -160 //如果平均值为负
R Q0.0, 1 //则关断Q0.0
S Q0.1, 1 //且接通Q0.1,用来显示当前平均值为负
此段程序中的-160从何而来?
以下为源程序:
ORGANIZATION_BLOCK 主程序:OB1
TITLE=程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.1
CALL SBR0
Network 2
LD SM0.0
CALL SBR1
Network 3
LDN Q1.0
AN Q1.1
CALL SBR2
CALL SBR3
Network 4
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=子程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
O I0.1
MOVW 0, VW0
MOVW 128, VW2
MOVD 0, VD10
MOVD 0, VD14
MOVD 0, VD18
Network 2
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK SBR_1:SBR1
TITLE=子程序注释
BEGIN
Network 1 // 网络标题
// 检查第一个扩展模块是否存在,若不存在,则置位Q1.0
LDB= SMB8, 16#19
NOT
S Q1.0, 1
Network 2
// 检查第一个扩展模块是否有错,
// 检查第一个扩展模块电源是否正常,若有错,则置位Q1.1
LDB= SMB9, 16#0
NOT
AB= SMB9, 16#04
S Q1.1, 1
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK SBR_2:SBR2
TITLE=子程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
MOVW AIW0, VW12
Network 2
LDW>= VW12, 0
MOVW 0, VW10
NOT
MOVW 16#FFFF, VW10
Network 3
LD SM0.0
+D VD10, VD14
INCW VW0
Network 4
LDW>= VW0, VW2
MOVD VD14, VD18
ENCO VW2, AC1
SRD VD18, AC1
MOVD 0, VD14
MOVW 0, VW0
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK SBR_3:SBR3
TITLE=子程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LDW<= VW20, -160 //如果平均值为负
R Q0.0, 1 //则关断Q0.0
S Q0.1, 1 //且接通Q0.1,用来显示当前平均值为负
Network 2
LDW>= VW20, 160 //如果平均值为正
R Q0.0, 1 //则接通Q0.0
S Q0.1, 1 //且关断Q0.1,用来显示当前平均值为正。
Network 3
LD SM0.0
MOVW VW20,AQW0 //在模块AQW0输出平均值
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
END_INTERRUPT_BLOCK