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