《電器控制與PLC技術(shù)》課件第7章_第1頁
《電器控制與PLC技術(shù)》課件第7章_第2頁
《電器控制與PLC技術(shù)》課件第7章_第3頁
《電器控制與PLC技術(shù)》課件第7章_第4頁
《電器控制與PLC技術(shù)》課件第7章_第5頁
已閱讀5頁,還剩234頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第7章可編程控制器的功能指令7.1FX系列可編程控制器功能指令概述7.2可編程控制器的功能指令簡介7.3小結(jié)習(xí)題7.1FX系列可編程控制器功能指令概述

早期的PLC大多用于開關(guān)量控制,基本指令和步進指令已經(jīng)能滿足控制要求。為適應(yīng)控制系統(tǒng)的其他控制要求(如模擬量控制等),從20世紀80年代開始,PLC生產(chǎn)廠家就在小型PLC上增設(shè)了大量的功能指令(也稱應(yīng)用指令)。功能指令的出現(xiàn)大大拓寬了PLC的應(yīng)用范圍,也給用戶編制程序帶來了極大方便。FX系列PLC有多達100多條功能指令(見附錄A),本章節(jié)僅對比較常用的功能指令作詳細介紹,其余的指令只作簡介,讀者可參閱FX系列PLC編程手冊。7.1.1功能指令的表達方式

1.位元件與字元件

像X、Y、M、S等只處理ON/OFF信息的軟元件稱為位元件;而像T、C、D等處理數(shù)值的軟元件則稱為字元件,一個字元件由16位二進制數(shù)組成。

位元件可以通過組合使用,4個位元件為一個單元,通用表示方法是由Kn加起始的軟元件號組成,n為單元數(shù)。例如,K2M0表示M0~M7組成兩個位元件組(K2表示兩個單元),它是一個8位數(shù)據(jù),M0為最低位。如果將16位數(shù)據(jù)傳送到不足16位的位元件組合(n<4)時,則只傳送低位數(shù)據(jù),多出的高位數(shù)據(jù)不傳送,32位數(shù)據(jù)傳送時也一樣。在作16位數(shù)操作時,參與操作的位元件不足16位時,高位的不足部分均作0處理,這意味著只能處理正數(shù)(符號位為0),在作32位數(shù)處理時也一樣。被組合的元件中首位元件可以任意選擇,但為避免混亂,建議采用編號以0結(jié)尾的元件,如S10、X0、X20等。

2.數(shù)據(jù)格式

在FX系列PLC內(nèi)部,數(shù)據(jù)是以二進制(BIN)補碼的形式存儲的,所有的四則運算都使用二進制數(shù)。二進制補碼的最高位為符號位,正數(shù)的符號位為0,負數(shù)的符號位為1。FX系列PLC可實現(xiàn)二進制碼與BCD碼的相互轉(zhuǎn)換。

為更精確地進行運算,可采用浮點數(shù)運算。在FX系列PLC中提供了二進制浮點運算和十進制浮點運算,設(shè)有將二進制浮點數(shù)與十進制浮點數(shù)相互轉(zhuǎn)換的指令。二進制浮點數(shù)采用編號連續(xù)的一對數(shù)據(jù)寄存器表示。例如,D11和D10組成的32位寄存器中,D10的16位加上D11的低7位共23位為浮點數(shù)的尾數(shù),而D11中最高位的前8位是階位,最高位是尾數(shù)的符號位(0為正,1為負)。十進制的浮點數(shù)也用一對數(shù)據(jù)寄存器表示,編號小的數(shù)據(jù)寄存器為尾數(shù)段,編號大的為指數(shù)段,例如使用數(shù)據(jù)寄存器D1和D0時,表示數(shù)為

十進制浮點數(shù)?=?(尾數(shù)D0)?×?10(指數(shù)D1)

其中,D0、D1的最高位是正、負符號位。

3.功能指令的表達方式

功能指令的表示格式與基本指令不同。功能指令用編號FNC00~FNC294表示,并給出對應(yīng)的助記符(大多用英文名稱或縮寫表示)。例如FNC45的助記符是MEAN(平均),若使用簡易編程器時,則鍵入FNC45,若采用智能編程器或在計算機上編程時也可鍵入助記符MEAN。有的功能指令沒有操作數(shù),而大多數(shù)功能指令有1~4個操作數(shù)。如圖7-1所示為一個計算平均值的指令,它有三個操作數(shù),[S]表示源操作數(shù),[D]表示目標操作數(shù),如果使用變址功能,則可表示為[S.]和[D.]。當源或目標不止一個時,用[S1.]、[S2.]、[D1.]、[D2.]表示。用n和m表示其他操作數(shù),它們常用來表示常數(shù)K和H,或作為源和目標操作數(shù)的補充說明,當這樣的操作數(shù)多時可用n1、n2和m1、m2等來表示。圖7-1功能指令的表示格式圖7-1中,源操作數(shù)為D0、D1、D2,目標操作數(shù)為D4Z0(Z0為變址寄存器),K3表示有3個數(shù)。當X0接通時,執(zhí)行的操作為

[(D0)+(D1)+(D2)]÷3→(D4Z0)

如果Z0的內(nèi)容為20,則運算結(jié)果送入D24中。

功能指令的指令段通常占1個程序步,16位操作數(shù)占2步,32位操作數(shù)占4步。7.1.2數(shù)據(jù)長度

功能指令可處理16位數(shù)據(jù)或32位數(shù)據(jù)。處理32位數(shù)據(jù)的指令是在助記符前加“D”標志,無此標志即為處理16位數(shù)據(jù)的指令。注意32位計數(shù)器(C200~C255)的一個軟元件為32位,不可作為處理16位數(shù)據(jù)指令的操作數(shù)使用。如圖7-2所示,若MOV指令前面帶“D”,則當X1接通時,執(zhí)行D11D10→D13D12(32位)。在使用32位數(shù)據(jù)時建議使用首編號為偶數(shù)的操作數(shù),這樣不容易出錯。7.1.3功能指令的執(zhí)行方式

功能指令有連續(xù)執(zhí)行和脈沖執(zhí)行兩種類型。如圖7-2所示,指令助記符MOV后面有“P”表示脈沖執(zhí)行,即該指令僅在X1接通(由OFF到ON)時執(zhí)行(將D10中的數(shù)據(jù)送到D12中)一次;如果沒有“P”則表示連續(xù)執(zhí)行,即在X1接通(ON)的每一個掃描周期,指令都要被執(zhí)行。圖7-2功能指令的執(zhí)行方式與數(shù)據(jù)長度的表示7.1.4變址寄存器V、Z

變址寄存器的作用類似于一般微處理器中的變址寄存器(如Z80中的IX、IY),通常用于修改元件的編號。

V0~V7、Z0~Z7共16點,即16位變址數(shù)據(jù)寄存器。

進行32位運算時,與指定Z0~Z7的V0~V7組合,分別成為(V0、Z0),(V1、Z1)…(V7、Z7)。

7.2可編程控制器的功能指令簡介

FX2N系列PLC有豐富的功能指令,共有程序流向控制、傳送與比較、算術(shù)與邏輯運算、循環(huán)與移位等19類功能指令。7.2.1程序流程控制功能指令

1.條件跳轉(zhuǎn)指令

條件跳轉(zhuǎn)指令CJ(P)的編號為FNC00,操作數(shù)為指針標號P0~P127,其中P63為END所在步序,不需標記。指針標號允許用變址寄存器修改。CJ和CJP都占3個程序步,指針標號占1步。

如圖7-3所示,當X20接通時,則由CJP9指令跳到標號為P9的指令處開始執(zhí)行,跳過了程序的一部分,減少了掃描周期。如果X20斷開,跳轉(zhuǎn)不會執(zhí)行,則程序按原順序執(zhí)行。圖7-3跳轉(zhuǎn)指令的使用使用跳轉(zhuǎn)指令時應(yīng)注意:

(1)?CJP指令表示脈沖執(zhí)行方式。

