发表于:2004-01-11 20:39:00
楼主
用S7-200编程,其中一个产生锯齿波的子程序,从-5v到5v,间隔0.1v,每增加0.1v从aiw4采集信号,并存起来。我用一个指针来指向存储的空间,并用一个值vw54来作为计数用(从-50到50)。现在问题是每次运行时,子程序中vw54就停在了8,不再向下增加,PLC被stop后,重新运行,这时vw54就停在16。而把产生锯齿波的几行networks放到main中就可以实现。请问这是为什么?
附程序:
main:
NETWORK 1
LD SM0.1
S Q1.0, 1
NETWORK 2
LD I1.2
TON T40, +50
NETWORK 3
LD T40
S V0.0, 1
NETWORK 4
LD V0.0
CALL sawtooth
sawtooth:
NETWORK 1 //VW54存放计数值,将VB60的地址赋给AC2
//
//NETWORK COMMENTS
//
LD SM0.1
MOVW -50, VW54
MOVD &VB60, AC2
NETWORK 2 //输出到AQW0,并存到AC2对应的地址
//
LDW<= VW54, +50
MOVW VW54, VW50
AENO
*I +640, VW50
AENO
MOVW VW50, AQW0
NETWORK 3 //读AIW值到AC2对应的地址
//
LDW<= VW54, +50
MOVW AIW4, *AC2
AENO
INCD AC2
AENO
INCD AC2
AENO
INCW VW54
NETWORK 4
//
LDW= VW54, +51
LPS
R Q1.0, 1
MOVW -50, VW54
AENO
MOVD &VB60, AC2
LRD
R T40, 1
LPP
R V0.0, 1