sjm213
有小知識,無大學問。
級別: 論壇版主
|
系列帖子鏈接:http://m.le-linge.com/read-gktid-1421940.html 即日起開始對三菱FX系列PLC的主要應用指令進行簡單介紹。 有需要深入探討的請跟帖討論。 1- 條件跳轉【CJ】Conditional Jump CJ指令可以使程序從CJ指令開始到指定的指針之間的順控程序不執行,該指令可以縮短掃描周期和執行使用雙線圈的程序。 跳轉位置的指針用P指針編號標記,但不能使用P63,該指針表示向END步跳轉。 編輯P指針時,在GX Developer軟件中將光標移動到梯形圖母線的左側,直接按鍵盤ENTER鍵激活指令輸入框,輸入指針編號。指針的編號不能重復。 可以用CJ指令向上跳轉,但程序繼續執行到CJ指令后又會再次返回,如此反復執行會導致掃描周期時間超長,引起看門狗定時器錯誤。 2- 子程序調用【CALL】Subroutine Call 在順控程序中對需要多次使用的一段程序可以單獨編輯為一個子程序,使用子程序調用指令CALL執行該段程序。CALL一般需要與FEND指令和SRET指令配合使用。 子程序調用的指針與跳轉指針都使用P指針,但兩個指令不能調用同一個指針編號。 子程序要寫在主程序結束之后,主程序結束使用FEND指令進行標記。子程序編輯完后要用SRET指令返回CALL指令處。 CALL指令與CJ指令很大的不同在于CJ指令跳轉到P標記后,程序往下執行不再返回CJ指令,而CALL指令跳轉到P標記,執行到SRET指令后程序還要返回CALL指令,再往下執行CALL指令之后的程序。 在子程序中也可以再次調用其他子程序,這種指令用法也叫做嵌套,子程序內的CALL指令最多允許4層嵌套。 3- 子程序返回【SRET】Subroutine Return 子程序返回指令無需驅動條件,該指令直接接在梯形圖母線上。執行了CALL指令后,必須使用SRET指令返回到主程序。 |
---|---|
|
sjm213
有小知識,無大學問。
級別: 論壇版主
|
4- 中斷指令 中斷返回【IRET】Interruption Return/允許中斷【EI】Interruption Enable/禁止中斷【DI】Interruption Disenable 中斷程序是優先級高于一般執行程序的,PLC在執行中斷程序時,會停止主程序的掃描。所以中斷程序實時性較高,不受掃描周期的影響,適用于執行高速控制、獲得固定運行時間和獲取短時間脈沖信號的場合。 PLC通常為禁止中斷狀態,使用EI指令可以使PLC變為允許中斷,該指令無需驅動條件。在允許中斷之后,可以使用DI指令再次更改為禁止中斷。 中斷程序像子程序一樣,也要寫在主程序之后,但中斷指針使用I指針編號標記。I指針定義不同其指代的中斷含義不同,用戶不能自己設定。中斷程序結束后需要使用IRET指令返回到主程序。 中斷主要分為輸入中斷、定時器中斷和計數器中斷三種。 4.1 輸入中斷 輸入中斷使用X0~X5的輸入信號驅動中斷子程序,其中斷指針編號及對應動作如下表: 在程序中使上表所示的M8050~M8055置ON后,會禁止其各自對應的輸入中斷。 4.2 定時器中斷 定時器中斷不受PLC掃描周期的影響,每隔10ms~99ms執行一次中斷程序。其中斷指針編號及對應動作如下表: 定時器中斷共計三個,其指針編號6、7、8不能重復使用。 4.3 計數器中斷 計數器中斷是根據高速計數器的當前值來進行中斷。其中斷指針編號及對應動作如下表: 它和HSCS指令配合使用,在該指令中指定中斷指針編號。 注:多個中斷依次發生時,先發生的優先;完全同時發生時,新的指針編號優先。 |
---|---|
|
sjm213
有小知識,無大學問。
級別: 論壇版主
|
5- 主程序結束【FEND】First End FEND指令表示主程序的結束,執行該指令后PLC會進行與END指令相同的過程,經過輸出處理、輸入處理、看門狗定時器刷新并返回到第0步程序。該指令主要用于編寫子程序和中斷程序時,子程序和中斷程序都要寫在該指令的后面。 6- 看門狗定時器【WDT】Watchdog Timer WDT指令可對看門狗定時器進行刷新。當PLC的掃描周期時間大于200ms時會出現看門狗定時器錯誤,然后CPU錯誤,LED燈亮后停止運行。在程序中插入WDT指令可以避免出現這樣的錯誤。也可以通過修改D8000寄存器的內容來延長看門狗定時器的檢測時間(其初始值為200ms)。 在程序掃描周期較長時,將程序一分為二,中間插入WDT指令,就可以使每段程序執行時間都低于200ms從而避免看門狗定時器報警。 7- 循環程序 循環范圍開始【FOR】For/循環范圍結束【NEXT】Next For-Next指令配合使用,可以讓兩指令之間的程序按照指定的次數在一個掃描周期內重復運行,執行完畢后才繼續處理NEXT指令之后的程序。 在For-Next指令之間再使用For-Next指令嵌套編程時,最多運行嵌套5層。 For-Next指令無需驅動條件,但必須成對使用。NEXT指令在FOR指令之前,或沒有NEXT指令,或FOR和NEXT指令個數不一致,或FEND、END指令以后有NEXT指令都會出錯。 For-Next指令執行效果如下圖所示: |
---|---|
|