(2)在一個程序中一個標號只能出現(xiàn)一次,否則將出錯。

(3)在跳轉(zhuǎn)執(zhí)行期間,即使被跳過程序的驅(qū)動條件改變,但其線圈(或結(jié)果)仍保持跳轉(zhuǎn)前的狀態(tài),因為跳轉(zhuǎn)期間根本沒有執(zhí)行這段程序。

(4)如果在跳轉(zhuǎn)開始時定時器和計數(shù)器已在工作,則在跳轉(zhuǎn)執(zhí)行期間它們將停止工作,直到跳轉(zhuǎn)條件不滿足后又繼續(xù)工作。但對于正在工作的定時器T192~T199和高速計數(shù)器C235~C255,不管有無跳轉(zhuǎn)仍連續(xù)工作。

(5)若積算定時器和計數(shù)器的復(fù)位(RST)指令在跳轉(zhuǎn)區(qū)外,則即使它們的線圈被跳轉(zhuǎn),但對它們的復(fù)位仍然有效。

2.子程序調(diào)用與子程序返回指令

子程序調(diào)用指令CALL的編號為FNC01,操作數(shù)為P0~P127,此指令占用3個程序步。

子程序返回指令SRET的編號為FNC02,無操作數(shù),占用1個程序步。

如圖7-4所示,如果X0接通,則轉(zhuǎn)到標號P10處去執(zhí)行子程序。當執(zhí)行SRET指令時,返回到CALL指令的下一步執(zhí)行。圖7-4子程序調(diào)用與返回指令的使用使用子程序調(diào)用與返回指令時應(yīng)注意:

(1)轉(zhuǎn)移標號不能重復(fù),也不可與跳轉(zhuǎn)指令的標號重復(fù)。

(2)子程序可以嵌套調(diào)用,最多可5級嵌套。

【例7-1】

用兩個開關(guān)X1、X0控制一個信號燈Y0,當X1X0=00時燈滅,X1X0=01時燈以1s脈沖閃爍,X1X0=10時燈以2s脈沖閃爍,X1X0=11時燈常亮。程序如圖7-5所示。圖7-5子程序調(diào)用實例

3.中斷指針與中斷有關(guān)的指令

中斷指針(I0□□~I8□□)是用來指示某一中斷程序的入口位置的。執(zhí)行中斷后遇到IRET(中斷返回)指令,則返回主程序。中斷用指針有以下三種類型:

(1)輸入中斷用指針(I00□~I50□):共6點,它是用來指示由特定輸入端的輸入信號而產(chǎn)生中斷的中斷服務(wù)程序的入口位置。這類中斷不受PLC掃描周期的影響,可以及時處理外界信息。輸入中斷用指針的編號格式如下:

例如,I101為當輸入X1從OFF→ON變化時,執(zhí)行以I101為標號的中斷程序,并根據(jù)IRET指令返回。

(2)定時器中斷用指針(I6□□~I8□□):共3點,用來指示周期定時中斷的中斷服務(wù)程序的入口位置。這類中斷的作用是PLC以指定的周期定時執(zhí)行中斷服務(wù)程序,定時循環(huán)處理某些任務(wù)。處理的時間也不受PLC掃描周期的限制?!酢醣硎径〞r范圍,可在10~99ms中選取。

(3)計數(shù)器中斷用指針(I010~I060):共6點,它們用在PLC內(nèi)置的高速計數(shù)器中。根據(jù)高速計數(shù)器的計數(shù)當前值與計數(shù)設(shè)定值的關(guān)系確定是否執(zhí)行中斷服務(wù)程序。它常用于利用高速計數(shù)器優(yōu)先處理計數(shù)結(jié)果的場合。與中斷有關(guān)的三條功能指令是:中斷返回指令I(lǐng)RET,編號為FNC03;中斷允許指令EI,編號為FNC04;中斷禁止指令DI,編號為FNC05。它們均無操作數(shù),占用1個程序步。

PLC通常處于禁止中斷狀態(tài),由EI和DI指令組成允許中斷范圍。在執(zhí)行到該區(qū)間時,如有中斷源產(chǎn)生中斷,CPU將暫停主程序而轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。當遇到IRET時返回斷點繼續(xù)執(zhí)行主程序。如圖7-6所示,允許中斷范圍中若中斷源X0有一個下降沿,則轉(zhuǎn)入I000為標號的中斷服務(wù)程序,但X0能否引起中斷還受M8050的控制,當X20有效時,SM8050控制X0,使之無法引起中斷。圖7-6中斷指令的使用使用中斷相關(guān)指令時應(yīng)注意:

(1)中斷的優(yōu)先級排隊如下,如果多個中斷依次發(fā)生,則以發(fā)生先后為序,即發(fā)生越早級別越高,如果多個中斷源同時發(fā)出信號,則中斷指針號越小優(yōu)先級越高。

(2)當M8050~M8058為ON時,禁止執(zhí)行相應(yīng)I0□□~I8□□的中斷,M8059為ON時則禁止所有計數(shù)器中斷。

(3)無需中斷禁止時,可只用EI指令,不必用DI指令。

(4)執(zhí)行一個中斷服務(wù)程序時,如果在中斷服務(wù)程序中有EI和DI,可實現(xiàn)二級中斷嵌套,否則禁止其他中斷。

【例7-2】三人智力搶答問題。程序如圖7-7所示。圖7-7三人智力搶答(a)輸入中斷(搶答電路)梯形圖;(b)智力搶答接線圖

【例7-3】定時器中斷用于輸出斜波信號。程序如圖7-8所示。圖7-8定時器中斷用于輸出斜波信號

4.主程序結(jié)束指令

主程序結(jié)束指令FEND的編號為FNC06,無操作數(shù),占用1個程序步。FEND表示主程序結(jié)束,當執(zhí)行到FEND時,PLC進行輸入/輸出處理,監(jiān)視定時器刷新,完成后返回起始步。

使用FEND指令時應(yīng)注意:

(1)子程序和中斷服務(wù)程序應(yīng)放在FEND之后。

(2)子程序和中斷服務(wù)程序必須寫在FEND和END之間,否則出錯。

5.監(jiān)視定時器指令

監(jiān)視定時器指令WDT(P)編號為FNC07,沒有操作數(shù),占用1個程序步。WDT指令的功能是對PLC的監(jiān)視定時器進行刷新。

FX系列PLC的監(jiān)視定時器缺省值為200ms(可用D8000來設(shè)定),正常情況下,PLC掃描周期小于此定時時間。如果由于有外界干擾或程序本身的原因使掃描周期大于監(jiān)視定時器的設(shè)定值,使PLC的CPU出錯,則燈亮并停止工作。可通過在適當位置加WDT指令復(fù)位監(jiān)視定時器,以使程序能繼續(xù)執(zhí)行到END。

如圖7-9所示,利用一個WDT指令可將一個240ms的程序一分為二,使它們都小于200ms,則不會再出現(xiàn)報警停機現(xiàn)象。

使用WDT指令時應(yīng)注意:

(1)如果在后續(xù)的FOR-NEXT循環(huán)中,執(zhí)行時間可能超過監(jiān)控定時器的定時時間,可將WDT插入循環(huán)程序中。

(2)當與條件跳轉(zhuǎn)指令CJ對應(yīng)的指針標號在CJ指令之前時(即程序往回跳),就有可能連續(xù)反復(fù)跳步,使它們之間的程序反復(fù)執(zhí)行,使執(zhí)行時間超過監(jiān)控時間??稍贑J指令與對應(yīng)標號之間插入WDT指令。圖7-9監(jiān)控定時器指令的使用

6.循環(huán)指令

循環(huán)指令共有兩條:循環(huán)區(qū)起點指令FOR,編號為FNC08,占3個程序步;循環(huán)結(jié)束指令NEXT,編號為FNC09,占1個程序步,無操作數(shù)。

在程序運行時,位于FOR~NEXT間的程序反復(fù)執(zhí)行n次(由操作數(shù)決定)后再繼續(xù)執(zhí)行后續(xù)程序。循環(huán)的次數(shù)n=1~32767。如果n在-32767~0之間,則當作n=1處理。

