ayusecret
級別: 略有小成
![]() |
引用手冊 ![]() 大家認為IF里面的上升沿指令條件常On,運行效果是不是你要的預期,歡迎測試討論. |
---|---|
|
ayusecret
級別: 略有小成
![]() |
![]() 沒人討論,我來給出我的測試結果,D0,D1的不同結果讓我對ST的上升沿和下降沿的使用保持謹慎,畢竟這已經是我第二次在ST邊沿指令時發現的問題了,第一次引貼:http://m.mdgt.cn/read-gktid-1728792.html |
---|---|
|
ayusecret
級別: 略有小成
![]() |
第一次被人說是新手 ![]() ![]() |
---|---|
|
ayusecret
級別: 略有小成
![]() |
拜托,你以為我給出的代碼是真實場景呀,能用一個If的情況下我為什么要寫那么多IF,而且你以為真實情況下是M4,M5,M6,M7情況下可以用For循環? 我的設想是用一個If帶后面所有上升沿,和梯形圖一樣,懂?我覺得你才是思想被束縛的人,能用IF盡量用IF |
---|---|
|
ayusecret
級別: 略有小成
![]() |
可能我對ST用法理解不到位,但你能幫忙分析下以下結果么,為啥M1 On,D0+1,M2,M3常On且不受指令影響可以強制On/Off. 這個寫法對應的梯形圖究竟是長啥樣的能幫忙寫下嗎 ![]() ![]() |
---|---|
|
ayusecret
級別: 略有小成
![]() |
不行,有問題,你把IF M0 THEN改成IF SM412 THEN,就知道你的值一直在加,和梯形圖的執行效果不一樣 |
---|---|
|
ayusecret
級別: 略有小成
![]() |
很遺憾,還是有問題。可以自己驗證下,D0還是會自增 代碼1: M0:=TRUE; ib_IN:=SM412; IF ib_IN AND vb_b=FALSE THEN IF LDP(SM400,M0) THEN INC(SM400,D0); END_IF; END_IF; vb_b:=ib_IN; 代碼2: M0:=TRUE; ib_IN:=SM412; IF ib_IN AND vb_b=FALSE THEN INC(LDP(SM400,M0),D0); END_IF; vb_b:=ib_IN; |
---|---|
|