|
vitalityboy
級別: 略有小成
|
圖片:
用ST寫的那段,第一次M0 On后M100能On,在5秒后M100自動為Off,而M0再次On時M100卻不會為On;用梯形圖寫的這段,M0為On時M100就On,在5秒后M100自動為Off,而且M0再次On后M100也能為On。以上兩段程序運行原理一樣,梯形圖寫的執行效果符合預期,而用ST寫的卻差強人意,同樣都是FX3U的程序為什么執行效果卻不一樣??? |
|---|---|
|
|
|
sjm213
有小知識,無大學問。
級別: 論壇版主
|
IF M0 THEN IF NOT M100 THEN IF M0 AND NOT M1 THEN M100:=TRUE; MOV(TRUE,0,D0); END_IF; ELSE IF D0>=5 THEN M100:=FALSE; END_IF; END_IF; END_IF; INCP(SM413,D0); M1:=M0; ====================== 估計是M0為OFF時 LDP(TRUE,M0)這句一直未執行,導致M0再ON時它的上升沿狀態無變化,這樣M100:=TRUE就不執行了。 |
|---|---|
|
|
|
uthman
QQ:3749615
級別: 家園常客
|
IF M0 AND NOT M1 THEN D0 := 0; M100 := TRUE; END_IF; M1 := M0; IF M8013 AND NOT M2 THEN D0 := D0 + 1; END_IF; M2 := M8013; IF D0 >= 5 THEN M100 := FALSE; END_IF; |
|---|---|
|
|
|
麥克朱
級別: 家園常客
|
if 以內的東西不執行,里面有LDP這個指令,優先用R_TRIG,且獨立放在外面是最好的,真要一樣的話要寫應當是m0 and not m100 and ldp(m0) |
|---|---|
|
本帖最近評分記錄: |
|
hlq_0815
人生的成功不在于拿到一副好牌,而是怎樣將壞牌打好。
級別: 論壇版主
|
INCP(M8013,D0); IF NOT M100 AND LDP(TRUE,M0) THEN M100 := TRUE; D0 := K1; END_IF; IF M0 AND M100 AND D0 >= K5 THEN M100 := FALSE; END_IF; 樓主留言:經這么一改,M0再次導通M100也能再次為On,而且生成的程序比我原來的小一點 |
|
|---|---|---|
|
本帖最近評分記錄:
|