在運(yùn)動控制中的大量場合,輸入的都是一些高速脈沖信號,如光電編碼器信號,這時候PLC可以使用高速計數(shù)器功能對這些特定的脈沖量進(jìn)行加減計數(shù),來最終獲取所需要的工藝數(shù)據(jù)(轉(zhuǎn)速、角度、位移等)。從硬件角度來講,PLC都會內(nèi)置一些端口用于高速脈沖輸入,其結(jié)構(gòu)與普通的數(shù)字量不同。從軟件角度來講,PLC都會采用特殊的高速計數(shù)器指令,來進(jìn)行中斷處理。
圖1所示是用于片材或帶材定長切割的應(yīng)用案例。待切材料從左向右隨牽引電機(jī)前行,光電編碼器信號用來測量牽引過的長度,待牽引長度達(dá)到預(yù)先設(shè)定的數(shù)值時,電機(jī)制動且切刀動作,即實現(xiàn)定長切割。

圖1 定長切割
PLC作為定長切割控制的核心,主要對牽引長度進(jìn)行計算和對切刀進(jìn)行控制。根據(jù)工藝流程圖,可以轉(zhuǎn)換為圖2所示的定長切割電氣圖。

圖2 定長切割電氣圖
由圖2可以得出定長切割控制的I/O資源分配(如表1所示)。

表1 I/O資源分配
由于光電編碼器(通常是5~12V)與PLC輸入信號(24V)經(jīng)常不一致,建議使用高速光耦轉(zhuǎn)換器進(jìn)行電平轉(zhuǎn)換。
(1)HSC向?qū)Ь幊?/p>
在S7-200編程環(huán)境中,選擇菜單命令工具(T)> 指令向?qū)SC;或點擊瀏覽條中的指令向?qū)D標(biāo),然后選擇 HSC;或打開指令樹中的“向?qū)А蔽募A并隨后打開HSC向?qū)А?/p>
☆ 選擇計數(shù)器類型和操作模式
從圖3的列表框(根據(jù) PLC)選擇須配置的計數(shù)器,從列表框選擇操作模式,根據(jù)選擇的計數(shù)器決定它可用的模式。

圖3 選擇計數(shù)器類型和操作模式
☆ 指定初始參數(shù)
如圖4所示的初始化參數(shù)包括:向?qū)樽映绦蛑付ㄒ粋€默認(rèn)名稱,用戶也可以指定一個不同的名稱,但請勿使用現(xiàn)有子程序名稱;為計數(shù)器 CV 和 PV 指定一個雙字地址、全局符號或整數(shù)常數(shù);指定初始計數(shù)方向。
☆ 程序中斷事件/編程多步操作
計數(shù)器類型和操作模式選擇決定可用的中斷事件。當(dāng)用戶選擇對當(dāng)前數(shù)值等于預(yù)置值事件(CV = PV)進(jìn)行編程時,向?qū)г试S指定多步計數(shù)器操作,如圖5所示。

圖4 指定初始參數(shù)

圖5 程序中斷事件/編程多步操作
☆ 生成代碼
完成 HSC 參數(shù)配置后,可以檢查計數(shù)器使用的子程序/中斷程序列表。在點擊“完成”按鈕后,允許向?qū)?HSC 生成必要的程序代碼。代碼包括用于高速計數(shù)器初始化的子程序。另外,為用戶選擇編程的每一個事件生成一個中斷程序。對于多步應(yīng)用,則為每一個步生成一個中斷程序。當(dāng)然要使能計數(shù)器操作,必須從主程序中調(diào)用包含初始化代碼的子程序,如使用 SM 0.1 或沿觸發(fā)指令確保該子程序僅被調(diào)用一次。
(2)高速計數(shù)器設(shè)置的相關(guān)步驟
從定長切割的電氣圖中可以看出,這里選用的是A/B相正交計數(shù)器,它可以選擇模式9、10或11,對于該模式,可以按照以下步驟來進(jìn)行:
☆使用首次掃描內(nèi)存位調(diào)用執(zhí)行初始化操作的子程序。因為使用子程序調(diào)用,隨后的掃描不再調(diào)用子程序,因此可減少掃描時間執(zhí)行并使程序結(jié)構(gòu)更條理化。
☆在初始化子程序中,根據(jù)所需的控制操作載入SMB47。
例如(1x 計數(shù)模式),即設(shè)SMB47 = 16#FC產(chǎn)生下列結(jié)果:啟用計數(shù)器、寫入新當(dāng)前值、寫入新預(yù)設(shè)值、設(shè)置HSC初始方向、向上計數(shù)、將起始和復(fù)原輸入設(shè)為現(xiàn)用水平高。
又如(4x計數(shù)模式):即設(shè)SMB47 = 16#F8產(chǎn)生下列結(jié)果:啟用計數(shù)器、寫入新當(dāng)前值、寫入新預(yù)設(shè)值、設(shè)置初始HSC方向、向上計數(shù)、將起始和復(fù)原輸入設(shè)為現(xiàn)用水平高。
☆執(zhí)行HDEF指令,HSC輸入設(shè)為1,無外部復(fù)原或起始的MODE(模式)輸入設(shè)為9,有外部復(fù)原但無起始設(shè)為10,有外部復(fù)原和起始設(shè)為11。
☆用所需的當(dāng)前值載入SMD48(雙字尺寸數(shù)值)(載入零可加以清除)。
☆用所需的預(yù)設(shè)值載入SMD52(雙字尺寸數(shù)值)。
☆為了捕獲當(dāng)前值等于預(yù)設(shè)值,將CV=PV中斷事件(事件13)附加于中斷例行程序中,為中斷編程。
☆為了捕獲方向改變,將方向改變中斷事件(事件14)附加于中斷例行程序中,為中斷編程。
☆為了捕獲外部復(fù)原事件,將外部復(fù)原中斷事件(事件15)附加于中斷例行程序中,為中斷編程。
☆執(zhí)行全局中斷啟用指令(ENI),啟用中斷。
☆執(zhí)行HSC指令,使S7-200為HSC1編程。
☆退出子程序。
(3)定長切割的具體程序
定長切割的主程序、子程序和中斷程序具體如圖6~圖8所示。

圖6 定長切割主程序


圖7 定長切割子程序

圖8 定長切割中斷程序
在S7-200中,可以使用高速計數(shù)器定義指令來定義計數(shù)器的模式和輸入,同一個輸入點不能用于兩個不同的功能,但是任何一個沒有被高速計數(shù)器的當(dāng)前模式使用的輸入點,都可以被用作其他用途。
[1] 李方園. 自動化綜合實訓(xùn)教程[M].北京:科學(xué)出版社,2011.
[2] 李方園. 零起點學(xué)西門子S7-200 PLC[M].北京:機(jī)械工業(yè)出版社,2012