官术网_书友最值得收藏!

第2章 PLC的指令系統(tǒng)

2.1 西門子的指令系統(tǒng)

2.1.1 數(shù)據(jù)類型及尋址方式

(1)數(shù)據(jù)類型

在PLC程序中,為了進(jìn)行數(shù)學(xué)運(yùn)算、設(shè)定定時(shí)器時(shí)間、設(shè)定計(jì)數(shù)器計(jì)數(shù)值等,需要使用各種數(shù)據(jù)。

程序中的各種數(shù)據(jù)(如常數(shù)、十六進(jìn)制數(shù)、浮點(diǎn)數(shù)、時(shí)間、數(shù)組等)都必須是PLC所允許的類型與可識(shí)別的格式,即:PLC對(duì)數(shù)據(jù)有“類型”與“格式”兩方面的要求。

西門子S7系列PLC根據(jù)數(shù)據(jù)的字長(zhǎng),允許使用的類型有基本數(shù)據(jù)、復(fù)合數(shù)據(jù)、參數(shù)三大類。

①基本數(shù)據(jù) 基本數(shù)據(jù)是指字長(zhǎng)在2個(gè)字(32位)以下的數(shù)據(jù),包括二進(jìn)制位(bit)、字節(jié)(Byte)、字(Word)、雙字(Double Word),ASCII字符、整數(shù)(Integer)、雙字長(zhǎng)整數(shù)(Double Integer)等,這些數(shù)據(jù)符合IEC 1131-3的規(guī)定。

基本數(shù)據(jù)在PLC存儲(chǔ)器中有固定的長(zhǎng)度。如:二進(jìn)制位為1位,字節(jié)為8位,字為16位,雙字為32位等。

當(dāng)PLC使用符號(hào)地址時(shí),在符號(hào)表或地址聲明表的“類型(Type)”欄必須填寫數(shù)據(jù)的“類型代號(hào)”,以明確所使用數(shù)據(jù)的格式與所占的字長(zhǎng)。

在S7系列PLC中,基本數(shù)據(jù)的數(shù)據(jù)類型代號(hào)與輸入范圍如表2-1所示。

表2-1 S7基本數(shù)據(jù)的類型

表中所說(shuō)的ASCII(American Standard Code for Information Interchange,美國(guó)標(biāo)準(zhǔn)信息交換編碼)是利用7位二進(jìn)制(00~7F)來(lái)代表1個(gè)字符的最普遍的編碼方式,常用于串行通信。7位二進(jìn)制(00~7F)與字符的對(duì)應(yīng)關(guān)系見表2-2。S7可以使用的代碼范圍為31~7E,“DEL”(代碼7F)不可以使用。

表2-2 ASCII代碼表

注:表中水平方向?yàn)楦呶唬怪狈较驗(yàn)榈臀唬绶?hào)“one”對(duì)應(yīng)的ASCⅡ代碼為“6F 6E 65”等。

②復(fù)合數(shù)據(jù) 復(fù)合數(shù)據(jù)是指字長(zhǎng)大于2個(gè)字(32位)的數(shù)據(jù),數(shù)據(jù)可以通過基本數(shù)據(jù)組合而成。S7可以使用的復(fù)合數(shù)據(jù)包括以下幾類。

數(shù)組:所謂數(shù)組(類型代號(hào)ARRAY),是將同類型的基本數(shù)據(jù)進(jìn)行組合而形成的單元數(shù)據(jù),如表格數(shù)據(jù)等。

結(jié)構(gòu):所謂結(jié)構(gòu)(STRUCT),是將不同類型的基本數(shù)據(jù)進(jìn)行組合而形成的單元數(shù)據(jù)。

字符串:所謂字符串(STRING),是多個(gè)相同或不同字符(如ASCII碼)的組合。字符串的默認(rèn)長(zhǎng)度為256字節(jié),其中2字節(jié)用于存放字頭,實(shí)際字符最大可以到254個(gè)。

日期與時(shí)間:日期與時(shí)間(DATE-AND-TIME)用于存儲(chǔ)實(shí)時(shí)時(shí)間,格式為年-月-日-時(shí):分:秒,占用4個(gè)字長(zhǎng)(8個(gè)字節(jié)),使用BCD碼。其中,年、月、日、時(shí)、分、秒各為2位(占1個(gè)字節(jié)),毫秒為3位(占1.5個(gè)字節(jié))。

例如,2006年11月15日8點(diǎn)30分58秒的存儲(chǔ)格式為:06-11-15-08:30:58.000。

用戶定義數(shù)據(jù):編程人員可以將S7的以上各種數(shù)據(jù)類型進(jìn)行重新組合,生成新的數(shù)據(jù)類型,這一數(shù)據(jù)類型稱為“用戶定義數(shù)據(jù)(User Defined Data Types)”,數(shù)據(jù)類型代號(hào)為UDT。

③參數(shù) 在SIEMENS公司的S7系列PLC中,在邏輯塊之間進(jìn)行相互傳遞的數(shù)據(jù)稱為參數(shù)。S7的參數(shù)分為“形式參數(shù)”與“實(shí)際參數(shù)”兩類。

在結(jié)構(gòu)化編程時(shí),為了使得某功能塊能夠成為可以在同一PLC循環(huán)內(nèi)多次調(diào)用的通用功能塊,功能塊中所使用的信號(hào)與數(shù)據(jù)不可以是“絕對(duì)地址”或“絕對(duì)數(shù)值”,它們只能以“符號(hào)地址”或“符號(hào)數(shù)據(jù)”的形式出現(xiàn)。調(diào)用通用功能塊時(shí),可以通過對(duì)這些“符號(hào)地址”或“符號(hào)數(shù)據(jù)”的不同賦值,在每次調(diào)用同一功能塊時(shí),得到不同的結(jié)果。

被調(diào)用的功能塊中所使用的“符號(hào)”稱為形式參數(shù)(Format Parameter),而在調(diào)用塊中對(duì)“符號(hào)”所賦予的實(shí)際地址或?qū)嶋H數(shù)值稱為實(shí)際參數(shù)(Actual Parameter)。

如圖2-1所示,圖中的start、stop、run為形式參數(shù),而I0.1、I0.2、Q0.1則為實(shí)際參數(shù)。

圖2-1 形式參數(shù)與實(shí)際參數(shù)

在每次調(diào)用功能塊前,必須用實(shí)際參數(shù)對(duì)塊中所使用的形式參數(shù)賦值。實(shí)際參數(shù)與形式參數(shù)的數(shù)據(jù)類型必須一致,例如,當(dāng)功能塊中的形式參數(shù)定義的數(shù)據(jù)類型為“字(Word)”時(shí),則賦值的實(shí)際參數(shù)必須為字格式,如MW0、IW0、QW0等,而不能用M0.1、I0.1、Q0.1或MB0、IB0、QB0等進(jìn)行賦值。

S7中可以使用的參數(shù)類型有表2-3所示的幾種。

表2-3 S7中可以使用的參數(shù)類型

(2)尋址方式

所謂尋址方式就是產(chǎn)生有效地址的方法,尋址方式是指令系統(tǒng)的一部分,它與PLC的硬件結(jié)構(gòu)緊密相關(guān)。

西門子S7-200PLC的尋址方式有立即尋址、直接尋址和間接尋址三種。

①立即尋址 指令直接給出操作數(shù),操作數(shù)緊跟著操作碼,在取出指令的同時(shí)也就取出了操作數(shù),這種方式稱為立即尋址。立即尋址方式可用來(lái)提供常數(shù)、設(shè)置初始值等。指令中常常使用常數(shù),常數(shù)值可分為字節(jié)、字、雙字型等數(shù)據(jù)。CPU以二進(jìn)制形式存儲(chǔ)所有常數(shù),指令中可用十進(jìn)制、十六進(jìn)制、ASCII碼或浮點(diǎn)數(shù)形式來(lái)表示。

②直接尋址 指令直接給出操作數(shù)的地址的尋址方式稱為直接尋址。由于直接在指令中使用存儲(chǔ)器或寄存器的元件名稱和地址編號(hào),根據(jù)這個(gè)地址就可以立即找到該數(shù)據(jù);必須注意的是操作數(shù)的地址應(yīng)按規(guī)定的格式表示。指令中,數(shù)據(jù)類型應(yīng)與指令標(biāo)識(shí)符相匹配。

不同數(shù)據(jù)長(zhǎng)度的尋址指令舉例如下。

位尋址:AND Q5.5。

字節(jié)尋址:ORB VB33,LB21。

字尋址:MOVW AC0,AQW2。

雙字尋址:MOVD AC1,VD200。

③間接尋址 間接尋址方式是數(shù)據(jù)存放在存儲(chǔ)器或寄存器中,在指令中只出現(xiàn)所需數(shù)據(jù)所在單元的內(nèi)存地址的地址。存儲(chǔ)單元地址的地址又稱為地址指針,這種間接尋址方式與計(jì)算機(jī)的間接尋址方式相同。間接尋址在處理內(nèi)存連續(xù)地址中的數(shù)據(jù)時(shí)非常方便,而且可以縮短程序所生成的代碼長(zhǎng)度,使編程更加靈活。S7-200CPU以變量存儲(chǔ)器(V)、局部存儲(chǔ)器(L)或累加器(AC)的內(nèi)容值為地址進(jìn)行間接尋址。可間接尋址的存儲(chǔ)器區(qū)域有I、Q、V、M、S、T(僅當(dāng)前值)、C(僅當(dāng)前值)。不可以對(duì)獨(dú)立的位(bit)值或模擬量進(jìn)行間接尋址。