圖7-10所示為一個二重嵌套循環(huán),外層執(zhí)行5次。如果D0Z0中的數(shù)為6,則外層A每執(zhí)行一次則內(nèi)層B將執(zhí)行6次。圖7-10循環(huán)指令的使用使用循環(huán)指令時應(yīng)注意:

(1)?FOR和NEXT必須成對使用。

(2)?FX2N系列PLC可循環(huán)嵌套5層。

(3)在循環(huán)中可利用CJ指令在循環(huán)沒結(jié)束時跳出循環(huán)體。

(4)?FOR應(yīng)放在NEXT之前,NEXT應(yīng)在FEND和END之前,否則均會出錯。7.2.2傳送與比較指令

1.比較指令

比較指令包括CMP(比較)和ZCP(區(qū)間比較)兩條。

1)比較指令CMP

(D)CMP(P)指令的編號為FNC10,是將源操作數(shù)[S1.]和源操作數(shù)[S2.]的數(shù)據(jù)進行比較,比較結(jié)果用目標元件[D.]的狀態(tài)來表示。如圖7-11所示,當X1為接通時,把常數(shù)200與C20的當前值進行比較,比較的結(jié)果送入M0~M2中。X1為OFF時不執(zhí)行,M0~M2的狀態(tài)也保持不變。

【例7-4】

用PLC控制一個密碼鎖。程序如圖7-12所示。圖7-11比較指令的使用圖7-12密碼鎖

2)區(qū)間比較指令ZCP

(D)ZCP(P)指令的編號為FNC11,指令執(zhí)行時源操作數(shù)[S.]與[S1.]和[S2.]的內(nèi)容進行比較,并將比較結(jié)果送到目標操作數(shù)[D.]中。如圖7-13所示,當X0為ON時,把C30的當前值與K100和K120相比較,將結(jié)果送入M3、M4、M5中。若X0為OFF,則ZCP不執(zhí)行,M3、M4、M5不變。

使用比較指令CMP/ZCP時應(yīng)注意:

(1)?[S1.]、[S2.]可取任意數(shù)據(jù)格式,目標操作數(shù)[D.]可取Y、M和S。

(2)使用ZCP時,[S2.]的數(shù)值不能小于[S1.]。

(3)所有的源數(shù)據(jù)都被看成二進制值處理。圖7-13區(qū)間比較指令的使用

2.傳送類指令

1)傳送指令MOV

(D)MOV(P)指令的編號為FNC12,該指令的功能是將源數(shù)據(jù)傳送到指定的目標。如圖7-14所示,當X0為ON時,則將[S.]中的數(shù)據(jù)K100傳送到目標操作元件[D.],即D10中。在指令執(zhí)行時,常數(shù)K100會自動轉(zhuǎn)換成二進制數(shù)。當X0為OFF時,指令不執(zhí)行,數(shù)據(jù)保持不變。圖7-14傳送指令的使用使用MOV指令時應(yīng)注意:

(1)源操作數(shù)可取所有數(shù)據(jù)類型;目標操作數(shù)可以是KnY、KnM、KnS、T、C、D、V、Z。

(2)?16位運算時占5個程序步,32位運算時則占9個程序步。

【例7-5】8個人參加智力搶答競賽,用8個搶答按鈕(X7~X0)和8個指示燈(Y7~Y0)。當主持人報完題目,按下按鈕(X10)后,搶答者才可按按鈕,先按按鈕者的燈亮,同時蜂鳴器(Y17)響,后按按鈕者的燈不亮。程序如圖7-15所示。圖7-15搶答電路

2)移位傳送指令SMOV

SMOV(P)指令的編號為FNC13,該指令的功能是將源數(shù)據(jù)(二進制)自動轉(zhuǎn)換成4位BCD碼,再進行移位傳送,傳送后的目標操作數(shù)元件的BCD碼自動轉(zhuǎn)換成二進制數(shù)。如圖7-16所示,當X0為ON時,將D1中右起第4位(m1=4)開始的2位(m2=2)BCD碼移到目標操作數(shù)D2的右起第3位(n=3)和第2位。然后D2中的BCD碼會自動轉(zhuǎn)換為二進制數(shù),而D2中的第1位和第4位時BCD碼不變。

圖7-16移位傳送指令的使用使用移位傳送指令時應(yīng)該注意:

(1)源操作數(shù)可取所有數(shù)據(jù)類型;目標操作數(shù)可為KnY、KnM、KnS、T、C、D、V、Z。

(2)?SMOV指令只有16位運算,占11個程序步。

【例7-6】用數(shù)字開關(guān)給定時器間接設(shè)定延時時間,延時時間在0.1~99.9s之間。用三個數(shù)字開關(guān)分別連接在PLC的X0~X3和X20~X27輸入端上,由于輸入繼電器的元件號不連續(xù),需要進行一步調(diào)整,如圖7-17所示。圖7-17用SMOV指令調(diào)整數(shù)字開關(guān)的數(shù)位

3)取反傳送指令CML

(D)CML(P)指令的編號為FNC14。它將源操作數(shù)元件的數(shù)據(jù)逐位取反并傳送到指定目標。如圖7-18所示,當X0為ON時,執(zhí)行CML,將D0的低4位取反后傳送到Y(jié)3~Y0中。

使用取反傳送指令CML時應(yīng)注意:

(1)源操作數(shù)可取所有數(shù)據(jù)類型,目標操作數(shù)可為KnY、KnM、KnS、T、C、D、V、Z。若源數(shù)據(jù)為常數(shù)K,則該數(shù)據(jù)會自動轉(zhuǎn)換為二進制數(shù)。

(2)?16位運算占5個程序步,32位運算占9個程序步。圖7-18取反傳送指令的使用

4)塊傳送指令BMOV

BMOV(P)指令的ALCE編號為FNC15。它將源操作數(shù)指定元件開始的n個數(shù)據(jù)組成數(shù)據(jù)塊傳送到指定的目標。如圖7-19所示,傳送順序既可從高元件號開始,也可從低元件號開始,傳送順序自動決定。若用到需要指定位數(shù)的位元件,則源操作數(shù)和目標操作數(shù)的指定位數(shù)應(yīng)相同。圖7-19塊傳送指令的使用使用塊傳送指令時應(yīng)注意:

(1)源操作數(shù)可取KnX、KnY、KnM、KnS、T、C、D和文件寄存器;目標操作數(shù)可取KnT、KnM、KnS、T、C和D。

(2)只有16位操作,占7個程序步。

(3)如果元件號超出允許范圍,則數(shù)據(jù)僅傳送到允許范圍的元件。

5)多點傳送指令FMOV

(D)FMOV(P)指令的編號為FNC16。它的功能是將源操作數(shù)中的數(shù)據(jù)傳送到指定目標開始的n個元件中,傳送后n個元件中的數(shù)據(jù)完全相同。如圖7-20所示,當X0為ON時,把K0傳送到D0~D9中。圖7-20多點傳送指令應(yīng)用使用多點傳送指令FMOV時應(yīng)注意:

(1)源操作數(shù)可取所有的數(shù)據(jù)類型,目標操作數(shù)可取KnX、KnM、KnS、T、C和D,n≤512。

(2)?16位操作占7個程序步,32位操作占13個程序步。

(3)如果元件號超出允許范圍,則數(shù)據(jù)僅送到允許范圍的元件中。

3.數(shù)據(jù)交換指令

數(shù)據(jù)交換指令(D)XCH(P)的編號為FNC17。它將數(shù)據(jù)在指定的目標元件之間交換。如圖7-21所示,當X0為ON時,將D1和D19中的數(shù)據(jù)相互交換。

使用數(shù)據(jù)交換指令時應(yīng)注意:

(1)操作數(shù)的元件可取KnY、KnM、KnS、T、C、D、V和Z。

(2)交換指令一般采用脈沖執(zhí)行方式,否則在每一次掃描周期都要交換一次。

