湖北西門子S7-1200PLC代理經(jīng)銷優(yōu)勢(shì)價(jià)格

西門子S7-200 PLC的高速計(jì)數(shù)器的應(yīng)用舉例
(1)主程序。如圖3-124上部的MAIN OB1所示,用*掃描時(shí)接通一個(gè)掃描周期的特殊內(nèi)部存儲(chǔ)器SM0.1去調(diào)用一個(gè)子程序,完成初始化操作。
LD SM0.1 //*掃描時(shí),
CALL SBR_0 //調(diào)用子程序SBR_0
(2)初始化的子程序。如圖3-124中部的SUBROUTIME 0所示,*條指令設(shè)置為SMB47=16#F8,設(shè)定高速計(jì)數(shù)器為允許計(jì)數(shù)、更新當(dāng)前值、更新預(yù)置值、更新計(jì)數(shù)方向?yàn)榧佑?jì)數(shù)、設(shè)定啟動(dòng)輸入和復(fù)位輸入為高電平有效、正交計(jì)數(shù)設(shè)為4×模式;第二條指令是定義HSC1的工作模式為模式11(兩路脈沖輸入的雙相正交計(jì)數(shù),具有復(fù)位和啟動(dòng)輸入功能);第三條指令是對(duì)SMD48清0,這是清除HSC1的當(dāng)前值;第四條指令是設(shè)定HSC1的預(yù)置值SMD52=50;第五條指令是當(dāng)前值等于預(yù)設(shè)值時(shí)產(chǎn)生中斷(中斷事件13),中斷事件13連接中斷程序INT_0;第六條指令是設(shè)定全局開中斷;第七條指令是對(duì)HSC1編程。
LD SM0.1 //*掃描時(shí)
MOVB 16#F8 SMB47 /,設(shè)置HSC1控制字
HDEF 1,11 /,將HSC1設(shè)置為模式11
MOVD +0,SMD48 //HSC1的當(dāng)前值清0
MOVD +50,SMD52 //將HSC1預(yù)設(shè)值設(shè)為50
ATCH INT_0,13 //CV=PV(中斷事件13),調(diào)用中斷程序INT_0
ENI //允許全局中斷
HSC 1 //執(zhí)行HSC1指令
(3)中斷程序INT_0。如圖3-125下部的INTERRUPT 0所示,*條指令是把0送到SMD48中,對(duì)HSC1當(dāng)前值清0;第二條指令把16#CO送入SMB47,設(shè)定HSC1允許更新當(dāng)前值;第三條指令是對(duì)HSC1編程。后面還可以增加指令用以記錄中斷次數(shù),或者說記錄HSC1從0計(jì)數(shù)到50的次數(shù)。
LD SM0.0
MOVD +0,SMD48 //HSC1的當(dāng)前值清0
MOVB 16#C0,SMB47 //只寫入一個(gè)新當(dāng)前值,預(yù)置值不變,計(jì)數(shù)方向不變,HSC1允許計(jì)數(shù)
HSC 1 //執(zhí)行HSC1指令
高速計(jì)數(shù)器指令的初始化的步驟如下所示。
1)用*掃描時(shí)接通一個(gè)掃描周期的特殊內(nèi)部存儲(chǔ)器SM0.1去調(diào)用一個(gè)子程序,完成初始化操作。因?yàn)椴捎昧俗映绦颍栽陔S后的掃描中不必再調(diào)用這個(gè)子程序,以減少掃描時(shí)間,使程序結(jié)構(gòu)更好。
2)在初始化的子程序中,根據(jù)控制目標(biāo)設(shè)置控制字(SMB37、SMB47、SMB57、SMB137、SMB147、SMB157),如設(shè)置SMB47=16#F8,則為:允許計(jì)數(shù),寫入新當(dāng)前值,寫入新預(yù)置值,更新計(jì)數(shù)方向?yàn)榧佑?jì)數(shù),若為正交計(jì)數(shù)設(shè)為4X,復(fù)位和啟動(dòng)設(shè)置為高電平有效。
3)執(zhí)行HDEF指令,設(shè)置HSC的編號(hào)(0~5),設(shè)置工作模式(0~11)。如HSC的編號(hào)設(shè)置為1,工作模式輸入設(shè)置為11,則為既有復(fù)位又有啟動(dòng)的正交計(jì)數(shù)工作模式。