間接尋址前,應(yīng)先建立指針,指針為雙字長(zhǎng),指針中存放存儲(chǔ)單元的32位物理地址,以指針中的內(nèi)容值為地址就可以進(jìn)行間接尋址了。只能使用變量存儲(chǔ)器(V)、局部存儲(chǔ)器(L)或累加器(AC1、AC2、AC3)作為指針,AC0不能用作間接尋址的指針。建立指針時(shí),將存儲(chǔ)器的某個(gè)地址移入另一存儲(chǔ)器或累加器中作為指針。建立指針后,就可把從指針處取出的數(shù)值傳送到指令輸出操作數(shù)指定的位置。例如,執(zhí)行指令MOVD&VB200,AC1,把地址“VB200”送入AC1,建立指針。這里地址“VB200”要用32位表示,它只是一個(gè)直接地址編號(hào),指針中的內(nèi)容為雙字型數(shù)據(jù),因而必須使用雙字傳送指令(MOVD)。指令操作數(shù)“&VB200”中的“&”符號(hào)與單元編號(hào)組合表示所對(duì)應(yīng)單元的32位物理地址,不是存儲(chǔ)器的內(nèi)容。

依據(jù)指針中的內(nèi)容值作為地址存取數(shù)據(jù)。使用指針可存取字節(jié)、字、雙字型的數(shù)據(jù),執(zhí)行指令MOVW *AC1,AC0,把指針中的內(nèi)容值(VB200)作為地址,由于指令MOVW的標(biāo)識(shí)符是“W”,因而指令操作數(shù)的數(shù)據(jù)長(zhǎng)度應(yīng)是字型,把地址VB200、VB201處2B的內(nèi)容(1234)傳送到AC0。指針處的值(即1234)為字型數(shù)據(jù),如圖2-2所示。操作數(shù)(AC1)前面的“*”號(hào)表示該操作數(shù)(AC1)為指針。

圖2-2 使用指針間接尋址

處理連續(xù)存儲(chǔ)數(shù)據(jù)時(shí),可以通過修改指針很容易地存取其他緊挨的數(shù)據(jù)。簡(jiǎn)單的數(shù)學(xué)運(yùn)算指令,如加法、減法、自增和自減等指令可以用來(lái)修改指針。在S7-200PLC中,指針中的內(nèi)容為雙字型數(shù)據(jù),應(yīng)使用雙字指令來(lái)修改指針值。如圖2-3所示,用兩次自增指令I(lǐng)NCD AC1,將AC1指針中的值(VB200)修改為VB202后,指針即指向新地址VB202。執(zhí)行指令MOVW *AC1,AC0,可在變量存儲(chǔ)器(V)中連續(xù)地存取數(shù)據(jù),將VB202、VB203 2B的數(shù)據(jù)(5678)傳送到AC0。

圖2-3 存取字?jǐn)?shù)據(jù)值時(shí)指針的修改

修改指針值時(shí),應(yīng)根據(jù)存取的數(shù)據(jù)長(zhǎng)度來(lái)進(jìn)行調(diào)整。若對(duì)字節(jié)進(jìn)行存取,指針值加1(或減1);若對(duì)字進(jìn)行存取,或?qū)Χ〞r(shí)器、計(jì)數(shù)器的當(dāng)前值進(jìn)行存取,指針值加2(或減2);若對(duì)雙字進(jìn)行存取,指針值加4(或減4)。圖2-3中,存取的數(shù)據(jù)長(zhǎng)度是字型數(shù)據(jù),因而指針值加2。

2.1.2 常用基本指令

S7-200 PLC的基本指令多用于開關(guān)量邏輯控制,基本指令包括位操作類指令,主要是位操作及位運(yùn)算指令;運(yùn)算指令,包括常用的算術(shù)運(yùn)算和邏輯運(yùn)算指令;其他數(shù)據(jù)處理類指令,包括數(shù)據(jù)的傳送、移位、填充和交換等指令;表功能指令,包括對(duì)表的存取和查找指令;轉(zhuǎn)換指令,包括數(shù)據(jù)類型轉(zhuǎn)換、碼轉(zhuǎn)換和字符轉(zhuǎn)換指令。上述內(nèi)容中的后4條都是對(duì)數(shù)據(jù)進(jìn)行運(yùn)算和處理的指令,掌握PLC的基本指令才能編程。

2.1.2.1 位邏輯指令

位邏輯指令是PLC應(yīng)用領(lǐng)域最具代表性的指令應(yīng)用,是所有其他指令的基礎(chǔ)。位邏輯指令屬于基本邏輯指令,是專門針對(duì)位邏輯量進(jìn)行處理的指令,與使用繼電器進(jìn)行邏輯控制十分相似。S7-200 PLC共有27條邏輯指令,現(xiàn)按用途分類如下。

(1)邏輯取及線圈驅(qū)動(dòng)指令

邏輯取及線圈驅(qū)動(dòng)指令為L(zhǎng)D(Load)、LDN(Load Not)、=(Out)。

LD(Load):取指令。當(dāng)LAD開始的觸點(diǎn)為常開觸點(diǎn)時(shí),使用該指令。

LDN(Load Not):取反指令。當(dāng)LAD開始的觸點(diǎn)為常閉觸點(diǎn)時(shí),使用該指令。

=(Out):線圈驅(qū)動(dòng)指令。

上述指令的使用如圖2-4所示。

圖2-4 LD、LDN、“=”指令的使用

圖2-4中,當(dāng)I0.0閉合時(shí),輸出線圈Q0.0接通;當(dāng)I0.1斷開時(shí),輸出線圈Q0.1和內(nèi)部輔助線圈M0.0接通。

LD、LDN、“=”指令使用說(shuō)明如下。

①LD、LDN指令用于與輸入公共線(輸入母線)相連的觸點(diǎn),在分支電路塊的開始處也要使用LD、LDN指令,與后面的OLD、ALD指令配合完成電路塊的編程。

②“=”指令用于輸出繼電器、輔助繼電器、定時(shí)器及計(jì)數(shù)器等,但不能用于輸入繼電器。

③并聯(lián)的“=”指令可以連續(xù)使用任意次。

④在同一程序中不要使用雙線圈輸出,即同一個(gè)元器件在同一程序中只使用一次“=”指令。

⑤LD、LDN指令的操作數(shù)為I、Q、M、SM、T、C、V和S。“=”指令的操作數(shù)為Q、M、SM、V和S。

(2)觸點(diǎn)串聯(lián)指令

觸點(diǎn)串聯(lián)指令為A(And)、AN(And Not)。

A(And):與指令。用于單個(gè)常開觸點(diǎn)串聯(lián)連接。

AN(And Not):與反指令。用于單個(gè)常閉觸點(diǎn)串聯(lián)連接。

觸點(diǎn)串聯(lián)指令的使用如圖2-5所示。

圖2-5 串聯(lián)指令的使用

圖2-5中,I0.0與I0.1執(zhí)行相“與”的邏輯運(yùn)算。在I0.0與I0.1均閉合時(shí),線圈Q0.0接通;I0.0與I0.1中只要有一個(gè)不閉合,線圈Q0.0不能接通。I0.2與常閉觸點(diǎn)I0.3執(zhí)行相“與”的邏輯運(yùn)算。在I0.2閉合、I0.3斷開時(shí),線圈Q0.1接通;若I0.2斷開或I0.3閉合,則線圈Q0.1不能接通。

A、AN指令使用說(shuō)明如下。

①A、AN指令是單個(gè)觸點(diǎn)串聯(lián)連接指令,可連續(xù)使用。但在用梯形圖編程時(shí)會(huì)受到打印寬度和屏幕顯示的限制,S7-200 PLC的編程軟件中規(guī)定的串聯(lián)觸點(diǎn)使用上限為11個(gè)。

②若要串聯(lián)多個(gè)觸點(diǎn)組合回路時(shí),需采用后面說(shuō)明的ALD指令。

③A、AN指令的操作數(shù)為I、Q、M、SM、T、C、V和S。

④在使用“=”指令進(jìn)行線圈驅(qū)動(dòng)后,仍然可以使用A、AN指令,然后再次使用“=”指令,如圖2-6所示。

圖2-6所示程序的上下次序不能隨意改變,否則A、AN指令與“=”指令不能多次連續(xù)使用。

圖2-6 A、AN指令與“=”指令的多次連續(xù)使用

(3)觸點(diǎn)并聯(lián)指令

觸點(diǎn)并聯(lián)指令為O(Or)、ON(Or Not)。

O(Or):或指令。用于單個(gè)常開觸點(diǎn)并聯(lián)連接。

ON(Or Not):或反指令。用于單個(gè)常閉觸點(diǎn)并聯(lián)連接。

圖2-7所示梯形圖表示了O及ON指令的用法。

圖2-7 O及ON指令的使用

圖2-7中,I0.0與I0.1執(zhí)行相“或”的邏輯操作。當(dāng)I0.0與I0.1任意一個(gè)閉合時(shí),線圈Q0.0接通;當(dāng)I0.0與I0.1均不閉合時(shí),線圈Q0.0不能接通。

O、ON指令可作為一個(gè)觸點(diǎn)的并聯(lián)連接指令,緊接在LD、LDN指令之后使用,即對(duì)其前面LD、LDN指令所規(guī)定的觸點(diǎn)再并聯(lián)一個(gè)觸點(diǎn),可以連續(xù)使用。

(4)置位/復(fù)位指令

①置位指令 將位存儲(chǔ)區(qū)的從指定位(bit)開始的N個(gè)同類存儲(chǔ)器位置位。

用法:S bit,N,如S Q0.0,1。