(3)?16位運算占5個程序步,32位運算占9個程序步。圖7-21數(shù)據(jù)交換指令的使用

4.數(shù)據(jù)變換指令

1)變換指令BCD

(D)BCD(P)指令的ALCE編號為FNC18。它將源元件中的二進制數(shù)轉(zhuǎn)換成BCD碼送到目標元件中,如圖7-16所示。

如果指令進行16位操作時,執(zhí)行結(jié)果超出0~9999范圍,將會出錯;當指令進行32位操作時,執(zhí)行結(jié)果超過0~99999999范圍,也將出錯。PLC中內(nèi)部的運算為二進制運算,可用BCD指令將二進制數(shù)變換為BCD碼輸出到七段顯示器。

2)變換指令BIN

(D)BIN(P)指令的編號為FNC19。它將源元件中的BCD數(shù)據(jù)轉(zhuǎn)換成二進制數(shù)據(jù)送到目標元件中,如圖7-22所示。常數(shù)K不能作為本指令的操作元件,因為在任何處理之前它們都會被轉(zhuǎn)換成二進制數(shù)。

使用BCD/BIN指令時應(yīng)注意:

(1)源操作數(shù)可取KnK、KnY、KnM、KnS、T、C、D、V和Z;目標操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z。

(2)?16位運算占5個程序步,32位運算占9個程序步。圖7-22數(shù)據(jù)變換指令的使用

【例7-7】用BCD碼數(shù)字開關(guān)間接設(shè)定定時器,并用4位數(shù)碼管顯示定時器的當前值。程序如圖7-23所示。圖7-23BIN、BCD指令的應(yīng)用舉例7.2.3算術(shù)運算和邏輯運算指令

1.算術(shù)運算指令

1)加法指令A(yù)DD

(D)ADD(P)指令的編號為FNC20。它將指定的源元件中的二進制數(shù)相加結(jié)果送到指定的目標元件中。如圖7-24所示,當X0為ON時,執(zhí)行

(D10)+(D12)→(D14)圖7-24加法指令的使用

【例7-8】一臺投幣洗車機,用于司機清洗車輛,司機每投入1元可以使用10分鐘時間,其中噴水時間為5分鐘。程序如圖7-25所示。圖7-25加法指令應(yīng)用舉例

2)減法指令SUB

(D)SUB(P)指令的編號為FNC21。它將[S1.]指定元件中的內(nèi)容以二進制形式減去[S2.]指定元件中的內(nèi)容,其結(jié)果存入由[D.]指定的元件中。如圖7-26所示,當X0為ON時,

執(zhí)行

(D10)-(D12)→(D14)圖7-26減法指令的使用使用加法和減法指令時應(yīng)該注意:

(1)操作數(shù)可取所有數(shù)據(jù)類型,目標操作數(shù)可取KnY、KnM、KnS、T、C、D、V、Z。

(2)?16位運算占7個程序步,32位運算占13個程序步。

(3)數(shù)據(jù)為有符號二進制數(shù),最高位為符號位(0為正,1為負)。

(4)加法指令有三個標志:零標志(M8020)、借位標志(M8021)和進位標志(M8022)。當運算結(jié)果超過32767(16位運算)或2147483647(32位運算)時,進位標志置“1”;當運算結(jié)果小于-32767(16位運算)或-2147483647(32位運算)時,借位標志就會置“1”。

3)乘法指令MUL

(D)MUL(P)指令的編號為FNC22。乘法指令中的數(shù)據(jù)均為有符號數(shù)。如圖7-27所示,當X0為ON時,將二進制16位數(shù)[S1.]、[S2.]相乘,結(jié)果送[D.]中,D為32位,即

(D0)?×?(D2)→(D5,D4)(16位乘法)

當X1為ON時,

(D1,D0)?×?(D3,D2)→(D7,D6,D5,D4)(32位乘法)

圖7-27乘法指令的使用

【例7-9】

用兩個數(shù)字開關(guān)整定一個定時器的設(shè)定值,要求設(shè)定值范圍在1~99s之間。梯形圖如圖7-28所示,如兩個數(shù)字開關(guān)的設(shè)定值為35,35為BCD碼時,由BIN指令轉(zhuǎn)換成BIN碼存放到D2中,再將D2中數(shù)值35?×?10→D0,D0中的350即為T0定時器的設(shè)定值35s。

圖7-28乘法指令應(yīng)用舉例

4)除法指令DIV

(D)DIV(P)指令的編號為FNC23。它的功能是將[S1.]指定為被除數(shù),[S2.]指定為除數(shù),將除得的結(jié)果送到[D.]指定的目標元件中,余數(shù)送到[D.]的下一個元件中。如圖7-29所示,當X0為ON時,

(D0)÷(D2)→(D4),(D5)(16位除法)

商余數(shù)

當X1為ON時,

(D1,D0)÷(D3,D2)→(D5,D4),(D7,D6)(32位除法)

商余數(shù)圖7-29除法指令的使用使用乘法和除法指令時應(yīng)注意:

(1)源操作數(shù)可取所有數(shù)據(jù)類型,目標操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z。Z只有在16位乘法時可用,32位乘法時不可用。

(2)?16位運算占7個程序步,32位運算占13個程序步。

(3)?32位乘法運算中,如用位元件作目標,則只能得到乘積的低32位,高32位將丟失,這種情況下應(yīng)先將數(shù)據(jù)移入字元件再運算。除法運算中若將位元件指定為[D.],則無法得到余數(shù),除數(shù)為0時會發(fā)生運算錯誤。

(4)積、商和余數(shù)的最高位為符號位。

5)加1和減1指令

加1指令(D)INC(P)的編號為FNC24;減1指令(D)DEC(P)的編號為FNC25。INC和DEC指令分別是當條件滿足則將指定元件的內(nèi)容加1或減1。如圖7-30所示,當X0為ON時,(D10)+1→(D10);當X1為ON時,(D11)+1→(D11)。若指令是連續(xù)指令,則每個掃描周期均作一次加1或減1運算。圖7-30加1和減1指令的使用使用加1和減1指令時應(yīng)注意:

(1)指令的操作數(shù)可為KnY、KnM、KnS、T、C、D、V、Z。

(2)當進行16位操作時為3個程序步,32位操作時為5個程序步。

(3)在INC運算時,如數(shù)據(jù)為16位,則由+32767再加1變?yōu)?32768,但標志位不置位;同樣,32位運算由+2147483647再加1就變?yōu)?2147483648,標志位也不置位。

(4)在DEC運算時,16位運算-32768減1變?yōu)?32767,且標志位不置位;32位運算時-2147483648減1變?yōu)?147483647,標志位也不置位。

【例7-10】控制一臺電動機,要求正轉(zhuǎn)5s→停止5s→反轉(zhuǎn)5s→停止5s→并自動循環(huán)運行,直到停止運行。程序如圖7-31所示。圖7-31電動機定時正轉(zhuǎn)停—反轉(zhuǎn)停—自動循環(huán)運行

2.邏輯運算類指令

1)邏輯與指令WAND

(D)WAND(P)指令的編號為FNC26。它將兩個源操作數(shù)按位進行與操作,結(jié)果送入指定元件。

2)邏輯或指令WOR

(D)WOR(P)指令的編號為FNC27。它對兩個源操作數(shù)按位進行或運算,結(jié)果送入指定元件。如圖7-32所示,當X1有效時,執(zhí)行(D10)∨(D12)→(D14)

3)邏輯異或指令WXOR

(D)WXOR(P)指令的編號為FNC28。它對源操作數(shù)按位進行邏輯異或運算。

WAND、WOR、WXOR指令的使用如圖7-32所示。

【例7-11】用WAND、WOR、WXOR指令簡化電路。程序如圖7-33所示。圖7-32邏輯運算指令的使用圖7-33WAND、WOR、WXOR指令的應(yīng)用

【例7-12】將正數(shù)轉(zhuǎn)換成負數(shù)。

