內(nèi)容較長請(qǐng)耐心閱讀(全是干貨哦)
在上一期|分享| S7-200SMART常用指令(一)的加法指令后,接著減法指令也是一樣,都有為零 、溢出及結(jié)果為負(fù)的特殊寄存器,同樣分別是SM1.0 /SM1.1 /SM1.2 三個(gè)
減法指令
減法指令分別有整數(shù)型、雙整數(shù)型及實(shí)數(shù)型,如下圖所示
乘法指令乘法指令同樣可以使用常數(shù),也可以使用寄存器;對(duì)于乘法指令來說,MUL指令表示兩個(gè)16位存儲(chǔ)空間的數(shù)相乘得到一個(gè)32位的結(jié)果
MUL_DI表示兩個(gè)32位存儲(chǔ)空間的數(shù)相乘得到一個(gè)32位的結(jié)果MDL_I表示兩個(gè)16位存儲(chǔ)空間的數(shù)相乘得到一個(gè)16位的結(jié)果MUL_R表示兩個(gè)實(shí)數(shù)相乘得到一個(gè)實(shí)數(shù)的結(jié)果MUL表示兩個(gè)16位存儲(chǔ)空間的數(shù)相乘得到一個(gè)32位的結(jié)果除法指令除法指令和乘法指令一樣,有實(shí)數(shù)型、整數(shù)型、雙整數(shù)型
DIV表示兩個(gè)16位數(shù)相除,結(jié)果為32位的存儲(chǔ)空間;其中商存儲(chǔ)在高16位中,余數(shù)在低16位中DIV_I表示兩個(gè)16位數(shù)相除,結(jié)果為16位的存儲(chǔ)空間DIV_DI表示兩個(gè)32位數(shù)相除,結(jié)果為32位的存儲(chǔ)空間DIV_R表示兩個(gè)實(shí)數(shù)相除,結(jié)果為實(shí)數(shù)遞增、遞減指令遞增和遞減指令在IN端加1或減1 ,并將結(jié)果存儲(chǔ)在OUT端;常和比較指令及傳送指令配合使用。需要注意的是EN端最好采用沿脈沖檢測
(5)邏輯運(yùn)算指令
邏輯運(yùn)算對(duì)邏輯數(shù)進(jìn)行處理,在這是指無符號(hào)數(shù);根據(jù)運(yùn)算性質(zhì)可分為邏輯與、或、異或及取反等;根據(jù)數(shù)據(jù)類型可分為字節(jié)、字、雙字的運(yùn)算邏輯取反指令
是把參與運(yùn)算的數(shù)據(jù)分別轉(zhuǎn)換成二進(jìn)制按位取反,若位為0 則變?yōu)? ,若位為1 則變?yōu)? 注意:取反結(jié)果的輸入輸出為同一個(gè)地址時(shí),則在EN端應(yīng)使用沿脈沖檢測觸發(fā),不然會(huì)出現(xiàn)一個(gè)掃描周期內(nèi)取反多次的情況!另外此指令和遞增指令I(lǐng)NC類似,切勿混淆
邏輯與指令簡單的說就是把參與運(yùn)算的數(shù)據(jù)分別轉(zhuǎn)換成二進(jìn)制后進(jìn)行位與位的邏輯與運(yùn)算,只有兩個(gè)數(shù)均為1時(shí),輸出結(jié)果才會(huì)為1
邏輯或運(yùn)算指令
把參與運(yùn)算的數(shù)據(jù)分別轉(zhuǎn)換成二進(jìn)制后進(jìn)行位與位的邏輯與運(yùn)算,只要有一個(gè)數(shù)為1時(shí)輸出結(jié)果為1,兩個(gè)數(shù)為1 時(shí),輸出也為1;兩個(gè)數(shù)為0 時(shí),輸出為0,也就是有1為1 ,有0為0
邏輯異或運(yùn)算指令把參與運(yùn)算的數(shù)據(jù)分別轉(zhuǎn)換成二進(jìn)制后進(jìn)行位與位的邏輯異或運(yùn)算,只有兩個(gè)數(shù)不同時(shí)輸出結(jié)果為1,反之為0 ;也就是同為0 ,異為1
(6)移位循環(huán)指令
移位循環(huán)指令分為三種:分別是左移位指令(SHL)/右移位指令(SHR)、循環(huán)左移位指令(ROL)/循環(huán)右移位指令(ROR)、及移位寄存器指令(SHRB),對(duì)于移位指令來說,根據(jù)移位的方向分為左右移位,根據(jù)數(shù)據(jù)類型的不同,可分為字節(jié)、字和雙字的方式
左/右移位指令字節(jié)型移位指令為無符號(hào)數(shù),字及雙字型指令當(dāng)為有符號(hào)數(shù)時(shí),符號(hào)位也會(huì)一并移動(dòng),另一端移出的位自動(dòng)補(bǔ)零;如果移位次數(shù)大于0 ,則將溢出特殊寄存器SM1.1會(huì)置位為移出的最后一位的值;如果移位操作的結(jié)果為0 ,則SM1.0標(biāo)志位將置位
循環(huán)移位指令循環(huán)移位指令是將IN端數(shù)中各位的值向左或右移循環(huán)移動(dòng)N位后,傳送至OUT端指定的地址中;如果執(zhí)行循環(huán)移位指令,則溢出標(biāo)志位SM1.1將置位為循環(huán)移出的最后一個(gè)位的值
移位寄存器指令
移位寄存器指令可參考我們?cè)瓉矸窒淼膬?nèi)容,這里不再闡述。可點(diǎn)擊→【干貨】S7-200SMART 功能指令應(yīng)用
(7)表格指令
注意:表格指令針對(duì)的是16位的存儲(chǔ)空間,也就是所有的表格指令管腳只能是16位的存儲(chǔ)空間填表指令(AD_T_TBL) 添表指令向表格 TBL 中添加字值 DATA。表格中的第一個(gè)值為最大表格長度 TL(最大行/列數(shù))第二個(gè)值是條目計(jì)數(shù) EC,用于存儲(chǔ)表格中的條目數(shù),并自動(dòng)更新;新數(shù)據(jù)填加到表格中最后一個(gè)條目之后;每次向表格中填加新數(shù)據(jù)時(shí),條目計(jì)數(shù)將加 1。當(dāng)條目計(jì)數(shù)等于最大表格長度時(shí)則無法再進(jìn)行數(shù)據(jù)的存儲(chǔ),只要當(dāng)數(shù)據(jù)讀取后騰出空間后才能繼續(xù)存儲(chǔ)數(shù)據(jù);一個(gè)表格最多可有 100 個(gè)數(shù)據(jù)條目;填表指令通常配合先進(jìn)先出或后進(jìn)先出指令一起使用。DATA端只能是16位的存儲(chǔ)空間,不能是實(shí)數(shù)、32位的數(shù)據(jù)等
圖中VW200表示表格的最大行/列數(shù),自行設(shè)定最大數(shù);所需地址為VW200的值+2VW202表示當(dāng)前表格存儲(chǔ)數(shù)量,無需設(shè)定(已使用的表格數(shù)量);VW204后為實(shí)際存儲(chǔ)數(shù)據(jù)地址(剩余表格空間大小)
先進(jìn)先出指令(FIFO)
先進(jìn)先出指令將表中的最早(或第一個(gè))條目移動(dòng)到輸出存儲(chǔ)器地址(指令中DATA端的地址),具體操作是移走指定表格 (TBL) 中的第一個(gè)條目并將該值移動(dòng)到 DATA 指定的位置。表格中的所有其它條目向上移動(dòng)一個(gè)位置。每次執(zhí)行 FIFO 指令時(shí),表中的條目計(jì)數(shù)值減 1。當(dāng)再次執(zhí)行填表指令后,數(shù)據(jù)會(huì)存儲(chǔ)在第一個(gè)條目中
后進(jìn)先出指令(LIFO)
后進(jìn)先出指令將表中的最新(或最后一個(gè))條目移動(dòng)到輸出存儲(chǔ)器地址,具體操作是移走表格 (TBL) 中的最后一個(gè)條目并將該值移動(dòng)到 DATA 指定的位置。每次執(zhí)行 LIFO 指令時(shí),表中的條目計(jì)數(shù)值減 1。當(dāng)再次執(zhí)行填表指令后,數(shù)據(jù)會(huì)存儲(chǔ)在最后一個(gè)條目中
填充存儲(chǔ)器指令(FILL_N)存儲(chǔ)器填充指令使用地址 IN 中存儲(chǔ)的字值填充從地址 OUT 開始的 N 個(gè)連續(xù)字;N 取值范圍是 1 到 255
表示把10 填充到vw10開始的16個(gè)存儲(chǔ)地址中,常用于初始化的使用,IN可為常數(shù)也允許是變量查表指令(TBL_FIND) 用于從表格內(nèi)查找與我們定義條件相同的數(shù)據(jù) 查表指令在表格中搜索與搜索條件匹配的數(shù)據(jù)。查表指令由表格條目 INDX 開始,在表格 TBL 中搜索與 CMD 定義的搜索標(biāo)準(zhǔn)相匹配的數(shù)據(jù)值或模式 PTN。指令參數(shù) CMD 的 1 到 4 的數(shù)字值分別對(duì)應(yīng)于 =、<>、< 和 >(沒有≥及≤)。 如果找到匹配條目,INDX 將指向表中的該匹配條目,顯示查找和定義相同條件數(shù)據(jù)的條目數(shù)。 只要查找到和條件相符的值后就不會(huì)再往下查找,要查找下一個(gè)匹配條目值,在再次調(diào)用查表指令之前,必須先使 INDX 增加 1。如果未找到匹配的條目值,則 INDX 值等于條目總數(shù)。 一個(gè)表格最多可有 100 個(gè)數(shù)據(jù)條目。數(shù)據(jù)條目(搜索區(qū)域)編號(hào)為 0 到 99(最大值)。
TBL表示表格的起始地址,就是最大表格長度的地址(指定對(duì)哪個(gè)表格的數(shù)據(jù)進(jìn)行查找)PTN表示需要和表格內(nèi)數(shù)據(jù)進(jìn)行搜索對(duì)比的值,此管腳可使用常數(shù)或16位存儲(chǔ)空間的存儲(chǔ)器,注意不能用BYTEINDX表示的是顯示查找和定義相同條件數(shù)據(jù)的條目數(shù)CMD表示表格內(nèi)數(shù)據(jù)和PTN指定數(shù)值的比較方式;1表示=,2表示≠ 3表示<,4 表示>指令表示從表格(VW0開始)中查找與VW100的值相等的數(shù)據(jù),相符數(shù)據(jù)在表格中的位置存儲(chǔ)在VW200中