②復(fù)位指令 將從位存儲(chǔ)區(qū)的指定位(bit)開始的N個(gè)同類存儲(chǔ)器位復(fù)位。當(dāng)用復(fù)位指令時(shí),如果是對(duì)定時(shí)器T位或計(jì)數(shù)器C位進(jìn)行復(fù)位,則定時(shí)器位或計(jì)數(shù)器位被復(fù)位;同時(shí),定時(shí)器或計(jì)數(shù)器的當(dāng)前值被清0。

用法:R bit,N,如R Q0.2,3。

置位即置1,復(fù)位即置0。置位和復(fù)位指令可以將位存儲(chǔ)區(qū)的某一位開始的一個(gè)或多個(gè)(最多可達(dá)255個(gè))同類存儲(chǔ)器位置1或置0。這兩條指令在使用時(shí)需指明三點(diǎn):操作性質(zhì)、開始位和位的數(shù)量。各操作數(shù)類型及范圍見表2-4。

表2-4 操作數(shù)類型及范圍

圖2-8為置位/復(fù)位指令的使用。S、R指令中的2表示從指定的Q0.0開始的兩個(gè)觸點(diǎn),即Q0.0與Q0.1。在檢測(cè)到I0.0閉合的上升沿時(shí),輸出線圈Q0.0、Q0.1被置位為1,并保持,而不論I0.0為何種狀態(tài)。在檢測(cè)到I0.1閉合的上升沿時(shí),輸出線圈Q0.0、Q0.1被復(fù)位為0,并保持,而不論I0.1為何種狀態(tài)。

圖2-8 置位/復(fù)位指令的使用

指定觸點(diǎn)一旦被置位,則保持接通狀態(tài),直到對(duì)其進(jìn)行復(fù)位操作;而指定觸點(diǎn)一旦被復(fù)位,則變?yōu)閿嚅_狀態(tài),直到對(duì)其進(jìn)行置位操作。

如果對(duì)定時(shí)器和計(jì)數(shù)器進(jìn)行復(fù)位操作,則被指定的T或C的位被復(fù)位,同時(shí)其當(dāng)前值被清0。

S、R指令可多次使用相同編號(hào)的各類觸點(diǎn),使用次數(shù)不限,如圖2-9所示。若幾個(gè)觸發(fā)信號(hào)同時(shí)閉合,則Network1中Q0.0的狀態(tài)為接通,Network3中Q0.0的狀態(tài)為斷開,Network6中Q0.0的狀態(tài)為接通,Network9中Q0.0的狀態(tài)為斷開。

圖2-9 S、R指令對(duì)同一線圈的多次設(shè)置

(5)RS觸發(fā)器和SR觸發(fā)器

置位優(yōu)先觸發(fā)器(SR):當(dāng)置位端(S1)和復(fù)位端(R)均為“1”時(shí),輸出位為“1”。

復(fù)位優(yōu)先觸發(fā)器(RS):當(dāng)置位端(S)和復(fù)位端(R1)均為“1”時(shí),輸出位為“0”。

對(duì)RS觸發(fā)器和SR觸發(fā)器,當(dāng)置位端為“1”、復(fù)位端為“0”時(shí),輸出位為“1”;當(dāng)置位端為“0”、復(fù)位端為“1”時(shí),輸出位為“0”;當(dāng)置位端、復(fù)位端均為“0”時(shí),輸出位保持原狀態(tài)不變。

在實(shí)際的程序設(shè)計(jì)中,RS或SR觸發(fā)器通常由置位、復(fù)位指令實(shí)現(xiàn)。RS、SR指令的使用如圖2-10所示。

梯形圖對(duì)應(yīng)的指令表如下:

Network1

LD I0.0

LD I0.1

NOT

LPS

A Q0.0

= Q0.0

LPP

ALD

O Q0.0

= Q0.0

Network2

LD I0.0

LD I0.1

NOT

A Q0.1

OLD

= Q0.1

圖2-10中,RS、SR指令均為鎖存器,一個(gè)復(fù)位優(yōu)先,一個(gè)置位優(yōu)先。S連接置位輸入,R連接復(fù)位輸入,一旦輸出線圈被置位,則保持置位狀態(tài)直到復(fù)位輸入接通。置位、復(fù)位輸入均以高電平狀態(tài)有效。

圖2-10 RS、SR指令的使用

(6)串聯(lián)電路塊的并聯(lián)和并聯(lián)電路塊的串聯(lián)指令

串聯(lián)電路塊的并聯(lián)指令為OLD(Or Load),用于實(shí)現(xiàn)多個(gè)電路塊的“與”運(yùn)算;并聯(lián)電路塊的串聯(lián)指令為ALD(And Load),用于實(shí)現(xiàn)多個(gè)電路塊的“或”運(yùn)算。ALD、OLD指令的使用如圖2-11所示。

圖2-11中,Network1中的I0.0和I0.1組成一個(gè)“或”塊,I0.2和I0.3組成一個(gè)“或”塊,然后兩個(gè)“或”塊串聯(lián),執(zhí)行“與”運(yùn)算,當(dāng)I0.0或I0.1閉合且I0.2或I0.3閉合時(shí),Q0.0接通;Network2中的I0.4和I0.5組成一個(gè)“與”塊,I0.6和I0.7組成一個(gè)“與”塊,然后兩個(gè)“與”塊并聯(lián),執(zhí)行“或”運(yùn)算,當(dāng)I0.4與I0.5均閉合或I0.6與I0.7均閉合時(shí),Q0.1接通。

圖2-11 ALD、OLD指令的使用

幾個(gè)串聯(lián)支路并聯(lián)時(shí),其支路的起點(diǎn)以LD、LDN開始,支路終點(diǎn)用OLD指令,如需將多個(gè)支路并聯(lián),從第二條支路開始,在每一條支路后面加OLD指令;幾個(gè)并聯(lián)支路串聯(lián)時(shí),其支路的起點(diǎn)也以LD、LDN開始,支路終點(diǎn)用ALD指令,如果有多個(gè)并聯(lián)支路串聯(lián),順次以ALD指令與前面支路連接。兩種指令的支路數(shù)均沒有限制。

OLD、ALD指令無(wú)操作數(shù)。

(7)邊沿脈沖指令

邊沿脈沖指令為EU/ED(Edge Up/Edge Down),其指令格式為:EU(Edge Up)正跳變,無(wú)操作元件;ED(Edge Down)負(fù)跳變,無(wú)操作元件。

邊沿觸發(fā)是指用邊沿觸發(fā)信號(hào)產(chǎn)生一個(gè)機(jī)器周期的掃描脈沖,通常用作脈沖整形。邊沿觸發(fā)指令分為正跳變觸發(fā)(上升沿)和負(fù)跳變觸發(fā)(下降沿)兩大類。正跳變觸發(fā)指輸入脈沖的上升沿,使觸點(diǎn)接通一個(gè)掃描周期;負(fù)跳變觸發(fā)指輸入脈沖的下降沿,使觸點(diǎn)接通一個(gè)掃描周期。EU/ED指令的使用如圖2-12所示。

圖2-12 EU/ED指令的使用

圖2-12中,當(dāng)I0.0閉合時(shí),正跳變觸點(diǎn)接通一個(gè)掃描周期,使Q0.0有一個(gè)掃描周期輸出;當(dāng)I0.1斷開時(shí),負(fù)跳變觸點(diǎn)接通一個(gè)掃描周期,使Q0.1有一個(gè)掃描周期輸出。

(8)立即指令

①立即觸點(diǎn)指令 在每個(gè)標(biāo)準(zhǔn)觸點(diǎn)指令的后面加“I”。指令執(zhí)行時(shí),立即讀取物理輸入點(diǎn)的值,但是不刷新對(duì)應(yīng)映像寄存器的值。這類指令包括LDI、LDNI、AI、ANI、OI和ONI。

用法:LDI bit,bit只能是I類型。

②立即輸出指令 執(zhí)行指令時(shí),新值被寫入實(shí)際輸出和對(duì)應(yīng)的過程映像寄存器位置。這與非立即輸出不同,非立即輸出指令僅將新值寫入過程映像寄存器。用立即輸出指令訪問輸出點(diǎn)時(shí),相應(yīng)的輸出映像寄存器的內(nèi)容也被刷新。

用法:=I bit,bit只能是Q類型。

③SI,立即置位指令 用立即置位指令訪問輸出點(diǎn)時(shí),從指令所指出的位(bit)開始的N個(gè)(最多為128個(gè))物理輸出點(diǎn)被立即置位,同時(shí),相應(yīng)的輸出映像寄存器的內(nèi)容也被刷新。

用法:SI bit,N,如SI Q0.0,2。

④RI,立即復(fù)位指令 用立即復(fù)位指令訪問輸出點(diǎn)時(shí),從指令所指出的位(bit)開始的N個(gè)(最多為128個(gè))物理輸出點(diǎn)被立即復(fù)位,同時(shí),相應(yīng)的輸出映像寄存器的內(nèi)容也被刷新。

用法:RI bit,N,如RI Q0.0,1。

注意:bit只能是Q類型。

立即指令的使用如圖2-13所示。圖中,Q0.0、Q0.1和Q0.2的輸入邏輯是I0.0的普通常開觸點(diǎn)。Q0.0為普通輸出,當(dāng)程序執(zhí)行到它時(shí),它的映像寄存器的狀態(tài)會(huì)隨著本次掃描周期采集到的I0.0的狀態(tài)而改變,而它的物理觸點(diǎn)要等到本次掃描周期的輸出刷新階段才改變。Q0.1、Q0.2為立即輸出,當(dāng)程序執(zhí)行到它們時(shí),它們的物理觸點(diǎn)和輸出映像寄存器同時(shí)改變。對(duì)Q0.3而言,它的輸入邏輯是I0.0的立即觸點(diǎn),所以在程序執(zhí)行到它時(shí),Q0.3的映像寄存器的狀態(tài)隨著I0.0即時(shí)狀態(tài)的改變而立即改變,而它的物理觸點(diǎn)要等到本次掃描周期的輸出刷新階段才改變。

