S7-200SMART常用指令(一)
計數器
計數器利用輸入邊沿累積脈沖個數,計數器又分為普通計數器和高速計數器S7-200 SMART CPU高速計數器專題(上篇)兩大類。200SMART系列對于普通計數器分為加計數、減計數、加減計數三類計數指令,計數器的使用與定時器基本類似,主要有預置寄存器、當前值寄存器及狀態位組成。其范圍大小為C0-C255,存儲空間和定時器一樣均為一個字的存儲空間且為INT的數據類型。加減計數器指令遞增到大數32767時,此時再接通輸入端信號時,則會變為小值-32768
計數器指令格式
計數器指令本身是對信號輸入端的脈沖信號進行計數,所以無需再加上升沿指令
加計數時序圖
CU為脈沖信號輸入管腳,R為計數器復位管腳,當CU端產生一個脈沖信號時,計數器C0的當前值遞增1,當當前值大于或等于PV值時,計數器的觸點發生變化,當復位端信號為1 時,計數器的當前值會變為0
減計數時序圖
當LD信號接通時,計數器把PV端的預設值裝載到計數器的當前值中,每次LD信號由0到1時,CTD減計數指令從當前計數值減1 。當計數器的當前值減至0 時,計數器的觸點發生變化。并且計數器的值無法再繼續向下減
加減計數時序圖
加減計數集成了加計數和減計數的功能,當CU端信號由0變為1 時,計數當前值加1 ,當CD端信號由0變為1 時,計數當前值減1 ,當計數器的當前值大于或等于PV值時,計數器的觸點發生變化;當復位端R為1 時,計數器的當前值會被清零
常用功能指令
(1)比較指令
比較指令可分為以下幾種:字節比較指令、整數比較指令、雙整數比較指令、實數比較指令、字符串比較指令
按照比較結果可分為=、≠、>、<、≥、≤
指令格式
(2)數據移動指令
數據移動指令在PLC中程序中有兩個作用,賦值及把一個存儲器中的值復制到另一個寄存器中。其指令根據數據類型的不同可分為字移動指令、雙字移動指令、實數移動指令
塊傳送指令
(3)轉換指
轉換指令是將一種數據類型轉換成另一種數據類型進行存儲,比如一個整數類型的數據和一個實數的數據類型進行算術運算,或有一個整數和雙整數進行比較,由于兩個數的數據類型不同不能直接進行運行或比較;需要轉換成同種數據類型后才能進行運算或比較。下圖只列出部分轉換指令。左側更多指令可在軟件幫助文件中查看
注意:轉換的數據超出了我們得到的結果,此時指令會報錯(如下圖報紅色),并且轉換結果會停留在上一次的結果數值;如下圖所示16位的存儲空間轉換成8位存儲空間的值要確保不能大于8位存儲的大范圍
在指令中并沒有字節轉雙整數的轉換指令,只能先從字節轉整數,再從整數轉雙整數;除此以外也可以建立子程序有字節直接轉雙整數;并可自行創建成庫。如下圖所示
BCD碼轉整數時需要注意的是,BCD碼是用16進制的方式進行表示,所以在轉換的過程中應該在BCD碼前加“16#”如圖所示,此指令一般配合時鐘指令使用
ASCII 字符數組轉換指令
(4)整數運算指令
整數運算指令又稱為數學(四則)運算指令,在實際應用使用比較廣泛,如模擬量轉換計算,脈沖長度計算等。四則運算指令除了加、減、乘、除以外還有遞增指令和遞減指令。根據數據類型的不一樣每個指令又分為對整數、雙整數、實數的運算;以及三角函數指令
加法指令
加法指令主要針對兩個數據相加的結果放在OUT端,其IN端可以是常數也能用寄存器來表示;同時在使用的過程中也會用到一些特殊的存儲器,如SM1.0 、SM1.1、SM1.2 這些特殊存儲器ON的時間取決于運算指令執行的時間長短
SM1.0 在兩個數相加后的結果為0時會為ON
SM1.1 在兩個數相加后的結果超過此指令數據類型的大范圍時會為ON
SM1.2 在兩個數相加后的結果為負數時會為ON
當多條指令參與運算時,需要判斷具體哪條指令是否有產生溢出或為0 及為負數時,應在每條指令下方添加特殊寄存器;如下圖所示
在實際的運算中,如果前面運算的結果要參與后面的運算時,應采用“與”的方式編寫而不能用“或”的方式;如下圖所示,當運算結果超出指令數據類型的大范圍時,后的運算結果會存儲出錯前的數值