西門子plc計數(shù)器指令
成都PLC控制柜為我們分解計數(shù)器指令包括增計數(shù)器、減計數(shù)器、增減計數(shù)器和高速計數(shù)器
增計數(shù)器
增計數(shù)指令(CTU)從當(dāng)前計數(shù)值開始,在每一個(CU)輸入狀態(tài)從低到高時遞增計數(shù)。當(dāng)CXX的當(dāng)前值大于等于預(yù)置值PV時,計數(shù)器位CXX置位。當(dāng)復(fù)位端(R)接通或者執(zhí)行復(fù)位指令后,計數(shù)器被復(fù)位。當(dāng)它達到大值(32,767)后,計數(shù)器停止計數(shù)。
減計數(shù)器
減計數(shù)指令(CTD)從當(dāng)前計數(shù)值開始,在每一個(CD)輸入狀態(tài)的低到高時遞減計數(shù)。當(dāng)CXX的當(dāng)前值等于0時,計數(shù)器位CXX置位。當(dāng)裝載輸入端(LD)接通時,計數(shù)器位被復(fù)位,并將計數(shù)器的當(dāng)前值設(shè)為預(yù)置值PV。當(dāng)計數(shù)值到0時,計數(shù)器停止計數(shù),計數(shù)器位CXX接通。
增/減計數(shù)器
增/減計數(shù)指令(CTUD),在每一個增計數(shù)輸入(CU)的低到高時增計數(shù),在每一個減計數(shù)輸入(CD)的低到高時減計數(shù)。計數(shù)器的當(dāng)前值CXX保存當(dāng)前計數(shù)值。在每一次計數(shù)器執(zhí)行時,預(yù)置值PV與當(dāng)前值作比較。當(dāng)達到大值(32767)時,在增計數(shù)輸入處的下一個上升沿導(dǎo)致當(dāng)前計數(shù)值變?yōu)樾≈?--32768)。當(dāng)達到小值(--32768)時,在減計數(shù)輸入端的下一個上升沿導(dǎo)致當(dāng)前計數(shù)值變?yōu)榇笾?32767)。當(dāng)CXX的當(dāng)前值大于等于預(yù)置值PV時,計數(shù)器位CXX置位。否則,計數(shù)器位關(guān)斷。當(dāng)復(fù)位端(R)接通或者執(zhí)行復(fù)位指令后,計數(shù)器被復(fù)位。當(dāng)達到預(yù)置值PV時,CTUD計數(shù)器停止計數(shù)。
PS:CXX代表的是計數(shù)器的名稱,是常數(shù)范圍時從C0到C25,由于每一個計數(shù)器只有一個當(dāng)前值,所以不要多次定義同一個計數(shù)器。(具有相同標(biāo)號的增計數(shù)器、增/減計數(shù)器、減計數(shù)器訪問相同的當(dāng)前值。)當(dāng)使用復(fù)位指令復(fù)位計數(shù)器時,計數(shù)器位復(fù)位并且計數(shù)器當(dāng)前值被清零。計數(shù)器標(biāo)號既可以用來表示當(dāng)前值,又可以用來表示計數(shù)器位。
減計數(shù)器應(yīng)用
當(dāng)I0.1斷開時,減計數(shù)器C1的當(dāng)前值從3變到0。I0.0的上升沿使C1的當(dāng)前值遞減。I0.1接通時裝載預(yù)置值3。當(dāng)計數(shù)器C1的當(dāng)前值=0時,C1接通。
增減計數(shù)器實例應(yīng)用
當(dāng) I0.0接通時,使用增計數(shù),計數(shù)器數(shù)值增加,當(dāng) I0.1接通時,使用減計數(shù),計數(shù)器數(shù)值減少,當(dāng)I0.2接通時, I0.2將當(dāng)前值復(fù)位為0,當(dāng)當(dāng)前值=4時,將增/減計數(shù)器C48接通,輸出Q0.0.
高速計數(shù)器
一般來說,高速計數(shù)器被用作驅(qū)動鼓式計時器,該設(shè)備有一個安裝了增量軸式編碼器的軸,以恒定的速度轉(zhuǎn)動。軸式編碼器每圈提供一個確定的計數(shù)值和一個復(fù)位脈沖。來自軸式編碼器的時鐘和復(fù)位脈沖作為高速計數(shù)器的輸入。高速計數(shù)器裝入一組預(yù)置值中的第一個值,當(dāng)前計數(shù)值小于當(dāng)前預(yù)置值時,希望的輸出有效。www.diangon.com版權(quán)所有。計數(shù)器設(shè)置成在當(dāng)前值等于預(yù)置值和有復(fù)位時產(chǎn)生中斷。隨著每次當(dāng)前計數(shù)值等于預(yù)置值的中斷事件的出現(xiàn),一個新的預(yù)置值被裝入,并重新設(shè)置下一個輸出狀態(tài)。當(dāng)出現(xiàn)復(fù)位中斷事件時,設(shè)置第一個預(yù)置值和第一個輸出狀態(tài),這個循環(huán)又重新開始。由于中斷事件產(chǎn)生的速率遠低于高速計數(shù)器的計數(shù)速率,用高速計數(shù)器可實現(xiàn)精確控制,而與plc整個掃描周期的關(guān)系不大。采用中斷的方法允許在簡單的狀態(tài)控制中用獨立的中斷程序裝入一個新的預(yù)置值。(同樣的,也可以在一個中斷服務(wù)程序中,處理所有的中斷事件。)
理解不同的高速計數(shù)器
對于操作模式相同的計數(shù)器,其計數(shù)功能是相同的。計數(shù)器共有四種基本類型:帶有內(nèi)部方向控制的單相計數(shù)器,帶有外部方向控制的單相計數(shù)器,帶有兩個時鐘輸入的雙相計數(shù)器和A/B相正交計數(shù)器。注意,并不是所有計數(shù)器都能使用每一種模式。您可以使用以下類型:無復(fù)位或啟動輸入,有復(fù)位無啟動輸入或既有啟動又有復(fù)位輸入。
- 當(dāng)激活復(fù)位輸入端時,計數(shù)器清除當(dāng)前值并一直保持到復(fù)位端失效。
- 當(dāng)激活啟動輸入端時,它允許計數(shù)器計數(shù)。當(dāng)啟動端失效時,計數(shù)器的當(dāng)前值保持為常數(shù),并且忽略時鐘事件。
- 如果在啟動輸入端無效的同時,復(fù)位信號被激活,則忽略復(fù)位信號,當(dāng)前值保持不變。如果在復(fù)位信號被激活的同時,啟動輸入端被激活,當(dāng)前值被清除。
在使用高速計數(shù)器之前,應(yīng)該用HDEF(高速計數(shù)器定義)指令為計數(shù)器選擇一種計數(shù)模式。使用初次掃描存儲器位SM0.1(該位僅在第一次掃描周期接通,之后斷開)來調(diào)用一個包含HDEF指令的子程序。
對于高速計數(shù)器來說,我們可以使用指令向?qū)砼渲糜嫈?shù)器。向?qū)С绦蚴褂孟铝行畔ⅲ河嫈?shù)器的類型和模式、計數(shù)器的預(yù)置值、計數(shù)器的初始值和計數(shù)的初始方向。要啟動HSC指令向?qū)?,可以在命令菜單窗口中選擇Tools >Instruction Wizard ,然后在向?qū)Т翱谥羞x擇HSC指令。對高速計數(shù)器編程,必須完成下列基本操作:定義計數(shù)器和模式、設(shè)置控制字節(jié)、設(shè)置初始值、 設(shè)置預(yù)置值、指定并使能中斷服務(wù)程序、激活高速計數(shù)器。
工作模式
高速計數(shù)器的初始化步驟舉例
以下以HSC1為例,對初始化和操作的步驟進行描述。在初始化描述中,假定S7--200已經(jīng)置成RUN模式。因此,首次掃描標(biāo)志位為真。如果不是這種情況,請記住在進入RUN模式之后,對每一個高速計數(shù)器的HDEF指令只能執(zhí)行一次。對一個高速計數(shù)器第二次執(zhí)行HDEF指令會引起運行錯誤,而且不能改變第一次執(zhí)行HDEF指令時對計數(shù)器的設(shè)置。PS:雖然下列步驟描述了如何分別改變計數(shù)方向、初始值和預(yù)置值,但完全可以在同一操作步驟中對全部或者任意參數(shù)組合進行設(shè)置,只要設(shè)置正確的SMB47然后執(zhí)行HSC指令即可。
初始化模式0、1或2
HSC1為內(nèi)部方向控制的單相增/減計數(shù)器(模式0、1或2),初始化步驟如下:
1. 用初次掃描存儲器位(SM0.1=1)調(diào)用執(zhí)行初始化操作的子程序。由于采用了這樣的子程序調(diào)用,后續(xù)掃描不會再調(diào)用這個子程序,從而減少了掃描時間,也提供了一個結(jié)構(gòu)優(yōu)化的程序。
2. 初始化子程序中,根據(jù)所希望的控制操作對SMB47置數(shù)。例如:
SMB47=16#F8 產(chǎn)生如下的結(jié)果:
允許計數(shù)
寫入新的初始值
寫入新的預(yù)置值
置計數(shù)方向為增
置啟動和復(fù)位輸入為高電平有效
3. 執(zhí)行HDEF指令時,HSC輸入置1,MODE輸入置0(無外部復(fù)位或啟動)或置1(有外部復(fù)位和無啟動)或置2(有外部復(fù)位和啟動)。
4. 向SMD48(雙字)寫入所希望的初始值(若寫入0,則清除)。
5. 向SMD52(雙字)寫入所希望的預(yù)置值。
6. 為了捕獲當(dāng)前值(CV)等于預(yù)置值(PV)中斷事件,編寫中斷子程序,并指定CV=PV中斷事件(事件號13)調(diào)用該中斷子程序。
7. 為了捕獲外部復(fù)位事件,編寫中斷子程序,并指定外部復(fù)位中斷事件(事件號15)調(diào)用該中斷子程序。
8. 執(zhí)行全局中斷允許指令(ENI)來允許HSC1中斷。
9. 執(zhí)行HSC指令,使S7--200對HSC1編程。
10. 退出子程序。
應(yīng)用實例
實例應(yīng)用2
在首次掃描時,調(diào)用SBR0,在首次掃描,配置HSC1:SMB48=16#F8意思就是使能計數(shù)器、寫初始值、寫預(yù)置值、設(shè)初始方向為增計數(shù)、選擇啟動和復(fù)位輸入高電平有效、選擇4倍速模式、配置HSC1為帶啟動和復(fù)位輸入的正交模式、SMD48=0表示清除HSC1的初始值。置HSC1的預(yù)置值為50。 當(dāng)HSC1的當(dāng)前值=預(yù)置值時,執(zhí)行INT_0。 全局中斷允許。執(zhí)行HSC1,執(zhí)行HSC1,清除HSC1的初始值、選擇寫入新的初始值和HSC1使能。