圖2-13 立即指令的使用

(9)堆棧操作指令

S7-200 PLC使用一個(gè)9層堆棧來(lái)處理所有邏輯操作。堆棧是一組能夠存儲(chǔ)和取出數(shù)據(jù)的暫存單元,其特點(diǎn)是“先進(jìn)后出”。西門子公司將ALD、OLD、LPS、LRD、LPP和LDS等指令都?xì)w納為堆棧操作指令。

PLC執(zhí)行ALD指令時(shí),將堆棧中的第一級(jí)和第二級(jí)的值進(jìn)行邏輯“與”操作,結(jié)果置于棧頂(堆棧第一級(jí)),并將堆棧中的第三~九級(jí)的值依次上彈一級(jí)。

PLC執(zhí)行OLD指令時(shí),將堆棧中的第一級(jí)和第二級(jí)的值進(jìn)行邏輯“或”操作,結(jié)果置于棧頂,并將堆棧中其余各級(jí)的內(nèi)容依次上彈一級(jí)。

棧裝載“與”和棧裝載“或”指令的操作過程如圖2-14所示。

圖2-14 棧裝載“與”和棧裝載“或”指令的操作過程

LPS(Logic Push):邏輯入棧指令。復(fù)制棧頂?shù)闹挡⑦@個(gè)值推入棧頂,原堆棧中各級(jí)棧會(huì)依次下壓一級(jí),棧底值丟失。

LRD(Logic Read):邏輯讀棧指令。把堆棧中第二級(jí)的值復(fù)制到棧頂,堆棧沒有推入棧或彈出棧操作,但原棧頂值被新的復(fù)制值取代。

LPP(Logic POP):邏輯出棧指令。堆棧作彈出棧操作,將棧頂?shù)闹祻棾觯褩8骷?jí)棧值依次上彈一級(jí),堆棧第二級(jí)的值成為新的棧頂值。

注意:LPS與LPP必須配對(duì)使用。

LDS(Load Stack):裝入堆棧指令。復(fù)制堆棧中的第n個(gè)值到棧頂,棧底值丟失。例如,LDS 5,是將堆棧中的第5個(gè)值復(fù)制到棧頂,并進(jìn)行入棧操作,n的取值范圍為0~8。

LPS、LRD、LPP、LDS指令的堆棧操作過程如圖2-15所示。邏輯堆棧指令的編程實(shí)例如圖2-16所示。

圖2-15 LPS、LRD、LPP、LDS指令的堆棧操作過程

圖2-16 邏輯堆棧指令的編程實(shí)例

堆棧指令使用說(shuō)明如下。

①堆棧指令主要用于組織復(fù)雜的邏輯關(guān)系,無(wú)操作數(shù)。

②由于堆棧空間有限(9層),所以LPS和LPP指令的連續(xù)使用不得超過9次。

③LPS與LPP成對(duì)使用,在它們之間可以多次使用LRD指令,如圖2-17所示。

圖2-17 多層堆棧的使用

(10)NOT和NOP指令

NOT為“非”運(yùn)算指令,可將該指令處的運(yùn)算結(jié)果取反,無(wú)操作數(shù);空操作(NOP N)指令不影響程序的執(zhí)行,該指令很少被使用。NOT指令的使用如圖2-18所示。

圖2-18 NOT指令的使用

2.1.2.2 定時(shí)器指令

定時(shí)器指令在編程中首先要設(shè)置預(yù)置值,用以確定定時(shí)時(shí)間。在程序的運(yùn)行過程中,定時(shí)器不斷累計(jì)時(shí)間。當(dāng)累計(jì)的時(shí)間與設(shè)置時(shí)間相等時(shí),定時(shí)器發(fā)生動(dòng)作,以實(shí)現(xiàn)各種定時(shí)邏輯控制工作。

S7-200 PLC的定時(shí)器為增量型定時(shí)器,用于實(shí)現(xiàn)時(shí)間控制,可以按照工作方式和時(shí)間基準(zhǔn)(時(shí)基)分類,時(shí)間基準(zhǔn)又稱為定時(shí)精度和分辨率。

(1)工作方式

按照工作方式,定時(shí)器可分為通電延時(shí)型(TON)、保持型(又稱有記憶的通電延時(shí)型)(TONR)、斷電延時(shí)型(TOF)三種類型。

(2)時(shí)基標(biāo)準(zhǔn)

按照時(shí)基標(biāo)準(zhǔn),定時(shí)器又分為1ms、10ms、100ms三種類型,不同的時(shí)基標(biāo)準(zhǔn),定時(shí)精度、定時(shí)范圍和定時(shí)器的刷新方式不同。

①定時(shí)精度 定時(shí)器的工作原理是定時(shí)器使能輸入有效后,當(dāng)前值寄存器對(duì)PLC內(nèi)部的時(shí)基脈沖增1計(jì)數(shù),最小計(jì)時(shí)單位為時(shí)基脈沖的寬度。

②定時(shí)范圍 定時(shí)器使能輸入有效后,當(dāng)前值寄存器對(duì)時(shí)基脈沖遞增計(jì)數(shù),當(dāng)計(jì)數(shù)值大于或等于定時(shí)器的設(shè)定值后,狀態(tài)位置1。從定時(shí)器輸入有效,到狀態(tài)位輸出有效經(jīng)過的時(shí)間為定時(shí)時(shí)間。定時(shí)時(shí)間T等于時(shí)基乘設(shè)定值,時(shí)基越大,定時(shí)時(shí)間越長(zhǎng),但精度越差。

③定時(shí)器的刷新方式 1ms定時(shí)器每隔1ms定時(shí)器刷新一次,定時(shí)器刷新與掃描周期和程序處理無(wú)關(guān)。掃描周期較長(zhǎng)時(shí),定時(shí)器一個(gè)周期內(nèi)可能多次被刷新(多次改變當(dāng)前值)。

10ms定時(shí)器在每個(gè)掃描周期開始時(shí)刷新。每個(gè)掃描周期之內(nèi),當(dāng)前值不變。

100ms定時(shí)器是定時(shí)器指令執(zhí)行時(shí)被刷新,下一條執(zhí)行的指令即可使用刷新后的結(jié)果,但應(yīng)當(dāng)注意,如果該定時(shí)器的指令不是每個(gè)周期都執(zhí)行(比如條件跳轉(zhuǎn)時(shí)),定時(shí)器就不能及時(shí)刷新,可能會(huì)導(dǎo)致出錯(cuò)。

CPU22X系列PLC的256個(gè)定時(shí)器分屬TON(TOF)和TONR工作方式,以及三種時(shí)基標(biāo)準(zhǔn),TOF與TON共享同一組定時(shí)器,不能重復(fù)使用。詳細(xì)分類方法及定時(shí)范圍見表2-5。

表2-5 定時(shí)器工作方式及類型

使用定時(shí)器時(shí)應(yīng)參照表2-5的時(shí)基標(biāo)準(zhǔn)和工作方式合理選擇定時(shí)器編號(hào),同時(shí)要考慮刷新方式對(duì)程序執(zhí)行的影響。

(3)定時(shí)器指令格式

S7-200 PLC提供了三種類型的定時(shí)器,即通電延時(shí)型、有記憶通電延時(shí)型和斷電延時(shí)型,定時(shí)器指令格式如表2-6所示。

表2-6 定時(shí)器指令格式

IN是使能輸入端,編程范圍T0~T255;PT是設(shè)定值輸入端,最大預(yù)置值32 767;PT數(shù)據(jù)類型為INT。

①通電延時(shí)型(TON) 當(dāng)使能端(IN)輸入有效時(shí),定時(shí)器開始計(jì)時(shí),當(dāng)前值從0開始遞增,大于或等于設(shè)定值(PT)時(shí),定時(shí)器輸出狀態(tài)位置為1(輸出觸點(diǎn)有效),當(dāng)前值的最大值為32 767。使能端無(wú)效(斷開)時(shí),定時(shí)器復(fù)位(當(dāng)前值清零,輸出狀態(tài)位置為0)。通電延時(shí)型定時(shí)器應(yīng)用程序如圖2-19所示。

圖2-19 通電延時(shí)型定時(shí)器應(yīng)用程序

②有記憶通電延時(shí)型(TONR) 使能端(IN)輸入有效時(shí)(接通),定時(shí)器開始計(jì)時(shí),當(dāng)前值遞增,當(dāng)前值大于或等于設(shè)定值(PT)時(shí),輸出狀態(tài)位置為1,使能端輸入無(wú)效(斷開)時(shí),當(dāng)前值保持(記憶),使能端(IN)再次接通有效時(shí),在原記憶值的基礎(chǔ)上遞增計(jì)時(shí)。有記憶通電延時(shí)型(TONR)定時(shí)器采用線圈的復(fù)位指令(R)進(jìn)行復(fù)位操作,當(dāng)復(fù)位線圈有效時(shí),定時(shí)器當(dāng)前值清零,輸出狀態(tài)位置為0。

保持型(有記憶通電延時(shí)型定時(shí)器)應(yīng)用程序如圖2-20所示。

圖2-20 有記憶通電延時(shí)型定時(shí)器應(yīng)用程序段

