高速計數器尋址
CPU 將每個高速計數器的測量值,存儲在輸入過程映像區內,數據類型為 32 位雙整型有符號數,用戶可以在設備組態中修改這些存儲地址,在程序中可直接訪問這些地址,但由於過程映像區受掃描週期影響,讀取到的值並不是當前時刻的實際值,在一個掃描週期內,此數值不會發生變化,但計數器中的實際值有可能會在一個週期內變化,用戶無法讀到此變化。用戶可通過讀取外設地址的方式,讀取到當前時刻的實際值。以 ID1000 為例,其外設地址為 “ID1000:P”。表1. 所示為高速計數器尋址列表。
表1.高速計數器尋址
高速計數器號
數據類型
默認地址
HSC1
DINT
ID1000
HSC2
DINT
ID1004
HSC3
DINT
ID1008
HSC4
DINT
ID1012
HSC5
DINT
ID1016
HSC6
DINT
ID1020
中斷功能
S7-1200 在高速計數器中提供了中斷功能,用以處理某些特定條件下觸發的程序
共有 3 種中斷事件:
1.當前值等於預置值
2.使用外部信號復位
3.帶有外部方向控制時,計數方向發生改變
頻率測量
S7-1200 除了提供計數功能外,還提供了頻率測量功能,有 3 種不同的頻率測量週期:1.0 秒,0.1 秒和0.01 秒。
頻率測量週期是這樣定義的:計算並返回新的頻率值的時間間隔。返回的頻率值為上一個測量週期中所有測量值的平均,無論測量週期如何選擇,測量出的頻率值總是以 Hz (每秒脈衝數)為單位。
高速計數器指令塊
高速計數器指令塊,需要使用指定背景數據塊用於存儲參數,如圖1所示。
圖1.高速計數器指令塊
表2.高速計數器參數說明
HSC (HW_HSC)
高速計數器硬件識別號
DIR (BOOL) TRUE
: 使能新方向
CV (BOOL) TRUE
: 使能新起始值
RV (BOOL) TRUE
: 使能新參考值
PERIODE (BOOL) TRUE
: 使能新頻率測量週期
NEW_DIR (INT)
: 方向選擇1:=正向;-1 :=反向
NEW_CV (DINT)
: 新起始值
NEW_RV (DINT)
: 新參考值
NEW_PERIODE (INT)
: 新頻率測量週期
表3.STATUS 錯誤代碼
錯誤代碼(十六進制)
描述
0
無錯誤
80A1
高速計數器的硬件標識符無效
80B1
計數方向 (NEW_DIR) 無效
80B2
計數值 (NEW_CV) 無效
80B3
參考值 (NEW_RV) 無效
80B4
頻率測量週期 (NEW_PERIOD) 無效
80C0
多次訪問高速計數器
應用舉例
假設在旋轉機械上有單相增量編碼器作為反饋,接入到S7-1200 CPU,要求在計數25個脈衝時,計數器復位,置位 M0.5,並設定新預置值為50個脈衝,當計滿50個脈衝後復位M0.5,並將預置值再設為25,週而復始執行此功能。
針對此應用,選擇CPU 1214C,高速計數器為:HSC1。模式為:單相計數,內部方向控制,無外部復位。據此,脈衝輸入應接入I0.0,使用HSC1的預置值中斷(CV=RV)功能實現此應用。
組態步驟:
先在設備與組態中,選擇CPU,單擊屬性,激活高速計數器,並設置相關參數。此步驟必須事先執行,1200的高速計數器功能必須要先在硬件組態中激活,才能進行下面的步驟。添加硬件中斷塊,關聯相對應的高速計數器所產生的預置值中斷,在中斷塊中添加高速計數器指令塊,編寫修改預置值程序,設置復位計數器等參數。將程序下載,執行功能。
硬件組態
選中CPU如圖1.所示。
圖1.選中CPU
圖2.所示為選擇屬性打開組態界面
圖2.選擇屬性打開組態界面
激活高速計數功能如圖3
圖3.激活高速計數功能
計數類型,計數方向組態如圖4所示
圖4.計數類型,計數方向
1 此處計數類型分為3種,Axis of motion(運動軸),Frequency(頻率測量),Counting(計數)。這裡選擇Counting
2 模式分為4種:Single phase(單相), Two phase(雙相), AB Quadrature 1X(A/B相正交1倍速), ABQuadrature 4X(A/B相正交4倍速)。這裡擇Single phase
3 輸入源,這裡使用的為CPU集成輸入點。
4 計數方向選擇,這裡選用User program (internal direction control)(內部方向控制)
5初始計數方向。這裡選擇Count up(向上計數)
初始值及復位組態如圖5.
圖5.初始值及復位組態
預置值中斷組態如圖6
圖6. 預置值中斷組態
圖7.添加硬件中斷
組態添加的硬件中斷,如圖8
圖8.組態添加的硬件中斷
圖9.地址分配與硬件識別號
至此硬件組態部分已經完成,下面進行程序編寫
程序編寫
將高速計數指令塊添加到硬件中斷中
圖10. 打開硬件中斷塊
圖11.添加高速計數器
圖12. 定義高速計數器背景數據塊
程序視圖如圖13
圖13. 程序視圖
1這裡就是圖9中系統指定的高速計數器硬件識別號,這裡填1
注意:應根據CPU屬性裡的硬件標識符設置該值, 如硬件標識符為257,應將指令輸入的 HSC 值從 1 改為 257,如下圖 14 所示:
圖 14. 硬件標識符
2 1為使能更新初值;
3 1為使能更新預置值;
4 新的初始值;
5 新的預置值。
至此程序編制部分完成,將完成的組態與程序下載到CPU後即可執行,當前的計數值可在ID1000中讀出 ,關於高速計數器指令塊,若不需要修改硬件組態中的參數,可不需要調用,系統仍然可以計數。
閱讀更多 程控教育王老師 的文章