高級工程師的項目:高速計數器使用案例,含程序


假設在旋轉機械上有單相增量編碼器作為反饋,接入到S7-1200 CPU,要求在計數25個脈沖時,計數器復位,置位 M0.5,并設定新預置值為50個脈沖,當計滿50個脈沖后復位M0.5,并將預置值再設為25,周而復始執行此功能。



針對此應用,選擇CPU 1214C,高速計數器為:HSC1。模式為:單相計數,內部方向控制,無外部復位。脈沖輸入接入I0.0,使用HSC1的預置值中斷(CV=RV)功能實現此應用。
組態步驟:


先在設備與組態中,選擇CPU,單擊屬性,激活高速計數器,并設置相關參數。此步驟必須事先執行,S7-1200的高速計數器功能必須要先在硬件組態中激活,才能進行下面的步驟。添加硬件中斷塊,關聯相對應的高速計數器所產生的預置值中斷,在中斷塊中添加高速計數器指令塊,編寫修改預置值程序,設置復位計數器等參數。將程序下載,執行功能。

硬件組態

如圖1所示,進入CPU的硬件視圖。

圖1.選中CPU

高級工程師的項目:高速計數器使用案例,含程序的圖1


①展開PLC,左鍵雙擊設備組態

②在CPU硬件視圖,左鍵選中CPU

如圖2所示,啟用高速計數器。

圖2.選擇屬性打開組態界面

高級工程師的項目:高速計數器使用案例,含程序的圖2


①左鍵選擇屬性

②在導航欄中選擇“高速計數器(HSC)”,在HSC1中選擇“常規”

③勾選“啟用該高速計數器”

如圖3所示,設置高速計數器基本設置。

高級工程師的項目:高速計數器使用案例,含程序的圖3

圖3.激活高速計數功能

①在HSC1中選擇"功能"

②計數類型選擇“計數”

③工作模式選擇“單相”

④計數方向取決于選擇“用戶程序(內部方向控制)”

⑤初始計數方向選擇“加計數”
如圖4所示,設置計數器初始值。
圖4. 計數器初始值
高級工程師的項目:高速計數器使用案例,含程序的圖4①在HSC1中選擇"初始值"

②初始計數器值設置“0”

③初始參考值設置“25”

如圖5所示,組態事件。
圖5.事件組態

高級工程師的項目:高速計數器使用案例,含程序的圖5

①在HSC1中選擇"事件組態"

②激活“為計數器值等于參考值這一事件生成中斷”

③左鍵點擊該按鈕在彈出頁面選擇所需的硬件中斷

④如果沒有硬件中斷或者沒有所需要的硬件中斷,則左鍵點擊按鈕“新增”,會彈出頁面,如圖6所示
圖6. 添加新的硬件中斷

高級工程師的項目:高速計數器使用案例,含程序的圖6


①選擇"Hardware interrupt"

②注意該硬件中斷的中斷OB編號

③左鍵點擊“確定”按鈕

如圖7所示,設置硬件輸入點。

高級工程師的項目:高速計數器使用案例,含程序的圖7

圖7. 設置輸入點

①在HSC1中選擇"硬件輸入"

②在時鐘發生器輸入中選擇所需的I點,例如例子中的“I0.0”
如圖8所示,查看HSC的計數值地址。
圖8. 計數值地址

高級工程師的項目:高速計數器使用案例,含程序的圖8


①在HSC1中選擇"I/O地址"

②起始地址到結束地址為HSC實際計數器值的地址,圖中地址為ID1000。

③組織塊和過程映像一般設置默認,可以設置計數值在指定OB更新。

如圖9所示,設置I點的輸入濾波器時間。

高級工程師的項目:高速計數器使用案例,含程序的圖9

圖9.輸入濾波器

①在CPU或者信號板中找到使用的通道

