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