PLC中的數(shù)值采用補碼,以方便運算。在補碼中,最高位為1時,為負數(shù)。所以只要將最高位置1就可以變成負數(shù)了。例如D10中的數(shù)值為18252,用圖7-34梯形圖即可變成-18252。

圖7-34將正數(shù)轉(zhuǎn)換成負數(shù)

4)求補指令NEG

(D)NEG(P)指令的編號為FNC29。它的功能是將[D.]指定的元件內(nèi)容的各位先取反再加1,將其結(jié)果再存入原來的元件中。NEG指令的使用如圖7-32所示。

【例7-13】

求兩個數(shù)之差的絕對值。

如圖7-35所示,當X1=1時,D2-D4→D10,如D10<0,則比較結(jié)果M2=1,對D10求補。如D2=5,D4=8,則D10=-3,求補后D10=3。

圖7-35求兩個數(shù)之差的絕對值使用邏輯運算指令時應(yīng)該注意:

(1)?WAND、WOR和WXOR指令的[S1.]和[S2.]均可取所有的數(shù)據(jù)類型,而目標操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z。

(2)?NEG指令只有目標操作數(shù),可取KnY、KnM、KnS、T、C、D、V和Z。

(3)?WAND、WOR、WXOR指令進行16位運算時占7個程序步,進行32位運算時占13個程序步,而NEG分別占3個程序步和5個程序步。7.2.4循環(huán)移位與移位指令

1.循環(huán)移位指令

右、左循環(huán)移位指令(D)ROR(P)和(D)ROL(P)的編號分別為FNC30和FNC31。執(zhí)行這兩條指令時,各位數(shù)據(jù)向右(或向左)循環(huán)移動n位,最后一次移出來的那一位同時存入進位標志M8022中,如圖7-36所示。圖7-36右、左循環(huán)移位指令的使用

2.帶進位的循環(huán)移位指令

帶進位的循環(huán)右、左移位指令(D)RCR(P)和(D)RCL(P)的編號分別為FNC32和FNC33。執(zhí)行這兩條指令時,各位數(shù)據(jù)連同進位(M8022)向右(或向左)循環(huán)移動n位,如圖7-37所示。

使用ROR/ROL/RCR/RCL指令時應(yīng)注意:

(1)目標操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z;目標元件中指定位元件的組合只有在K4(16位)和K8(32位指令)時有效。

(2)?16位指令占5個程序步,32位指令占9個程序步。

(3)用連續(xù)指令執(zhí)行時,循環(huán)移位操作每個周期執(zhí)行一次。圖7-37帶進位右、左循環(huán)移位指令的使用

【例7-14】按1-2相激磁方式控制一個四相步進電動機??烧崔D(zhuǎn)控制,每步為1s。電動機運行時,指示燈亮。四相步進電動機的1-2相激磁方式波形如圖7-38(a)所示,程序如圖7-38(b)所示。圖7-38四相步進電動機的1-2相激磁方式波形圖及梯形圖(a)四相步進電動機1-2相激磁方式波形;(b)四相步進電動機1-2相激磁方式控制梯形圖

3.位右移和位左移指令

位右、左移指令SFTR(P)和SFTL(P)的編號分別為FNC34和FNC35。它們使位元件中的狀態(tài)成組地向右(或向左)移動。n1指定位元件的長度,n2指定移位位數(shù),n1和n2的關(guān)系及范圍因機型不同而有差異,一般n2≤n1≤1024。位右移指令的使用如圖7-39所示。圖7-39位右移指令的使用使用位右移和位左移指令時應(yīng)注意:

(1)源操作數(shù)可取X、Y、M、S;目標操作數(shù)可取Y、M、S。

(2)只有16位操作數(shù),占9個程序步。

【例7-15】四臺水泵輪流運行,由四臺三相異步電動機M1~M4驅(qū)動。正常要求是兩臺運行兩臺備用。為了防止備用水泵長時間不用造成銹蝕等問題,要求四臺水泵中兩臺運行,并每隔8h切換一臺,使四臺水泵輪流運行。程序如圖7-40所示。圖7-40四臺水泵輪流工作示例(a)四臺水泵運行時序圖;(b)四臺水泵運行PLC接線圖;(c)四臺水泵運行梯形圖

4.字右移和字左移指令

字右移和字左移指令WSFR(P)?和WSFL(P)?的編號分別為FNC36和FNC37。字右移和字左移指令以字為單位,其工作的過程與位移位相似,是將n1個字右移或左移n2個字。

使用字右移和字左移指令時應(yīng)注意:

(1)源操作數(shù)可取KnX、KnY、KnM、KnS、T、C和D;目標操作數(shù)可取KnY、KnM、KnS、T、C和D。

(2)字移位指令只有16位操作,占9個程序步。

(3)?n1和n2的關(guān)系為n2≤n1≤512。

5.先入先出寫入和先入先出讀出指令

先入先出寫入指令和先入先出讀出指令SFWR(P)?和SFRD(P)?的編號分別為FNC38和FNC39。

先入先出寫入指令SFWR的使用如圖7-41所示,當X0由OFF變?yōu)镺N時,SFWR執(zhí)行,D0中的數(shù)據(jù)寫入D2,而D1變成指針,其值為1(D1必須先清0);當X0再次由OFF變?yōu)镺N時,D0中的數(shù)據(jù)寫入D3,D1變?yōu)?,依次類推,D0中的數(shù)據(jù)依次寫入數(shù)據(jù)寄存器。D0中的數(shù)據(jù)從右邊的D2順序存入,源數(shù)據(jù)寫入的次數(shù)放在D1中,當D1中的數(shù)達到n-1后不再執(zhí)行上述操作,同時進位標志M8022置1。圖7-41先入先出寫入指令的使用先入先出讀出指令SFRD的使用如圖7-42所示,當X0由OFF變?yōu)镺N時,D2中的數(shù)據(jù)送到D10,同時指針D1的值減1,D3~D6的數(shù)據(jù)向右移一個字,數(shù)據(jù)總是從D2讀出。指針D1為0時,不再執(zhí)行上述操作,且M8020置1。圖7-42先入先出讀出指令的使用使用SFWR和SFRD指令時應(yīng)注意:

(1)目標操作數(shù)可取KnY、KnM、KnS、T、C和D;源操數(shù)可取所有的數(shù)據(jù)類型。

(2)指令只有16位運算,占7個程序步。

【例7-16】寫入99個入庫物品的產(chǎn)品編號(4位十進制數(shù)數(shù)),依次存放在D2~D100中,按照先入庫的物品先出庫的原則,讀取出庫物品的產(chǎn)品編號,并用4位數(shù)碼管顯示產(chǎn)品編號。程序如圖7-43所示。圖7-43寫入和讀出產(chǎn)品編號程序7.2.5數(shù)據(jù)處理指令

1.區(qū)間復(fù)位指令

區(qū)間復(fù)位指令ZRST(P)的編號為FNC40。它是將指定范圍內(nèi)的同類元件成批復(fù)位。如圖7-44所示,當M8002由OFF→ON時,位元件M500~M599成批復(fù)位,字元件C235~C255也成批復(fù)位。

圖7-44區(qū)間復(fù)位指令的使用使用區(qū)間復(fù)位指令時應(yīng)注意:

(1)?[D1.]和[D2.]可取Y、M、S、T、C、D,且應(yīng)為同類元件,同時[D1.]的元件號應(yīng)小于[D2.]指定的元件號。若[D1.]的元件號大于[D2.]的元件號,則只有[D1.]指定元件被復(fù)位。

(2)?ZRST指令只有16位運算,占5個程序步。但[D1.][D2.]也可以指定32位計數(shù)器。

2.譯碼和編碼指令

1)譯碼指令DECO

DECO(P)指令的編號為FNC41。如圖7-45所示,n=3表示[S.]源操作數(shù)為3位,即為X0、X1、X2。X0、X1、X2的狀態(tài)為二進制數(shù),當值為011時相當于十進制3,則由目標操作數(shù)M7~M0組成的8位二進制數(shù)的第三位M3被置1,其余各位為0;如果為000,則M0被置1。用譯碼指令可通過[D.]中的數(shù)值來控制元件的ON/OFF。譯碼指令既可用于位元件,也可用于字元件,具體用法如圖7-46所示。圖7-45譯碼指令的使用一圖7-46譯碼指令的使用二(a)?[D.]為位元件;(b)?[D.]為字元件使用譯碼指令時應(yīng)注意:

