sjm213
有小知識(shí),無(wú)大學(xué)問(wèn)。
級(jí)別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5196 個(gè)
工控威望: 7419 點(diǎn)
下載積分: 158640 分
在線(xiàn)時(shí)間: 3155(小時(shí))
注冊(cè)時(shí)間: 2007-11-21
最后登錄: 2024-11-14
查看sjm213的 主題 / 回貼
樓主  發(fā)表于: 2013-03-25 10:23
系列帖子鏈接:http://m.24x7lending.com/read-gktid-1421940.html

即日起開(kāi)始對(duì)三菱FX系列PLC的主要應(yīng)用指令進(jìn)行簡(jiǎn)單介紹。
有需要深入探討的請(qǐng)跟帖討論。

1- 條件跳轉(zhuǎn)【CJ】Conditional Jump
CJ指令可以使程序從CJ指令開(kāi)始到指定的指針之間的順控程序不執(zhí)行,該指令可以縮短掃描周期和執(zhí)行使用雙線(xiàn)圈的程序。
跳轉(zhuǎn)位置的指針用P指針編號(hào)標(biāo)記,但不能使用P63,該指針表示向END步跳轉(zhuǎn)。
編輯P指針時(shí),在GX Developer軟件中將光標(biāo)移動(dòng)到梯形圖母線(xiàn)的左側(cè),直接按鍵盤(pán)ENTER鍵激活指令輸入框,輸入指針編號(hào)。指針的編號(hào)不能重復(fù)。
可以用CJ指令向上跳轉(zhuǎn),但程序繼續(xù)執(zhí)行到CJ指令后又會(huì)再次返回,如此反復(fù)執(zhí)行會(huì)導(dǎo)致掃描周期時(shí)間超長(zhǎng),引起看門(mén)狗定時(shí)器錯(cuò)誤。



2- 子程序調(diào)用【CALL】Subroutine Call
在順控程序中對(duì)需要多次使用的一段程序可以單獨(dú)編輯為一個(gè)子程序,使用子程序調(diào)用指令CALL執(zhí)行該段程序。CALL一般需要與FEND指令和SRET指令配合使用。
子程序調(diào)用的指針與跳轉(zhuǎn)指針都使用P指針,但兩個(gè)指令不能調(diào)用同一個(gè)指針編號(hào)。
子程序要寫(xiě)在主程序結(jié)束之后,主程序結(jié)束使用FEND指令進(jìn)行標(biāo)記。子程序編輯完后要用SRET指令返回CALL指令處。
CALL指令與CJ指令很大的不同在于CJ指令跳轉(zhuǎn)到P標(biāo)記后,程序往下執(zhí)行不再返回CJ指令,而CALL指令跳轉(zhuǎn)到P標(biāo)記,執(zhí)行到SRET指令后程序還要返回CALL指令,再往下執(zhí)行CALL指令之后的程序。
在子程序中也可以再次調(diào)用其他子程序,這種指令用法也叫做嵌套,子程序內(nèi)的CALL指令最多允許4層嵌套。


3- 子程序返回【SRET】Subroutine Return
    子程序返回指令無(wú)需驅(qū)動(dòng)條件,該指令直接接在梯形圖母線(xiàn)上。執(zhí)行了CALL指令后,必須使用SRET指令返回到主程序。

  
sjm213
有小知識(shí),無(wú)大學(xué)問(wèn)。
級(jí)別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5196 個(gè)
工控威望: 7419 點(diǎn)
下載積分: 158640 分
在線(xiàn)時(shí)間: 3155(小時(shí))
注冊(cè)時(shí)間: 2007-11-21
最后登錄: 2024-11-14
查看sjm213的 主題 / 回貼
1樓  發(fā)表于: 2013-03-25 10:26
4- 中斷指令 中斷返回【IRET】Interruption Return/允許中斷【EI】Interruption Enable/禁止中斷【DI】Interruption Disenable
中斷程序是優(yōu)先級(jí)高于一般執(zhí)行程序的,PLC在執(zhí)行中斷程序時(shí),會(huì)停止主程序的掃描。所以中斷程序?qū)崟r(shí)性較高,不受掃描周期的影響,適用于執(zhí)行高速控制、獲得固定運(yùn)行時(shí)間和獲取短時(shí)間脈沖信號(hào)的場(chǎng)合。
PLC通常為禁止中斷狀態(tài),使用EI指令可以使PLC變?yōu)樵试S中斷,該指令無(wú)需驅(qū)動(dòng)條件。在允許中斷之后,可以使用DI指令再次更改為禁止中斷。
  

