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