(1)位源操作數(shù)可取X、T、M和S;位目標操作數(shù)可取Y、M和S;字源操作數(shù)可取K、H、T、C、D、V和Z;字目標操作數(shù)可取T、C和D。

(2)若[D.]指定的目標元件是字元件T、C、D,則n≤4;若是位元件Y、M、S,則n=1~8。譯碼指令為16位指令,占7個程序步。

【例7-17】用功能指令組成一個八位選擇開關(guān)。程序如圖7-47所示。圖7-47八位選擇開關(guān)(a)八位選擇開關(guān)示意圖;(b)八位選擇開關(guān)梯形圖;(c)六位選擇開關(guān)梯形圖

2)編碼指令ENCO

ENCO(P)指令的編號為FNC42。如圖7-48所示,當X1有效時執(zhí)行編碼指令,將[S.]中最高位的1(M3)所在位數(shù)(4)放入目標元件D10中,即把011放入D10的低3位。

使用編碼指令時應(yīng)注意:

(1)源操作數(shù)是字元件時,可以是T、C、D、V和Z;源操作數(shù)是位元件時,可以是X、Y、M和S。目標元件可取T、C、D、V和Z。編碼指令為16位指令,占7個程序步。

(2)操作數(shù)為字元件時應(yīng)使n≤4,為位元件時則n=1~8,n=0時不作處理。

(3)若指定源操作數(shù)中有多個1,則只有最高位的1有效。圖7-48編碼指令的使用

3.ON位數(shù)統(tǒng)計和ON位判別指令

1)?ON位數(shù)統(tǒng)計指令SUM

(D)SUM(P)指令的編號為FNC43。該指令用來統(tǒng)計指定元件中1的個數(shù),用于將[S.]中1的個數(shù)存放在[D.]中,無1時零位標志M8020置1。如圖7-49所示,D0中有9個1,則D2中的數(shù)據(jù)為9。

使用SUM指令時應(yīng)注意:

(1)源操作數(shù)可取所有數(shù)據(jù)類型;目標操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z。

(2)?16位運算時占5個程序步,32位運算時占9個程序步。圖7-49ON位數(shù)統(tǒng)計指令的使用

2)?ON位判別指令BON

(D)BON(P)指令的編號為FNC44。它的功能是檢測指定元件中的指定位是否為1。為1時[D.]=1,為0時[D.]=0,如圖7-50所示。

使用BON指令時應(yīng)注意:

(1)源操作數(shù)可取所有數(shù)據(jù)類型;目標操作數(shù)可取Y、M和S。

(2)進行16位運算時占7個程序步,n=0~15;進行32位運算時則占13個程序步,n?=?0~31。圖7-50ON位判別指令的使用

4.平均值指令

平均值指令(D)MEAN(P)的編號為FNC45。它的作用是將n個源數(shù)據(jù)的平均值送到指定目標(余數(shù)省略),若程序中指定的n值超出1~64的范圍,則會出錯。

5.報警器置位與復(fù)位指令

報警器置位指令A(yù)NS(P)和報警器復(fù)位指令A(yù)NR(P)的編號分別為FNC46和FNC47。如圖7-51所示,若X0和X1同時為ON的時間超過1s,則S900置1;當X0或X1變?yōu)镺FF時,雖然定時器復(fù)位,但S900仍保持1不變;若在1s內(nèi)X0或X1再次變?yōu)镺FF,則定時器復(fù)位。當X2接通時,則將S900~S999之間被置1的報警器復(fù)位。若有多于一個的報警器被置1,則元件號最低的那個報警器被復(fù)位。圖7-51報警器置位與復(fù)位指令的使用使用報警器置位與復(fù)位指令時應(yīng)注意:

(1)?ANS指令的源操作數(shù)為T0~T199;目標操作數(shù)為S900~S999,n=1~32767。ANR指令無操作數(shù)。

(2)?ANS為16位運算指令,占7個程序步;ANR指令為16位運算指令,占1個程序步。

(3)?ANR指令如果連續(xù)執(zhí)行,則會按掃描周期依次逐個將報警器復(fù)位。

【例7-18】

用報警器監(jiān)控送料小車的運行情況。如圖7-52所示,一輛小車從0點前進,如果超過10s還沒有到達A點則報警器S900動作;如果超過20s還沒有到達B點則報警器S901動作;如果小車在B點后退時,超過20s還沒有到達0點則報警器S902動作。只要報警器S900~S902中有一個動作,則M8048=1,使Y10=1,啟動報警器報警。用X10按鈕可對已動作的報警器S900~S902復(fù)位。圖7-52送料車運行監(jiān)控報警(a)送料車運行監(jiān)控報警梯形圖;(b)送料車自動循環(huán)示意圖

6.二進制平方根指令

二進制平方根指令(D)SQR(P)的編號為FNC48。如圖7-53所示,當X0有效時,則將存放在D45中的數(shù)開平方,結(jié)果存放在D123中(結(jié)果只取整數(shù))。

使用SQR指令時應(yīng)注意:

(1)源操作數(shù)可取K、H、D,數(shù)據(jù)需大于0;目標操作數(shù)為D。

(2)?16位運算占5個程序步,32位運算占9個程序步。圖7-53二進制平方根指令的使用

7.二進制整數(shù)→二進制浮點數(shù)轉(zhuǎn)換指令

二進制整數(shù)→二進制浮點數(shù)轉(zhuǎn)換指令(D)FLT(P)的編號為FNC49。如圖7-54所示,當X1有效時,將存入D10中的數(shù)據(jù)轉(zhuǎn)換成浮點數(shù)并存入D12中。

使用FLT指令時應(yīng)注意:

(1)源和目標操作數(shù)均為D。

(2)?16位操作占5個程序步,32位操作占9個程序步。圖7-54二進制整數(shù)→二進制浮點數(shù)轉(zhuǎn)換指令的使用7.2.6高速處理指令

1.和輸入/輸出有關(guān)的指令

1)輸入/輸出刷新指令REF

REF(P)指令的編號為FNC50。FX系列PLC采用的是集中輸入/輸出的方式。如果需要最新的輸入信息以及希望立即輸出結(jié)果,則必須使用該指令。如圖7-55所示,當X0接通時,X10~X17共8點將被刷新;當X1接通時,則Y0~Y7、Y10~Y17共16點輸出將被刷新。

圖7-55輸入/輸出刷新指令的使用使用REF指令時應(yīng)注意:

(1)目標操作數(shù)為元件編號個位為0的X和Y,n應(yīng)為8的整倍數(shù)。

(2)指令只能進行16位運算,占5個程序步。

2)濾波調(diào)整指令REFF

REFF(P)指令的編號為FNC51。在FX系列PLC中,X0~X17使用了數(shù)字濾波器,用REFF指令可調(diào)節(jié)其濾波時間,范圍為0~60ms(實際上由于輸入端有RL濾波,因此最小濾波時間為50μs)。如圖7-56所示,當X0接通時,執(zhí)行REFF指令,濾波時間常數(shù)被設(shè)定為1ms。

使用REFF指令時應(yīng)注意:

(1)?REFF為16位運算指令,占7個程序步。

(2)當X0~X7用作高速計數(shù)輸入,或使用FNC56速度檢測指令以及中斷輸入時,輸入濾波器的濾波時間自動設(shè)置為50ms。圖7-56濾波調(diào)整指令說明

3)矩陣輸入指令MTR