②在輸入濾波器設置合適的濾波值,V4.0以后版本需要設置,具體可以參考FAQ頁面,為什么S7-1200 高速計數器只能檢測到低頻率的脈沖信號。
至此硬件組態部分已經完成,下面進行程序編寫

程序編寫


如圖10所示,展開項目樹中的PLC的程序塊,選擇所需的硬件中斷。

圖10. 打開硬件中斷塊

高級工程師的項目:高速計數器使用案例,含程序的圖10


①左鍵雙擊打開所需的硬件中斷

如圖11所示,在指令列表中找到工藝指令 -- 計數 -- CTRL_HSC_EXT。

高級工程師的項目:高速計數器使用案例,含程序的圖11

圖11. 添加高速計數器

①在圖中位置找到所需指令,將指令拖入硬件中斷的程序編輯器,會產生如圖12所示的調用選項,只能選擇單個實例,單擊“確定”按鈕。

高級工程師的項目:高速計數器使用案例,含程序的圖12

圖12. 定義指令背景數據塊

如圖13所示,新建DB,新建變量,數據類型為HSC_Count。

高級工程師的項目:高速計數器使用案例,含程序的圖13


圖13. 高速計數器變量

①在數據類型處手動輸入HSC_Count,輸入完回車確認。

如圖14所示,展開該變量。

高級工程師的項目:高速計數器使用案例,含程序的圖14

圖14. 高速計數器變量

①將該變量設置為1,也就是高速計數器的軟件門使能。

如圖15所示,在硬件中斷內編程。

高級工程師的項目:高速計數器使用案例,含程序的圖15

圖 15. 硬件中斷編程

程序段1:M0.5作為標志位,在OB1第一個掃描周期置位,參考圖16,該標志位為1時指代參考值為25時,為0時指代參考值為50時。

當進入中斷時,反轉標志位,并賦值新的參考值。

程序段2:設置新的當前值為0,設置新的當前值使能,設置新的參考值使能。

程序段3:觸發高速計數器指令

①輸入高速計數器標識符,以HSC1為例,建議輸入符號名“Local~HSC_1”。

②在CTRL處輸入圖13處新建的變量。

如圖16所示,在OB1中編寫程序,只需將圖15中的程序段3復制到OB1即可。

高級工程師的項目:高速計數器使用案例,含程序的圖16

圖16. OB1程序

至此程序編制部分完成,將完成的組態與程序下載到CPU后即可執行,當前的計數值可在ID1000中讀出 ,關于高速計數器指令塊,若不需要修改當前值、參考值等參數,可不需要調用,系統仍然可以計數。



高速計數器常見問題


如何在高速計數器斷電或停機后實現數據保持?

答:有兩種方法,分別使用CTRL_HSC指令和CTRL_HSC_EXT指令。

首先配置高速計數器:

1

在設備視圖>HSC_1>屬性>常規,啟用該高速計數器。

高級工程師的項目:高速計數器使用案例,含程序的圖17

圖 01

2

在設備視圖>HSC_1>屬性>功能,定義計數類型為計數。

高級工程師的項目:高速計數器使用案例,含程序的圖18

圖 02

3

在設備視圖>HSC_1>屬性>I/O地址,使用缺省地址1000作為高速計數器地址。

高級工程師的項目:高速計數器使用案例,含程序的圖19

圖 03

方法1:使用CTRL_HSC指令

1


添加一個新的 DB 命名為 DB HSC retain,并且創建一個DINT數據元素,命名為HSC_1用于保存高速計數器的值。為了實現這個功能,HSC_1通過勾選保持項實現數據保持。

高級工程師的項目:高速計數器使用案例,含程序的圖20

圖 04

2

插入 Cyclic interrupt (循環中斷)OB201,設置中斷時間為 10 ms (也可以根據需要改變這個時間)。然后在 OB201 中將高速計數器的值 ID1000:P 送到 "DB HSC retain".HSC_1 中。這樣,高速計數器的值每10ms 送到 DB 中保存。

