普通計數器的計數速度與PLC的掃描周期有關,掃描周期越長,計數速度越慢,即計數頻率越低,一般僅為幾十赫茲,因而普通計數器適用于計數速度要求不高的場合。
為了滿足高速計數要求,S7-200 SMART PLC專門設計了高速計數器,其計數速度很快,C型CPU(CR40、CR60)的計數頻率最高為100kHz,S型CPU(SR20、ST20……SR60、ST60)最高計數頻率達200kHz,均不受PLC掃描周期的影響。
S7-200 SMART PLC支持HSC0~HSC3四個高速計數器,高速計數器有0、1、3、4、6、7、9、10共八種計數模式,HSC0 和 HSC2 支持八種計數模式(模式 0、1、3、4、6、7、9和10),HSC1 和 HSC3 只支持一種計數模式(模式 0)。
一、高速計數器指令說明
高速計數器指令包括高速計數器定義指令(HDEF)和高速計數器指令(HSC)。
高速計數器指令說明如表6-61所示。
表6-61 高速計數器指令說明
二、高速計數器的計數模式
S7-200 SMART PLC高速計數器有八種計數模式:模式0和1(內部控制方向的單相加/減計數),模式1具有外部復位功能;模式3和4(外部控制方向的單相加/減計數),模式4具有外部復位功能;模式6和7(雙相脈沖輸入的加/減計數),模式7具有外部復位功能;模式9和10(雙相脈沖輸入的正交加/減計數),模式10具有外部復位功能。
1.模式0和1(內部控制方向的單相加/減計數)在模式0和1時,只有一路脈沖輸入,計數器的計數方向(即加計數或減計數)由PLC特定SM存儲器某位值來決定,該位值為1時為加計數,該位值為0時為減計數。模式0和1說明如圖6-47所示,以高速計數器HSC0為例,它采用I0.0端子為計數脈沖輸入端,SM37.3的位值決定計數方向,SMD42用于寫入計數預設值。當高速計數器的計數值達到預設值時會產生中斷請求,觸發中斷程序的執行。
模式0和1的區別在于模式1具有外部復位功能,可以通過PLC特定的輸入端子輸入復位信號將計數器復位,模式0無此功能。模式0和1最大允許輸入脈沖頻率為200kHz(S 型CPU)和100kHz(C型CPU)。
圖6-47 模式0和1(內部控制方向的單相加/減計數)說明
2.模式3和4(外部控制方向的單相加/減計數)
在模式3和4時,只有一路脈沖輸入,計數器的計數方向由PLC特定輸入端子的輸入值來決定,該輸入值為1時為加計數,該輸入值為0時為減計數。模式3和4說明如圖6-48所示,以高速計數器HSC4為例,它采用I0.3端子作為計數脈沖輸入端,I0.4端子輸入值決定計數方向,SMD152用于寫入計數預設值。
模式3和4的區別在于模式4具有外部復位功能,可以通過PLC特定的輸入端子輸入復位信號將計數器復位,模式3無此功能。模式3和4最大允許輸入脈沖頻率為200kHz(S 型CPU)和100kHz(C 型CPU)。
圖6-48 模式3和4(外部控制方向的單相加/減計數)說明
3.模式6和7(雙相脈沖輸入的加/減計數)
在模式6和7時,有兩路脈沖輸入端,一路為加計數輸入端,另一路為減計數輸入端。模式6和7說明如圖6-49所示,以高速計數器HSC0為例,當其工作模式為6時,它采用I0.0端子作為加計數脈沖輸入端,I0.1為減計數脈沖輸入端,SMD42用于寫入計數預設值。
圖6-49 模式6和7(雙相脈沖輸入的加/減計數)說明
模式6和7的區別在于模式7具有外部復位功能,可以通過PLC特定的輸入端子輸入復位信號將計數器復位,模式6無此功能。模式6和7最大允許輸入脈沖頻率為100 kHz(S 型CPU)和50 kHz(C 型CPU)。
4.模式9和10(雙相脈沖輸入的正交加/減計數)
在模式9和10時,有兩路脈沖輸入端,一路為A脈沖輸入端,另一路為B脈沖輸入端,A、B脈沖相位相差90°(即正交,A、B兩脈沖相差1/4周期)。若A脈沖超前B脈沖90°,則為加計數;若A脈沖滯后B脈沖90°,則為減計數。在這種計數模式下,可選擇1×方式或4×方式,1×模式又稱單倍頻方式,當輸入一個脈沖時計數器值增1或減1;4×模式又稱四倍頻方式,當輸入一個脈沖時計數器值增4或減4。模式9和10的1×方式和4×方式說明如圖6-50所示。
模式9和10的區別在于模式10具有外部復位功能,可以通過PLC特定的輸入端子輸入復位信號將計數器復位,模式9無此功能。在模式9和10時, S型 CPU的最大允許輸入脈沖頻率為100kHz(1×方式時)和400kHz(4×方式時),C型 CPU的最大允許輸入脈沖頻率為50kHz(1×方式時)和400kHz(4×方式時)。
圖6-50 模式9和10(雙相脈沖輸入的正交加/減計數)說明
三、高速計數器分配的輸入端子及在各工作模式下的功能
高速計數器工作時需要使用一些輸入端子,HSC0~HSC3高速計數器分配的輸入端子及在不同工作模式下端子的功能見表6-62。同一個輸入端子不能用于兩種不同的功能,但是任何一個沒有被高速計數器當前模式使用的輸入端子,均可以用作其他用途。例如,HSC0計數器工作在模式1時,會分配占用I0.0端子用于脈沖輸入,I0.4端子用于復位信號輸入,I0.1端子在模式1時未使用,可以用作HSC1計數器工作在模式0時的脈沖輸入端子。
表6-62 HSC0~HSC3高速計數器分配的輸入端子及在不同工作模式下端子的功能
四、高速計數器輸入端子濾波時間的設置
由于PLC使用時大多數情況下輸入信號頻率較低,為了抑制高頻信號的干擾,輸入端子的默認濾波時間為6.4ms,該濾波時間較長,最高只允許78Hz信號輸入。如果要將某些端子用于高速計數器輸入,需要將這些端子的濾波時間設短。表6-63列出了PLC輸入端子濾波時間與對應的最大檢測頻率。
表6-63 PLC輸入端子濾波時間與對應的最大檢測頻率
注:1.S型號CPU包括SR20、ST20、SR30、ST30、SR40、ST40、SR60、ST60。
2.C型號CPU包括CR40、CR60。
在STEP 7-Micro/WIN SMART軟件中可以設置(組態)PLC輸入端子的濾波時間,設置操作如圖6-51所示。在項目指令樹區域雙擊“系統塊”,彈出“系統塊”對話框;在對話框上方選中CPU模塊,在左邊選擇數字量輸入項內的I0.0~I0.7,然后在右邊對高速計數器使用的端子進行濾波時間設置;先勾選端子旁“脈沖捕捉”選項,再根據計數可能的最大頻率來選擇合適的濾波時間,不用作高速計數器的輸入端子濾波時間保持默認值;單擊“確定”按鈕關閉“系統塊”對話框,將系統塊下載到CPU模塊即可使濾波時間設置生效。
圖6-51 在編程軟件的系統塊內設置輸入端子的濾波時間
五、高速計數器的控制字節
高速計數器定義HDEF指令只能讓某編號的高速計數器工作在某種模式,無法設置計數器的方向、復位等內容。為此,每個高速計數器都配備了一個專用的控制字節來對計數器進行各種控制設置。
1.控制字節功能說明
高速計數器HSC0~HSC3的控制字節各位功能說明見表6-64。例如,高速計數器HSC0的控制字節為SMB37,其中SM37.0位用來設置復位有效電平,當該位為0時高電平復位有效,該位為1時低電平復位有效。
表6-64 高速計數器HSC0~HSC3的控制字節各位功能說明
2.控制字節設置舉例
用控制字節設置高速計數器如圖6-52所示。PLC第一次掃描時SM0.1觸點接通一個掃描周期,首先MOV_B指令執行,將十六進制數F8(即11111000)送入SMB37單元,則SM37.7~SM37.0為11111000,這樣就將高速計數器HSC0的復位設為高電平,正交計數設為4×模式;然后HDEF指令執行,將HSC0工作模式設為模式10。
圖6-52 用控制字節設置高速計數器
六、高速計數器計數值的讀取與設置
1.計數值的讀取
高速計數器的當前計數值保存在HC存儲單元中,高速計數器HSC0~HSC3的當前值分別保存在HC0~HC3單元中,這些單元中的數據為只讀類型,即不能向這些單元寫入數據。
圖6-53 高速計數器計數值的讀取
高速計數器計數值的讀取如圖6-53所示。當I0.0觸點由斷開轉為閉合時,上升沿P觸點接通一個掃描周期,MOV_DW指令執行,將高速計數器HSC0的當前計數值(保存在HC0單元)讀入并保存在VD200單元。
2.計數值的設置
每個高速計數器都用兩個專用存儲單元分別存放當前計數值(CV)和預設計數值(PV),這兩個值都是32位(雙字)。在高速計數器工作時,當CV=PV時會觸發HSC中斷。當前計數值可從HC單元中讀取,預設值則無法直接讀取。要將新的CV值或PV值載入高速計數器,必須先設置相應的控制字節和專用雙字存儲單元,再執行HSC指令以將新值傳送到高速計數器。
HSC0~HSC3高速計數器存放CV值和PV值的專用存儲單元見表6-65。例如,高速計數器HSC0采用SMD38雙字單元存放新CV值,采用SMD42雙字單元存放新PV值。
表6-65 HSC0~HSC3高速計數器存放CV值和PV值的專用存儲單元
高速計數器計數值的設置如圖6-54所示。當I0.2觸點由斷開轉為閉合時,上升沿P觸點接通一個掃描周期,首先第1個MOV_DW指令執行,將新CV值(當前計數值)“100”送入SMD38單元;然后第2個MOV_DW指令執行,將新PV值(預設計數值)“200”送入SMD42單元;接著高速計數器HSC0的控制字節中的SM37.5、SM37.6兩位均得電為1,允許HSC0更新CV值和PV值;最后HSC指令執行,將新CV值和PV值載入高速計數器HSC0。
圖6-54 高速計數器計數值的設置
在執行HSC指令前,設置控制字節和修改SMD單元中的新CV值、PV值不會影響高速計數器的運行;只有執行HSC指令后,高速計數器才按新設置值開始工作。
七、高速計數器的狀態字節
每個高速計數器都有一個控制字節和一個狀態字節,控制字節用來設置控制計數器的工作,狀態字節則用來反映計數器的一些工作狀態。HSC0~HSC3高速計數器的狀態字節見表6-66,其中每個狀態字字節的0~4位不用。監視高速計數器狀態字節的狀態位值,除了可以了解計數器當前的工作狀態外,還可以用狀態位值來觸發其他操作。例如,當SM36.6=1時,表示HSC0的當前計數值正好等于預設值,可以用SM36.6=1觸發執行一段程序。
表6-66 HSC0~HSC3高速計數器的狀態字節
八、高速計數器的編程步驟與舉例
1.高速計數器的編程步驟
高速計數器的編程較為復雜,一般步驟如下。根據計數要求設置高速計數器的控制字節。例如,讓HSC1的控制字節SMB47=16#F8,則將HSC1設為允許計數、允許寫入計數初始值、允許寫入計數預設值、更新計數方向為加計數、正交計數為4×模式、高電平復位。執行HDEF指令,將某編號的高速計數器設為某種工作模式。將計數初始值寫入當前值存儲器。當前值存儲器是指SMD38、SMD48、SMD58和SMD138。將計數預設值寫入預設值存儲器。預設值存儲器是指SMD42、SMD52、SMD62和SMD142。如果往預設值存儲器寫入16#00,則高速計數器不工作。為了捕捉當前值(CV)等于預設值(PV),可用中斷連接ATCH指令將條件CV=PV中斷事件(HSC0的CV=PV對應中斷事件12)與某中斷程序連接起來。為了捕捉計數方向改變,可用中斷連接ATCH指令將方向改變中斷事件(HSC0的方向改變對應中斷事件27)與某中斷程序連接起來。為了捕捉計數器外部復位,可用中斷連接ATCH指令將外部復位中斷事件(HSC0的外部復位對應中斷事件28)與某中斷程序連接起來。執行中斷允許ENI指令,允許系統接受高速計數器(HSC)產生的中斷請求。執行HSC指令,啟動某高速計數器按前面的設置工作。編寫相關的中斷程序。
2.高速計數器的編程舉例
高速計數器的編程舉例見表6-67,整個程序由MAIN(主程序)、SBR_0(子程序0)和INT_0(中斷程序0)組成。
PLC進入RUN模式第一次掃描時,主程序中的SM0.1觸點接通一個掃描周期,執行調用子程序SBR_0指令,程序轉入執行SBR_0子程序。在子程序SBR_0中,對高速計數器HSC0進行初始化設置,設置內容有:用MOV_B指令設置HSC0的控制字節SMB37;用HDEF指令讓HSC0工作在模式10;用MOV_DW指令將HSC0當前值(CV)存儲器SMD38清0;用MOV_DW指令往HSC0的計數預設值(PV)存儲器SMD42中寫入PV值;用ATCH指令將中斷事件12(HSC0的CV=PV時觸發的事件)與中斷程序INT_0關聯起來;用ENI指令打開所有的中斷;用HSC指令使設置生效并啟動HSC0工作。
表6-67 高速計數器的編程舉例
高速計數器HSC0啟動后開始計數,當HSC0的當前計數值(CV)等于計數預設值(PV)時,觸發中斷事件12,由于已將中斷事件12與中斷程序INT_0關聯起來,故馬上執行中斷程序INT_0。在INT_0程序中,先用MOV_DW指令將HSC0當前值(CV)存儲器SMD38清0,再用MOV_B指令重新設置HSC0的控制字節SMB37,然后用HSC指令使新設置生效并啟動HSC0重新工作。
高速計數器HSC0每計數到CV=PV時都會產生中斷,執行一次中斷程序INT_0;執行中斷程序后,HSC0又按新的設置重新開始計數,以后不斷重復這個過程。
審核編輯:湯梓紅
-
plc
+關注
關注
5010文章
13271瀏覽量
463056 -
SMART
+關注
關注
3文章
224瀏覽量
44681 -
指令
+關注
關注
1文章
607瀏覽量
35693 -
計數器
+關注
關注
32文章
2256瀏覽量
94477 -
S7-200
+關注
關注
13文章
408瀏覽量
50380
原文標題:一篇文章搞懂:S7-200 SMART PLC高速計數器指令!
文章出處:【微信號:中泰PLC自動化教學,微信公眾號:中泰PLC自動化教學】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論