計(jì)數(shù)器
計(jì)數(shù)器利用輸入邊沿累積脈沖個(gè)數(shù),計(jì)數(shù)器又分為普通計(jì)數(shù)器和高速計(jì)數(shù)器S7-200 SMART CPU高速計(jì)數(shù)器專題(上篇)兩大類。200SMART系列對(duì)于普通計(jì)數(shù)器分為加計(jì)數(shù)、減計(jì)數(shù)、加減計(jì)數(shù)三類計(jì)數(shù)指令,計(jì)數(shù)器的使用與定時(shí)器基本類似,主要有預(yù)置寄存器、當(dāng)前值寄存器及狀態(tài)位組成。其范圍大小為C0-C255,存儲(chǔ)空間和定時(shí)器一樣均為一個(gè)字的存儲(chǔ)空間且為INT的數(shù)據(jù)類型。加減計(jì)數(shù)器指令遞增到最大數(shù)32767時(shí),此時(shí)再接通輸入端信號(hào)時(shí),則會(huì)變?yōu)樽钚≈?32768計(jì)數(shù)器指令格式 計(jì)數(shù)器指令本身是對(duì)信號(hào)輸入端的脈沖信號(hào)進(jìn)行計(jì)數(shù),所以無(wú)需再加上升沿指令加計(jì)數(shù)時(shí)序圖
CU為脈沖信號(hào)輸入管腳,R為計(jì)數(shù)器復(fù)位管腳,當(dāng)CU端產(chǎn)生一個(gè)脈沖信號(hào)時(shí),計(jì)數(shù)器C0的當(dāng)前值遞增1,當(dāng)當(dāng)前值大于或等于PV值時(shí),計(jì)數(shù)器的觸點(diǎn)發(fā)生變化,當(dāng)復(fù)位端信號(hào)為1 時(shí),計(jì)數(shù)器的當(dāng)前值會(huì)變?yōu)?減計(jì)數(shù)數(shù)序圖
加減計(jì)數(shù)時(shí)序圖
加減計(jì)數(shù)集成了加計(jì)數(shù)和減計(jì)數(shù)的功能,當(dāng)CU端信號(hào)由0變?yōu)? 時(shí),計(jì)數(shù)當(dāng)前值加1 ,當(dāng)CD端信號(hào)由0變?yōu)? 時(shí),計(jì)數(shù)當(dāng)前值減1 ,當(dāng)計(jì)數(shù)器的當(dāng)前值大于或等于PV值時(shí),計(jì)數(shù)器的觸點(diǎn)發(fā)生變化;當(dāng)復(fù)位端R為1 時(shí),計(jì)數(shù)器的當(dāng)前值會(huì)被清零常用功能指令(1)比較指令比較指令可分為以下幾種:字節(jié)比較指令、整數(shù)比較指令、雙整數(shù)比較指令、實(shí)數(shù)比較指令、字符串比較指令按照比較結(jié)果可分為=、≠、>、<、≥、≤指令格式
(2)數(shù)據(jù)移動(dòng)指令
塊傳送指令
(3)轉(zhuǎn)換指令
BCD碼轉(zhuǎn)整數(shù)時(shí)需要注意的是,BCD碼是用16進(jìn)制的方式進(jìn)行表示,所以在轉(zhuǎn)換的過程中應(yīng)該在BCD碼前加“16#”如圖所示,此指令一般配合時(shí)鐘指令使用
ASCII 字符數(shù)組轉(zhuǎn)換指令
(4)整數(shù)運(yùn)算指令整數(shù)運(yùn)算指令又稱為數(shù)學(xué)(四則)運(yùn)算指令,在實(shí)際應(yīng)用使用比較廣泛,如模擬量轉(zhuǎn)換計(jì)算,脈沖長(zhǎng)度計(jì)算等。四則運(yùn)算指令除了加、減、乘、除以外還有遞增指令和遞減指令。根據(jù)數(shù)據(jù)類型的不一樣每個(gè)指令又分為對(duì)整數(shù)、雙整數(shù)、實(shí)數(shù)的運(yùn)算;以及三角函數(shù)指令
加法指令
加法指令主要針對(duì)兩個(gè)數(shù)據(jù)相加的結(jié)果放在OUT端,其IN端可以是常數(shù)也能用寄存器來(lái)表示;同時(shí)在使用的過程中也會(huì)用到一些特殊的存儲(chǔ)器,如SM1.0 、SM1.1、SM1.2 這些特殊存儲(chǔ)器ON的時(shí)間取決于運(yùn)算指令執(zhí)行的時(shí)間長(zhǎng)短
SM1.0 在兩個(gè)數(shù)相加后的結(jié)果為0時(shí)會(huì)為ON SM1.1 在兩個(gè)數(shù)相加后的結(jié)果超過此指令指定數(shù)據(jù)類型的最大范圍時(shí)會(huì)為ON SM1.2 在兩個(gè)數(shù)相加后的結(jié)果為負(fù)數(shù)時(shí)會(huì)為ON 當(dāng)多條指令參與運(yùn)算時(shí),需要判斷具體哪條指令是否有產(chǎn)生溢出或?yàn)? 及為負(fù)數(shù)時(shí),應(yīng)在每條指令下方添加特殊寄存器;如下圖所示
在實(shí)際的運(yùn)算中,如果前面運(yùn)算的結(jié)果要參與后面的運(yùn)算時(shí),應(yīng)采用“與”的方式編寫而不能用“或”的方式;如下圖所示,當(dāng)運(yùn)算結(jié)果超出指令指定數(shù)據(jù)類型的最大范圍時(shí),最后的運(yùn)算結(jié)果會(huì)存儲(chǔ)出錯(cuò)前的數(shù)值
未完待續(xù)