高級工程師的項目:高速計數器使用案例,含程序的圖21

圖 05

3

創建Startup(啟動OB)OB100,并且編程將保存的數值 "DB HSC retain".HSC_1 送到 NEW_CV,并且置位 CV 位。使得在CPU 啟動時,保存的值被設置成當前值。

高級工程師的項目:高速計數器使用案例,含程序的圖22

圖 06

4

在 OB1 中編程 CTRL_HSC ,再將保存的值設為當前值后,復位 CV 位。

高級工程師的項目:高速計數器使用案例,含程序的圖23

圖07

方法2:使用CTRL_HSC_EXT指令

1

添加一個新的 DB 命名為 DB HSC retain,并且創建一個DINT數據元素,命名為HSC_1用于保存高速計數器的值。為了實現這個功能,HSC_1通過勾選保持項實現數據保持。此外創建系統數據類型HSC_Count的變量Static_1用于CTRL_HSC_EXT指令。

高級工程師的項目:高速計數器使用案例,含程序的圖24

圖 08

2

插入 Cyclic interrupt (循環中斷)OB201,設置中斷時間為 10 ms (也可以根據需要改變這個時間)。然后在 OB201 中將高速計數器的值 ID1000:P 送到 "DB HSC retain".HSC_1 中。這樣,高速計數器的值每10ms 送到 DB 中保存。

高級工程師的項目:高速計數器使用案例,含程序的圖25

圖 09

3

創建Startup(啟動OB)OB100,并且編程將保存的數值 "DB HSC retain".HSC_1 送到新當前值且置位觸發條件和高速計數器的軟件門,使得在CPU 啟動時,保存的值被設置成當前值。

高級工程師的項目:高速計數器使用案例,含程序的圖26

圖 10

4

在 OB1 中編程 CTRL_HSC_EXT ,將保存的值設為當前值后,復位觸發位。

高級工程師的項目:高速計數器使用案例,含程序的圖27

圖 11

高速計數器的計數范圍是什么?

答:高速計數器的計數范圍是-231~231-1。當向上計數到最大值231-1時,會跳回到-231;當向下計數到最小值-231時,會跳回231-1。

斷電停機或復位后,高速計數器的值會復位到什么值?

答:CPU 斷電或重啟后,高速計數器的值會復位到初始值;如果執行了外部復位,高速計數器的值會復位為0。

不編寫 CTRL_HSC,高速計數器是否可以計數?

答:只要在硬件配置里使能并組態了高速計數器,不編寫 CTRL_HSC,高速計數器就可以正常計數。CTRL_HSC 只是完成參數寫入的功能。

為什么高速計數器的數值不增加,總是停在一個固定的值?

答:如果編程了 CTRL_HSC,當置位 CV 將 NEW_CV 寫入當前值后,CV位不會自動復位為0,這時程序會一直將 NEW_CV寫入當前值,導致高速計數器不繼續計數而保持在固定的 NEW_CV 值。因此必須編程復位 CV,才能避免該錯誤的發生。

如果高速計數器定義為 "運動軸" 計數,程序中是否還可以訪問 ID1000:P 的值?

答:如果高速計數器用做內部的運動控制的計數,此時程序中不能再訪問 ID1000:P 的值,否則會造成 I/O 訪問錯誤。如果沒有編程GET_ERROR 或 GET_ERR_ID 指令,還會造成 CPU 停機。

為什么 CTRL_HSC 的 "STATUS" 會返回 "80C0" 多次訪問高速計數器錯誤?

答:如果高速計數器用做內部的運動控制的計數,則CTRL_HSC 的 "STATUS" 就會返回 "80C0" 多次訪問高速計數器錯誤。

使用信號板 SB1221 4DI (CPU V3.0及早期版本)最多可以接入多少組高速計數器 ?

答:最多2組,所使用的高速計數器號可以是 HSC1、HSC2、HSC5、HSC6其中2組。

