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

下載本文檔

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

文檔簡介

第5章功能指令及應(yīng)用5.1FX2N系列PLC功能指令概述5.2程序流控制類指令5.3數(shù)據(jù)處理類指令5.4特殊功能類指令5.5外部設(shè)備類指令小結(jié)

思考與練習(xí)可編程控制器的基本指令是基于繼電器、定時(shí)器、計(jì)數(shù)器類軟元件,主要用于邏輯處理的指令。作為工業(yè)控制計(jì)算機(jī),PLC僅有基本指令是遠(yuǎn)遠(yuǎn)不夠的。現(xiàn)代工業(yè)控制在許多場合需要數(shù)據(jù)處理。因而PLC制造商逐步在PLC中引入功能指令(FunctionalInstruction),或稱為應(yīng)用程序(AppliedInstruction),用于數(shù)據(jù)的傳送、運(yùn)算、變換及程序控制等功能。這使得可編程控制器成了真正意義上的計(jì)算機(jī)。特別是近年來,功能指令又向綜合性方向邁進(jìn)了一大步,出現(xiàn)了許多一條指令即能實(shí)現(xiàn)以往需大段程序才能完成的某種任務(wù)的指令,如PID(比例微分積分)運(yùn)算指令。這類指令實(shí)際上就是一個(gè)個(gè)功能完整的子程序,從而大大提高了PLC的實(shí)用價(jià)值和普及率。5.1FX2N系列PLC功能指令概述

FX2N系列可編程控制器功能指令依據(jù)功能不同可分為數(shù)據(jù)處理類、程序流控制類、特種功能類及外部設(shè)備類。由于功能指令主要解決的是數(shù)據(jù)處理任務(wù),其中數(shù)據(jù)處理類指令種類多、數(shù)量大、使用頻繁,又可分為傳送比較、四則及邏輯運(yùn)算、移位、編解碼等。程序流控制類指令主要用于程序的結(jié)構(gòu)及流程,含子程序、中斷、跳轉(zhuǎn)及循環(huán)等指令。外部設(shè)備指令含一般的輸入輸出口設(shè)備及專用外部設(shè)備兩大類。專用外部設(shè)備指和主機(jī)配接的功能單元及專用通信單元等。特種功能指令指機(jī)器的一些特殊功能,如高速計(jì)數(shù)器或模仿一些專用機(jī)械或?qū)S秒姎庠O(shè)備功能的指令等。5.1.1功能指令的基本表示方法

FX2N系列可編程控制器的功能指令是采用計(jì)算機(jī)通用的助記符形式來表示的。一般用指令的英文名稱或縮寫作為助記符,如指令助記符MEAN用來表示取平均值的指令。與基本指令不同,功能指令不含表達(dá)梯形圖符號間相互關(guān)系的成分,而是直接表達(dá)本指令要做什么。FX2N系列PLC在梯形圖中使用功能框表示功能指令,如圖5.1所示。這種表達(dá)方式的優(yōu)點(diǎn)是直觀,稍具計(jì)算機(jī)程序知識的人馬上可以悟出指令的功能。圖5.1功能指令的梯形圖形式有的功能指令只需要指定功能號,但大多數(shù)功能指令在指定功能號的同時(shí)還需要指定操作元件。操作數(shù)分為源(Source)操作數(shù)、目標(biāo)(Destination)操作數(shù)及其他操作數(shù)。源操作數(shù)是指令執(zhí)行后不改變其內(nèi)容的操作數(shù),用[S]表示,目標(biāo)操作數(shù)是指令執(zhí)行后將改變其內(nèi)容的操作數(shù),用[D]表示。如果可以使用變址功能,則表示為[S·]和[D·]。源或目標(biāo)不止一個(gè),可表示為[S1·],[S2·],[D1·],[D2·]等。其他操作數(shù)用m或n表示,它們常用來表示常數(shù),或作為源操作數(shù)和目標(biāo)操作數(shù)的補(bǔ)充說明。表示常數(shù)時(shí),K為十進(jìn)制,H為十六進(jìn)制。當(dāng)圖5.1中X0的常開觸點(diǎn)接通時(shí),執(zhí)行的操作為[(D0)+(D1)+(D2)]/3→(D4Z0),即求D0,D1,D2的平均值,結(jié)果送到目標(biāo)寄存器D4Z0,Z0是變址寄存器,如果Z0的內(nèi)容為12,則運(yùn)算結(jié)果送到D16。功能指令的功能號和指令助記符占一個(gè)程序步,每個(gè)操作數(shù)占2個(gè)或4個(gè)程序步(16位操作數(shù)是2個(gè)程序步,32位操作數(shù)是4個(gè)程序步)。圖5.1中同時(shí)給出了功能指令MEAN的指令語句表和步序號。在使用簡易編程器的場合,輸入功能指令時(shí),應(yīng)先按?FNC鍵,再輸入功能指令的編號,如MEAN的編號為FNC45。使用?HELP鍵的幫助功能,可以顯示出功能指令助記符和編號的一覽表。5.1.2數(shù)據(jù)長度與指令執(zhí)行形式

1.?dāng)?shù)據(jù)長度功能指令依處理數(shù)據(jù)的長度分為16位指令和32位指令。其中32位指令用(D)表示,無(D)符號的為16位指令。圖5.1中助記符MOV之前的(D)表示處理32位(32bit)數(shù)據(jù),這時(shí)相鄰的兩個(gè)元件組成元件對,該指令將D11,D10中的數(shù)據(jù)傳送到D13,D12。處理32位數(shù)據(jù)時(shí),為了避免出現(xiàn)錯(cuò)誤,建議使用首地址為偶數(shù)的操作數(shù)。

2.指令執(zhí)行形式功能指令有脈沖執(zhí)行型和連續(xù)執(zhí)行型。指令中標(biāo)有(P)的為脈沖執(zhí)行型。如圖5.1中MOV后面的(P)表示脈沖執(zhí)行,即僅在X1由OFF(“0”狀態(tài))→ON(“1”狀態(tài))時(shí)執(zhí)行一次。如果沒有(P),在X1為ON的每一掃描周期指令都要被執(zhí)行,稱為連續(xù)執(zhí)行??梢?,脈沖執(zhí)行型指令在執(zhí)行條件滿足時(shí)僅執(zhí)行一個(gè)掃描周期,這點(diǎn)對數(shù)據(jù)處理有很重要的意義。比如一條加法指令,在脈沖執(zhí)行時(shí),只將加數(shù)和被加數(shù)做一次加法運(yùn)算,而連續(xù)型加法運(yùn)算指令執(zhí)行條件滿足時(shí),每一個(gè)掃描周期都要相加一次。因此某些指令如INC、DEC等,在用連續(xù)執(zhí)行方式時(shí)應(yīng)特別注意。5.2程序流控制類指令5.2.1條件跳轉(zhuǎn)指令條件跳轉(zhuǎn)指令CJ(ConditionalJump)的功能指令編號為FNC00,操作數(shù)為P0~P127,其中P63即END,無需再標(biāo)號。該指令占3個(gè)程序步,標(biāo)號占1個(gè)程序步。

CJ和CJ(P)指令用于跳過順序程序中的某一部分,以減少掃描時(shí)間。跳轉(zhuǎn)指針標(biāo)號一般在CJ指令之后。如圖5.2所示,當(dāng)X20為ON時(shí),程序跳到P7處,如果X20為OFF,不執(zhí)行跳轉(zhuǎn),程序按原順序執(zhí)行。跳轉(zhuǎn)時(shí),不執(zhí)行被跳過的那部分指令。如果被跳過程序段中包含時(shí)間繼電器和計(jì)數(shù)器,無論其是否具有掉電保持功能,由于相關(guān)程序停止執(zhí)行,它們的現(xiàn)實(shí)值寄存器被鎖定,跳轉(zhuǎn)發(fā)生后其計(jì)數(shù)、計(jì)時(shí)值保持不變,在跳轉(zhuǎn)中止時(shí),計(jì)時(shí)計(jì)數(shù)將繼續(xù)進(jìn)行。但是正在工作的T63和高速計(jì)數(shù)器不管有無跳步仍連續(xù)工作。另外,計(jì)時(shí)、計(jì)數(shù)器的復(fù)位指令具有優(yōu)先權(quán),即使復(fù)位指令位于被跳過的程序段中,執(zhí)行條件滿足時(shí),復(fù)位工作也將執(zhí)行。值得說明的是,跳轉(zhuǎn)指針標(biāo)號也可出現(xiàn)在跳轉(zhuǎn)指令之前,如圖5.3所示,但要注意從程序執(zhí)行順序來看,如果X22為ON時(shí)間過長,會(huì)造成該程序的執(zhí)行時(shí)間超過了警戒時(shí)鐘設(shè)定值,程序就會(huì)出錯(cuò)。跳轉(zhuǎn)時(shí),如果從主控指令區(qū)的外部跳入其內(nèi)部,不管它的主控觸點(diǎn)是否接通,都把它當(dāng)成接通來執(zhí)行主控指令區(qū)內(nèi)的程序;如果跳步指令在主控指令區(qū)內(nèi),主控觸點(diǎn)沒有接通時(shí)不執(zhí)行跳步。圖5.2兩條跳轉(zhuǎn)指令使用同一標(biāo)號

圖5.3標(biāo)號指針用法在一個(gè)程序中一個(gè)標(biāo)號只能出現(xiàn)一次,如出現(xiàn)兩次或兩次以上,則會(huì)出現(xiàn)錯(cuò)誤。但同一程序中兩條跳轉(zhuǎn)指令可以使用相同的標(biāo)號(見圖5.2)。如果用輔助繼電器M8000作為跳轉(zhuǎn)指令的工作條件,跳轉(zhuǎn)就成為無條件跳轉(zhuǎn),因?yàn)檫\(yùn)行時(shí)特殊輔助繼電器M8000總是為ON。5.2.2子程序調(diào)用與返回指令子程序調(diào)用指令CALL(SubRoutineCall)的功能指令編號為FNC01,操作數(shù)為P0~P127(不包括P63),占用3個(gè)程序步,允許用變址寄存器修改。子程序可以嵌套調(diào)用,最多嵌套5級。子程序返回指令SRET(SubRoutineReturn)的功能指令編號為FNC02,無操作數(shù)。子程序是為一些特定控制目的編制的相對獨(dú)立的程序。為了區(qū)別于主程序,規(guī)定在程序編排時(shí),將主程序排在前邊,子程序排在后邊,并以主程序結(jié)束指令FEND將這兩部分隔開。子程序指令在梯形圖中使用的情況如圖5.4所示。圖中,子程序調(diào)用指令CALL安排在主程序段中,當(dāng)X0為ON時(shí)標(biāo)號為P9的子程序得以執(zhí)行。子程序P9安排在主程序結(jié)束指令FEND之后,標(biāo)號P9和子程序返回指令SRET間的程序構(gòu)成了子程序的內(nèi)容。當(dāng)主程序帶有多個(gè)子程序時(shí),子程序可依次列在主程序結(jié)束指令之后,并以不同的標(biāo)號相區(qū)別。應(yīng)當(dāng)說明的是,標(biāo)號應(yīng)寫在FEND指令之后,同一標(biāo)號只能出現(xiàn)一次,CJ指令中用過的標(biāo)號不能再用,但不同位置的CALL指令可以調(diào)用同一標(biāo)號的子程序。圖5.4中,當(dāng)X0為ON時(shí),CALL指令使程序跳到標(biāo)號P9處,子程序被執(zhí)行,執(zhí)行完SRET指令后返回到主程序繼續(xù)執(zhí)行原程序(即104步)??梢?,只要X0為ON,就相當(dāng)于在主程序中加入了這么一段程序。而在X0為OFF時(shí),程序的掃描就僅在主程序中進(jìn)行。子程序的這種執(zhí)行方式對有多個(gè)控制功能需依一定的條件有選擇地實(shí)現(xiàn)有很重要的意義,它可以使程序的結(jié)構(gòu)簡潔明了。編程時(shí)將這些相對獨(dú)立的功能都設(shè)置成子程序,而在主程序中再設(shè)置一些入口條件實(shí)現(xiàn)對這些子程序的控制即可。圖5.5所示是子程序嵌套調(diào)用的例子。圖中CALL(P)P10指令僅在X0由OFF變?yōu)镺N時(shí)執(zhí)行一次。在執(zhí)行子程序1時(shí),如果X4為ON,CALLP15被執(zhí)行,程序跳到P15處,嵌套執(zhí)行子程序2。執(zhí)行第二條SRET指令后,返回子程序1中CALLP15指令的下一條指令,執(zhí)行第一條SRET指令后返回主程序中CALL(P)P10指令的下一條指令。圖5.4子程序的使用圖5.5子程序的嵌套調(diào)用5.2.3中斷返回、允許與禁止中斷指令

中斷返回指令I(lǐng)RET(InterruptionReturn)的功能指令編號為FNC03;允許中斷指令EI(InterruptionEnable)的功能指令編號為FNC04;禁止中斷指令DI(InterruptionDisable)的功能指令編號為FNC05。以上3條指令均無操作數(shù),分別占用1個(gè)程序步。中斷是計(jì)算機(jī)所特有的一種工作方式。它是指在主程序的執(zhí)行過程中,中斷主程序的執(zhí)行去執(zhí)行中斷子程序。和普通子程序一樣,中斷子程序也是為某些特定的控制功能而設(shè)定的。而不同的是,這些特定的控制功能都有一個(gè)共同的特點(diǎn),即要求響應(yīng)時(shí)間小于機(jī)器的掃描周期。因而,中斷子程序都不能由程序內(nèi)安排的條件引出。能引起中斷的信號叫中斷源,F(xiàn)X2N系列的中斷源有外部中斷、定時(shí)器中斷及計(jì)數(shù)器中斷。其中外部中斷有6個(gè)與X0~X5對應(yīng)的中斷輸入點(diǎn),中斷指針為I□0□,最低位為0時(shí)表示下降沿中斷,反之為上升沿中斷,最高位與X0~X5的元件號相對應(yīng)。3點(diǎn)定時(shí)器中斷,其對應(yīng)的中斷指針為I6~I(xiàn)8□□,低兩位是以ms為單位的定時(shí)時(shí)間,定時(shí)器中斷用于高速處理或每隔一定的時(shí)間執(zhí)行的程序。6點(diǎn)計(jì)數(shù)器的中斷指針為I0□0(□=1~6),它們利用高速計(jì)數(shù)器的當(dāng)前值產(chǎn)生中斷,與HSCS(高速計(jì)數(shù)器比較置位)指令配合使用??删幊炭刂破魍ǔL幱诮怪袛嗟臓顟B(tài),指令EI和DI之間的程序段為允許中斷的區(qū)間(見圖5.6),當(dāng)程序執(zhí)行到該區(qū)間時(shí),如果中斷源產(chǎn)生中斷,CPU將停止執(zhí)行當(dāng)前的程序,轉(zhuǎn)去執(zhí)行相應(yīng)的中斷子程序,執(zhí)行到中斷子程序的IRET指令時(shí),返回原斷點(diǎn),繼續(xù)執(zhí)行原來的程序。圖5.6中斷指令的使用如果有多個(gè)中斷信號依次發(fā)出,則優(yōu)先級按發(fā)生的先后為序,發(fā)生越早的優(yōu)先級越高。若同時(shí)發(fā)生多個(gè)中斷信號,則中斷指針號小的優(yōu)先。如果機(jī)器安排的中斷比較多,而這些中斷又不一定需同時(shí)響應(yīng)時(shí),還可以通過特殊輔助繼電器M8050~M8058實(shí)現(xiàn)中斷的選擇。這些特殊輔助繼電器和9個(gè)中斷的對應(yīng)關(guān)系為:M8050~M8055與6個(gè)外部輸入中斷對應(yīng),M8056~M8058與3點(diǎn)定時(shí)器中斷對應(yīng)。機(jī)器規(guī)定,當(dāng)這些輔助繼電器通過控制信號被置1(ON)時(shí),其對應(yīng)的中斷被禁止執(zhí)行。M8059為ON時(shí),關(guān)閉所有的計(jì)數(shù)器中斷。

FX2N系列可編程控制器可實(shí)現(xiàn)不多于二級的中斷嵌套。即在中斷子程序中編入EI和DI,可實(shí)現(xiàn)雙重中斷。如果中斷信號在禁止中斷區(qū)出現(xiàn),則該中斷信號被存儲(chǔ),并在EI指令之后響應(yīng)該中斷。不需要關(guān)中斷時(shí),只使用EI指令,可以不使用DI指令。5.2.4主程序結(jié)束指令主程序結(jié)束指令FEND(FirstEnd)的功能指令編號為FNC06,無操作數(shù),占用1個(gè)程序步。

FEND表示主程序結(jié)束,執(zhí)行到FEND指令時(shí)可編程控制器進(jìn)行輸入/輸出處理、監(jiān)控定時(shí)器刷新,完成后返回第0步。子程序(包括中斷子程序)應(yīng)放在FEND指令之后。CALL指令調(diào)用的子程序必須用SRET指令結(jié)束,中斷子程序必須以IRET指令結(jié)束。若FEND指令在CALL指令執(zhí)行之后和SRET指令執(zhí)行之前出現(xiàn),則程序出錯(cuò)。使用多條FEND指令時(shí),中斷程序應(yīng)放在最后的FEND指令和END指令之間。5.2.5監(jiān)控定時(shí)器指令監(jiān)控定時(shí)器指令WDT(WatchDogTimer)的功能指令編號為FNC07,無操作數(shù),占用1個(gè)程序步。監(jiān)控定時(shí)器又稱看門狗,是刷新順序程序的警戒時(shí)鐘,實(shí)際上是一個(gè)專用計(jì)時(shí)器。在FX2N系列PLC中,警戒時(shí)鐘專用計(jì)時(shí)器的數(shù)據(jù)寄存在寄存器D8000中,定時(shí)時(shí)間的缺省值為200ms,可通過修改D8000來設(shè)定它的定時(shí)時(shí)間。如果程序的掃描周期(從0步到END或FEND指令)超過它的定時(shí)時(shí)間,PLC將停止運(yùn)行。在這種情況下,應(yīng)將WDT指令插到合適的程序步中刷新警戒時(shí)鐘以使順序程序得以繼續(xù)執(zhí)行,直到END。如條件跳轉(zhuǎn)指令CJ若在它對應(yīng)的標(biāo)號之后(即程序往回跳),可能因連續(xù)反復(fù)跳步使它們之間的程序反復(fù)執(zhí)行,總的執(zhí)行時(shí)間超過警戒時(shí)鐘的定時(shí)時(shí)間,為了避免出現(xiàn)這樣的情況,可在CJ指令和對應(yīng)的標(biāo)號之間插入WDT指令。5.2.6循環(huán)指令循環(huán)指令由FOR及NEXT二條指令構(gòu)成,這二條指令總是成對出現(xiàn)的。FOR指令用來表示循環(huán)區(qū)的起點(diǎn),功能指令編號為FNC08,16位指令占用3個(gè)程序步,它的源操作數(shù)用來表示循環(huán)次數(shù)N,可以取任意的數(shù)據(jù)格式。循環(huán)次數(shù)N=1~32767,如N在-32767~0之間,當(dāng)作N=1處理。NEXT是循環(huán)區(qū)終點(diǎn)指令,功能指令編號為FNC09,占用1個(gè)程序步,無操作數(shù)。該指令可以嵌套使用,最多允許5層嵌套。如果要求有條件執(zhí)行重復(fù)掃描,則可以在FOR指令前面加跳轉(zhuǎn)指令。如圖5.7所示是3層循環(huán)嵌套的情況。循環(huán)體分別為A、B和C,其中循環(huán)體A要求有條件執(zhí)行重復(fù)掃描,因此在相應(yīng)的FOR指令前面加了跳轉(zhuǎn)指令。循環(huán)體C重復(fù)掃描3次后,再掃描相應(yīng)的NEXT指令下面的梯形圖。由于循環(huán)體B嵌套在循環(huán)體C的內(nèi)部,設(shè)數(shù)據(jù)寄存器D02內(nèi)的數(shù)據(jù)為4,則循環(huán)體B重復(fù)掃描的次數(shù)為4?×?3?=?12(次)。而循環(huán)體A嵌套在循環(huán)體B的內(nèi)部,并且在FOX指令前面有跳轉(zhuǎn)指令,因此其重復(fù)掃描次數(shù)分兩種情況:

(1)當(dāng)跳轉(zhuǎn)指令的控制線路(常開觸點(diǎn)X0)斷開時(shí),循環(huán)體A的重復(fù)掃描次數(shù)為5?×?4?×?3?=?60。

(2)當(dāng)跳轉(zhuǎn)指令的控制線路(常開觸點(diǎn)X0)閉合時(shí),則不再執(zhí)行循環(huán)體A的重復(fù)掃描。在使用FOR、NEXT指令時(shí)要注意二者必須成對使用,數(shù)目相符,并且在FOR-NEXT循環(huán)體之中不能出現(xiàn)FEND或END指令。圖5.73層循環(huán)嵌套5.3數(shù)據(jù)處理類指令5.3.1比較與傳送指令

1.比較指令

比較指令分為CMP(比較)和ZCP(區(qū)間比較),比較結(jié)果用目標(biāo)元件的狀態(tài)來表示。待比較的源操作數(shù)[S1·]和[S2·]可取任意的數(shù)據(jù)格式,目標(biāo)操作數(shù)[D·]可取Y,M和S,占用3點(diǎn)。此外,還包括時(shí)鐘數(shù)據(jù)比較指令、時(shí)鐘數(shù)據(jù)區(qū)間比較指令、二進(jìn)制浮點(diǎn)數(shù)比較指令、二進(jìn)制浮點(diǎn)數(shù)區(qū)間比較指令和觸點(diǎn)型比較指令等。

1)比較指令比較指令CMP(Compare)的功能指令編號為FNC10,16位運(yùn)算占7個(gè)程序步,32位運(yùn)算占13個(gè)程序步。比較指令CMP是將源操作數(shù)[S1·]和[S2·]的數(shù)據(jù)進(jìn)行比較,結(jié)果送到目標(biāo)操作數(shù)[D·]中。圖5.8所示為CMP指令的使用。其中,比較指令將十進(jìn)制常數(shù)100與C20的當(dāng)前值比較,比較結(jié)果送到M0~M2。在X0為OFF時(shí)不執(zhí)行CMP指令,即不進(jìn)行比較,M0~M2的狀態(tài)保持不變。如要清除比較結(jié)果,要采用RST或ZRST復(fù)位指令。如圖5.9所示。數(shù)據(jù)比較是進(jìn)行代數(shù)值大小比較(即帶符號比較)。所有的源數(shù)據(jù)均按二進(jìn)制處理。當(dāng)比較指令的操作數(shù)不完整(若只指定一個(gè)或兩個(gè)操作數(shù));指定的操作數(shù)不符合要求(例如把X、D、T、C指定為目標(biāo)操作數(shù));指定操作數(shù)的元件號超出了允許范圍時(shí),使用比較指令就會(huì)出錯(cuò)。圖5.8CMP指令的使用圖5.9比較結(jié)果復(fù)位

2)區(qū)間比較指令區(qū)間比較指令ZCP(ZoneCompare)的功能指令編號為FNC11,16位運(yùn)算占9個(gè)程序步,32位運(yùn)算占17個(gè)程序步。區(qū)間比較指令ZCP是將一個(gè)數(shù)據(jù)[S·]與兩個(gè)源數(shù)據(jù)[S1·]和[S2·]間的數(shù)據(jù)進(jìn)行代數(shù)比較,比較結(jié)果在目標(biāo)操作數(shù)[D·]及以后的兩個(gè)軟元件中表示出來。源[S1·]的內(nèi)容比源[S2·]的內(nèi)容要小。如果[S1·]比[S2·]大,則[S2·]被看做與[S1·]一樣大。圖5.10所示為ZCP指令的使用。其中,X0為ON時(shí),執(zhí)行ZCP指令,比較結(jié)果送到M3~M5。X0為OFF時(shí),ZCP指令不執(zhí)行,M3~M5保持X0為OFF前的狀態(tài)。在不執(zhí)行指令擬清除比較結(jié)果時(shí),可用復(fù)位指令。圖5.10ZCP指令的使用

3)時(shí)鐘數(shù)據(jù)比較指令時(shí)鐘數(shù)據(jù)比較指令TCMP(TimeCompare)的功能指令編號為FNC160,源操作數(shù)[S1·],[S2·]和[S3·]用來存放指定時(shí)間的時(shí)、分、秒,可取任意的數(shù)據(jù),[S·]可取T,C和D,目標(biāo)操作數(shù)[D·]為Y,M和S,占3點(diǎn),只有16位運(yùn)算占11個(gè)程序步。

TCMP指令將指定時(shí)刻[S·]與時(shí)鐘數(shù)據(jù)[S1·](時(shí))[S2·]分[S3·]秒進(jìn)行比較,比較結(jié)果在[D·]中顯示(見圖5.11)。圖5.11時(shí)鐘數(shù)據(jù)比較指令

4)時(shí)鐘數(shù)據(jù)區(qū)間比較指令時(shí)鐘數(shù)據(jù)區(qū)間比較指令TZCP(TimeZoneCompare)的功能指令編號為FNC161,源操作數(shù)[S1·],[S2·]和[S·]可取T,C和D,目標(biāo)操作數(shù)[D·]為Y,M和S,占3點(diǎn),只有16位運(yùn)算占9個(gè)程序步。[S1·]≤[S2·]。

TZCP指令將指定時(shí)刻[S·]與時(shí)鐘數(shù)據(jù)[S1·]~[S2·]進(jìn)行比較,比較結(jié)果在[D·]中顯示。圖5.12所示為時(shí)鐘數(shù)據(jù)區(qū)間比較指令,其中[S1·],[S2·]和[S·]分別占3個(gè)數(shù)據(jù)寄存器,如D10~D12分別用來存放時(shí)、分、秒。圖5.12時(shí)鐘數(shù)據(jù)區(qū)間比較指令

5)二進(jìn)制浮點(diǎn)數(shù)比較指令二進(jìn)制浮點(diǎn)數(shù)比較指令ECMP的功能指令編號為FNC110,源操作數(shù)[S1·]和[S2·]可取K,H和D,目標(biāo)操作數(shù)為Y,M和S,占用3點(diǎn),只有32位運(yùn)算,占13個(gè)程序步。

ECMP指令是將[S1·]同[S2·]進(jìn)行比較,其比較結(jié)果用[D·]指定元件的ON/OFF狀態(tài)來表示,如圖5.13所示。常數(shù)參與比較時(shí),被自動(dòng)轉(zhuǎn)換為二進(jìn)制浮點(diǎn)數(shù)。圖5.13浮點(diǎn)數(shù)比較指令

6)二進(jìn)制浮點(diǎn)數(shù)區(qū)間比較指令二進(jìn)制浮點(diǎn)數(shù)區(qū)間比較指令EZCP的功能指令編號為FNC111,源操作數(shù)[S1·],[S2·]和[S·]可取K,H和D,目標(biāo)操作數(shù)為Y,M和S,占3點(diǎn),只有32位運(yùn)算,占17個(gè)程序步。[S1·]<[S2·]。

EZCP指令是將[S·]指定的浮點(diǎn)數(shù)與作為比較范圍的源操作數(shù)[S1·]和[S2·]相比較,比較結(jié)果用目標(biāo)操作數(shù)[D·]指定元件的ON/OFF狀態(tài)來表示,如圖5.14所示。常數(shù)參與比較時(shí),被自動(dòng)轉(zhuǎn)換為二進(jìn)制浮點(diǎn)數(shù)。圖5.14浮點(diǎn)數(shù)區(qū)間比較指令

7)觸點(diǎn)型比較指令

LD開始的觸點(diǎn)型比較指令接在左母線上,ADD開始的觸點(diǎn)型比較指令串聯(lián)在別的觸點(diǎn)后面,OR開始的觸點(diǎn)型比較指令與別的觸點(diǎn)并聯(lián),如圖5.15所示。當(dāng)C10的當(dāng)前值等于20時(shí),Y10被驅(qū)動(dòng);當(dāng)X0為ON且D200的值大于-30時(shí),Y11被SET指令置位;當(dāng)M3為ON或C10的當(dāng)前值等于200時(shí),M50被驅(qū)動(dòng)。各種觸點(diǎn)型比較指令的助記符如表5.1所示。圖5.15觸點(diǎn)型比較指令表5.1觸點(diǎn)型比較指令的助記符

2.傳送指令傳送指令包括MOV(傳送)、SMOV(BCD碼移位傳送)、CML(取反傳送)、BMOV(數(shù)據(jù)塊傳送)、FMOV(多點(diǎn)傳送)以及XCH(數(shù)據(jù)交換)指令。

MOV和CML指令的源操作數(shù)可取所有的數(shù)據(jù)類型,SMOV指令可取除K,H以外的其他類型的操作數(shù)。它們的目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C,D,V和Z。

1)傳送指令傳送指令MOV(Move)的功能指令編號為FNC12,16位運(yùn)算占5個(gè)程序步,32位運(yùn)算占9個(gè)程序步。傳送指令MOV是將源操作數(shù)內(nèi)的數(shù)據(jù)傳送到指定的目標(biāo)操作數(shù)內(nèi),即[S·]→[D·]。圖5.16中,當(dāng)X0為ON時(shí),源操作數(shù)[S·]中的常數(shù)100傳送到目標(biāo)操作元件D10中。當(dāng)指令執(zhí)行時(shí),常數(shù)100自動(dòng)轉(zhuǎn)換成二進(jìn)制數(shù)。當(dāng)X0為OFF時(shí),指令不執(zhí)行,數(shù)據(jù)保持不變。圖5.16傳送指令與移位傳送指令

2)移位傳送移位傳送指令SMOV(ShiftMove)的功能指令編號為FNC13,只有16位運(yùn)算,占11個(gè)程序步。源數(shù)據(jù)(二進(jìn)制數(shù))被轉(zhuǎn)換成4位BCD碼,然后將它們移位傳送。圖5.16中的X1為ON時(shí),將D1中右起第4位(m1?=?4)開始的2位(m2?=?2)BCD碼移到目標(biāo)操作數(shù)(D2)的右起第3位(n?=?3)和第2位(見圖5.17),然后D2中的BCD碼自動(dòng)轉(zhuǎn)換為二進(jìn)制碼,D2中的第1位和第4位不受移位傳送指令的影響。圖5.17移位傳送

3)取反傳送指令取反傳送指令CML(Complement)的功能指令編號為FNC14,16位運(yùn)算占5個(gè)程序步,32位運(yùn)算占9個(gè)程序步。取反傳送指令將源元件中的數(shù)據(jù)逐位取反(1→0,0→1)并傳送到指定目標(biāo)。若源數(shù)據(jù)為常數(shù)K,該數(shù)據(jù)會(huì)自動(dòng)轉(zhuǎn)換為二進(jìn)制數(shù)。CML用于可編程控制器反邏輯輸出時(shí)非常方便。圖5.18所示的CML指令將D0的低4位取反后傳送到Y(jié)3~Y0中。圖5.18取反傳送

4)塊傳送指令塊傳送指令BMOV(BlockMove)的功能指令編號為FNC15,16位操作占7個(gè)程序步。塊傳送指令的源操作數(shù)可取KnX,KnY,KnM,KnS,T,C,D和文件寄存器,目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C和D。

BMOV指令是從源操作數(shù)指定的軟元件開始的n點(diǎn)數(shù)據(jù)傳送到指定的目標(biāo)操作數(shù)開始的n點(diǎn)軟元件。如果元件號超出允許的元件號范圍,數(shù)據(jù)僅傳送到允許的范圍內(nèi)。為防止源數(shù)據(jù)塊與目標(biāo)數(shù)據(jù)塊重疊時(shí)源數(shù)據(jù)在傳送過程中被改寫,傳送的順序是自動(dòng)決定的,傳送順序如圖5.19所示。在具有指定的位元件的場合,源與目標(biāo)要采用相同的位數(shù),如圖5.20所示。圖5.19塊傳送指令說明一圖5.20塊傳送指令說明二

5)多點(diǎn)傳送指令多點(diǎn)傳送指令FMOV(FillMove)的功能指令編號為FNC16,16位操作占7個(gè)程序步,32位操作占13個(gè)程序步。它的源操作數(shù)可取所有的數(shù)據(jù)類型,目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C和D,n≤512。

FMOV指令是將源操作數(shù)指定的軟元件的內(nèi)容向以目標(biāo)操作數(shù)指定的軟元件開頭的n點(diǎn)軟元件傳送。n點(diǎn)軟元件的內(nèi)容都一樣,如圖5.21所示,當(dāng)X0為ON時(shí)將常數(shù)0送到D0~D9這10個(gè)(n?=?10)數(shù)據(jù)寄存器中。如果元件號超出允許的元件號范圍,數(shù)據(jù)僅傳送到允許的范圍內(nèi)。圖5.21多點(diǎn)數(shù)據(jù)傳送與數(shù)據(jù)交換

6)數(shù)據(jù)交換指令數(shù)據(jù)交換指令XCH(Exchange)的功能指令編號為FNC17,16位運(yùn)算占5個(gè)程序步,32位運(yùn)算占9個(gè)程序步。它的兩個(gè)目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C,D,V和Z。

XCH指令是在指定的目標(biāo)軟元件間進(jìn)行數(shù)據(jù)交換。如圖5.21所示,在指令執(zhí)行前,若目標(biāo)元件D10和D11中的數(shù)據(jù)分別為120和350;當(dāng)X1為ON時(shí),數(shù)據(jù)交換指令XCH執(zhí)行后,目標(biāo)元件D10和D11中的數(shù)據(jù)分別為350和120。即D10和D11中的數(shù)據(jù)進(jìn)行了交換。交換指令一般采用脈沖方式,否則在每一個(gè)掃描周期都要交換一次。5.3.2運(yùn)算指令

1.四則運(yùn)算指令四則運(yùn)算指令包括ADD、SUB、MUL、DIV(二進(jìn)制加、減、乘、除)指令,源操作數(shù)可取所有的數(shù)據(jù)類型,目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C,D,V和Z(32位乘除指令中V和Z不能用作[D·])。16位運(yùn)算占7個(gè)程序步,32位運(yùn)算占13個(gè)程序步。

1)加法指令加法指令A(yù)DD(Addition)的功能編號為FNC20。該指令是將指定的源元件中的二進(jìn)制數(shù)相加,結(jié)果送到指定的目標(biāo)元件中。每個(gè)數(shù)據(jù)的最高位為符號位(0為正,1為負(fù)),加減運(yùn)算為代數(shù)運(yùn)算。圖5.22中的X0為ON時(shí),執(zhí)行(D10)+(D12)→(D14)。圖5.22二進(jìn)制加減法運(yùn)算

ADD加法指令有3個(gè)常用標(biāo)志。M8020為零標(biāo)志,M8021為借位標(biāo)志,M8022為進(jìn)位標(biāo)志。如果運(yùn)算結(jié)果為0,則零標(biāo)志M8020置1;如果運(yùn)算結(jié)果超過32767(16bit運(yùn)算)或2147483647(32bit運(yùn)算),則進(jìn)位標(biāo)志M8022置1;如果運(yùn)算結(jié)果小于-32767(16bit)或-2147483647(32bit),則借位標(biāo)志M8021置1。在32位運(yùn)算中,被指定的字元件是低16位元件,而下一個(gè)元件為高16位元件。為了避免錯(cuò)誤,建議指定操作元件時(shí)采用偶數(shù)元件號。源和目標(biāo)可以用相同的元件號。若源和目標(biāo)元件號相同而采用連續(xù)執(zhí)行的ADD、(D)ADD指令時(shí),加法的結(jié)果在每個(gè)掃描周期都會(huì)改變。若采用脈沖執(zhí)行的加法指令A(yù)DD(P)來加1,這與脈沖執(zhí)行的INC(加1)指令的執(zhí)行結(jié)果相似,其不同之處在于INC指令不影響零標(biāo)志、借位標(biāo)志和進(jìn)位標(biāo)志。

2)減法指令減法指令SUB(Subtraction)的功能指令編號為FNC21。該指令是將指定的源元件中的二進(jìn)制數(shù)相減,結(jié)果送到指定的目標(biāo)元件中。如圖5.22所示,當(dāng)X1為ON時(shí),執(zhí)行(D1,D0)-22→(D1,D0)。各種標(biāo)志的動(dòng)作、32位運(yùn)算中軟元件的指定方法、連續(xù)執(zhí)行型和脈沖執(zhí)行型的差異等均與上述加法指令相同。

3)乘法指令乘法指令MUL(Multiplication)的功能編號為FNC22,每個(gè)數(shù)據(jù)的最高位為符號位(0為正,1為負(fù))。

MUL乘法指令是將指定的源元件中的二進(jìn)制數(shù)相乘,結(jié)果送到指定的目標(biāo)元件中,如圖5.23所示。它分為16位和32位兩種情況。當(dāng)為16位運(yùn)算,執(zhí)行條件X0為ON時(shí),(D0)?×?(D2)→(D5,D4)。源操作數(shù)是16位,目標(biāo)操作數(shù)是32位。當(dāng)為32位運(yùn)算,即執(zhí)行(D)MUL指令,當(dāng)X0為ON時(shí),(D1,D0)?×?(D3,D2)→(D7,D6,D5,D4)。源操作數(shù)是32位,目標(biāo)操作數(shù)64位。如將位組合元件用于目標(biāo)操作數(shù)時(shí),限于K的取值,只能得到低32位的結(jié)果,不能得到高32位的結(jié)果。這時(shí)應(yīng)將數(shù)據(jù)移入字元件再進(jìn)行計(jì)算。用字元件時(shí),也不能監(jiān)視64位數(shù)據(jù),只能通過監(jiān)視高32位和低32位來監(jiān)視。V、Z不能用[D·]目標(biāo)元件。

4)除法指令除法指令DIV(Division)的功能指令編號為FNC23。該指令是將指定的源元件中的二進(jìn)制數(shù)相除,[S1·]為被除數(shù),[S2·]為除數(shù),商送到指定的目標(biāo)元件[D·]中,余數(shù)送到[D·]的下一個(gè)目標(biāo)元件。如圖5.23所示,它也分16位和32位兩種情況。

16位運(yùn)算執(zhí)行DIV指令,當(dāng)X1為ON時(shí),執(zhí)行(D6)÷(D8),商送到(D2),余數(shù)送到(D3)。

32位運(yùn)算執(zhí)行(D)DIV指令,當(dāng)X1為ON時(shí),執(zhí)行(D7,D6)?÷?(D9,D8),商送到(D3,D2),余數(shù)送到(D5,D4)。若除數(shù)為0則出錯(cuò),不執(zhí)行指令。若位元件被指定為目標(biāo)元件,不能獲得余數(shù)。商和余數(shù)的最高位為符號位。

2.加1和減1指令加1指令I(lǐng)NC(Increment)和減1指令DEC(Decrement)的功能指令編號分別為FNC24和FNC25。它們的操作數(shù)均可取KnY,KnM,KnS,T,C,D,V和Z,16位運(yùn)算占3個(gè)程序步,32位運(yùn)算占5個(gè)程序步。圖5.24中,X0每次由OFF變?yōu)镺N時(shí),由[D·]指定的元件D10中的二進(jìn)制數(shù)自動(dòng)加1。如果不用脈沖指令,每一個(gè)掃描周期都要加1。當(dāng)X1由OFF變?yōu)镺N時(shí),由[D·]指定的元件D11中的二進(jìn)制數(shù)自動(dòng)減1。若用連續(xù)指令時(shí),每個(gè)周期減1。在16位運(yùn)算中,+32767再加1就變?yōu)椋?2768;-32768再減1就變?yōu)?32767,但標(biāo)志不置位。同樣,在32位運(yùn)算中,+2147483647再加1就變?yōu)椋?147483648;-2147483648再減1就變?yōu)?2147483647,標(biāo)志也不置位。圖5.24二進(jìn)制加1減1運(yùn)算

3.字邏輯運(yùn)算指令字邏輯運(yùn)算指令包括WAND(字邏輯與)、WOR(字邏輯或)、WXOR(字邏輯異或)和NEG(求補(bǔ))指令,它們的功能指令編號分別為FNC26~FNC29。WAND,WOR和WXOR指令的[S1·]和[S2·]均可取所有的數(shù)據(jù)類型,目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C,D,V和Z,16位運(yùn)算占7個(gè)程序步,32位運(yùn)算占13個(gè)程序步。NEG指令只有目標(biāo)操作數(shù),同樣可取KnY,KnM,KnS,T,C,D,V和Z,但16位運(yùn)算占3個(gè)程序步,32位運(yùn)算占5個(gè)程序步。字邏輯與、字邏輯或、字邏輯異或指令以位(bit)為單位作相應(yīng)的運(yùn)算。如圖5.25所示,當(dāng)X0為ON時(shí),[S1·]指定的D10和[S2·]指定的D12內(nèi)數(shù)據(jù)按位對應(yīng),進(jìn)行邏輯字與運(yùn)算(見表5.2),結(jié)果存于由[D·]指定的元件D14中。圖5.25字邏輯運(yùn)算表5.2邏輯運(yùn)算關(guān)系表當(dāng)X1為ON時(shí),[S1·]指定的D20和[S2·]指定的D22內(nèi)數(shù)據(jù)按位對應(yīng),進(jìn)行邏輯字或運(yùn)算,結(jié)果存于由[D·]指定的元件D24中。當(dāng)X2為ON時(shí),[S1·]指定的D30和[S2·]指定的D32內(nèi)數(shù)據(jù)按位對應(yīng),進(jìn)行邏輯字異或運(yùn)算,結(jié)果存于由[D·]指定的元件D34中。WXOR指令與求反指令(CML)組合使用可以實(shí)現(xiàn)“異或非”運(yùn)算(見圖5.25)。當(dāng)X3由OFF→ON時(shí),將[D·]指定的D40內(nèi)數(shù)據(jù)的每一位取反后該數(shù)再加1,結(jié)果存于同一元件D40中,求補(bǔ)指令實(shí)際上是絕對值不變的變號操作。這是因?yàn)镕X系列可編程控制器的負(fù)數(shù)是用2的補(bǔ)碼形式來表示的,最高位為符號位,正數(shù)時(shí)該位為0,負(fù)數(shù)時(shí)為1,將負(fù)數(shù)求補(bǔ)后可以得到它的絕對值。

4.?dāng)?shù)據(jù)變換指令數(shù)據(jù)變換指令包括BCD(二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼并傳送)和BIN(BCD碼轉(zhuǎn)換為二進(jìn)制數(shù)并傳送)指令。它們的源操作數(shù)可取KnX,KnY,KnM,KnS,T,C,D,V和Z,目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C,D,V和Z,16位運(yùn)算占5個(gè)程序步,32位運(yùn)算占9個(gè)程序步。

1)?BCD變換指令

BCD變換指令BCD(BinaryCodetoDecimal)的功能指令編號為FNC18,該指令是將源元件中的二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼送到目標(biāo)元件中。如圖5.26所示,當(dāng)X0為ON時(shí),源元件D12中的二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼送到目標(biāo)元件Y0~Y7中。如果是16位操作,變換結(jié)果超出0~9999的范圍就會(huì)出錯(cuò);如果是32位操作,變換結(jié)果超出0~99999999的范圍就會(huì)出錯(cuò)。圖5.26BCD變換和BIN變換的使用可編程控制器內(nèi)部的算術(shù)運(yùn)算是用二進(jìn)制進(jìn)行的,因此可用BCD變換指令將PLC內(nèi)的二進(jìn)制數(shù)變?yōu)槠叨物@示等所需的BCD碼后向外部輸出。

2)?BIN變換指令

BIN變換指令BIN(Binary)的功能指令編號為FNC19,該指令是將源元件中BCD碼轉(zhuǎn)換成二進(jìn)制數(shù)送到目標(biāo)元件。數(shù)值范圍:16位操作為0~9999;32位操作為0~99999999。

BIN變換指令的使用如圖5.26所示。當(dāng)X1為ON時(shí),源元件K2X0中BCD碼轉(zhuǎn)換成二進(jìn)制數(shù)送到目標(biāo)元件D13中。如果源數(shù)據(jù)不是BCD數(shù)時(shí),M8067為ON(運(yùn)算錯(cuò)誤),M8068(運(yùn)算錯(cuò)誤鎖存)不工作,為OFF。常數(shù)K不能作為本指令的操作元件,因?yàn)樵谌魏翁幚碇八鼈兌紩?huì)被轉(zhuǎn)換成二進(jìn)制數(shù)。

5.浮點(diǎn)數(shù)運(yùn)算指令

1)二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換指令

(1)二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù)。二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù)指令EBCD的功能指令編號為FNC118,源操作數(shù)[S·]和目標(biāo)操作數(shù)[D·]均為D,32位運(yùn)算占9個(gè)程序步。

EBCD指令是將[S·]指定的單元內(nèi)的二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù),并存入[D·]中。二進(jìn)制浮點(diǎn)數(shù)的尾數(shù)占23位,符號占1位,指數(shù)部分占8位。圖5.27中的X0為ON時(shí),將D11,D10中的二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù)后存入D21和D20。圖5.27二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換指令

(2)十進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制浮點(diǎn)數(shù)。十進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制浮點(diǎn)數(shù)指令(D)EBIN的功能指令編號為FNC119,源操作數(shù)[S·]和目標(biāo)操作數(shù)[D·]均為D,32位運(yùn)算占9個(gè)程序步。

EBIN指令是將[S·]指定的單元內(nèi)的十進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制浮點(diǎn)數(shù),并存入[D·]中。圖5.27中的X1為ON時(shí),將D31、D30中的十進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制浮點(diǎn)數(shù)后存入D41、D40。使用該指令,可將含有小數(shù)點(diǎn)的十進(jìn)制數(shù)直接轉(zhuǎn)換為二進(jìn)制浮點(diǎn)數(shù)。

(3)二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)。二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)指令I(lǐng)NT的功能指令編號為FNC129,源操作數(shù)[S·]和目標(biāo)操作數(shù)[D·]均為D,16位運(yùn)算占5個(gè)程序步,32位運(yùn)算占9個(gè)程序步。

INT指令是將[S·]指定單元內(nèi)的二進(jìn)制浮點(diǎn)數(shù)舍去小數(shù)部分后轉(zhuǎn)換為二進(jìn)制整數(shù),并存入[D·]中。圖5.27中的X2為ON時(shí),將D51、D50中的二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)后存入D60中。該指令是FLT指令(FNC49)的逆運(yùn)算,運(yùn)算結(jié)果為0時(shí),零標(biāo)志M8020為ON;轉(zhuǎn)換不滿1而舍掉時(shí),借位標(biāo)志為ON;16位運(yùn)算結(jié)果超出-32767~32767,或32位運(yùn)算時(shí),運(yùn)算結(jié)果超出-2147483648~2147483647,將會(huì)發(fā)生溢出,進(jìn)位標(biāo)志為ON。

2)二進(jìn)制浮點(diǎn)數(shù)的四則運(yùn)算指令二進(jìn)制浮點(diǎn)數(shù)四則運(yùn)算指令的源操作數(shù)[S1·]和[S2·]可取K,H和D,目標(biāo)操作數(shù)[D·]為D,只有32位運(yùn)算,占13個(gè)程序步。運(yùn)算影響標(biāo)志位M8020(零標(biāo)志)、M8021(借位標(biāo)志)和M8022(進(jìn)位標(biāo)志)。常數(shù)參與運(yùn)算時(shí),被自動(dòng)轉(zhuǎn)換為二進(jìn)制浮點(diǎn)數(shù)。源操作數(shù)和目標(biāo)操作數(shù)可取同一數(shù)據(jù)寄存器,如用連續(xù)執(zhí)行指令,每個(gè)掃描周期都會(huì)執(zhí)行運(yùn)算,如圖5.28所示。圖5.28二進(jìn)制浮點(diǎn)數(shù)四則運(yùn)算指令

(1)二進(jìn)制浮點(diǎn)數(shù)的加法指令。二進(jìn)制浮點(diǎn)數(shù)的加法指令EADD的功能指令編號為FNC120,該指令是將源操作數(shù)[S1·]和[S2·]指定單元內(nèi)的二進(jìn)制浮點(diǎn)數(shù)相加,和(二進(jìn)制浮點(diǎn)數(shù))存入目標(biāo)操作數(shù)[D·]中。

(2)二進(jìn)制浮點(diǎn)數(shù)的減法指令。二進(jìn)制浮點(diǎn)數(shù)的減法指令ESUB的功能指令編號為FNC121,該指令是將源操作數(shù)[S1·]指定的二進(jìn)制浮點(diǎn)數(shù)減去源操作數(shù)[S2·]指定的二進(jìn)制浮點(diǎn)數(shù),差(二進(jìn)制浮點(diǎn)數(shù))存入目標(biāo)操作數(shù)[D·]中。

(3)二進(jìn)制浮點(diǎn)數(shù)的乘法指令。二進(jìn)制浮點(diǎn)數(shù)的乘法指令EMUL的功能指令編號為FNC122,該指令是將源操作數(shù)[S1·]指定的二進(jìn)制浮點(diǎn)數(shù)乘以源操作數(shù)[S2·]指定的二進(jìn)制浮點(diǎn)數(shù),積(二進(jìn)制浮點(diǎn)數(shù))存入目標(biāo)操作數(shù)[D·]中。

(4)二進(jìn)制浮點(diǎn)數(shù)的除法指令。二進(jìn)制浮點(diǎn)數(shù)的除法指令EDIV的功能指令編號為FNC123,該指令是將源操作數(shù)[S1·]指定的二進(jìn)制浮點(diǎn)數(shù)除以源操作數(shù)[S2·]指定的二進(jìn)制浮點(diǎn)數(shù),商(二進(jìn)制浮點(diǎn)數(shù))存入目標(biāo)操作數(shù)[D·]中。

3)二進(jìn)制浮點(diǎn)數(shù)的開平方指令與三角函數(shù)運(yùn)算指令

(1)二進(jìn)制浮點(diǎn)數(shù)開平方指令。二進(jìn)制浮點(diǎn)數(shù)開平方指令ESQR的功能指令編號為FNC127,源操作數(shù)[S·]為K,H和D,目標(biāo)操作數(shù)[D·]為D,只有32位運(yùn)算,占9個(gè)程序步。

ESQR指令是將[S·]指定的二進(jìn)制浮點(diǎn)數(shù)進(jìn)行開平方,平方根(二進(jìn)制浮點(diǎn)數(shù))存入目標(biāo)操作數(shù)[D·]中,如圖5.29所示。源操作數(shù)應(yīng)為正數(shù),若為負(fù)數(shù)則出錯(cuò),運(yùn)算錯(cuò)誤標(biāo)志M8067為ON,不執(zhí)行指令。源操作數(shù)為常數(shù)時(shí),自動(dòng)轉(zhuǎn)換為二進(jìn)制浮點(diǎn)數(shù)。圖5.29浮點(diǎn)數(shù)開平方與三角函數(shù)運(yùn)算指令

(2)二進(jìn)制浮點(diǎn)數(shù)三角函數(shù)運(yùn)算指令。二進(jìn)制浮點(diǎn)數(shù)三角函數(shù)運(yùn)算指令包括SIN(正弦)、COS(余弦)和TAN(正切)指令,功能指令編號分別為FNC130~FNC132,源操作數(shù)[S·]和目標(biāo)操作數(shù)[D·]為D,只有32位運(yùn)算,占9個(gè)程序步。這些指令是用來求出源操作數(shù)[S·]指定的二進(jìn)制浮點(diǎn)數(shù)(角度)的三角函數(shù),函數(shù)值(二進(jìn)制浮點(diǎn)數(shù))存入目標(biāo)操作數(shù)[D·]指定的單元中。源操作數(shù)應(yīng)滿足0°≤角度≤360°。角度單位為弧度(RAD),弧度值?=?π?×?角度值/180°。

6.時(shí)鐘數(shù)據(jù)加減法指令時(shí)鐘數(shù)據(jù)加、減法指令的[S1·],[S2·]和[D·]可取T,C和D,只有16位運(yùn)算占7個(gè)程序步。

1)時(shí)鐘數(shù)據(jù)加法指令時(shí)鐘數(shù)據(jù)加法指令TADD(TimeAddition)的功能指令編號為FNC162,[S1·],[S2·]和[D·]中存放的是時(shí)間數(shù)據(jù)(時(shí)、分、秒)。該指令是以[S2·]起始的3點(diǎn)時(shí)刻數(shù)據(jù)加上存入以[S1·]起始的3點(diǎn)時(shí)刻數(shù)據(jù),其結(jié)果存入以[D·]起始的3點(diǎn)中。圖5.30中的X0為ON時(shí),TADD指令將D10~D12和D0~D2的時(shí)刻數(shù)據(jù)相加后存入D20~D22中。運(yùn)算結(jié)果如超過24h,進(jìn)位標(biāo)志為ON,其和減去24h后存入目標(biāo)地址。

2)時(shí)鐘數(shù)據(jù)減法指令時(shí)鐘數(shù)據(jù)減法指令TSUB(TimeSubtraction)的功能指令編號為FNC163。該指令是以[S1·]起始的3點(diǎn)時(shí)刻數(shù)據(jù)減去存入以[S2·]起始的3點(diǎn)時(shí)刻數(shù)據(jù),其結(jié)果存入以[D·]起始的3點(diǎn)中。圖5.30中的X1為ON時(shí),TSUB指令將D30~D32和D40~D42的時(shí)刻數(shù)據(jù)相減后存入D50~D52中。運(yùn)算結(jié)果如小于零,借位標(biāo)志為ON,其差值加上24h后存入目標(biāo)地址。圖5.30時(shí)鐘數(shù)據(jù)加減法指令

7.格雷碼變換指令格雷碼變換指令GRY(GrayCode)和格雷碼逆變換指令GBIN(GrayCodetoBinary)的功能指令編號為FNC170和FNC171,[S·]可取任意的數(shù)據(jù)格式,[D·]可取KnY,KnM,KnS,T,C,D,V和Z,16位運(yùn)算占5個(gè)程序步,32位運(yùn)算占9個(gè)程序步。格雷碼的特點(diǎn)是相鄰的兩個(gè)數(shù)(二進(jìn)制數(shù))的各位中,只有一位的值是不同的。格雷碼常用于光電碼盤編碼器。

GRY指令是將[S·]中的二進(jìn)制數(shù)轉(zhuǎn)換為格雷碼并存入[D·]中,如圖5.31所示。GBIN指令是將[S·]中的格雷碼轉(zhuǎn)換為二進(jìn)制數(shù)并存入[D·]中。圖5.31格雷碼變換指令5.3.3循環(huán)移位與移位指令

1.循環(huán)移位指令右循環(huán)移位指令ROR(RotationRight)和左循環(huán)移位指令ROL(RotationLeft)的功能編號分別為FNC30和FNC31。它們只有目標(biāo)操作數(shù),可取KnY,KnM,KnS,T,C,D,V和Z。16位指令占5個(gè)程序步,32位指令占9個(gè)程序步。16位指令和32位指令中n應(yīng)分別小于16和32。循環(huán)右(左)移指令可以使16位數(shù)據(jù)、32位數(shù)據(jù)向右(左)循環(huán)移位,如圖5.32和圖5.33所示。當(dāng)X0(或X1)由OFF→ON時(shí),[D·]內(nèi)指定的D0內(nèi)的數(shù)據(jù)向右(或向左)移4(n?=?4)位,最后一次移出來的那一位同時(shí)存入進(jìn)位標(biāo)志M8022中。圖5.32右循環(huán)移位指令圖5.33左循環(huán)移位指令用連續(xù)指令執(zhí)行時(shí),循環(huán)移位操作每個(gè)周期執(zhí)行一次。若在目標(biāo)元件中指定位元件組的組數(shù),只有K4(16位指令)和K8(32位指令)有效,例如K4Y0和K8M0。

2.帶進(jìn)位的循環(huán)移位指令帶進(jìn)位的右循環(huán)移位指令RCR(RotationRightwithCarry)和帶進(jìn)位的左循環(huán)移位指令RCL(RotationLeftwithCarry)的功能指令編號分別為FNC32和FNC33,它們的目標(biāo)操作數(shù)、程序步數(shù)和n的取值范圍與循環(huán)移位指令相同。執(zhí)行這兩條指令時(shí),各位的數(shù)據(jù)與進(jìn)位位M8022一起向右(或向左)循環(huán)移動(dòng)n位(見圖5.34和圖5.35)。在循環(huán)中進(jìn)位標(biāo)志被送到目標(biāo)操作數(shù)中。與循環(huán)移位指令一樣,若在目標(biāo)元件中指定位元件組的組數(shù),只有K4(16位指令)和K8(32位指令)有效。圖5.34帶進(jìn)位的右循環(huán)移位指令圖5.35帶進(jìn)位的左循環(huán)移位指令

3.位右移和位左移指令位右移指令SFTR(ShiftRight)與位左移指令SFTL(ShiftLeft)的功能指令編號分別為FNC34和FNC35。它們的源操作數(shù)可取X,Y,M和S,目標(biāo)操作數(shù)可取Y,M和S。它們只有16位運(yùn)算,占9個(gè)程序步。位右移和位左移指令使元件中的狀態(tài)成組地向右或向左移動(dòng),由n1指定位元件組的長度,n2指定移動(dòng)的位數(shù),對于FX2N,n2≤n1≤1024。圖5.36中的X10由OFF變?yōu)镺N時(shí),位右移指令按以下順序移位:M3~M0中的數(shù)溢出,M7~M4→M3~M0,M11~M8→M7~M4,M15~M12→M11~M8,X3~X0→M15~M12。圖5.37中的X10由OFF變?yōu)镺N時(shí),位左移指令按以下順序移位:M15~M12中的數(shù)溢出,M11~M8→M15~M12,M7~M4→M11~M8,M3~M0→M7~M4,X3~X0→M3~M0。圖5.36位右移指令圖5.37位左移指令

4.字右移和字左移指令字右移指令WSFR(WordShiftRight)與字左移指令WSFL(WordShiftLeft)的功能指令編號分別為FNC36和FNC37。它們的源操作數(shù)可取KnX,KnY,KnM,KnS,T,C和D,目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C和D。字移動(dòng)指令只有16位運(yùn)算,占9個(gè)程序步。字右移(或字左移)指令是以字為單位,對[D·]所指定的n1個(gè)字元件進(jìn)行[S·]所指定的n2個(gè)字的右移(或左移)。其中n2≤n1≤512。圖5.38中的X0由OFF變?yōu)镺N時(shí),字右移指令按以下順序移位:D3~D0中的數(shù)溢出,D7~D4→D3~D0,D11~D8→D7~D4,D15~D12→D11~D8,T3~T0→D15~D12。字左移指令的使用方法與字右移指令基本原理相同,請讀者自行分析,在此不再贅述。圖5.38字右移指令

5.?FIFO(先入先出)寫入與讀出指令

1)?FIFO(FirstInFirstOut)寫入指令

FIFO寫入指令SFWR(ShiftRegisterWrite)的功能指令編號為FNC38,源操作數(shù)可取所有的數(shù)據(jù)類型,目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C和D,只有16位運(yùn)算,占7個(gè)程序步。圖5.39中的X0由OFF→ON時(shí),將[S·]所指定的D0的數(shù)據(jù)寫入D2,[D·]所指定的指針D1的內(nèi)容成為1。以后如X0再次由OFF→ON時(shí),D0中新的數(shù)據(jù)寫入D3,D1的內(nèi)容變?yōu)?。依此類推,源操作數(shù)D0中的數(shù)據(jù)依次寫入數(shù)據(jù)寄存器。數(shù)據(jù)由最右邊的寄存器D2開始順序存入,源數(shù)據(jù)寫入的次數(shù)存入D1。當(dāng)D1中的數(shù)達(dá)到n-1后不再執(zhí)行上述處理,進(jìn)位標(biāo)志M8022置1。若是連續(xù)指令執(zhí)行時(shí),則在各個(gè)掃描周期按順序執(zhí)行。圖5.39FIFO寫入指令

2)?FIFO讀出指令

FIFO讀出指令SFRD(ShiftRegisterRead)的功能指令編號為FNC39,源操作數(shù)可取KnY,KnM,KnS,T,C和D,目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C,D,V和Z,只有16位運(yùn)算,占7個(gè)程序步。圖5.40中的X0由OFF→ON時(shí),將D2的數(shù)據(jù)傳送到D20內(nèi),與此同時(shí),指針D1的內(nèi)容減1,D3~D10的數(shù)據(jù)向右移。當(dāng)X0再由OFF→ON時(shí),即原D3中的內(nèi)容傳送到D20內(nèi),D1的內(nèi)容再減1。依此類推,數(shù)據(jù)總是從D2讀出,當(dāng)D1的內(nèi)容為0時(shí),則上述操作不再執(zhí)行,零標(biāo)志M8020置1。若是連續(xù)指令執(zhí)行時(shí),則在各個(gè)掃描周期按順序向右移位傳送執(zhí)行。圖5.40FIFO讀出指令5.3.4其他數(shù)據(jù)處理指令

1.區(qū)間復(fù)位指令區(qū)間復(fù)位指令ZRST(ZoneReset)也稱為成批復(fù)位指令,其功能指令編號為FNC40,目標(biāo)操作數(shù)可取T,C和D(字元件)或Y,M,S(位元件)。該指令只有16位運(yùn)算,占5個(gè)程序步。

ZRST指令將[D1·]和[D2·]指定的元件號范圍內(nèi)的同類元件成批復(fù)位。圖5.41中當(dāng)M8002由OFF→ON時(shí),區(qū)間復(fù)位指令執(zhí)行。位元件M500~M599成批復(fù)位,字元件C235~C255成批復(fù)位,狀態(tài)元件S0~S127成批復(fù)位。[D1·]和[D2·]指定的應(yīng)為同一類元件,[D1·]的元件號應(yīng)小于等于[D2·]的元件號。若[D1·]的元件號大于[D2·]的元件號,則只有[D1·]指定的元件被復(fù)位。圖5.41區(qū)間復(fù)位指令雖然ZRST指令是16位處理指令,但是可在[D1·],[D2·]中指定32位計(jì)數(shù)器。不過不能混合指定,即不能在[D1·]中指定16位計(jì)數(shù)器,在[D2·]中指定32位計(jì)數(shù)器。

2.解碼與編碼指令

1)解碼指令解碼指令DECO(Decode)的功能指令編號為FNC41。位源操作數(shù)可取X,T,M和S,位目標(biāo)操作數(shù)可取Y,M和S。字源操作數(shù)可取K,H,T,C,D,V和Z,字目標(biāo)操作數(shù)可取T,C和D,n?=?1~8,只有16位運(yùn)算,占7個(gè)程序步。

(1)當(dāng)[D·]是位元件時(shí),以源[S·]為首地址的n位連續(xù)的位元件所表示的十進(jìn)制碼值為Q,DECO指令把以[D·]為首地址目標(biāo)元件的第Q位(目標(biāo)元件位為第0位)置1,其他位置0。如圖5.42所示,X2~X0組成的3位(n?=?3)二進(jìn)制數(shù)為011,相當(dāng)于十進(jìn)制數(shù)Q為3(21?+?20?=?3),由目標(biāo)操作數(shù)M17~M10組成的8位二進(jìn)制數(shù)的第3位被置1,其余各位置0。如源數(shù)據(jù)Q為0,則第0位M0為1。若n?=?0時(shí),程序不執(zhí)行;n=0~8以外時(shí),出現(xiàn)運(yùn)算錯(cuò)誤;n?=?8時(shí),[D·]位數(shù)為28=?256,驅(qū)動(dòng)輸入為OFF時(shí),不執(zhí)行指令,上一次解碼輸出置1的位保持不變。圖5.42解碼(位)指令

(2)當(dāng)[D·]是字元件時(shí),以源[S·]所指定字元件的低n位所表示的十進(jìn)制碼值為Q,DECO指令把以[D·]所指定目標(biāo)字元件的第Q位置1,其他各位置0。如圖5.43所示,源操作數(shù)Q?=?22?+?21?=?6,因此D1的第6位為1。當(dāng)源數(shù)據(jù)為0時(shí),D1的第0位為1。若n?=?0時(shí),程序不執(zhí)行;n?=?0~4以外時(shí),出現(xiàn)運(yùn)算錯(cuò)誤;n?=?4時(shí),[D·]位數(shù)為24?=?16,驅(qū)動(dòng)輸入OFF時(shí),不執(zhí)行指令,上一次解碼輸出置1的位保持不變。圖5.43解碼(字)指令

2)編碼指令編碼指令ENCO(Encode)的功能指令編號為FNC42,只有16位運(yùn)算,占7個(gè)程序步。當(dāng)[S·]指定的源操作數(shù)是字元件T,C,D,V和Z時(shí),就使n?=?4,當(dāng)[S·]指定的源操作數(shù)是位元件X,Y,M和S時(shí),應(yīng)使n?=?1~8,目標(biāo)元件可取T,C,D,V和Z。

(1)當(dāng)[S·]是位元件時(shí),以源[S·]為首地址、長度為2n的位元件中,將最高位置1的位置數(shù)存放到目標(biāo)[D·]所指定的元件中,[D·]中數(shù)值的范圍由n確定。如圖5.44所示,源元件的長度為2n?=?23?=?8位,即M0~M7,其最高位置1的是M4,即第4位。因此將“4”這個(gè)位置數(shù)以二進(jìn)制數(shù)的形式存放到D10的低3位中。當(dāng)源操作數(shù)的第0位位元件為1,則[D·]中存放0。當(dāng)源操作數(shù)中無1,出現(xiàn)運(yùn)算錯(cuò)誤。若n?=?0時(shí),程序不執(zhí)行;n?=?1~8以外時(shí),出現(xiàn)運(yùn)算錯(cuò)誤;n?=?8時(shí),[S·]位數(shù)為28=256。當(dāng)執(zhí)行條件OFF時(shí),指令不執(zhí)行,編碼輸出保持不變。

(2)當(dāng)[S·]是字元件時(shí),在其可讀長度為2n位中,最高置1的位置數(shù)被存放到[D·]所指定的元件中,[D·]中數(shù)值的范圍由n確定。如圖5.45所示,源字元件的可讀長度為2n?=?23?=?8位,其最高置1位是第4位。將“4”這個(gè)位置數(shù)以二進(jìn)制形式存放到D1的低3位中。若n?=?0時(shí),程序不執(zhí)行;n?=?1~4以外時(shí),出現(xiàn)運(yùn)算錯(cuò)誤;n?=?4時(shí),[S·]位數(shù)為24=16。當(dāng)執(zhí)行條件OFF時(shí),指令不執(zhí)行,編碼輸出保持不變。圖5.44編碼(位)指令圖5.45編碼(字)指令

3.求置ON位總數(shù)與ON位判別指令

1)求置ON位總數(shù)指令求置ON位總數(shù)指令SUM的功能指令編號為FNC43。它的源操作數(shù)可取所有的數(shù)據(jù)類型,目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C,D,V和Z,16位運(yùn)算占5個(gè)程序步,32位運(yùn)算占9個(gè)程序步。圖5.46中的X0為ON時(shí),統(tǒng)計(jì)源操作數(shù)D0中為ON(位元件的值為“1”時(shí)稱為ON)的位的個(gè)數(shù),并將它送入目標(biāo)操作數(shù)D2中。若D0的各位均為“0”,則零標(biāo)志M8020置1。如使用32位指令,目標(biāo)操作數(shù)的高位字為0。圖5.46求置ON位總數(shù)與ON位判別指令

2)?ON位判別指令

ON位判別指令BON(BitONCheck)的功能指令編號為FNC44。它的源操作數(shù)可取所有的數(shù)據(jù)類型,目標(biāo)操作數(shù)可取Y,M和S。16位運(yùn)算占7個(gè)程序步,n?=?0~15,32位運(yùn)算占13個(gè)程序步,n?=?0~31。

BON指令用來檢測指定元件中的指定位是否為“1”。如圖5.46所示,當(dāng)X1為ON時(shí),若源操作數(shù)D10的第11位為ON(n?=?11),則目標(biāo)操作數(shù)M0變?yōu)镺N。即使X1變?yōu)镺FF,M0仍保持不變。

4.平均值指令平均值指令MEAN的功能指令編號為FNC45。它的源操作數(shù)可取KnX,KnY,KnM,KnS,T,C和D,目標(biāo)操作數(shù)可取KnY,KnM,KnS,T,C,D,V和Z,16位運(yùn)算占7個(gè)程序步,32位運(yùn)算占13個(gè)程序步,n?=?1~64。平均值指令MEAN是將[S·]開始的n個(gè)源操作數(shù)據(jù)的平均值(用n除代數(shù)和)存入目標(biāo)操作數(shù)[D·]中,舍去余數(shù)。平均值指令的使用說明如圖5.47所示。若元件超出指定的范圍,n的值會(huì)自動(dòng)縮小,只求允許范圍內(nèi)元件的平均值。若n的值超出范圍1~64,則出錯(cuò)。圖5.47平均值指令

5.報(bào)警器置位復(fù)位指令

1)報(bào)警器置位指令報(bào)警器置位指令A(yù)NS(AnnunciatorSet)的功能指令編號為FNC46。它的源操作數(shù)為T0~T199,目標(biāo)操作數(shù)為S900~S999,m?=?1~32767(以100ms為單位),只有16位運(yùn)算,占7個(gè)程序步。圖5.48中的X0為ON的時(shí)間超過1s(m?=?10),S900置1,若X0變?yōu)镺FF,定時(shí)器復(fù)位而S900保持為ON。

2)報(bào)警器復(fù)位報(bào)警器復(fù)位指令A(yù)NR(AnnunciatorReset)的功能指令編號為FNC47,無操作數(shù),只有16位運(yùn)算,占1個(gè)程序步。圖5.48中的X1變?yōu)镺N時(shí),S900~S999之間被置1的報(bào)警器復(fù)位,若超過1個(gè)報(bào)警器被置1,則元件號最低的那一個(gè)報(bào)警器被復(fù)位。若X1再次ON,下一地址的信號報(bào)警器被復(fù)位。圖5.48報(bào)警器置位與復(fù)位指令

6.二進(jìn)制平方根指令平方根指令SQR(SquareRoot)的功能指令編號為FNC48。它的源操作數(shù)[S·]應(yīng)大于零,可取K,H和D,目標(biāo)操作數(shù)為D。16位運(yùn)算占5個(gè)程序步,32位運(yùn)算占9個(gè)程序步。圖5.49中的X0變?yōu)镺N時(shí),將存放在D0中的數(shù)開平方,結(jié)果存放在D4內(nèi)。計(jì)算結(jié)果舍去小數(shù),只取整數(shù)。

7.二進(jìn)制整數(shù)→二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換指令二進(jìn)制整數(shù)→二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換指令FLT(Float)的功能指令編號為FNC49。它的源操作數(shù)和目標(biāo)操作數(shù)均為D。16位運(yùn)算占5個(gè)程序步,32位運(yùn)算占9個(gè)程序步。圖5.49中的X1變?yōu)镺N時(shí),該指令將存放在源操作數(shù)D10中的數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)數(shù),將它存放在目標(biāo)寄存器D13和D12中。圖5.49二進(jìn)制平方根與浮點(diǎn)數(shù)轉(zhuǎn)換指令

8.高低字節(jié)交換指令高低字節(jié)交換指令SWAP的功能指令編號為FNC147。它的源操作數(shù)可取KnY,KnM,KnS,T,C,D,V和Z。16位運(yùn)算占5個(gè)程序步,32位運(yùn)算占9個(gè)程序步。一個(gè)字節(jié)由8位二進(jìn)制數(shù)組成。16位運(yùn)算時(shí),該指令交換源操作數(shù)的高字節(jié)和低字節(jié)。圖5.50中的X2變?yōu)镺N時(shí),D10的高字節(jié)和低字節(jié)進(jìn)行交換。32位運(yùn)算時(shí),如指定的源操作數(shù)為D20,先交換D20的高字節(jié)和低字節(jié),再交換D21的高字節(jié)和低字節(jié)。圖5.50高低字節(jié)交換指令

9.時(shí)鐘數(shù)據(jù)讀/寫指令

1)時(shí)鐘數(shù)據(jù)讀出指令時(shí)鐘數(shù)據(jù)讀出指令TRD(TimeRead)的功能指令編號為FNC166,[D·]可取T,C和D,只有16位運(yùn)算占5個(gè)程序步。該指令用來讀出內(nèi)置的實(shí)時(shí)鐘的數(shù)據(jù),并存放在[D·]開始的7個(gè)字內(nèi),實(shí)時(shí)鐘的時(shí)間數(shù)據(jù)存放在特殊輔助寄存器D8013~D8019內(nèi),D8018~D8013中分別存放年、月、日、時(shí)、分和秒,星期存放在D8019中。圖5.51中的X1為ON時(shí),D8018~D8013中存放的6個(gè)時(shí)鐘數(shù)據(jù)分別讀入D10~D15,D8019中的星期值讀入D16。圖5.51時(shí)鐘數(shù)據(jù)讀寫指令

2)時(shí)鐘數(shù)據(jù)寫入指令時(shí)鐘數(shù)據(jù)寫入指令TWR(TimeWrite)的功能指令編號為FNC167,[S·]可取T,C和D,只有16位運(yùn)算,占5個(gè)程序步。該指令用來將[S·]開始的7點(diǎn)數(shù)據(jù)(時(shí)間設(shè)定值)寫入內(nèi)置的實(shí)時(shí)鐘。圖5.51中的D20~D25分別存放年、月、日、時(shí)、分和秒,D26存放星期,X2為ON時(shí),D20~D25的時(shí)鐘數(shù)據(jù)分別寫入D8018~D8013,D26中的數(shù)據(jù)寫入D8019。5.4特殊功能類指令5.4.1高速處理指令

溫馨提示

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

最新文檔

評論

0/150

提交評論