③斷電延時(shí)型(TOF) 使能端(IN)輸入有效時(shí),定時(shí)器輸出狀態(tài)位立即置1,當(dāng)前值復(fù)位(為0)。使能端(IN)斷開時(shí),開始計(jì)時(shí),當(dāng)前值從0遞增,當(dāng)前值達(dá)到預(yù)置值時(shí),定時(shí)器狀態(tài)位復(fù)位置0,并停止計(jì)時(shí),當(dāng)前值保持。

斷電延時(shí)型定時(shí)器應(yīng)用程序如圖2-21所示。

圖2-21 斷電延時(shí)型定時(shí)器應(yīng)用程序段

2.1.2.3 計(jì)數(shù)器指令

S7-200系列PLC有加計(jì)數(shù)器(CTU)、加/減計(jì)數(shù)器(CTUD)、減計(jì)數(shù)器(CTD)等三種計(jì)數(shù)指令。計(jì)數(shù)器的使用方法和基本結(jié)構(gòu)與定時(shí)器基本相同,主要由設(shè)定值寄存器、當(dāng)前值寄存器、狀態(tài)位等組成。

(1)指令格式

計(jì)數(shù)器的梯形圖指令符號(hào)為指令盒形式,指令格式見表2-7。

表2-7 計(jì)數(shù)器指令格式

  梯形圖指令符號(hào)中CU為增1計(jì)數(shù)脈沖輸入端;CD為減1計(jì)數(shù)脈沖輸入端;R為復(fù)位脈沖輸入端;LD為減計(jì)數(shù)器的復(fù)位脈沖輸入端。編程范圍C0~C255;PV設(shè)定值最大范圍32767;PV數(shù)據(jù)類型為INT。

(2)工作原理

①加計(jì)數(shù)指令(CTU) 加計(jì)數(shù)器在CU端輸入脈沖上升沿,計(jì)數(shù)器的當(dāng)前值增1計(jì)數(shù)。

當(dāng)前值大于或等于設(shè)定值(PV)時(shí),計(jì)數(shù)器狀態(tài)位置1。當(dāng)前值累加的最大值為32767。復(fù)位輸入(R)有效時(shí),計(jì)數(shù)器狀態(tài)位復(fù)位(置0),當(dāng)前計(jì)數(shù)值清零。加計(jì)數(shù)器的應(yīng)用如圖2-22所示。

圖2-22 加計(jì)數(shù)器程序及時(shí)序

②加/減計(jì)數(shù)器(CTUD) 加/減計(jì)數(shù)器有兩個(gè)脈沖輸入端,其中CU端用于加計(jì)數(shù),CD端用于減計(jì)數(shù),執(zhí)行加/減計(jì)數(shù)時(shí),CU/CD端的計(jì)數(shù)脈沖上升沿加1/減1計(jì)數(shù)。當(dāng)前值大于或等于計(jì)數(shù)器設(shè)定值(PV)時(shí),計(jì)數(shù)器狀態(tài)位置位。復(fù)位輸入(R)有效或執(zhí)行復(fù)位指令時(shí),計(jì)數(shù)器狀態(tài)位復(fù)位,當(dāng)前值清零。達(dá)到計(jì)數(shù)最大值32767后,下一個(gè)CU輸入上升沿將使計(jì)數(shù)值變?yōu)樽钚≈担?32768)。同樣,達(dá)到最小值(-32768)后,下一個(gè)CD輸入上升沿將使計(jì)數(shù)值變?yōu)樽畲笾担?2767)。加/減計(jì)數(shù)器應(yīng)用程序如圖2-23所示。

圖2-23 加/減計(jì)數(shù)器應(yīng)用程序及時(shí)序

③減計(jì)數(shù)指令(CTD) 復(fù)位輸入(LD)有效時(shí),計(jì)數(shù)器把預(yù)置值(PV)裝入當(dāng)前值存儲(chǔ)器,計(jì)數(shù)器狀態(tài)位復(fù)位(置0)。CD端每一個(gè)輸入脈沖上升沿,減計(jì)數(shù)器的當(dāng)前值從預(yù)置值開始遞減計(jì)數(shù),當(dāng)前值等于0時(shí),計(jì)數(shù)器狀態(tài)位置位(置1),停止計(jì)數(shù)。

減計(jì)數(shù)指令應(yīng)用程序如圖2-24所示。

圖2-24 減計(jì)數(shù)器程序及時(shí)序

減計(jì)數(shù)器在計(jì)數(shù)脈沖I3.0的上升沿減1計(jì)數(shù),當(dāng)前值從預(yù)置值開始減至0時(shí),定時(shí)器輸出狀態(tài)位置1,Q0.0通電(置1),在復(fù)位脈沖I1.0的上升沿,定時(shí)器狀態(tài)位置0(復(fù)位),當(dāng)前值等于預(yù)置值,為下次計(jì)數(shù)工作做好準(zhǔn)備。

2.1.2.4 移位寄存器指令

移位寄存器指令可用來(lái)進(jìn)行順序控制、步進(jìn)及數(shù)據(jù)流控制。在梯形圖中,該指令以功能框形式編程。

移位寄存器指令SHRB把輸入端(DATA)的數(shù)值移入移位寄存器,并進(jìn)行移位。該移位寄存器是由S?BIT和N決定的,其中S?BIT指定移位寄存器的最低有效位,N指定移位寄存器的長(zhǎng)度。N為正數(shù)表示正向移位,N為負(fù)數(shù)表示反向移位。移位寄存器指令編程及時(shí)序如圖2-25所示。

圖2-25 移位寄存器指令編程及時(shí)序

由移位寄存器的最低有效位(S?BIT)和移位寄存器的長(zhǎng)度(N)可計(jì)算出移位寄存器的最高有效位(MSB.b)的地址。計(jì)算公式為

MSB.b=[S?BIT的字節(jié)號(hào)+(N-1+S?BIT的位號(hào))÷8].(被8除所得余數(shù))

例如,如果S?BIT為V22.5,N為8,那么MSB.b為V23.4。具體計(jì)算如下:

MSB.b=V22+(8-1+5)÷8=V22+12÷8=V22+1(余數(shù)為4)=V23.4

當(dāng)允許輸入端(EN)有效時(shí),移位寄存器指令使移位寄存器各位在每個(gè)掃描周期都移動(dòng)一位,且在EN端的每個(gè)上升沿時(shí)刻對(duì)DATA端采樣一次,把輸入端(DATA)的數(shù)值移入移位寄存器。當(dāng)正向移位時(shí),輸入數(shù)據(jù)從移位寄存器的最低有效位移入,從最高有效位移出;當(dāng)反向移位時(shí),輸入數(shù)據(jù)從移位寄存器的最高有效位移入,從最低有效位移出。移出的數(shù)據(jù)送入溢出存儲(chǔ)器位(SM1.1)。N為字節(jié)型數(shù)據(jù)類型,移位寄存器的最大長(zhǎng)度為64位。操作數(shù)DATA、S?BIT為BOOL型數(shù)據(jù)類型。

如圖2-26所示,利用移位寄存器指令控制16個(gè)彩燈的順序點(diǎn)亮:?jiǎn)?dòng)后最左端兩個(gè)燈先亮,然后從左到右以1s的速度依次移動(dòng)點(diǎn)亮,且同一時(shí)刻只能有兩個(gè)相鄰的燈亮,當(dāng)最右端兩個(gè)燈亮后再?gòu)挠业阶笠?s的速度移動(dòng),如此循環(huán)顯示。

圖2-26 彩燈控制

本例利用輸出的狀態(tài)作為移位寄存器指令的執(zhí)行控制,利用兩個(gè)移位寄存器指令分別來(lái)完成彩燈的左、右移動(dòng)控制。因?yàn)椴薀羰敲棵胍苿?dòng)一次,所以可采用特殊寄存器SM0.5作為移動(dòng)控制觸點(diǎn),控制移位寄存器指令每秒執(zhí)行一次,其梯形圖程序如圖2-27所示。

圖2-27 彩燈控制程序

2.1.2.5 比較觸點(diǎn)指令

(1)字節(jié)比較

字節(jié)比較用于比較兩個(gè)字節(jié)型整數(shù)值IN1和IN2的大小,字節(jié)比較是無(wú)符號(hào)的。比較式可以是LDB、AB或OB后直接加比較運(yùn)算符構(gòu)成,如LDB=、AB<>、OB>=等。

整數(shù)IN1和IN2的尋址范圍:VB、IB、QB、MB、SB、SMB、LB、*VD、*AC、*LD和常數(shù)。

指令格式如下:

LDB= VB10,VB12

AB<> MB0,MB1

OB<= AC1,116

(2)整數(shù)比較

整數(shù)比較用于比較兩個(gè)一字長(zhǎng)整數(shù)值IN1和IN2的大小,整數(shù)比較是有符號(hào)的,整數(shù)范圍為16#8000~16#7FFF。比較式可以是LDW、AW或OW后直接加比較運(yùn)算符構(gòu)成,如LDW=、AW<>、OW>=等。

整數(shù)IN1和IN2的尋址范圍:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常數(shù)。

指令格式如下:

LDW= VW10,VW12

AW<> MW0, MW4

OW<= AC2, 1160

(3)雙字整數(shù)比較

雙字整數(shù)比較用于比較兩個(gè)雙字長(zhǎng)整數(shù)值IN1和IN2的大小,雙字整數(shù)比較是有符號(hào)的,雙字整數(shù)范圍為16#80000000~16#7FFFFFFF。

指令格式如下:

LDD= VD10,VD14

AD<> MD0,MD8

OD<= AC0,1160000

LDD>= HC0,*AC0

(4)實(shí)數(shù)比較

