yuetianbing
級別: 略有小成
![]() |
![]() |
---|---|
|
楓落云端
施主,腳抬一下
級別: 略有小成
![]() ![]() |
先說第一個掃描周期,第一行Z0為0,執行到第二行,進行43次循環,第0次循環時,執行到第三行,此時由于Z0為0,所以條件= D70Z0 D70其實就是= D70 D70,顯然條件是成立的,所以INC D70就會加1,也就是 D70為1,之后執行第四行,Z0自加為1(Z0為1),,接著執行到第五行NEXT,但是由于沒有達到43次,所以再循環到第三行,(Z0=1)條件= D70Z0 D70其實就是=D71 D70,由于D70為1,D71為0(如果程序沒有對D71賦值),顯然條件不成立,不執行INC D70,D70還是1;之后執行第四行,Z0自加為1(Z0為2),接著執行到第五行NEXT,但是由于沒有達到43次,所以再循環到第三行,、、、、、、、、、之后都是不成立,等到執行完循環43次后;D0還是為1,Z0為43,程序執行完NEXT結束一個掃描周期 之后到第二個掃描周期,第一行還是Z0為0,跟第一個掃描周期類似,由于進入循環的第0次時,Z0為0,所以必定=D70Z0 D70條件成立,D70自加1,也就是變成2;其后周期同理會加1;模擬器的掃描周期為100ms,所以一秒加十次。 |
---|---|
|
楓落云端
施主,腳抬一下
級別: 略有小成
![]() ![]() |
圖片:
![]() 其實這個程序Z0和循環的作用基本上算是多余。由于D70等于本身,所以Z0=0時,加1,Z0不等于0時,D71-D112里的值不等于D70里的值,可以把程序簡單化簡為上圖 |
---|---|
|
楓落云端
施主,腳抬一下
級別: 略有小成
![]() ![]() |
由于一個掃描周期內,都會存在INC D70條件成立,所以首先D70自加,之后INC D70條件不成立,不自加,這樣一個周期內INC條件會有OFF編程ON又變成OFF;所以即使INC D70變為INCP 70,還是會每個周期加1 |
---|---|
|
楓落云端
施主,腳抬一下
級別: 略有小成
![]() ![]() |
所以二樓說的不完全對。因為在一個周期內條件不會一致成立,所以即使加脈沖化P也是會累加 |
---|---|
|
楓落云端
施主,腳抬一下
級別: 略有小成
![]() ![]() |
第5樓w45062099是不加思索或者沒有分析驗證,說得太絕對。程序初一看,會誤認為是INC D70 條件會一直成立,認為加脈沖化P會只執行一次累加,實際上由于一個周期內存在OFF到ON到OFF,所以加脈沖化還是會每個周期累加一次,所以認為是等效于于SM400 INCP D70 是不對的。 |
---|---|
|