MTR指令的編號為FNC52。利用MTR可以構(gòu)成由連續(xù)排列的8點輸入與n點輸出組成的8列n行的輸入矩陣。如圖7-57所示,由[S.]指定的輸入X0~X7共8點與n點輸出Y0、Y1、Y2(n=3)組成一個輸入矩陣。PLC在運行時執(zhí)行MTR指令,當Y0為ON時,讀入第一行的輸入數(shù)據(jù),存入M30~M37中;Y1為ON時讀入第二行的輸入狀態(tài),存入M40~M47。其余類推,反復(fù)執(zhí)行。圖7-57矩陣輸入指令的使用使用MTR指令時應(yīng)注意:

(1)源操作數(shù)[S.]是元件編號個位為0的X;目標操作數(shù)[D1.]是元件編號個位為0的Y;目標操作數(shù)[D2.]是元件編號個位為0的Y、M和S;n的取值范圍是2~8。

(2)考慮到輸入濾波應(yīng)答延遲為10ms,對于每一個輸出按20ms順序中斷,立即執(zhí)行。

(3)利用本指令通過8點晶體管輸出獲得64點輸入,但讀一次64點輸入所需時間為20ms?×?8?=?160ms,不適用高速輸入操作。

(4)該指令只有16位運算,占9個程序步。

2.高速計數(shù)器指令

1)高速計數(shù)器置位指令HSCS

DHSCS指令的編號為FNC53。它應(yīng)用于高速計數(shù)器的置位,使計數(shù)器的當前值達到預(yù)置值時,計數(shù)器的輸出觸點立即動作。它采用了中斷方式使置位和輸出立即執(zhí)行而與掃描周期無關(guān)。如圖7-58所示,[S1.]為設(shè)定值(100),當高速計數(shù)器C255的當前值由99變?yōu)?00或由101變?yōu)?00時,Y0都將立即置1。圖7-58高速計數(shù)器指令的使用

2)高速計數(shù)器比較復(fù)位指令HSCR

DHSCR指令的編號為FNC54。如圖7-58所示,C254的當前值由199變?yōu)?00或由201變?yōu)?00時,則用中斷的方式使Y10立即復(fù)位。

使用HSCS和HSCR時應(yīng)注意:

(1)源操作數(shù)[S1.]可取所有數(shù)據(jù)類型,[S2.]為C235~C255;目標操作數(shù)可取Y、M和S。

(2)此指令只有32位運算,占13個程序步。

3)高速計數(shù)器區(qū)間比較指令HSZ

DHSZ指令的編號為FNC55。如圖7-58所示,目標操作數(shù)為Y20、Y21和Y22。如果C251的當前值<K1000時,Y20為ON;K1000≤C251的當前值≤K1200時,Y21為ON;C251的當前值>K1200時,Y22為ON。

使用高速計數(shù)器區(qū)間比較指令時應(yīng)注意:

(1)操作數(shù)[S1.]、[S2.]可取所有數(shù)據(jù)類型,[S.]為C235~C255;目標操作數(shù)[D.]可取Y、M、S。

(2)此指令為32位操作,占17個程序步。

【例7-19】用編碼器控制電動機的啟動轉(zhuǎn)速。程序如圖7-59所示。圖7-59用編碼器控制電動機的啟動轉(zhuǎn)速

3.速度檢測指令

速度檢測指令SPD的編號為FNC56。它是用來檢測給定時間內(nèi)從編碼器輸入的脈沖個數(shù),并計算輸出速度的。如圖7-60所示,[D.]占三個目標元件。當X12為ON時,用D1對X0的輸入上升沿計數(shù),100ms后計數(shù)結(jié)果送入D0,D1復(fù)位,并重新開始對X0計數(shù)。D2在計數(shù)結(jié)束后計算剩余時間。

使用速度檢測指令時應(yīng)注意:

(1)?[S1.]為X0~X5;[S2.]可取所有的數(shù)據(jù)類型;[D.]可以是T、C、D、V和Z。

(2)指令只有16位操作,占7個程序步。圖7-60速度檢測指令的使用

4.脈沖輸出指令

脈沖輸出指令(D)PLSY的編號為FNC57。它用來產(chǎn)生指定數(shù)量的脈沖。如圖7-61所示,[S1.]用來指定脈沖頻率(2~20000Hz),[S2.]指定脈沖的個數(shù)(16位指令的范圍為1~32767,32位指令則為1~2147483647)。如果指定脈沖數(shù)為0,則產(chǎn)生無窮多個脈沖。[D.]用來指定脈沖輸出元件號。脈沖的占空比為50%,脈沖以中斷方式輸出。指定脈沖輸出完后,完成標志M8029置1。X10由ON變?yōu)镺FF時,M8029復(fù)位,停止輸出脈沖。若X10再次變?yōu)镺N,則脈沖從頭開始輸出。圖7-61脈沖輸出指令的使用使用脈沖輸出指令時應(yīng)注意:

(1)?[S1.]、[S2.]可取所有的數(shù)據(jù)類型;[D.]為Y1和Y2。

(2)該指令可進行16位和32位操作,分別占7個和13個程序步。

(3)本指令在程序中只能使用一次。

5.脈寬調(diào)制指令

脈寬調(diào)制指令PWM的編號為FNC58。它的功能是產(chǎn)生指定脈沖寬度和周期的脈沖串。如圖7-62所示,[S1.]用來指定脈沖的寬度,[S2.]用來指定脈沖的周期,[D.]用來指定輸出脈沖的元件號(Y0或Y1),輸出的ON/OFF狀態(tài)由中斷方式控制。

使用脈寬調(diào)制指令時應(yīng)注意:

(1)操作數(shù)的類型與PLSY相同;該指令只有16位操作,占7個程序步。

(2)?[S1.]應(yīng)小于[S2.]。圖7-62脈寬調(diào)制指令的使用

6.可調(diào)速脈沖輸出指令

可調(diào)速脈沖輸出指令(D)PLSR的編號為FNC59。該指令可以對輸出脈沖進行加速調(diào)整,也可進行減速調(diào)整。源操作數(shù)和目標操作數(shù)的類型和PLSY指令相同,只能用于晶體管PLC的Y0和Y1,可進行16位操作也可進行32位操作,分別占9個和17個程序步。該指令只能用一次。7.2.7方便指令

FX系列共有10條方便指令:初始化指令I(lǐng)ST(FNC60)、數(shù)據(jù)搜索指令SER(FNC61)、絕對值式凸輪順控指令A(yù)BSD(FNC62)、增量式凸輪順控指令I(lǐng)NCD(FNC63)、示教定時指令TIMR(FNC64)、特殊定時器指令STMR(FNC65)、交替輸出指令A(yù)LT(FNC66)、斜坡信號指令RAMP(FNC67)、旋轉(zhuǎn)工作臺控制指令ROTC(FNC68)和數(shù)據(jù)排序指令SORT(FNC69)。以下僅對其中的部分指令加以介紹。

1.凸輪順控指令

凸輪順控指令有絕對值式凸輪順控指令A(yù)BSD(FNC62)和增量式凸輪順控指令I(lǐng)NCD(FNC63)兩條。

絕對值式凸輪順控指令A(yù)BSD用來產(chǎn)生一組對應(yīng)于計數(shù)值在360°范圍內(nèi)變化的輸出波形,輸出點的個數(shù)由n決定,如圖7-63(a)所示。圖中,n為4,表明[D.]由M0~M3共4點輸出。預(yù)先通過MOV指令將對應(yīng)的數(shù)據(jù)寫入D300~D307中,開通點數(shù)據(jù)寫入偶數(shù)元件,關(guān)斷點數(shù)據(jù)寫入奇數(shù)元件,如表7-1所示。當執(zhí)行條件X0由OFF變ON時,M0~M3將得到如圖7-63(b)所示的波形,通過改變D300~D307的數(shù)據(jù)可改變波形。若X0為OFF,則各輸出點狀態(tài)不變。這一指令只能使用一次。圖7-63絕對值式凸輪順控指令的使用(a)絕對值式凸輪順控指令;(b)輸出波形表7-1旋轉(zhuǎn)臺旋轉(zhuǎn)周期M0~M3狀態(tài)增量式凸輪順控指令I(lǐng)NCD也是用來產(chǎn)生一組對應(yīng)于計數(shù)值變化的輸出波形的指令。如圖7-64所示,n=4,說明有4個輸出,分別為M0~M3,它們的ON/OFF狀態(tài)受凸輪提供的脈沖個數(shù)控制。使M0~M3為ON狀態(tài)的脈沖個數(shù)分別存放在D300~D303中(用MOV指令寫入)。圖中波形是D300~D303分別為20、30、10和40時的輸出。當計數(shù)器C0的當前值依次達到D300~D303的設(shè)定值時將自動復(fù)位。C1用來計復(fù)位的次數(shù),M0~M3根據(jù)C1的值依次動作。由n指定的最后一段完成后,標志M8029置1,以后周期性重復(fù)。若X0為OFF,則C0、C1均復(fù)位,同時M0~M3變?yōu)镺FF,當X0再接通后重新開始工作。圖7-64增量式凸輪順控指令的使用凸輪順控指令源操作數(shù)[S1.]可取KnX、KnY、KnM、KnS、T、C和D,[S2.]為C;目標操作數(shù)可取Y、M和S。此指令為16位操作指令,占9個程序步。

