如何在高速計(jì)數(shù)器斷電或停機(jī)后實(shí)現(xiàn)數(shù)據(jù)保持?
答: 有兩種方法,分別使用CTRL_HSC指令和CTRL_HSC_EXT指令。
首先配置高速計(jì)數(shù)器:
1
在設(shè)備視圖>HSC_1>屬性>常規(guī),啟用該高速計(jì)數(shù)器。

圖 01
2在設(shè)備視圖>HSC_1>屬性>功能,定義計(jì)數(shù)類型為計(jì)數(shù)。

圖 02
3在設(shè)備視圖>HSC_1>屬性>I/O地址,使用缺省地址1000作為高速計(jì)數(shù)器地址。

圖 03
方法1:使用CTRL_HSC指令
1
添加一個(gè)新的 DB 命名為 DB HSC retain,并且創(chuàng)建一個(gè)DINT數(shù)據(jù)元素,命名為HSC_1用于保存高速計(jì)數(shù)器的值。為了實(shí)現(xiàn)這個(gè)功能,HSC_1通過(guò)勾選保持項(xiàng)實(shí)現(xiàn)數(shù)據(jù)保持。

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

圖 05
3創(chuàng)建Startup(啟動(dòng)OB)OB100,并且編程將保存的數(shù)值 "DB HSC retain".HSC_1 送到 NEW_CV,并且置位 CV 位。使得在CPU 啟動(dòng)時(shí),保存的值被設(shè)置成當(dāng)前值。

圖 06
4
在 OB1 中編程 CTRL_HSC ,再將保存的值設(shè)為當(dāng)前值后,復(fù)位 CV 位。

圖07
方法2:使用CTRL_HSC_EXT指令
1
添加一個(gè)新的 DB 命名為 DB HSC retain,并且創(chuàng)建一個(gè)DINT數(shù)據(jù)元素,命名為HSC_1用于保存高速計(jì)數(shù)器的值。為了實(shí)現(xiàn)這個(gè)功能,HSC_1通過(guò)勾選保持項(xiàng)實(shí)現(xiàn)數(shù)據(jù)保持。此外創(chuàng)建系統(tǒng)數(shù)據(jù)類型HSC_Count的變量Static_1用于CTRL_HSC_EXT指令。

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

圖 10
4在 OB1 中編程 CTRL_HSC_EXT ,將保存的值設(shè)為當(dāng)前值后,復(fù)位觸發(fā)位。

圖 11
斷電停機(jī)或復(fù)位后,高速計(jì)數(shù)器的值會(huì)復(fù)位到什么值?
答: CPU 斷電或重啟后,高速計(jì)數(shù)器的值會(huì)復(fù)位到初始值;如果執(zhí)行了外部復(fù)位,高速計(jì)數(shù)器的值會(huì)復(fù)位為0。
不編寫 CTRL_HSC,高速計(jì)數(shù)器是否可以計(jì)數(shù)?
答: 只要在硬件配置里使能并組態(tài)了高速計(jì)數(shù)器,不編寫 CTRL_HSC,高速計(jì)數(shù)器就可以正常計(jì)數(shù)。CTRL_HSC 只是完成參數(shù)寫入的功能。
為什么高速計(jì)數(shù)器的數(shù)值不增加,總是停在一個(gè)固定的值?
答: 如果編程了 CTRL_HSC,當(dāng)置位 CV 將 NEW_CV 寫入當(dāng)前值后,CV位不會(huì)自動(dòng)復(fù)位為0,這時(shí)程序會(huì)一直將 NEW_CV寫入當(dāng)前值,導(dǎo)致高速計(jì)數(shù)器不繼續(xù)計(jì)數(shù)而保持在固定的 NEW_CV 值。因此必須編程復(fù)位 CV,才能避免該錯(cuò)誤的發(fā)生。
如果高速計(jì)數(shù)器定義為 "運(yùn)動(dòng)軸" 計(jì)數(shù),程序中是否還可以訪問(wèn) ID1000:P 的值?
答: 如果高速計(jì)數(shù)器用做內(nèi)部的運(yùn)動(dòng)控制的計(jì)數(shù),此時(shí)程序中不能再訪問(wèn) ID1000:P 的值,否則會(huì)造成 I/O 訪問(wèn)錯(cuò)誤。如果沒(méi)有編程GET_ERROR 或 GET_ERR_ID 指令,還會(huì)造成 CPU 停機(jī)。
為什么 CTRL_HSC 的 "STATUS" 會(huì)返回 "80C0" 多次訪問(wèn)高速計(jì)數(shù)器錯(cuò)誤?
答: 如果高速計(jì)數(shù)器用做內(nèi)部的運(yùn)動(dòng)控制的計(jì)數(shù),則CTRL_HSC 的 "STATUS" 就會(huì)返回 "80C0" 多次訪問(wèn)高速計(jì)數(shù)器錯(cuò)誤。
使用信號(hào)板 SB1221 4DI (CPU V3.0及早期版本)最多可以接入多少組高速計(jì)數(shù)器 ?
答: 最多2組,所使用的高速計(jì)數(shù)器號(hào)可以是 HSC1、HSC2、HSC5、HSC6其中2組。
為什么S7-1200 高速計(jì)數(shù)器只能檢測(cè)到低頻率的脈沖信號(hào)?
答: 在 S7-1200 CPU 和 SB 信號(hào)板的屬性中,數(shù)字量輸入通道的輸入濾波器默認(rèn)設(shè)置值為 6.4 millisec,該輸入濾波時(shí)間對(duì)應(yīng)的高速計(jì)數(shù)器能檢測(cè)到的最大頻率為 78Hz。
因此如果使用該默認(rèn)值,且 S7-1200 CPU 或 SB 信號(hào)板接入的高速輸入脈沖超過(guò) 78Hz,則 S7-1200 CPU 或SB 信號(hào)板過(guò)濾掉該頻率的輸入脈沖。
要正確使用 S7-1200 CPU 和 SB 信號(hào)板高速計(jì)數(shù)功能,需要根據(jù)實(shí)際接入的高速輸入脈沖最大頻率,在"屬性—常規(guī)—數(shù)字量輸入通道設(shè)置"輸入濾波器時(shí)間。
V4.0 或更高版本的 S7-1200 CPU 和 SB 信號(hào)板,每個(gè)數(shù)字量輸入點(diǎn)都可設(shè)置輸入濾波器時(shí)間, 如下圖 12、13 所示:

