程序流控制(00-09)CJ (P)條件跳轉指令用于跳過順序程序中的某一部分,可以減少掃描時間,并使“雙線圈操作”成為可能目標操作元件:指針P0——P63(允許變址修改)
即跳轉目標由指針P0-P63指定(允許變址修改)。P63 即END步。
使用格式: LD X0
CJ(P) P0
:
:
P0
:
:
END
當X0由OFF到ON時,程序直接跳到P0處,向下執行到程序結束。
當用連續方式執行CJ時,條件滿足時,每個掃描周期執行一次。
(1) 跳轉指令有效時跳轉段內的程序跳過,PLC不掃描,
(2) 跳轉前跳轉段內已有自我保持的線圈,或以SET 的線圈,跳轉后線圈仍保持,但可通過跳轉外程序改變。積算定時器/計數器保持當前值,非積算型復位,高速計數器仍工作。
(3) 從主控區外跳到主控區內時,跳轉獨立于主控操作,不管MC狀態如何,均作ON處理。
(4) 從主控內跳轉時,MC為OFF時,不執行,為ON時可跳轉可跳到主控區外。
(5) T192---T199(100ms定時器);C235----C255(高速計數器)一經驅動,既是跳過,也仍工作,輸出觸點也動作。
CALL(P)轉子程序
SRET 子程序返回。目標操作元件:P0——P62(允許變址修改)
使用格式:LD X0
CALL(P) P0
:
:
:
FEND
P0
:
:
SRET
END
當X0由OFF變為ON時,程序直接跳到P0處,向下執行,到SRET時,返回跳轉處再向下執行。
注意:(1)當用連續方式執行CALL時,執行條件滿足時每個掃描周期執行一次。
(2)轉移目標由P0-P62指定(允許變址修改)但CJ中用過的標號不可再用。不同的CALL可調用同一子程序。
(3) P必須在主程序結束FEND后也就是說子程序必須寫在主程序結束FEND后。
(4)CALL調用的子程序必須以SRET結束
(5)在子程序內可再用CALL子程序,形成嵌套,最多5級。
(6)子程序中定時器范圍T192-T199和T246-T249。
IRET 中斷返回,從中斷子程序返回中斷點,即子程序結束。
EI 允許中斷
DI 禁止中斷指令EI 與DI之間的程序段為允許中斷區間。當處理到允許中斷區間時,中斷請求為ON 態,則轉而處理相應的中斷子程序。子程序處理到IRET指令知返回斷點。
在禁止中斷區間(即EI 與DI以外)有中斷事件發生,則PLC 記住該中斷,留待EI指令后執行。
相應的特殊輔助繼電器置1時,中斷程序不能執行。例如,當M805△置1時,相應的中斷I△★★不執行
在執行中斷程序時,其它中斷禁止,但可在中斷程序內編入中斷,可實現2級嵌套。
中斷程序中用定時器為T192——T199和T246——T249。
(1) 中斷子程序必須寫在主程序結束FEND后。
(2) 中斷子程序必須以IRET返回
中斷類型見元件“指針”
FEND 主程序結束,表示主程序結束。執行到FEND指令時機器進行輸出處理、輸入處理、警戒時鐘刷新,完成以后返回0步。(1) 子程序必須寫在FEND之后,即CALL、CALL(P)指令對應的標號必須寫在FEND 指令之后。CALL、、CALL(P)指令調用的 子程序必須以SRET指令結束。
(2) 中斷子程序也必須寫在FEND之后,必須以IRET結束。
(3) FEND 也不可出現在FOR-NEXT循環之中。
WDT(P)警戒時鐘。WDT指令刷新順序程序的警戒時鐘。如果掃描(從0步到END或FEND指令)超過200ms,PLC將停止。在這種情況下,應將WDT指令插到合適位置中刷新警戒時鐘,以使順序程序執行到END。
掃描周期的缺剩設置為200ms,如果希望改變掃描時間,可通過MOV改變D8000的值。
使用格式:LD X0
WDT(P)
當X0由OFF變ON時,WDT(P)執行一次刷新。
當為連續方式執行WDT時,執行條件滿足時每個掃描周期執行一次。
(1) 當與CJ指令對應的標號的步序低于CJ指令時(即CJ跳到的位置在其前面時)在標號P后編如WDT指令。
(2) M8039置位時,PLC 改以定時掃描方式運行,掃描時間由D8039指定。可通過MOV傳送改變D8039數值。
FOR循環區起點,后面加Kn,循環n次。
NEXT 循環區終點操作元件:K/H KnX KnY KnM KnS T C D V/Z
使用格式:FOR K4
:
:
NEXT
:
END
FOR——NEXT間的程序執行4次,再執行NEXT指令以后的程。
(1) 可嵌套5級
(2) 循環次數1——32767
[ 此帖被870605在2011-06-09 11:24重新編輯 ]