4)將新的當(dāng)前值寫入32位當(dāng)前值寄存器(SMD38,SMD48,SMD58,SMD138,SMD148,SMD158)。如寫入0,則清除當(dāng)前值,用指令“MOVD 0,SMD48”實(shí)現(xiàn)。
5)將新的預(yù)置值寫入32位預(yù)置值寄存器( SMD42,SMD52,SMD62,SMD142,SMD152,SMD162)。如執(zhí)行指令“MOVD 1000,SMD52”,則設(shè)置預(yù)置值為1000。若寫入預(yù)置值為16#00,則高速計(jì)數(shù)器處于不工作狀態(tài)。
6)設(shè)置中斷。為了捕捉當(dāng)前值等于預(yù)置值的事件,將條件CV=PV中斷事件(事件13)與一個(gè)中斷程序相聯(lián)系,對(duì)中斷進(jìn)行編程;為了捕捉計(jì)數(shù)方向的改變,將方向改變的中斷事件(事件14)與一個(gè)中斷程序相聯(lián)系,對(duì)中斷進(jìn)行編程;為了捕捉外部重置復(fù)位事件,將外部復(fù)位中斷事件(事件15)與一個(gè)中斷程序相聯(lián)系,對(duì)中斷進(jìn)行編程。
7)執(zhí)行全局中斷允許指令( ENI),允許HSC中斷。
8)執(zhí)行HSC指令,使S7-200對(duì)高速計(jì)數(shù)器進(jìn)行編程。
9)結(jié)束子程序。
1)每個(gè)高速計(jì)數(shù)器都有一個(gè)32位當(dāng)前值和一個(gè)32位預(yù)置值,當(dāng)前值和預(yù)設(shè)值均為帶符號(hào)的整數(shù)值。要設(shè)置高速計(jì)數(shù)器的新當(dāng)前值和新預(yù)置值,必須設(shè)置控制字節(jié),令其第5位和第6位為1,允許更新預(yù)置值和當(dāng)前值,新當(dāng)前值和新預(yù)置值寫入特殊內(nèi)部標(biāo)志位存儲(chǔ)區(qū)。然后執(zhí)行HSC指令,將新數(shù)值傳輸?shù)礁咚儆?jì)數(shù)器。
2)執(zhí)行HDEF指令之前,必須將高速計(jì)數(shù)器控制字節(jié)的位設(shè)置成需要的狀態(tài),否則將采用默認(rèn)設(shè)置。默認(rèn)設(shè)置為:復(fù)位和啟動(dòng)輸入高電平有效,正交計(jì)數(shù)速率選擇4×模式。執(zhí)行HDEF指令后,就不能再改變計(jì)數(shù)器的設(shè)置,除非CPU進(jìn)入停止模式。
3)執(zhí)行HSC指令時(shí),CPU檢查控制字節(jié)和有關(guān)的當(dāng)前值和預(yù)置值。
1)高速計(jì)數(shù)器定義指令HDEF用來高速計(jì)數(shù)器(HSC x)的工作模式。選擇了工作模式即選擇了高速計(jì)數(shù)器的輸入脈沖、計(jì)數(shù)方向、復(fù)位和啟動(dòng)功能。每個(gè)高速計(jì)數(shù)器只能用一條高速計(jì)數(shù)器定義指令。高速計(jì)數(shù)器中的4個(gè)計(jì)數(shù)器擁有三個(gè)控制位,用于配置重置(復(fù)位)、起始輸入(啟動(dòng))的激活狀態(tài)和選擇1×或4×計(jì)數(shù)模式(只用于正交計(jì)數(shù)器)。這些位處于計(jì)數(shù)器的控制字節(jié)內(nèi),只有在執(zhí)行HDEF指令時(shí)才使用。執(zhí)行HDEF指令之前,必須將這些控制位設(shè)定成要求的狀態(tài),否則,計(jì)數(shù)器對(duì)所選計(jì)數(shù)器模式采用默認(rèn)配置。重置輸入及起始輸入的默認(rèn)設(shè)定是高電平有效,正交計(jì)數(shù)速率為4×(或輸入時(shí)鐘頻率的4倍)。一旦執(zhí)行HDEF指令,則不可改變計(jì)數(shù)器設(shè)定,除非首先將PLC置于停止模式。
高速計(jì)數(shù)器定義指令由助記符或操作碼HDEF、使能端EN(語句表中由前一條語句決定)、編號(hào)HSC、工作模式MODE構(gòu)成。

高速計(jì)數(shù)器定義指令允許時(shí),計(jì)數(shù)器號(hào)HSC及工作模式MODE被確定,須注意的是HDEF指令只能用一次(如對(duì)某高速計(jì)數(shù)器執(zhí)行兩次HDEF指令,將產(chǎn)生運(yùn)行錯(cuò)誤而且不會(huì)改變*次執(zhí)行HDEF指令后對(duì)計(jì)數(shù)器的設(shè)定),HSC的編號(hào)和HDEF的編號(hào)要符合表3-30的規(guī)定。
數(shù)據(jù)范圍:
高速計(jì)數(shù)器使能端EN:I、Q、M、SM、T、C、V、S、L。
高速計(jì)數(shù)器編號(hào)HSC:常數(shù)0、1、2、3、4、5。
高速計(jì)數(shù)器工作模式MODE:常量0、1、2、3、4、5、6、7、8、9、10、11。
2)高速計(jì)數(shù)器編程指令HSC,根據(jù)高速計(jì)數(shù)器控制位的狀態(tài)HDEF指令的工作模式控制高速計(jì)數(shù)器,參數(shù)N高速計(jì)數(shù)器的編號(hào)。在定義高速計(jì)數(shù)器之后,在重置(復(fù)位)、更新當(dāng)前值、更新預(yù)置值時(shí),都要應(yīng)用高速計(jì)數(shù)器編程的HSC指令對(duì)其編程,只有經(jīng)過編程,高速計(jì)數(shù)器才能運(yùn)行。
高速計(jì)數(shù)器編程指令由助記符或操作碼HSC、使能端EN(語句表中由前一條語句決定)和對(duì)高速計(jì)數(shù)器進(jìn)行編程的計(jì)數(shù)器編號(hào)N構(gòu)成。
高速計(jì)數(shù)器編程指令允許時(shí),對(duì)高速計(jì)數(shù)器N進(jìn)行的一系列新操作,可用被S7-200進(jìn)行編程,高速計(jì)數(shù)器新的功能生效。
數(shù)據(jù)范圍:
編程指令使能端EN:I、Q、M、SM、T、C、V、S、L。
高速計(jì)數(shù)器編號(hào)N:常數(shù)0、1、2、3、4、5。
高速計(jì)數(shù)器指令格式見表3-35。

湖北西門子S7-1200PLC代理經(jīng)銷優(yōu)勢(shì)價(jià)格