圖 12. 設(shè)置 S7-1200 CPU 輸入濾波器時(shí)間

圖 13. 設(shè)置 SB 信號(hào)板輸入濾波器時(shí)間
下表 1 顯示了輸入濾波器時(shí)間和可檢測(cè)到的最大輸入頻率:
輸入濾波器時(shí)間可檢測(cè)到的最大輸入頻率0.1 microsec1MHz0.2 microsec1MHz0.4 microsec1MHz0.8 microsec625kHz1.6 microsec312kHz3.2 microsec156kHz6.4 microsec78kHz10 microsec50kHz12.8 microsec39kHz20 microsec25kHz0.05 millisec10kHz0.1 millisec5kHz0.2 millisec2.5kHz0.4 millisec1.25kHz0.8 millisec625Hz1.6 millisec312Hz3.2 millisec156Hz6.4 millisec78Hz10 millisec50Hz12.8 millisec39Hz20 millisec25Hz
表 1 輸入濾波器時(shí)間和可檢測(cè)到的最大輸入頻率
S7-1200 的高速計(jì)數(shù)器輸入通道是否固定?
答: 早期固件版本的高速計(jì)數(shù)器輸入通道是固定的。
V4.0 或更高版本的 S7-1200 的高速計(jì)數(shù)器輸入通道可以在其屬性中更改。如圖 14 所示:

圖 14. 更改高速計(jì)數(shù)器輸入通道
S7-1200 CPU 最多支持多少個(gè)高速計(jì)數(shù)器?
答: 早期固件版本的S7-1200 CPU 中,CPU 1211C 最多支持3個(gè)單相的高速計(jì)數(shù)器,CPU 1212C 最多支持 4 個(gè)單相的高速計(jì)數(shù)器,CPU1214C 和 CPU1215C最 多支持6個(gè)單相的高速計(jì)數(shù)器。
V4.0或更高版本的所有型號(hào)的S7-1200 CPU 都支持最多6個(gè)單相高速計(jì)數(shù)器。
需要注意的是V4.0或更高版本的 S7-1200 CPU 有默認(rèn)的高速計(jì)數(shù)器通道地址,而 CPU 1211C 數(shù)字量輸入地址僅有 6 個(gè),為I0.0-I0.5,CPU 1212C 數(shù)字量輸入地址僅有8個(gè),為I0.0-I0.7。
因此如果需要使用 CPU 1211C 的 HSC4, HSC5, HSC6 或 CPU 1212C 的 HSC5, HSC6 ,則需要更改其硬件輸入地址到有效的范圍才能正常使用。以 CPU1211C 舉例,如圖 15、16、17所示:

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

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

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