中斷程序像子程序一樣,也要寫(xiě)在主程序之后,但中斷指針使用I指針編號(hào)標(biāo)記。I指針定義不同其指代的中斷含義不同,用戶(hù)不能自己設(shè)定。中斷程序結(jié)束后需要使用IRET指令返回到主程序。
中斷主要分為輸入中斷、定時(shí)器中斷和計(jì)數(shù)器中斷三種。

4.1 輸入中斷
輸入中斷使用X0~X5的輸入信號(hào)驅(qū)動(dòng)中斷子程序,其中斷指針編號(hào)及對(duì)應(yīng)動(dòng)作如下表:
  

在程序中使上表所示的M8050~M8055置ON后,會(huì)禁止其各自對(duì)應(yīng)的輸入中斷。
4.2 定時(shí)器中斷
定時(shí)器中斷不受PLC掃描周期的影響,每隔10ms~99ms執(zhí)行一次中斷程序。其中斷指針編號(hào)及對(duì)應(yīng)動(dòng)作如下表:
  

    定時(shí)器中斷共計(jì)三個(gè),其指針編號(hào)6、7、8不能重復(fù)使用。

4.3 計(jì)數(shù)器中斷
計(jì)數(shù)器中斷是根據(jù)高速計(jì)數(shù)器的當(dāng)前值來(lái)進(jìn)行中斷。其中斷指針編號(hào)及對(duì)應(yīng)動(dòng)作如下表:
  

    它和HSCS指令配合使用,在該指令中指定中斷指針編號(hào)。
  

注:多個(gè)中斷依次發(fā)生時(shí),先發(fā)生的優(yōu)先;完全同時(shí)發(fā)生時(shí),新的指針編號(hào)優(yōu)先。
sjm213
有小知識(shí),無(wú)大學(xué)問(wèn)。
級(jí)別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5196 個(gè)
工控威望: 7419 點(diǎn)
下載積分: 158640 分
在線(xiàn)時(shí)間: 3155(小時(shí))
注冊(cè)時(shí)間: 2007-11-21
最后登錄: 2024-11-14
查看sjm213的 主題 / 回貼
2樓  發(fā)表于: 2013-03-25 10:28
5- 主程序結(jié)束【FEND】First End
    FEND指令表示主程序的結(jié)束,執(zhí)行該指令后PLC會(huì)進(jìn)行與END指令相同的過(guò)程,經(jīng)過(guò)輸出處理、輸入處理、看門(mén)狗定時(shí)器刷新并返回到第0步程序。該指令主要用于編寫(xiě)子程序和中斷程序時(shí),子程序和中斷程序都要寫(xiě)在該指令的后面。

  

6- 看門(mén)狗定時(shí)器【W(wǎng)DT】Watchdog Timer
WDT指令可對(duì)看門(mén)狗定時(shí)器進(jìn)行刷新。當(dāng)PLC的掃描周期時(shí)間大于200ms時(shí)會(huì)出現(xiàn)看門(mén)狗定時(shí)器錯(cuò)誤,然后CPU錯(cuò)誤,LED燈亮后停止運(yùn)行。在程序中插入WDT指令可以避免出現(xiàn)這樣的錯(cuò)誤。也可以通過(guò)修改D8000寄存器的內(nèi)容來(lái)延長(zhǎng)看門(mén)狗定時(shí)器的檢測(cè)時(shí)間(其初始值為200ms)。
在程序掃描周期較長(zhǎng)時(shí),將程序一分為二,中間插入WDT指令,就可以使每段程序執(zhí)行時(shí)間都低于200ms從而避免看門(mén)狗定時(shí)器報(bào)警。
  


7- 循環(huán)程序 循環(huán)范圍開(kāi)始【FOR】For/循環(huán)范圍結(jié)束【NEXT】Next
For-Next指令配合使用,可以讓兩指令之間的程序按照指定的次數(shù)在一個(gè)掃描周期內(nèi)重復(fù)運(yùn)行,執(zhí)行完畢后才繼續(xù)處理NEXT指令之后的程序。
在For-Next指令之間再使用For-Next指令嵌套編程時(shí),最多運(yùn)行嵌套5層。
For-Next指令無(wú)需驅(qū)動(dòng)條件,但必須成對(duì)使用。NEXT指令在FOR指令之前,或沒(méi)有NEXT指令,或FOR和NEXT指令個(gè)數(shù)不一致,或FEND、END指令以后有NEXT指令都會(huì)出錯(cuò)。
For-Next指令執(zhí)行效果如下圖所示: