




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第六章FX2N功能指令
教學(xué)提示:FX2N系列PLC除了基本邏輯指令、步進(jìn)指令外,還有200多條功能指令(也稱為功能指令)。功能指令實際上是許多功能不同的子程序。與基本邏輯指令只能完成一個特定動作不同,功能指令能完成實際控制中的許多不同類型的操作
FX2N系列PLC的200多條功能指令按功能不同可分為程序流向控制指令、數(shù)據(jù)傳遞與比較指令、算術(shù)與邏輯運(yùn)算指令、數(shù)據(jù)移位與循環(huán)指令、數(shù)據(jù)處理指令、高速處理指令、方便指令指令、外部設(shè)備通信(I/O模塊、功能模塊等)指令、浮點運(yùn)算指令、定位運(yùn)算指令、時鐘運(yùn)算指令、觸點比較指令等十幾大類。對實際控制中的具體控制對象,選擇合適的功能指令可以使編程較之基本邏輯指令快捷方便
教學(xué)要求:本章讓學(xué)生了解FX2N功能指令的類別、功能定義和書寫方式;掌握應(yīng)用功能指令的使用條件、表示的方法與步驟及編程的規(guī)則;能針對一般的工程控制要求應(yīng)用功能指令編寫工程控制程序
第六章FX2N功能指令
6.1功能指令的表示與執(zhí)行方式6.1.1指令與操作數(shù)6.1.2指令的數(shù)據(jù)長度與執(zhí)行形式6.1.3變址操作6.2程序流向控制指令6.2.1條件跳轉(zhuǎn)指令6.2.2子程序調(diào)用和返回指令6.2.3中斷指令6.2.4主程序結(jié)束指令6.2.5監(jiān)視定時器指令6.2.6循環(huán)開始指令和循環(huán)結(jié)束指令6.3數(shù)據(jù)傳送和比較指令6.3.1比較指令6.3.2區(qū)間比較指令6.3.3傳送指令6.3.4移位傳送指令6.3.5取反傳送指令6.3.6塊傳送指令6.3.7多點傳送指令6.3.8數(shù)據(jù)變換指令6.3.9BCD變換指令6.3.10BIN變換指令6.4算術(shù)運(yùn)算和邏輯運(yùn)算指令6.4.1加法指令6.4.2減法指令6.4.3乘法指令6.4.4除法指令6.4.5加1指令、減1指令6.4.6邏輯與、或和異和指令6.4.7求補(bǔ)指令6.5循環(huán)與移位指令6.5.1左、右循環(huán)指令6.5.2帶進(jìn)位的左、右循環(huán)指令6.5.3位組件左移、位組件右移指令6.5.4字元件右移、字元件左移指令6.1功能指令的表示與執(zhí)行方式6.1.1指令與操作數(shù)1.指令功能框的第一部分是指令
2.操作數(shù)功能框的第一段之后都為操作數(shù)部分
操作數(shù)部分依次由“源操作數(shù)”(源)、“目標(biāo)操作數(shù)”(目)、和“數(shù)據(jù)個數(shù)”3部分組成
有些功能指令僅使用指令段(FNC編號),但多數(shù)情況下是將其與操作數(shù)結(jié)合在一起使用。其中:①[S·]:源操作數(shù),指令執(zhí)行后其內(nèi)容不改變。源的數(shù)量多時,以[S1]·、[S2·]等表示。以加上“·”符號表示使用變址方式,,默認(rèn)為無“·”,表示不能使用變址方式
②[D·]:目標(biāo)操作數(shù),指令執(zhí)行后將改變其內(nèi)容。在目標(biāo)數(shù)種多時,以[D1·]、[D2·]等表示。默認(rèn)為無“·”,表示不能使用變址方式③M、n:其他操作數(shù),用來表示闡述或?qū)υ春湍繕?biāo)操作數(shù)作出補(bǔ)充說明。表示常數(shù)時,K后跟的為十進(jìn)制數(shù),H后跟的為十六進(jìn)制數(shù)
④程序步:指令執(zhí)行所需的步數(shù)。功能指令的指令段的程序步數(shù)通常為1步,但是根據(jù)各操作數(shù)是16位指令還是32位指令,會變?yōu)?步或4步。當(dāng)功能指令處理32位操作數(shù)時,則在指令助記符號前加[D]表示,指令前無此符號時,表示處理16位數(shù)據(jù)
例:(a)
(b)圖6.1功能指令格式例(a)功能指令的梯形圖;(b)X000=ON,MAEN指令的操作結(jié)果6.1.2指令的數(shù)據(jù)長度與執(zhí)行形式1.字元件/雙字元件(1)字元件
一個字元件是由16位的存儲單元構(gòu)成,其最高位(第15位)為符號位,第0~14位為數(shù)值位
圖6.2字元件(2)雙字元件
低位元件D10存儲32位數(shù)據(jù)的低16位,高位元件D11存儲32位數(shù)據(jù)的高16位
32位元件對數(shù)據(jù)的存放原則是:“低對低,高對高”
雙字節(jié)元件中第31位為符號位,第0~30位為數(shù)值位
圖6.3雙字元件2.16位/32位指令16位MOV指令
當(dāng)X001接通時,將十進(jìn)制數(shù)10傳送到16位的數(shù)據(jù)寄存器D10中去當(dāng)X001斷開時,該指令被跳過不執(zhí)行,源和目的內(nèi)容都不變
圖6.416位MOV指令32位MOV指令
圖6.532位MOV指令當(dāng)X001接通時,將由D11和D10組成的32位源數(shù)據(jù)傳送到由D13和D12組成的目標(biāo)地址中去
當(dāng)X001斷開時,該指令被跳過不執(zhí)行,源和目的內(nèi)容都不變
3.位元件/位元件組件只處理ON/OFF信息的軟元件稱為位元件,如X,Y,M,S等均為位元件
而處理數(shù)值的軟元件稱為字元件,如T,C,D等
“位元件組件”的組合方法的助記符是:
Kn+最低位的位元件號
如KnX、KnY、KnM即是位元件組合,其中“K”表示后面跟的是十進(jìn)制數(shù),“n”表示4位一組的組數(shù),16位數(shù)據(jù)用K1~K4,32位數(shù)據(jù)用K1~K8
【例6-1】說明K2M0表示的位元件組件含義
K2M0中的“2”表示2組4位的位元件組成組件,最低位的位元件號分別是M0和M4。所以K2M0表示由M0~M3和M4~M7兩組位元件組成一個8位數(shù)據(jù),其中M7是最高位,M0是最低位
解:使用位元件組件時應(yīng)注意:(2)在16位(或32位)運(yùn)算中,對應(yīng)元件的位指定是K1~K3(或K1~K7),長度不足的高位通常被視為0,因此,通常將其作為正數(shù)處理
(1)若向K1M0~K3M0傳遞16位數(shù)據(jù),則數(shù)據(jù)長度不足的高位部分不被傳遞,32位數(shù)據(jù)也同樣
(3)被指定的位元件的編號,沒有特別的限制,一般可自由指定,但是建議在X,Y的場合最低位的編號盡可能的設(shè)定為0(X000,X010,X020…Y000,Y010,Y020…),在M,S場合理想的設(shè)定數(shù)為8的倍數(shù),為了避免混亂,建議設(shè)定為M0,M10,M20…等4.脈沖執(zhí)行型/連續(xù)執(zhí)行型指令(1)連續(xù)執(zhí)行指令型
圖6.6連續(xù)執(zhí)行指令舉例X000=ON時,指令在各掃描周期都執(zhí)行
(2)脈沖執(zhí)行型指令
指令總是只在X000由OFF→ON變化一次時執(zhí)行一次,其它時候不執(zhí)行
連續(xù)執(zhí)行方式在程序執(zhí)行時的每個掃描周期都會對目標(biāo)組件加1,而這種情況在許多實際的控制中是不允許的。為了解決這類問題,設(shè)置了脈沖執(zhí)行方式,并在這類助記符的后面加后綴符號“P”來表示此方式(如圖6.7)圖6.7脈沖執(zhí)行方式舉例6.1.3變址操作1.寄存器變址操作的一般規(guī)則變址的方法是將變址寄存器V和Z這兩個16位的寄存器放在各種寄存器的后面,充當(dāng)操作數(shù)地址的偏移量
操作數(shù)的實際地址就是寄存器的當(dāng)前值以及V和Z內(nèi)容相加后的和當(dāng)源或目標(biāo)寄存器用[S·]或[D·]表示時,就能進(jìn)行變址操作。對32位數(shù)據(jù)進(jìn)行操作時,要將V、Z組合成32位(V,Z)來使用,這時Z為低16位,V為高16位可以用變址寄存器進(jìn)行變址的軟元件有X、Y、M、S、P、T、C、D、K、H、KnX、KnY、KnM、KnS
【例6-2】求執(zhí)行加法操作后源和目操作數(shù)的實際地址圖6.8變址操作舉例解:第一行指令執(zhí)行25→V,第二行指令執(zhí)行30→Z,所以變址寄存器的值為:V=25,Z=30。第三行指令執(zhí)行(D5V)+(D15Z)→(D40Z)
[S1·]為D5V:D(5+25)=D30源操作數(shù)1的實際地址[S2·]為D15Z:D(15+30)=D45源操作數(shù)2的實際地址[D·]為D40Z:D(40+30)=D70目操作數(shù)的實際地址所以,第三行指令實際執(zhí)行(D30)+(D40)→(D70),即D30的內(nèi)容和D45的內(nèi)容相加,結(jié)果送入D70中去2.16位指令操作數(shù)的變址【例6-3】圖6.9是16位指令操作數(shù)修改的例子將K0或K1的內(nèi)容向變址寄存器V0傳送
當(dāng)X001=ON,V0=0時,(D0+0=D0),則K500的內(nèi)容向D0傳送若V0=10時,(D0+10=D10),則K500的內(nèi)容向D10傳送圖6.916位指令操作數(shù)的變址舉例解:3.32位指令操作數(shù)的變址
【例6-4】圖6.10是32位指令操作數(shù)修改的例子DMOV是32位的指令,因此在該指令中使用的變址寄存器也必須指定32位
在32位指令中指定了變址寄存器的Z寄存器(Z0~Z7)及與之組合的V寄存器(V0~V7)
圖6.1032位指令操作數(shù)的變址舉例解:即使Z0中寫入的數(shù)值不超過16位數(shù)值范圍(0~32767),也必須用32位的指令將V,Z兩方向改寫,如果只寫入Z側(cè),則在V側(cè)留有其它數(shù)值,會使數(shù)值產(chǎn)生很多的運(yùn)算錯誤4.常數(shù)K的修改【例6-5】圖6.11是常數(shù)的修改的例子當(dāng)X005=ON,若V5=0,(K6+0=K6),將K6的內(nèi)容向D10傳送
若V5=20時,(K6+20=K26),則將K26的內(nèi)容向D10傳送圖6.11常數(shù)K的修改舉例解:5.輸入輸出繼電器八進(jìn)制軟元件的變址【例6-6】輸入輸出繼電器8進(jìn)制軟元件的變址的例子用MOV指令輸出Y7~Y0,通過變址修改輸入,使其變換成X7~X0,X17~X10,X27~X20這種變換是將變址值0、8、16通過(X0+0=X0)、(X0+8=X10)、X0+16=X20)的八進(jìn)制的換算,然后相加軟元件的編號,使輸入端子發(fā)生變化圖6.128進(jìn)制軟元件(編號)的變址舉例解:6.2程序流向控制指令6.2.1條件跳轉(zhuǎn)指令1.指令格式指令編號及助記符:條件跳轉(zhuǎn)指令FNC00CJ或CJ(P)CJ指令的目標(biāo)元件是指針標(biāo)號,其范圍是P0~P63(允許變址修改)該指令程序步為3步,標(biāo)點步為1步作為執(zhí)行序列的一部分指令,有CJ,CJP指令,可以縮短運(yùn)算周期及使用雙線圈2.指令用法條件跳轉(zhuǎn)指令用于當(dāng)跳轉(zhuǎn)條件成立時跳過CJ或CJ(P)指令和指針標(biāo)號之間的程序,從指針標(biāo)號處連續(xù)執(zhí)行,若條件不成立則繼續(xù)順序執(zhí)行,以減少程序執(zhí)行掃描時間X000“ON”,則從1步跳轉(zhuǎn)到36步(標(biāo)記P8的后一步)X000“OFF”時,不進(jìn)行跳轉(zhuǎn),從1步向4步移動,不執(zhí)行跳轉(zhuǎn)指令【例6-7】說明圖6.13的示例中條件跳轉(zhuǎn)指令CJ的用法
程序定時器T192~T199及高速計數(shù)器C235~C255如果在驅(qū)動后跳轉(zhuǎn)則繼續(xù)工作,輸出接點也動作Y001為雙線圈,X000=OFF時,不跳轉(zhuǎn),采樣X001X000=ON時跳轉(zhuǎn)至P8,P8處不跳轉(zhuǎn),采樣X012解:圖6.13CJ跳轉(zhuǎn)指令修改舉例3.跳轉(zhuǎn)程序中軟組件的狀態(tài)在發(fā)生跳轉(zhuǎn)時,被跳過的那段程序中的驅(qū)動條件已經(jīng)沒有意義了,所以該程序段中的各種繼電器和狀態(tài)器、定時器等將保持跳轉(zhuǎn)發(fā)生前的狀態(tài)不變4.跳轉(zhuǎn)程序中標(biāo)號的多次引用標(biāo)號是跳轉(zhuǎn)程序的入口標(biāo)識地址,在程序中只能出現(xiàn)一次,同一標(biāo)號不能重復(fù)使用。但是,同一標(biāo)號可以多次被引用圖6.14標(biāo)號可以多次引用5.無條件跳轉(zhuǎn)指令的構(gòu)造圖6.15無條件跳轉(zhuǎn)指令指令的構(gòu)造PLC只有條件跳轉(zhuǎn)指令,沒有無條件跳轉(zhuǎn)指令。遇到需要無條件跳轉(zhuǎn)的情況,可以用條件跳轉(zhuǎn)條件來構(gòu)造無條件跳轉(zhuǎn)指令,最常使用的是使用M8000(只要PLC處于RUN狀態(tài),則M8000總是接通的)6.2.2子程序調(diào)用和返回指令1.指令格式指令編號及助記符:子程序調(diào)用功能指令FNC01CALL,CALL(P)
子程序返回功能指令FNC02SRET指令的目標(biāo)操作元件是指針號P0~P62(允許變址修改)
2.指令用法(1)子程序與標(biāo)號的位置CALL指令必須和FEND,SRET一起使用子程序標(biāo)號要寫在主程序結(jié)束指令FEND之后標(biāo)號P0和子程序返回指令SRET間的程序構(gòu)成了P0子程序的內(nèi)容當(dāng)主程序帶有多個子程序時,子程序要依次放在主程序結(jié)束指令FEND之后,并用不同的標(biāo)號相區(qū)別子程序標(biāo)號范圍為P0~P62,這些標(biāo)號與條件轉(zhuǎn)移中所用的標(biāo)號相同,而且在條件轉(zhuǎn)移中已經(jīng)使用了標(biāo)號,子程序也不能再用同一標(biāo)號只能使用一次,而不同的CALL指令可以多次調(diào)用同一標(biāo)號的子程序圖6.16CALL指令舉例例:(2)子程序嵌套圖6。17子程序嵌套舉例
6.2.3中斷指令1.指令格式指令編號及助記符:中斷返回指令FNC03IRET中斷允許指令FNC04EI中斷禁止指令FNC05DI2.指令用法FX2N系列PLC有兩類中斷,即外部中斷和內(nèi)部定時器中斷外部中斷信號從輸入端子送入,可用于機(jī)外突發(fā)隨機(jī)事件引起的中斷定時中斷是內(nèi)部中斷,是定時器定時時間到引起的中斷FX2N系列PLC設(shè)置有9個中斷源,9個中斷源可以同時向CPU發(fā)出中斷請求信號,多個中斷依次發(fā)生時,以先發(fā)生為優(yōu)先;完全同時發(fā)生時,中斷指針號較低的有優(yōu)先權(quán)。另外,外中斷的優(yōu)先級整體上高于內(nèi)中斷的優(yōu)先級FX2N系列PLC有三條中斷指令:①EI中斷允許指令對可以響應(yīng)中斷的程序段用中斷允許指令EI來開始②DI中斷禁止指令對不允許中斷的程序段用中斷指令DI來禁止③中斷返回指令I(lǐng)RET從中斷服務(wù)子程序中返回時必須用專門的中斷返回指令I(lǐng)RET,不能用子程序返回指令SRET在主程序的執(zhí)行過程中,可根據(jù)不同中斷服務(wù)子程序中PLC要完成工作的優(yōu)先級高低決定能否響應(yīng)中斷程序中允許中斷響應(yīng)的區(qū)間應(yīng)該由EI指令開始,DI指令結(jié)束在中斷子程序執(zhí)行區(qū)間之外時,即使有中斷請求,CPU也不會立即響應(yīng)。通常情況下,在執(zhí)行某個中斷服務(wù)程序時,應(yīng)禁止其他中斷例:圖6.18中斷指令舉例2.中斷指針(1)外中斷用I指針外中斷用I指針的格式如圖6.19(a)所示,有I0~I(xiàn)5共6點外中斷是外部信號引起的中斷,對應(yīng)的外部信號的輸入口為X000~X005(2)內(nèi)中斷用I指針內(nèi)中斷用I指針格式如圖6.19(b)所示,有I6~I(xiàn)83點內(nèi)中斷是指機(jī)內(nèi)定時時間到,中斷主程序去執(zhí)行中斷子程序。定時時間由指定編號為6~8的專用定時器控制設(shè)定時間值在10~99ms間選取,每隔設(shè)定時間就會中斷一次圖6.19中斷指針格式(a)外中斷指針格式(b)內(nèi)中斷指針格式6.2.4主程序結(jié)束指令1.指令格式指令編號及助記符:主程序結(jié)束指令FNC06FEND2.指令用法FEND指令是一步指令,無操作目標(biāo)元件
子程序應(yīng)寫在FEND指令和END指令之間,包括CALL,CALL(P)指令對應(yīng)的標(biāo)號、子程序和中斷子程序FEND指令的用法(見圖6.20)應(yīng)注意以下幾點:(1)CALL,CALL(P)指令的標(biāo)號P用于在FEND指令后編程,必須要有IRET指令。中斷指針I(yè)也在FEND指令后編程,必須要有SRET指令(2)使用多個FEND指令的情況下,應(yīng)在最后的FEND指令與END指令之間編寫子程序或中斷子程序
(3)當(dāng)程序中沒有子程序或中斷服務(wù)程序時,也可以沒有FEND指令。但是程序的最后必須用END指令結(jié)尾。所以,子程序及中斷服務(wù)程序必須寫在FEND指令與END指令之間
圖6.20FEND指令的用法6.2.5監(jiān)視定時器指令1.指令格式指令編號及助記符:監(jiān)視定時器指令FNC07WDT2.指令用法(1)WDT用來在程序中刷新監(jiān)視定時器(D8000)通過改寫存于特殊數(shù)據(jù)寄存器D8000中的內(nèi)容,可改變監(jiān)視定時器的檢出時間。程序如圖6.21所示圖6.21WDT指令舉例(2)WDT指令還可以用于將長掃描時間的程序分割當(dāng)PLC的運(yùn)行掃描周期指令執(zhí)行時間超過200ms時,CPU的出錯指示燈亮,同時停止工作。因此在合適的程序步中插入WDT指令,用以刷新監(jiān)視定時器,以使順序程序得以繼續(xù)執(zhí)行到END,如圖6.22圖6.22WDT用于分隔程序6.2.6循環(huán)開始指令和循環(huán)結(jié)束指令1.指令格式指令編號及助記符:循環(huán)開始FNC08FOR2.指令用法循環(huán)指令可以反復(fù)執(zhí)行某一段程序,只要將這一段程序放在FOR-NEXT之間,待執(zhí)行完指定的循環(huán)次數(shù)后,才執(zhí)行NEXT下一條指令。循環(huán)程序可以使程序變得簡煉FOR和NEXT指令必須成對使用,只有在FOR~NEXT指令之間的程序(利用源數(shù)據(jù)指定的次數(shù))執(zhí)行幾次后,才處理NEXT指令以后的一步循環(huán)結(jié)束FNC09NEXT操作數(shù)的軟組件:無循環(huán)次數(shù)在FOR后的數(shù)值指定。循環(huán)次數(shù)范圍為n=1~32767時有效。如循環(huán)次數(shù)<1時,被當(dāng)作1處理,F(xiàn)OR-NEXT循環(huán)一次若不想執(zhí)行FOR~NEXT間的程序時,利用CJ指令,使之跳轉(zhuǎn)環(huán)次數(shù)多時掃描周期會延長,可能出現(xiàn)監(jiān)視定時器錯誤NEXT指令在FOR指令之前,或無NEXT指令,或在FEND,END指令之后有NEXT指令,或FOR與NEXT的個數(shù)不一致時,會出錯【例6-8】分析圖6.23的程序的循環(huán)工作過程和次數(shù)
圖6.23FOR、NEXT循環(huán)指令舉例已知K1X000的內(nèi)容為7,數(shù)據(jù)寄存器D0Z的內(nèi)容為6圖6.23所示程序是三重循環(huán)的嵌套,按照循環(huán)程序的執(zhí)行次序由內(nèi)向外計算各循環(huán)次數(shù)解:(1)單獨一個循環(huán)[A]執(zhí)行的次數(shù)當(dāng)X010為OFF時,已知K1X000的內(nèi)容為7,所以[A]循環(huán)執(zhí)行了7次(2)循環(huán)B執(zhí)行次數(shù)(不考慮C循環(huán))[B]循環(huán)次數(shù)由D0Z指定,已知D0Z為6次。B循環(huán)包含了整個A循環(huán),所以整個A循環(huán)都要被啟動6次(3)[C]的程序循環(huán)次數(shù)由K4指定為4次在[C]的程序執(zhí)行一次的過程中,則[B]的程序執(zhí)行6次,所以A循環(huán)總計被執(zhí)行了4×6×7=168次。然后向NEXT指令(3)以后的程序轉(zhuǎn)移6.3數(shù)據(jù)傳送和比較指令1.指令格式指令編號及助記符:比較指令FNC10CMP[S1·][S2·][D·]其中:6.3.1比較指令[S1·][S2·]為兩個比較的源操作數(shù)
[D·]為比較結(jié)果的標(biāo)志組件,指令中給出的是標(biāo)志軟組件的首地址(標(biāo)號最小的那個)標(biāo)志位的軟組件有Y、M、S源操作數(shù)的軟組件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS
2.指令用法比較指令CMP是將源操作數(shù)[S1·]和源操作數(shù)[S2·]進(jìn)行比較,結(jié)果送到目標(biāo)操作數(shù)[D·]中,比較結(jié)果有三種情況:大于、等于和小于標(biāo)志位操作規(guī)則:
若K100>(C20),則M0被置1若K100=(C20),則M1被置1若K100<(C20),則M2被置1圖6.24比較指令CMP舉例CMP指令可以比較兩個16位二進(jìn)制數(shù),也可以比較兩個32位二進(jìn)制數(shù),在作32位操作時,使用前綴(D):(D)CMP[S1·][S2·][D·]CMP指令也可以有脈沖操作方式,使用后綴(P):(D)CMP(P)[S1·][S2·][D·],只有在驅(qū)動條件由OFF→ON時進(jìn)行一次比較
6.3.2區(qū)間比較指令1.指令格式指令編號及助記符:區(qū)間比較指令FNC11ZCP[S1·][S2·][S3·][D·]其中:[S1·]和[S2·]為區(qū)間起點和終點[S3·]為另一比較軟組件標(biāo)志位的軟組件有Y、M、S源操作數(shù)的軟組件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS
[D·]為標(biāo)志軟組件,指令中給出的是標(biāo)志軟組件的首地址2.指令用法ZCP指令是將源操作數(shù)[S3·]與[S1·]和[S2·]的內(nèi)容進(jìn)行比較,并比較結(jié)果送到目標(biāo)操作數(shù)[D·]中圖6.25區(qū)間比較指令I(lǐng)CP指令舉例[S1·]>[S3·],即K100>C30的當(dāng)前值時,M3接通
[S1·]≤[S3·]≤[S2·],即K100≤C30的當(dāng)前值≤K120時,M4接通
[S3·]>[S2·],即C30當(dāng)前值>K120時,M5接通
當(dāng)X000為OFF時,不執(zhí)行ZCP指令,M3~M5仍保持X000=OFF之前的狀態(tài)
使用比較指令CMP/ZCP時應(yīng)注意:(1)使用ZCP時,[S2·]的數(shù)值不能小于[S1·](2)所有的源數(shù)據(jù)都被看成二進(jìn)制值處理6.3.3傳送指令1.指令格式指令編號及助記符:傳送指令FNC12MOV[S·][D·]其中:[S·]為源數(shù)據(jù)[D·]為目標(biāo)軟組件目標(biāo)操作數(shù)為T、C、V、Z、D、KnY、KnM、KnS
源操作數(shù)的軟組件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS
2.指令用法傳送指令是將源操作數(shù)傳送到指定的目標(biāo)操作數(shù),即[S·]→[D·]
圖6.26傳送指令MOV舉例當(dāng)常開觸點X000閉合為ON時,每掃描到MOV指令時,就把存入[S·]源數(shù)據(jù)中操作數(shù)100(K100)轉(zhuǎn)換成二進(jìn)制數(shù),再傳送到目標(biāo)操作數(shù)D10中去當(dāng)X000為OFF時,則指令不執(zhí)行,數(shù)據(jù)保持不變6.3.4移位傳送指令1.指令格式指令編號及助記符:傳送指令FNC13SMOV[S·]m1m2[D·]n其中:[S·]為源數(shù)據(jù),m1為被傳送的起始位,m2為傳送位數(shù)
[D·]為目標(biāo)軟組件,n為傳送的目標(biāo)起始位
目標(biāo)操作數(shù)可為T、C、V、Z、D、KnY、KnM、KnS
源操作數(shù)的軟組件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS
n,m1,m2的軟組件有K、H2.指令用法移位傳送指令的功能是將[S·]第m1位開始的m2個數(shù)移位到[D·]的第n位開始的m2個位置去,m1、m2和n取值均為1~4。分開的BCD碼重新分配組合,一般用于多位BCD撥盤開關(guān)的數(shù)據(jù)輸入
圖6.27移位傳送指令SMOV舉例103102101100103102101100圖6.28移位說明自動轉(zhuǎn)換D1’(四位BCD碼)自動轉(zhuǎn)換D2’(四位BCD碼)D1’D2’X000滿足條件,執(zhí)行SMOV指令
源操作數(shù)[S·]內(nèi)的16位二進(jìn)制數(shù)自動轉(zhuǎn)換成4位BCD碼,然后將源操作數(shù)(4位BCD碼)的右起第m1位開始,向右數(shù)共m2位的數(shù),傳送到目標(biāo)操作數(shù)(4位BCD碼)的右起第n位開始,向右數(shù)共m2位上去,最后自動將目的操作數(shù)[D]中的四位BCD碼轉(zhuǎn)換成16位二進(jìn)制數(shù)圖中,m1為4,m2為2,n為3,當(dāng)X000閉合時,每掃描一次該梯形圖,就執(zhí)行SMOV移位傳送操作,先將D1中的16位二進(jìn)制數(shù)自動轉(zhuǎn)換成4位BCD碼,并從4位BCD碼右起第4位開始(m1為4),向右數(shù)共2位(m2為2)(即103,102)上的數(shù)傳送到D2內(nèi)4位BCD碼的右起第3位(n=3)開始,向右數(shù)共2位(即102,101)的位置上去,最后自動將D2中的BCD碼轉(zhuǎn)換成二進(jìn)數(shù)上述傳送過程中,D2中的另兩位即(即103,100)上的數(shù)保持不變6.3.5取反傳送指令1.指令格式指令編號及助記符:取反傳送指令FNC14CML[S·][D·]其中:[S·]為源數(shù)據(jù)[D·]為目標(biāo)軟組件目標(biāo)操作數(shù)的軟組件為T、C、V、Z、D、KnY、KnM、KnS
源操作數(shù)的軟組件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS
2.指令用法CML指令的功能是將[S·]源操作數(shù)按二進(jìn)制的位逐位取反并傳遞到指定目標(biāo)軟組件中,指令說明如圖6.29
圖6.29取反傳送指令CML舉例6.3.6塊傳遞指令1.指令格式指令編號及助記符:塊傳送指令FNC15BMOV[S·][D·]n其中:[S·]為源軟組件
[D·]為目標(biāo)軟組件源操作數(shù)可取KnX、KnY、KnM、KnS、T、C、D、K、H目標(biāo)操作數(shù)可取.KnY、KnM、KnS、T、C和D數(shù)據(jù)塊個數(shù)常數(shù)K、Hn為數(shù)據(jù)塊個數(shù)2.指令用法塊傳送指令的功能是將源操作數(shù)組件中n個數(shù)據(jù)組成的數(shù)據(jù)塊傳送到指定的目標(biāo)軟組件中去。如果組件號超出允許組件號的范圍,數(shù)據(jù)僅傳送到允許范圍內(nèi)圖6.30塊傳送指令BMOV舉例(a)(b)(a)塊傳送指令;(b)塊傳送示意根據(jù)K3指定數(shù)據(jù)塊個數(shù)為3,則將D5~D7中的內(nèi)容傳送到D10~D12中去,如圖6.30(b)所示如果X000斷開,則不執(zhí)行塊傳送指令,源、目數(shù)據(jù)均不變?nèi)绻鸛000接通,則將執(zhí)行塊傳送指令傳送后D5~D7中的內(nèi)容不變,而D10~D12內(nèi)容相應(yīng)被D5~D7內(nèi)容取代當(dāng)源、目軟組件的類型相同時,傳送順序自動決定如果源、目軟組件的類型不同,只要位數(shù)相同就可以正確傳送如果源、目軟組件號超出允許范圍,則只對符合規(guī)定的數(shù)據(jù)進(jìn)行傳送6.3.7多點傳送指令1.指令格式指令編號及助記符:傳送指令FNC16FMOV[S·][D·]n其中:[S·]為源軟組件
[D·]為目軟組件
指令中給出的是目軟組件的首地址。常用于對某一段數(shù)據(jù)寄存器清零或置相同的初始值源操作數(shù)可取除V、Z以外的所有的數(shù)據(jù)類型,目標(biāo)操作數(shù)可取KnY、KnM、KnS、T、C、和D,n小等于512n為目軟組件個數(shù)
2.指令用法FMOV指令是將源操作數(shù)中的數(shù)據(jù)傳送到指定目標(biāo)開始的n個元件中去,這n個元件中的數(shù)據(jù)完全相同圖6.31多點傳送指令FMOV指令舉例6.3.8數(shù)據(jù)交換指令1.指令格式指令編號及助記符:數(shù)據(jù)交換指令FNC17XCH[D1·][D2·]其中:[D1·]、[D2·]為兩個目標(biāo)軟組件
目標(biāo)軟組件操作數(shù)的元件可取KnY、KnM、KnS、T、C、D、V和Z數(shù)據(jù)交換指令XCH是將數(shù)據(jù)在兩個指定的目標(biāo)軟組件之間進(jìn)行交換,指令說明如圖6.32,當(dāng)X000為ON時,將D1和D17中的數(shù)據(jù)相互交換2.指令用法圖6.32數(shù)據(jù)交換指令XCH舉例6.3.9BCD變換指令1.指令格式指令編號及助記符:BCD碼變換指令FNC18BCD[S·][D·]其中:[S·]為被轉(zhuǎn)換的軟組件
[D·]為目軟組件
源操作數(shù)可取KnX、KnY、KnM、KnS、T、C、D、V和Z目標(biāo)操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z2.指令用法BCD交換指令是將源操作數(shù)中的二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼并傳送到目標(biāo)操作數(shù)中去。指令說明如圖6.33。BCD碼變換指令將PLC內(nèi)的二進(jìn)制數(shù)變換成BCD碼后,再譯成7段碼,就能輸出驅(qū)動LED顯示器圖6.33BCD指令舉例6.3.10BIN變換指令1.指令格式指令編號及助記符:BIN變換指令FNC19BIN[S·][D·]其中:[S·]為被轉(zhuǎn)換的軟組件
[D·]為目軟組件
源操作數(shù)可取KnX、KnY、KnM、KnS、T、C、D、V和Z目標(biāo)操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z2.指令用法BIN指令將源元件中的BCD碼轉(zhuǎn)換成二進(jìn)制數(shù)送到指定的目標(biāo)元件中去。指令使用說明如圖6.34。此指令作用正好與BCD變換指令相反,用于將軟組件中的BCD碼轉(zhuǎn)換成二進(jìn)制數(shù)圖6.34BIN指令舉例四則運(yùn)算(+、-、×、÷)與增量指令、減量指令等可編程控制器內(nèi)的運(yùn)算都用BIN碼進(jìn)行。因此,可編程控制器在用數(shù)字開關(guān)獲取BCD碼的信息時要用FNC19(BIN→BCD)轉(zhuǎn)換指令6.4.1加法指令1.指令格式指令編號及助記符:二進(jìn)制加法指令FNC20ADD[S1·][S2·][D·]其中:[S1·]、[S2·]為兩個作為加數(shù)的源操作數(shù)
[D·]為存放相加結(jié)果的目標(biāo)組件
源操作數(shù)可取所有數(shù)據(jù)類型目標(biāo)操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z.6.4算術(shù)運(yùn)算和邏輯運(yùn)算指令2.指令用法ADD指令將兩個源操作數(shù)[S1]、[S2]相加,結(jié)果放到目標(biāo)元件中[D]中。指令說明如圖6.35圖6.35ADD指令舉例之一兩個源數(shù)據(jù)進(jìn)行二進(jìn)制加法后傳遞到目標(biāo)處,各數(shù)據(jù)的最高位是正(0)、負(fù)(1)的符號位,這些數(shù)據(jù)以代數(shù)形式進(jìn)行加法運(yùn)算,如5+(-8)=-3ADD指令有4個標(biāo)志位,M8020為0標(biāo)志,M8021為借位標(biāo)志位。M8022為進(jìn)位標(biāo)志位,M8023為浮點標(biāo)志位如果運(yùn)算結(jié)果為0,則零標(biāo)志位M8020置1,運(yùn)算結(jié)果超過32,767(16位運(yùn)算)或2147483647(32位運(yùn)算)則進(jìn)位標(biāo)志位M8022位置1如果運(yùn)算結(jié)果小于-32767(16位運(yùn)算)或-2147483467(32位運(yùn)算)則借位標(biāo)志位M8021置1在32位運(yùn)算中,用到字元件時,被指定的字元件是低16位元件,而下一個字元件中即為高16位元件,源和目標(biāo)可以用相同的元件中,若源和目標(biāo)之中相同,而且采用連續(xù)執(zhí)行的ADD,(D)ADD指令時,加法的結(jié)果在每個掃描周期都會改變。如下圖6.36所示圖6.36ADD指令之二6.4.2減法指令SUB1.指令格式指令編號及助記符:減法指令FNC21SUB
[S1·][S2·][D·]其中:[S1·][S2·]分別為作為被減數(shù)和減數(shù)的源軟件組件
[D·]為存放相減差的目標(biāo)組件
源操作數(shù)可取所有數(shù)據(jù)類型目標(biāo)操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z2.指令用法SUB指令的功能是將指定的兩個源軟組件中的有符號數(shù),進(jìn)行二進(jìn)制代數(shù)減法運(yùn)算,然后將相減的結(jié)果差送入指定的目標(biāo)軟組件中圖6.37SUB指令舉例減法指令標(biāo)志區(qū)功能,32位運(yùn)算元中指定方法與加法指令相同6.4.3乘法指令MUL1.指令格式指令編號及助記符:乘法指令FNC22MUL
[S1·][S2·][D·]其中:[S1·][S2·]分別為作為被乘數(shù)和乘數(shù)的源軟件組件[D·]為存放相乘積的目標(biāo)組件的首地址
源操作數(shù)可取所有數(shù)據(jù)類型目標(biāo)操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z2.指令用法MUL指令的功能是將指定的[S1·]、[S2·]兩個源軟組件中的數(shù)進(jìn)行二進(jìn)制代數(shù)乘法運(yùn)算,然后將相乘結(jié)果積送入指定的目標(biāo)軟組件中。16位運(yùn)算如圖6.38,32位運(yùn)算如圖6.39圖6.38MUL指令舉例之一圖6.39MUL指令舉例之二在32位運(yùn)算中,若目標(biāo)元件使用位軟元件,只能得到低32位的結(jié)果,不能得到高32位的結(jié)果。這時應(yīng)先向字元件傳送一次后再進(jìn)行計算,利用字元件作目標(biāo)時,不可能同時監(jiān)視64位數(shù)據(jù)內(nèi)容,只能通過監(jiān)控運(yùn)算結(jié)果的高32位和低32位并利用下式計算4位數(shù)據(jù)內(nèi)容。這種情況下,建議最好采用浮點運(yùn)算64位結(jié)果=(高32位數(shù)據(jù))×232+低32位數(shù)據(jù)6.4.4除法指令1.指令格式指令編號及助記符:除法指令FNC23DIV
[S1·][S2·][D·]其中:[S1·][S2·]分別為作為被除數(shù)和除數(shù)的源軟組件
[D·]為商和余數(shù)的目標(biāo)組件的首地址
源操作數(shù)可取所有數(shù)據(jù)類型目標(biāo)操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z2.指令用法DIV指令的功能是將指定的兩個源軟組件中的數(shù),進(jìn)行二進(jìn)制有符數(shù)除法運(yùn)算,然后將相除的商和余數(shù)送入指定的目標(biāo)軟組件中。除法指令16位運(yùn)算如圖6.40,32位運(yùn)算如圖6.41圖6.40DIV指令舉例之一圖6.41DIV指令舉例之二6.4.5加1指令、減1指令1.指令格式指令編號及助記符:加1指令FNC24INC[D·]其中:[D·]是要加1(或要減1)的目標(biāo)軟組件
目操作數(shù)的軟組件為KnY、KnM、KnS、T、C、D、V和Z.減1指令FNC25DEC[D·]2.指令用法INC指令的功能是將指定的目軟組件的內(nèi)容增加1,DEC指令的功能是將指定的目軟組件的內(nèi)容減1。指令說明如圖6.42。圖6.42INC和DEC指令舉例16位運(yùn)算時,如果+32767加1變成﹣32768,標(biāo)志位不置位;32位運(yùn)算時,如果+2147483647加1變成﹣2147483648,標(biāo)志位不置位
在連續(xù)執(zhí)行指令中,每個掃描周期都將執(zhí)行運(yùn)算,必須加1注意。所以一般采用輸入信號的上升沿觸發(fā)運(yùn)算一次16位運(yùn)算時,如果﹣32768再減1,值變?yōu)?32767,標(biāo)志位不置位;32位運(yùn)算時,如果﹣2147483648再減1,值變?yōu)?2147483647,標(biāo)志位不置位
6.4.6邏輯與、或和異和指令1.指令格式指令編號及助記符:其中:[S1·][S2·]為兩個相“與”的源軟組件
(1)邏輯“與”指令FNC26WAND[S1·][S2·][D·][D·]為放相“與”結(jié)果的目標(biāo)組件
其中:[S1·][S2·]為兩個相“或”的源軟組件
(2)邏輯“或”指令FNC27WOR[S1·][S2·][D·][D·]為放相“或”結(jié)果的目標(biāo)組件
其中:[S1·]、[S2·]為兩個相“異或”的源軟組件
(3)邏輯“異或”指令FNC28WXOR[S1·][S2·][D·][D·]為放相“異或”結(jié)果的目標(biāo)組件
2.指令用法(1)指令功能是將指定的兩個源軟組件[S1]和[S2]中的數(shù),進(jìn)行二進(jìn)制按位“與”,然后將相“與”結(jié)果送入指定的目標(biāo)軟組件中。WAND指令格式如圖6.43所示,存放在源元件即(D10)和(D12)中的兩個二進(jìn)制數(shù)據(jù),以位為單位作邏輯“與”運(yùn)算,結(jié)果存放到目標(biāo)元件[D],即(D14)中圖6.43WAND指令舉例(2)WOR指令功能是將指定的兩個源軟組件[S1]和[S2]中的數(shù),進(jìn)行二進(jìn)制按位“或”,然后將相“或”結(jié)果送入指定的目標(biāo)軟組件中。指令格式如圖6.44圖6.44WOR指令舉例(3)WXOR指令功能是將指定的兩個源軟組件[S1]和[S2]中的數(shù),進(jìn)行二進(jìn)制按位“異或”,然后將相“異或”結(jié)果送入指定的目標(biāo)軟組件中。指令格式如圖6.45圖6.45WXOR指令舉例6.4.7求補(bǔ)指令1.指令格式指令編號及助記符:求補(bǔ)指令FNC29NEG[D·]其中:[D·]為存放求補(bǔ)結(jié)果的目標(biāo)組件
目標(biāo)操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z2.指令用法NEG指令功能是將指定的目標(biāo)軟組件[D·]的內(nèi)容中的各位先取反(0→1,1→0),然后再加1,將其結(jié)果送入原先的目標(biāo)軟組件中圖6.46求補(bǔ)指令NEG舉例如果X000斷開,則不執(zhí)行這條NEG指令,源、目中的數(shù)據(jù)均保持不變?nèi)绻鸛000接通,則執(zhí)行求補(bǔ)運(yùn)算,即將D10中的二進(jìn)制數(shù),進(jìn)行“連同符號位求反加1”,再將求補(bǔ)的結(jié)果將送入D10中求補(bǔ)的示意如圖6.47所示。假設(shè)D10中的數(shù)為十六進(jìn)制的H000C,執(zhí)行這條求補(bǔ)指令時,就要對它進(jìn)行“連同符號位求反加1”,求補(bǔ)結(jié)果為HFFF4再存入D10中圖6.47求補(bǔ)指令示意圖求補(bǔ)同求補(bǔ)碼是不同的求補(bǔ)碼的規(guī)則是:“符號位不變,數(shù)值位求反加1”,對H000C求補(bǔ)碼結(jié)果將是H7FF4,兩者的結(jié)果不一樣
求補(bǔ)指令是絕對值不變的變號運(yùn)算,求補(bǔ)前的H000C的真值是十進(jìn)制+12,而求補(bǔ)后HFFF4的真值是十進(jìn)制-12
求補(bǔ)指令可以有32位操作方式,使用前綴(D)求補(bǔ)指令也可以有脈沖操作方式。使用后綴(P),只有在驅(qū)動條件由OFF→ON時進(jìn)行一次求補(bǔ)運(yùn)算求補(bǔ)指令的32位脈沖操作格式為(D)OR(P)[D·]。同樣,[D·]為目軟組件的首地址求補(bǔ)指令一般使用其脈沖執(zhí)行方式,否則每個掃描周期都將執(zhí)行一次求補(bǔ)操作6.5.1左、右循環(huán)指令1.指令格式指令編號及助記符:其中:[D·]為要移位目軟組件
(1)循環(huán)右移指令FNC30ROR[D·]nn為每次移動的位數(shù)
其中:[D·]為要移位目軟組件
(2)循環(huán)左移指令FNC31
ROL[D·]n
n為每次移動的位數(shù)
6.5循環(huán)與移位指令目標(biāo)操作數(shù)可取KnY、KnM、KnS、T、C、D、V和Z。移動位數(shù)n為K和H指定的常數(shù)2.指令用法(1)循環(huán)右移指令ROR的功能是將指定的目軟組件中的二進(jìn)制數(shù)按照指令中n規(guī)定的移動的位數(shù)由高位向低位移動,最后移出的那一位將進(jìn)入進(jìn)位標(biāo)志位M8022。循環(huán)右移指令梯形圖格式如圖6.48所示
圖6.48ROR指令舉例執(zhí)行一次ROR指令,“n”位的狀態(tài)向量向右移一次,最右端的“n”位狀態(tài)循環(huán)移位到最左端“n”處,特殊輔助繼電器M8022表示最右端的“n”位中向右移出的最后一位的狀態(tài)假設(shè)D10中的數(shù)據(jù)為HFF00,執(zhí)行這條循環(huán)右移指令的示意圖如圖6.49所示。由于指令中K4指示每次循環(huán)右移4位,所以最低4位被移出,并循環(huán)回補(bǔ)進(jìn)入高4位中。所以循環(huán)右移4位D10中的內(nèi)容將變?yōu)镠0FF0了。最后移出的是第3位的“0”,它除了回補(bǔ)進(jìn)入最高位外,同時進(jìn)入進(jìn)位標(biāo)志M8022中圖6.49循環(huán)右移指令示意圖(2)ROL指令功能是將指定的目軟組件中的二進(jìn)制數(shù)按照指令規(guī)定的每次移動的位數(shù)由低位向高位移動,最后移出的那一位將進(jìn)入進(jìn)位標(biāo)志位M8022。循環(huán)左移指令梯形圖格式如圖6.50所示。ROL指令的執(zhí)行類似于ROR,只是移位方向相反
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大專物流答辯題目及答案
- 大數(shù)據(jù)金融題目及答案
- 2025年低碳城市建設(shè)中的綠色交通系統(tǒng)規(guī)劃與實施策略實踐
- 黑龍江省b證考試試題及答案
- 【武漢】2025年湖北武漢工程大學(xué)引進(jìn)人才33人筆試歷年典型考題及考點剖析附帶答案詳解
- 2025浙江溫州市洞頭區(qū)機(jī)關(guān)事業(yè)單位(國企)第二期招聘編外用工19人筆試參考題庫附帶答案詳解
- 2025年陜西省省屬事業(yè)單位招聘工作人員筆試和安排筆試歷年典型考題及考點剖析附帶答案詳解
- 安全專業(yè)考試題庫及答案
- 裝載機(jī)司機(jī)考試試題及答案題庫
- 山東東營歷年中考作文題與審題指導(dǎo)(2015-2020)
- 機(jī)械工程技術(shù)訓(xùn)練(北京航空航天大學(xué))知到智慧樹章節(jié)答案
- 2023年北京市先農(nóng)壇體育運(yùn)動技術(shù)學(xué)校招聘筆試真題
- 國家漢語主題詞表
- (新版)特種設(shè)備安全管理取證考試題庫(濃縮500題)
- 國家開放大學(xué)專科《機(jī)械制圖》形考任務(wù)1-4試題及答案
- 四年級下冊數(shù)學(xué)方程題100道及答案
- 小學(xué)數(shù)學(xué)小專題講座《數(shù)學(xué)教學(xué)生活化-》
- 軍隊文職人員招聘(軍需保管員)歷年考試真題試題庫(含答案)
- 2024北京海淀區(qū)初三一模英語試卷和答案
- 中建三局三公司安裝分公司勞務(wù)企業(yè)定額
- 《選品與采購》中職全套教學(xué)課件
評論
0/150
提交評論