實(shí)數(shù)比較用于比較兩個(gè)雙字長(zhǎng)實(shí)數(shù)值IN1和IN2的大小,實(shí)數(shù)比較是有符號(hào)的,負(fù)實(shí)數(shù)范圍為-1.175495E-38~-3.402823E+38,正實(shí)數(shù)范圍為+1.175495E-38~+3.402823E+38。比較式可以是LDR、AR或OR后直接加比較運(yùn)算符構(gòu)成。

指令格式如下:

LDR= VD10, VD18

AR<> MD0, MD12

OR<= AC1, 1160.478

AR> *AC1, VD100

圖2-28為比較指令的一個(gè)使用實(shí)例,圖中,當(dāng)輸入I2.0為“1”(上升沿)時(shí),比較IW10與MW20的大小。如果IW10=MW20,標(biāo)志位M10.0為“1”;IW10>MW20,M10.1為“1”;IW10<MW20,M10.2為“1”。同時(shí)M10.0~M10.2的狀態(tài)在I2.0為“0”后仍然能夠保持。

圖2-28 比較指令的使用

2.1.2.6 順序控制指令

在S7-200 PLC中規(guī)定只能用狀態(tài)寄存器來(lái)表示順序控制步,每個(gè)步由一個(gè)狀態(tài)寄存器位表示。步進(jìn)控制指令包括步的開始、步的結(jié)束和步的轉(zhuǎn)移指令。順序控制指令的梯形圖指令框形式如圖2-29所示。

圖2-29 順序控制指令

順序控制指令的STL指令如下:

LSCR Sn.x:步開始,其操作數(shù)Sn.x為狀態(tài)寄存器Sn中的一個(gè)位,稱為該SCR步標(biāo)志位,當(dāng)其為“1”時(shí),允許該SCR步工作。

SCRT Sm.y:步轉(zhuǎn)移,其操作數(shù)Sm.y為狀態(tài)寄存器Sm中的一個(gè)位,當(dāng)其為“1”時(shí),程序轉(zhuǎn)移至由Sm.y表示的SCR段,同時(shí)自動(dòng)停止當(dāng)前SCR步的工作。

SCRE:步結(jié)束,順序控制步無(wú)條件結(jié)束。

每個(gè)順序控制步必須有LSCR和SCRE指令。

順序控制指令可以將程序功能流程圖轉(zhuǎn)換成梯形圖程序。

指令使用說(shuō)明如下:

(1)每一個(gè)SCR程序段中均包含三個(gè)要素

①輸出對(duì)象:在這一步序中應(yīng)完成的動(dòng)作。

②轉(zhuǎn)換條件:滿足轉(zhuǎn)換條件后,實(shí)現(xiàn)SCR段的轉(zhuǎn)換。

③轉(zhuǎn)換目標(biāo):轉(zhuǎn)換到下一個(gè)步序。

(2)使用SCR指令注意事項(xiàng)

①SCR指令的操作數(shù)(或編程元件)只能是狀態(tài)寄存器Sx.y;反之,狀態(tài)寄存器Sx.y可應(yīng)用的指令并不僅限于SCR,它還可以應(yīng)用LD、LDN、A、AN、O、ON、=、S、R等指令。

②一個(gè)狀態(tài)寄存器Sx.y作為SCR段標(biāo)志位,可以用于主程序、子程序或中斷程序中,但是只能使用一次,不能重復(fù)使用。

③在一個(gè)SCR段中,禁止使用循環(huán)指令FOR/NEXT、跳轉(zhuǎn)指令JMP/LBL和條件結(jié)束指令END。

圖2-30所示為采用程序順序控制指令控制紅、綠、黃三色燈的參考梯形圖:紅燈先亮,3s后綠燈亮,再過5s后黃燈亮。當(dāng)紅、綠、黃燈全亮2min后,全部熄滅。

圖2-30 三色燈控制程序

2.1.3 常用功能指令

PLC為了實(shí)現(xiàn)模擬控制功能,除了基本操作指令外,還具有功能指令,功能指令實(shí)質(zhì)上就是一些功能不同的子程序,合理、正確地使用功能指令,對(duì)優(yōu)化程序結(jié)構(gòu),提高應(yīng)用系統(tǒng)的功能,簡(jiǎn)化對(duì)一些復(fù)雜問題的處理有著重要的作用。

2.1.3.1 數(shù)據(jù)傳送指令

數(shù)據(jù)傳送指令可實(shí)現(xiàn)將數(shù)據(jù)輸入IN(常數(shù)或某存儲(chǔ)器中的數(shù)據(jù))傳送到輸出OUT(存儲(chǔ)器)中的功能,傳送過程中不改變數(shù)據(jù)的數(shù)值。

數(shù)據(jù)傳送指令包含單一數(shù)據(jù)傳送及一次性傳送多個(gè)連續(xù)字塊的傳送,每種又可依據(jù)傳送數(shù)據(jù)的類型分為字節(jié)、字、雙字或者實(shí)數(shù)等幾種情況。傳送指令用于機(jī)內(nèi)數(shù)據(jù)的流轉(zhuǎn)與生成,可用于存儲(chǔ)單元的清零、程序初始化等場(chǎng)合。

(1)單一數(shù)據(jù)傳送指令

單一數(shù)據(jù)傳送指令用于傳送一個(gè)數(shù)據(jù),其功能是在EN端有輸入(即EN=1)時(shí),將IN端指定單元中的數(shù)據(jù)送入OUT端指定的單元中。

當(dāng)EN端有效時(shí),指令才被執(zhí)行,分別將一個(gè)字節(jié)、字、雙字或?qū)崝?shù)從IN傳送到OUT所指的存儲(chǔ)單元中。在傳送過程中數(shù)據(jù)的大小不被改變。傳送后,輸入存儲(chǔ)器IN中的內(nèi)容也不改變。當(dāng)指令正確執(zhí)行之后,則ENO為1。

單一數(shù)據(jù)傳送指令功能說(shuō)明如表2-8所示。

表2-8 單一數(shù)據(jù)傳送指令功能說(shuō)明

(2)數(shù)據(jù)塊傳送指令

數(shù)據(jù)塊傳送指令的功能是在EN端(使能端)有輸入時(shí),將IN端指定首地址的N個(gè)單元中的數(shù)據(jù)送入OUT端指定首地址的N個(gè)單元中。數(shù)據(jù)塊傳送指令可分為字節(jié)塊、字塊及雙字塊傳送指令。

數(shù)據(jù)塊傳送指令功能說(shuō)明如表2-9所示。

表2-9 數(shù)據(jù)塊傳送指令功能說(shuō)明

(3)字節(jié)立即傳送指令

字節(jié)立即傳送指令的功能是在EN端(使能端)有輸入時(shí),在物理I/O端和存儲(chǔ)器之間立即傳送一個(gè)字節(jié)數(shù)據(jù)。字節(jié)立即傳送指令可分為字節(jié)立即讀指令和字節(jié)立即寫指令,它們不能訪問擴(kuò)展模塊。

字節(jié)立即傳送指令功能說(shuō)明如表2-10所示。

表2-10 字節(jié)立即傳送指令功能說(shuō)明

2.1.3.2 字節(jié)交換指令

字節(jié)交換指令SWAP,把輸入端(IN)指定的高字節(jié)內(nèi)容與低字節(jié)內(nèi)容相互交換,交換結(jié)果仍然存放在輸入端(IN)指定的地址。字節(jié)交換指令操作數(shù)的數(shù)據(jù)類型為無(wú)符號(hào)整數(shù)(WORD)。

字節(jié)交換指令功能說(shuō)明如表2-11所示。

表2-11 字節(jié)交換指令功能說(shuō)明

2.1.3.3 比較指令

比較指令又稱比較觸點(diǎn)指令,用來(lái)將兩個(gè)操作數(shù)(IN1、IN2)按指定的比較關(guān)系作比較,比較關(guān)系成立時(shí)則比較觸點(diǎn)閉合,因此比較指令實(shí)際上也是一種位指令。比較指令只是作為條件來(lái)使用,并不對(duì)存儲(chǔ)器中的具體單元進(jìn)行操作。在實(shí)際應(yīng)用中,使用比較指令為上下限控制以及數(shù)值條件判斷提供了方便。

(1)比較指令格式

比較指令格式如圖2-31所示。

圖2-31 比較指令格式

(2)比較指令說(shuō)明

比較指令包括數(shù)值比較和字符串比較兩類。

數(shù)值比較指令中被比較的數(shù)據(jù)可以是字節(jié)、整數(shù)、雙字及實(shí)數(shù),其中字節(jié)比較是無(wú)符號(hào)的,而整數(shù)、雙字、實(shí)數(shù)的比較是有符號(hào)的。IN1、IN2的數(shù)據(jù)類型要匹配。

字符串比較指令用于比較兩個(gè)ASCII碼字符串。

數(shù)值比較指令的運(yùn)算符有=(等于)、>=(大于等于)、<=(小于等于)、>(大于)、<(小于)和<>(不等于)6種,而字符串比較指令只有=(等于)和<>(不等于)兩種。

對(duì)梯形圖指令來(lái)說(shuō),如果比較為真,比較觸點(diǎn)閉合,使能流通過,允許其后續(xù)指令執(zhí)行,否則比較觸點(diǎn)斷開,切斷能流。對(duì)語(yǔ)句表語(yǔ)言來(lái)說(shuō),就是根據(jù)條件對(duì)棧頂實(shí)施置1或置0的操作。

由于比較指令是以觸點(diǎn)形式出現(xiàn)在梯形圖及指令表中,因此有“LD”(裝載)、“A”(與)、“O”(或)三種基本形式。

(3)編程示例