為什么S7-1200 高速計數器只能檢測到低頻率的脈沖信號?

答:在 S7-1200 CPU 和 SB 信號板的屬性中,數字量輸入通道的輸入濾波器默認設置值為 6.4 millisec,該輸入濾波時間對應的高速計數器能檢測到的最大頻率為 78Hz。

因此如果使用該默認值,且 S7-1200 CPU 或 SB 信號板接入的高速輸入脈沖超過 78Hz,則 S7-1200 CPU 或SB 信號板過濾掉該頻率的輸入脈沖。

要正確使用 S7-1200 CPU 和 SB 信號板高速計數功能,需要根據實際接入的高速輸入脈沖最大頻率,在"屬性—常規—數字量輸入通道設置"輸入濾波器時間。

V4.0 或更高版本的 S7-1200 CPU 和 SB 信號板,每個數字量輸入點都可設置輸入濾波器時間, 如下圖 12、13 所示:

高級工程師的項目:高速計數器使用案例,含程序的圖28

圖 12. 設置 S7-1200 CPU 輸入濾波器時間

高級工程師的項目:高速計數器使用案例,含程序的圖29

圖 13. 設置 SB 信號板輸入濾波器時間

下表 1 顯示了輸入濾波器時間和可檢測到的最大輸入頻率:

輸入濾波器時間

可檢測到的最大輸入頻率

0.1 microsec

1MHz

0.2 microsec

1MHz

0.4 microsec

1MHz

0.8 microsec

625kHz

1.6 microsec

312kHz

3.2 microsec

156kHz

6.4 microsec

78kHz

10 microsec

50kHz

12.8 microsec

39kHz

20 microsec

25kHz

0.05 millisec

10kHz

0.1 millisec

5kHz

0.2 millisec

2.5kHz

0.4 millisec

1.25kHz

0.8 millisec

625Hz

1.6 millisec

312Hz

3.2 millisec

156Hz

6.4 millisec

78Hz

10 millisec

50Hz

12.8 millisec

39Hz

20 millisec

25Hz

表 1 輸入濾波器時間和可檢測到的最大輸入頻率

S7-1200 的高速計數器輸入通道是否固定?

答:早期固件版本的高速計數器輸入通道是固定的。

V4.0 或更高版本的 S7-1200 的高速計數器輸入通道可以在其屬性中更改。如圖 14 所示:

高級工程師的項目:高速計數器使用案例,含程序的圖30

圖 14. 更改高速計數器輸入通道

S7-1200 CPU 最多支持多少個高速計數器?

答:早期固件版本的S7-1200 CPU 中,CPU 1211C 最多支持3個單相的高速計數器,CPU 1212C 最多支持 4 個單相的高速計數器,CPU1214C 和 CPU1215C最 多支持6個單相的高速計數器。

V4.0或更高版本的所有型號的S7-1200 CPU 都支持最多6個單相高速計數器。

需要注意的是V4.0或更高版本的 S7-1200 CPU 有默認的高速計數器通道地址,而 CPU 1211C 數字量輸入地址僅有 6 個,為I0.0-I0.5,CPU 1212C 數字量輸入地址僅有8個,為I0.0-I0.7。

因此如果需要使用 CPU 1211C 的 HSC4, HSC5, HSC6 或 CPU 1212C 的 HSC5, HSC6 ,則需要更改其硬件輸入地址到有效的范圍才能正常使用。以 CPU1211C 舉例,如圖 15、16、17所示:

高級工程師的項目:高速計數器使用案例,含程序的圖31

圖 15. 更改 HSC4 的硬件輸入地址

高級工程師的項目:高速計數器使用案例,含程序的圖32

圖 16. 更改 HSC5 的硬件輸入地址

高級工程師的項目:高速計數器使用案例,含程序的圖33

圖 17. 更改 HSC6 的硬件輸入地址

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1