2.定時器指令

定時器指令有示教定時器指令TTMR(FNC64)和特殊定時器指令STMR(FNC65)兩條。

使用示教定時器指令TTMR時,可用一個按鈕來調(diào)整定時器的設(shè)定時間。如圖7-65所示,當X10為ON時,執(zhí)行TTMR指令,X10按下的時間由M301記錄,該時間乘以10n后存入D300。如果按鈕按下時間為t,則存入D300的值為10n×t。X10為OFF時,D301復(fù)位,D300保持不變。TTMR為16位指令,占5個程序步。

圖7-65示教定時器指令說明特殊定時器指令STMR是用來產(chǎn)生延時斷開定時器、單脈沖定時器和閃動定時器的指令。如圖7-66所示,m=1~32767,用來指定定時器的設(shè)定值;[S.]源操作數(shù)取T0~T199(100ms定時器)。T10的設(shè)定值為100ms?×?100?=?10s,M0是延時斷開定時器,M1為單脈沖定時器,M2、M3為閃動而設(shè)。

【例7-20】

用STMR指令組成振蕩電路,如圖7-67所示。

圖7-66特殊定時器指令的使用圖7-67振蕩電路

3.交替輸出指令

交替輸出指令A(yù)LT(P)?的編號為FNC66。?它用于實現(xiàn)由一個按鈕控制負載的啟動和停止。如圖7-68所示,當X0由OFF到ON時,Y0的狀態(tài)將改變一次。若用連續(xù)的ALT指令,則每個掃描周期Y0均改變一次狀態(tài)。[D.]可取Y、M和S。ALT為16為運算指令,占3個程序步。圖7-68交替輸出指令的使用

【例7-21】

分頻電路和振蕩電路。

圖7-69(a)為二級分頻電路,M0是X0的二分頻電路,M1是M0的二分頻電路,即M1是X0的四分頻電路。圖7-69(b)為振蕩電路,ALT指令由T1的定時脈沖進行控制,形成振蕩電路。圖7-69分頻電路和振蕩電路(a)多級分頻;(b)振蕩電路7.2.8外部I/O設(shè)備指令

外部I/O設(shè)備指令是FX系列PLC與外設(shè)傳遞信息的指令,共有10條。分別是10鍵輸入指令TKY(FNC70)、16鍵輸入指令HKY(FNC71)、數(shù)字開關(guān)輸入指令DSW(FNC72)、七段譯碼指令SEGD(FNC73)、帶鎖存的七段顯示指令SEGL(FNC74)、方向開關(guān)指令A(yù)RWS(FNC75)、ASCII碼轉(zhuǎn)換指令A(yù)SC(FNC76)、ASCII碼打印指令PR(FNC77)、特殊功能模塊讀指令FROM(FNC78)和特殊功能模塊寫指令T0(FNC79)。

1.數(shù)據(jù)輸入指令

數(shù)據(jù)輸入指令有10鍵輸入指令TKY(FNC70)、16鍵輸入指令HKY(FNC71)和數(shù)字開關(guān)輸入指令DSW(FNC72)。

10鍵輸入指令(D)TKY的使用如圖7-70所示。源操作數(shù)[S.]用X0為首元件,10個鍵X0~X11分別為對應(yīng)數(shù)字0~9。X30接通時執(zhí)行TKY指令,如果以X2(2)、X10(8)、X3(3)、X0(0)的順序按鍵,則[D1.]中存入數(shù)據(jù)為2830,實現(xiàn)了將按鍵變成十進制數(shù)字量的功能。當送入的數(shù)大于9999時,則高位溢出并丟失。使用32位指令DTKY時,D1和D2組合使用,送入的數(shù)大于99999999時高位溢出。圖7-7010鍵輸入指令的使用當按下X2后,M12置1并保持至另一鍵被按下,其他鍵也一樣。M10~M19的動作對應(yīng)于X0~X11。任一鍵按下,鍵信號置1,直到該鍵放開。當兩個或更多的鍵被按下時,則首先按下的鍵有效。X30變?yōu)镺FF時,D0中的數(shù)據(jù)保持不變,但M10~M20全部為OFF。此指令的源操作數(shù)可取X、Y、M、和S;目標操作數(shù)[D1.]可取KnY、KnM、KnS、T、C、D、V和Z,[D2.]可取Y、M、S。16位運算時占7個程序步,32運算時占13個程序步。該指令在程序中只能使用一次。

16鍵輸入指令(D)HKY的作用是對通過鍵盤上的數(shù)字鍵和功能鍵輸入的內(nèi)容進行復(fù)合運算。如圖7-71所示,[S.]指定4個輸入元件,[D1.]指定4個掃描輸出點,[D2.]為鍵輸入的存儲元件,[D3.]指示讀出元件。16鍵中,0~9為數(shù)字鍵,A~F為功能鍵。HKY指令輸入的數(shù)字范圍為0~9999,以二進制的方式存放在D0中,如果大于9999則溢出。DHKY指令可在D0和D1中存放最大為99999999的數(shù)據(jù)。功能鍵A~F與M0~M5對應(yīng),按下A鍵,M0置1并保持,再按下D鍵則M0置0,M3置1并保持,其余類推。如果同時按下多個鍵則先按下的鍵有效。圖7-7116鍵輸入指令的使用

16鍵輸入指令的源操作數(shù)為X,目標操作數(shù)[D1.]為Y;[D2.]可以取T、C、D、V和Z,[D3.]可以取Y、M和S;16位運算時占9個程序步,32位運算時占17個程序步;掃描全部16鍵需8個掃描周期。HKY指令在程序中只能使用一次。

數(shù)字開關(guān)指令DSW的功能是讀入一組或兩組4位數(shù)字開關(guān)的設(shè)置值。如圖7-72所示,源操作數(shù)[S.]為X,用來指定輸入點;[D1.]為目標操作數(shù)為Y,用來指定選通點;[D2.]指定數(shù)據(jù)存儲單元,它可取T、C、D、V和Z;n指定數(shù)字開關(guān)組數(shù)。該指令只有16位運算,占9個程序步,可使用兩次。圖中,n=1指有一組BCD碼數(shù)字開關(guān),輸入開關(guān)為X10~X13,按Y10~Y13的順序選通讀入,數(shù)據(jù)以二進制數(shù)的形式存放在D0中。若n=2,則有兩組開關(guān),第2組開關(guān)接到X14~X17上,仍由Y10~Y13順序選通讀入,數(shù)據(jù)以二進制的形式存放在D1中。第2組數(shù)據(jù)只有在n=2時才有效。當X1保持為ON時,Y10~Y13依次為ON。一個周期完成后標志位M8029置1。圖7-72數(shù)字開關(guān)指令的使用

2.數(shù)字譯碼輸出指令

數(shù)字譯碼輸出指令有七段譯碼指令SEGD(FNC73)和帶鎖存的七段顯示指令SEGL(FNC74)兩條。

七段譯碼指令SEGD(P)如圖7-73

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論