當(dāng)比較數(shù)1和比較數(shù)2的關(guān)系符合比較的條件時(shí),比較觸點(diǎn)閉合,后面的電路被接通。否則比較觸點(diǎn)斷開,后面的電路不接通。換句話說(shuō),比較觸點(diǎn)相當(dāng)于一個(gè)有條件的動(dòng)合觸點(diǎn),當(dāng)比較關(guān)系成立時(shí),觸點(diǎn)閉合;不成立時(shí),觸點(diǎn)斷開。比較指令具體應(yīng)用如圖2-32所示。

圖2-32 比較指令的應(yīng)用

2.1.3.4 移位和循環(huán)移位指令

移位指令分為左、右移位和循環(huán)左、右移位兩大類。移位和循環(huán)移位指令均為無(wú)符號(hào)數(shù)操作。

(1)右移位指令

右移位指令把輸入端(IN)指定的數(shù)據(jù)右移N位,結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。右移位指令按操作數(shù)的數(shù)據(jù)類型可分為字節(jié)、字、雙字右移位指令,如圖2-33所示。

圖2-33 右移位指令

(2)左移位指令

左移位指令把輸入端(IN)指定的數(shù)據(jù)左移N位,結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。左移位指令按操作數(shù)的數(shù)據(jù)類型可分為字節(jié)、字、雙字左移位指令,如圖2-34所示。

圖2-34 左移位指令

字節(jié)、字、雙字移位指令的實(shí)際最大可移位數(shù)分別為8、16、32。右移位和左移位指令,對(duì)移位后的空位自動(dòng)補(bǔ)零,移位后溢出位(SM1.1)的值就是最后一次移出的位值。如果移位的結(jié)果為0,零存儲(chǔ)器位(SM1.0)置位。

S7-200 PLC的移位一般分為以下兩步執(zhí)行。

①利用傳送指令(MOV)將需要移位的數(shù)據(jù)移動(dòng)到結(jié)果存儲(chǔ)器中,如果僅需要對(duì)指定存儲(chǔ)器內(nèi)容移位,且執(zhí)行結(jié)果仍然保存在原存儲(chǔ)器中,則不需要執(zhí)行本步。

②對(duì)結(jié)果存儲(chǔ)器進(jìn)行移位。

如果移位位數(shù)N超過數(shù)據(jù)本身的長(zhǎng)度,則需要進(jìn)行“取余”處理,例如,對(duì)字節(jié)數(shù)據(jù)指定移動(dòng)12位時(shí),實(shí)際移動(dòng)為4位(12除以8后余數(shù)為4);當(dāng)N為0時(shí),不進(jìn)行移位操作,同時(shí)系統(tǒng)標(biāo)志寄存器SM1.0被置為“1”狀態(tài)。

左、右移位指令的梯形圖編程格式如圖2-35所示。

圖2-35 移位指令編程格式

(3)循環(huán)右移指令

循環(huán)右移指令把輸入端(IN)指定的數(shù)據(jù)循環(huán)右移N位,結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。循環(huán)右移指令按操作數(shù)的數(shù)據(jù)類型可分為字節(jié)、字、雙字循環(huán)右移指令,如圖2-36所示。

圖2-36 循環(huán)右移指令

(4)循環(huán)左移指令

循環(huán)左移指令把輸入端(IN)指定的數(shù)據(jù)循環(huán)左移N位,結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。循環(huán)左移指令按操作數(shù)的數(shù)據(jù)類型可分為字節(jié)、字、雙字循環(huán)左移指令,如圖2-37所示。

圖2-37 循環(huán)左移指令

對(duì)于字節(jié)、字、雙字循環(huán)移位指令,如果所需移位的位數(shù)N大于或等于8、16、32,那么在執(zhí)行循環(huán)移位前,先對(duì)N取以8、16、32為底的模,其結(jié)果0~7、0~15、0~31為實(shí)際移動(dòng)位數(shù)。

執(zhí)行循環(huán)移位后溢出位(SM1.1)的值就是最后一次循環(huán)移出位的值。如果移位的結(jié)果為0,零存儲(chǔ)器位(SM1.0)置位。移位和循環(huán)移位指令影響的特殊存儲(chǔ)器位:SM1.0(零)、SM1.1(溢出)。移位和循環(huán)移位指令編程舉例如圖2-38所示。

圖2-38 移位和循環(huán)移位指令編程

2.1.3.5 運(yùn)算指令

運(yùn)算指令包括算術(shù)運(yùn)算和邏輯運(yùn)算兩大類指令。算術(shù)運(yùn)算指令有加法、減法、乘法、除法和數(shù)學(xué)函數(shù)、加1、減1指令。邏輯運(yùn)算指令有邏輯與、或、非、異或指令。數(shù)據(jù)類型為字節(jié)、字、雙字。

(1)加法指令

加法指令把兩個(gè)輸入端(IN1、IN2)指定的數(shù)相加,結(jié)果送到輸出端(OUT)指定的存儲(chǔ)單元中。

加法指令可分為整數(shù)、雙整數(shù)、實(shí)數(shù)加法指令,如圖2-39所示。它們對(duì)應(yīng)的操作數(shù)數(shù)據(jù)類型分別為有符號(hào)整數(shù)(INT)、有符號(hào)雙整數(shù)(DINT)、實(shí)數(shù)(REAL)。

圖2-39 加法指令

①整數(shù)加法指令 整數(shù)加法指令為+I。梯形圖的指令格式如圖2-40所示。當(dāng)使能輸入有效時(shí),將兩個(gè)單字長(zhǎng)(16位)的有符號(hào)整數(shù)INl和IN2相加,產(chǎn)生一個(gè)16位整數(shù)結(jié)果OUT。

圖2-40 整數(shù)加法指令

②雙整數(shù)加法指令 雙整數(shù)加法指令為+D。當(dāng)使能輸入有效時(shí),將兩個(gè)雙字長(zhǎng)(32位)的有符號(hào)雙整數(shù)IN1和IN2相加,產(chǎn)生一個(gè)32位雙整數(shù)結(jié)果OUT。

在LAD和FBD中,以指令框形式編程,執(zhí)行結(jié)果為IN1+IN2=OUT。在STL中,執(zhí)行結(jié)果為INl+OUT=OUT。

OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。

指令格式:+D IN1,OUT

如:+D VD0,VD4

雙整數(shù)加法指令示例如圖2-41所示。

圖2-41 雙整數(shù)加法指令

③實(shí)數(shù)加法指令 實(shí)數(shù)加法指令為+R。當(dāng)使能輸入有效時(shí),將兩個(gè)雙字長(zhǎng)(32位)的實(shí)數(shù)IN1和IN2相加,產(chǎn)生一個(gè)32位實(shí)數(shù)結(jié)果OUT。

在LAD和FBD中,以指令框形式編程,執(zhí)行結(jié)果為IN1+IN2=OUT。

OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。

本指令影響的特殊存儲(chǔ)器位:SM1.0(零)、SM1.1(溢出)、SM1.2(負(fù))。

實(shí)數(shù)加法指令示例如圖2-42所示。

圖2-42 實(shí)數(shù)加法指令

(2)減法指令

減法指令把兩個(gè)輸入端(IN1、IN2)指定的數(shù)相減,結(jié)果送到輸出端(OUT)指定的存儲(chǔ)單元中。

減法指令可分為整數(shù)、雙整數(shù)、實(shí)數(shù)減法指令,如圖2-43所示。它們對(duì)應(yīng)的操作數(shù)數(shù)據(jù)類型分別為有符號(hào)整數(shù)(INT)、有符號(hào)雙整數(shù)(DINT)、實(shí)數(shù)(REAL)。

圖2-43 減法指令

執(zhí)行減法操作時(shí),將操作數(shù)IN1與OUT共用一個(gè)地址單元,因而語(yǔ)句表中

OUT-IN2=OUT

指令格式如下:

-I IN2,OUT(整數(shù)減法)

-D IN2,OUT(雙整數(shù)減法)

-R IN2,OUT(實(shí)數(shù)減法)

整數(shù)減法指令示例如圖2-44所示。

圖2-44 整數(shù)減法指令

(3)乘法指令

乘法指令把兩個(gè)輸入端(IN1、IN2)指定的數(shù)相乘,結(jié)果送到輸出端(OUT)指定的存儲(chǔ)單元中。

乘法指令可分為整數(shù)、雙整數(shù)、實(shí)數(shù)乘法指令和整數(shù)完全乘法指令,如圖2-45所示。

圖2-45 乘法指令

①整數(shù)乘法 整數(shù)乘法指令為*I。當(dāng)使能輸入有效時(shí),將兩個(gè)單字長(zhǎng)(16位)的有符號(hào)整數(shù)IN1和IN2相乘,產(chǎn)生一個(gè)16位整數(shù)結(jié)果OUT。

指令格式:*I IN1,OUT

如:   *I VW40,AC0

整數(shù)乘法指令示例如圖2-46所示。

圖2-46 整數(shù)乘法指令

②整數(shù)完全乘法 整數(shù)完全乘法指令為MUL。當(dāng)使能輸入有效時(shí),將兩個(gè)單字長(zhǎng)(16位)的有符號(hào)整數(shù)IN1和IN2相乘,產(chǎn)生一個(gè)32位雙整數(shù)結(jié)果OUT。

在LAD和FBD中,以指令框形式編程,執(zhí)行結(jié)果為:IN1*IN2=OUT。

OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。

本指令影響的特殊存儲(chǔ)器位:SM1.0(零)、SM1.1(溢出)、SM1.2(負(fù))、SM1.3(被0除)。

指令格式:MUL IN1,OUT

如:   MUL AC0,VD100

整數(shù)完全乘法指令示例如圖2-47所示。

圖2-47 整數(shù)完全乘法指令

③雙整數(shù)乘法 雙整數(shù)乘法指令為*D。當(dāng)使能輸入有效時(shí),將兩個(gè)雙字長(zhǎng)(32位)的有符號(hào)整數(shù)IN1和IN2相乘,產(chǎn)生一個(gè)32位雙整數(shù)結(jié)果OUT。在STL中,執(zhí)行結(jié)果為:IN1*OUT=OUT。

IN1和IN2的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD和常數(shù)。

OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。

本指令影響的特殊存儲(chǔ)器位:SM1.0(零)、SM1.1(溢出)、SM1.2(負(fù))、SM1.3(被0除)。

指令格式:*D IN1,OUT

如:   *D VD10,AC0

雙整數(shù)乘法指令示例如圖2-48所示。

圖2-48 雙整數(shù)乘法指令

④實(shí)數(shù)乘法 實(shí)數(shù)乘法指令為*R。當(dāng)使能輸入有效時(shí),將兩個(gè)雙字長(zhǎng)(32位)的實(shí)數(shù)IN1和IN2相乘,產(chǎn)生一個(gè)32位實(shí)數(shù)結(jié)果OUT。

在LAD和FBD中,以指令框形式編程,執(zhí)行結(jié)果為IN1*IN2=OUT。

在STL中,執(zhí)行結(jié)果為IN1*OUT=OUT。

IN1和IN2的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD和常數(shù)。

OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。

本指令影響的特殊存儲(chǔ)器位:SM1.0(零)、SM1.1(溢出)、SM1.2(負(fù))、SM1.3(被0除)。

指令格式:*R IN1,OUT

如:   *R VD10,AC0

實(shí)數(shù)乘法指令示例如圖2-49所示。

圖2-49 實(shí)數(shù)乘法指令

(4)除法指令

除法指令把兩個(gè)輸入端(IN1、IN2)指定的數(shù)相除,結(jié)果送到輸出端(OUT)指定的存儲(chǔ)單元中。

除法指令可分為整數(shù)、雙整數(shù)、實(shí)數(shù)除法指令和整數(shù)完全除法指令,如圖2-50所示。

圖2-50 除法指令

指令格式如下:

/I IN2,OUT(整數(shù)除法)

DIV IN2,OUT(整數(shù)完全除法)

/D IN2,OUT(雙整數(shù)除法)

/R IN2,OUT(實(shí)數(shù)除法)

如:DIV VW10,VD100

  /I VW20,VW200

整數(shù)完全除法指令把輸入端(IN1、IN2)指定的兩個(gè)16位整數(shù)相除,產(chǎn)生一個(gè)32位雙整數(shù)結(jié)果,并送到輸出端(OUT)指定的存儲(chǔ)單元中,其中高16位是余數(shù),低16位是商。

執(zhí)行除法操作時(shí),將操作數(shù)IN1與OUT共用一個(gè)地址單元(整數(shù)完全除法指令的IN1與OUT的低16位用的是同地址單元),因而語(yǔ)句表中OUT/IN2=OUT。除法指令影響的特殊存儲(chǔ)器位:SM1.0(零)、SM1.1(溢出)、SM1.2(負(fù))、SM1.3(除數(shù)為0)。

整數(shù)除法指令示例如圖2-51所示,整數(shù)完全除法指令示例如圖2-52所示。

圖2-51 整數(shù)除法指令

圖2-52 整數(shù)完全除法指令

四則運(yùn)算指令編程舉例如圖2-53所示。

圖2-53 四則運(yùn)算指令編程舉例(LAD、STL)

圖2-53中,實(shí)數(shù)除法指令中IN1(VD300)與OUT(VD400)用的不是同一地址單元。操作時(shí),先用MOV?R指令將IN1(VD300)傳送到OUT(VD400),然后再執(zhí)行除法操作。事實(shí)上,加法、減法、乘法等指令遇到上述情況,也可作類似的處理。

(5)加1和減1指令

加1和減1指令把輸入端(IN)數(shù)據(jù)加1或減1,并把結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中,加1和減1指令按操作數(shù)的數(shù)據(jù)類型可分為字節(jié)、字、雙字加1/減1指令,如圖2-54所示。

圖2-54 加1、減1指令

執(zhí)行加1和減1指令操作時(shí),將操作數(shù)IN和OUT共用一個(gè)地址單元,因而在語(yǔ)句表中OUT+1=OUT,OUT-1=OUT。

字節(jié)加1和減1指令的操作數(shù)數(shù)據(jù)類型為無(wú)符號(hào)字節(jié)(BYTE)型,指令影響的特殊存儲(chǔ)器位:SM1.0(零)、SM1.1(溢出)。

字、雙字加1和減1指令的操作數(shù)數(shù)據(jù)類型分別為有符號(hào)整數(shù)(INT)、有符號(hào)雙整數(shù)(DINT),指令影響的特殊存儲(chǔ)器位:SM1.0(零)、SM1.1(溢出)、SM1.2(負(fù))。

(6)數(shù)學(xué)函數(shù)指令

數(shù)學(xué)函數(shù)指令包括平方根、自然對(duì)數(shù)、自然指數(shù)、三角函數(shù)指令,如圖2-55所示。數(shù)學(xué)函數(shù)指令的操作數(shù)均為實(shí)數(shù)(REAL)。

圖2-55 數(shù)學(xué)函數(shù)指令

①平方根(Square Root)指令 實(shí)數(shù)的平方根指令(SQRT),將輸入端(IN)的32位實(shí)數(shù)開方,得到32位實(shí)數(shù)結(jié)果,并把結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。

②自然對(duì)數(shù)(Natural Logarithm)指令 自然對(duì)數(shù)指令(LN),將輸入端(IN)的32位實(shí)數(shù)取自然對(duì)數(shù),結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。

求常用對(duì)數(shù)(lgx)時(shí),只要將其對(duì)應(yīng)的自然對(duì)數(shù)(lnx)除以2.302585即可。求常用對(duì)數(shù)示例如圖2-56所示。

圖2-56 求常用對(duì)數(shù)

③自然指數(shù)(Natural Exponential)指令 自然指數(shù)指令(Exp),將輸入端(IN)的32位實(shí)數(shù)取以e為底的指數(shù),結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。

自然指數(shù)指令與自然對(duì)數(shù)指令相配合,即可完成以任意實(shí)數(shù)為底的指數(shù)運(yùn)算。

④正弦、余弦、正切指令 正弦、余弦、正切指令,對(duì)輸入端(IN)指定的32位實(shí)數(shù)的弧度值取正弦、余弦、正切,結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。

如果輸入值為角度值,應(yīng)將該角度值轉(zhuǎn)換為弧度值。

數(shù)學(xué)函數(shù)指令影響的特殊存儲(chǔ)器位:SM1.0(零)、SM1.1(溢出)、SM1.2(負(fù))。

求正弦函數(shù)示例如圖2-57所示。

圖2-57 求正弦函數(shù)

(7)邏輯運(yùn)算指令

邏輯運(yùn)算是對(duì)無(wú)符號(hào)數(shù)進(jìn)行的邏輯處理,主要包括邏輯“與”、邏輯“或”、邏輯“異或”和取反等指令。

①邏輯“與”指令 邏輯“與”指令對(duì)兩個(gè)輸入端(IN1、IN2)的數(shù)據(jù)按位“與”,結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。

邏輯“與”指令按操作數(shù)的數(shù)據(jù)類型可分為字節(jié)“與”、字“與”、雙字“與”指令,如圖2-58所示。

圖2-58 邏輯“與”指令

②邏輯“或”指令 邏輯“或”指令對(duì)兩個(gè)輸入端(IN1、IN2)的數(shù)據(jù)按位“或”,結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。

邏輯“或”指令按操作數(shù)的數(shù)據(jù)類型可分為字節(jié)“或”、字“或”、雙字“或”指令,如圖2-59所示。

圖2-59 邏輯“或”指令

③邏輯“異或”指令 邏輯“異或”指令對(duì)兩個(gè)輸入端(IN1、IN2)的數(shù)據(jù)按位“異或”,結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。

邏輯“異或”指令按操作數(shù)的數(shù)據(jù)類型可分為字節(jié)“異或”、字“異或”、雙字“異或”指令,如圖2-60所示。

圖2-60 邏輯“異或”指令

④取反指令 取反指令對(duì)輸入端(IN)指定的數(shù)據(jù)按位取反,結(jié)果存放到輸出端(OUT)指定的存儲(chǔ)單元中。

取反指令按操作數(shù)的數(shù)據(jù)類型可分為字節(jié)、字、雙字取反指令,如圖2-61所示。

圖2-61 取反指令

邏輯運(yùn)算指令的操作如圖2-62所示,圖中,指令A(yù)NDW AC1,AC0的結(jié)果存放在AC0中。

圖2-62 邏輯運(yùn)算指令的操作

邏輯運(yùn)算指令影響的特殊存儲(chǔ)器位:SM1.0(零)。

字“或”/雙字“異或”/字取反/字節(jié)“與”操作如圖2-63所示。

圖2-63 字“或”/雙字“異或”/字取反/字節(jié)“與”操作

主站蜘蛛池模板: 玉溪市| 唐山市| 临桂县| 敦煌市| 安顺市| 新野县| 新宾| 颍上县| 嘉禾县| 巨野县| 侯马市| 天峨县| 柞水县| 开封县| 乐业县| 涟源市| 定边县| 潞城市| 龙山县| 新宁县| 静安区| 鹤峰县| 溧阳市| 海林市| 收藏| 香格里拉县| 额济纳旗| 安义县| 珲春市| 昌黎县| 丰城市| 葫芦岛市| 历史| 深圳市| 阿瓦提县| 遂昌县| 抚宁县| 德化县| 西和县| 绥滨县| 神农架林区|