在運(yùn)動(dòng)控制中的大量場(chǎng)合,輸入的都是一些高速脈沖信號(hào),如光電編碼器信號(hào),這時(shí)候PLC可以使用高速計(jì)數(shù)器功能對(duì)這些特定的脈沖量進(jìn)行加減計(jì)數(shù),來(lái)最終獲取所需要的工藝數(shù)據(jù)(轉(zhuǎn)速、角度、位移等)。從硬件角度來(lái)講,PLC都會(huì)內(nèi)置一些端口用于高速脈沖輸入,其結(jié)構(gòu)與普通的數(shù)字量不同。從軟件角度來(lái)講,PLC都會(huì)采用特殊的高速計(jì)數(shù)器指令,來(lái)進(jìn)行中斷處理。
圖1所示是用于片材或帶材定長(zhǎng)切割的應(yīng)用案例。待切材料從左向右隨牽引電機(jī)前行,光電編碼器信號(hào)用來(lái)測(cè)量牽引過(guò)的長(zhǎng)度,待牽引長(zhǎng)度達(dá)到預(yù)先設(shè)定的數(shù)值時(shí),電機(jī)制動(dòng)且切刀動(dòng)作,即實(shí)現(xiàn)定長(zhǎng)切割。
圖1 定長(zhǎng)切割
PLC作為定長(zhǎng)切割控制的核心,主要對(duì)牽引長(zhǎng)度進(jìn)行計(jì)算和對(duì)切刀進(jìn)行控制。根據(jù)工藝流程圖,可以轉(zhuǎn)換為圖2所示的定長(zhǎng)切割電氣圖。
圖2 定長(zhǎng)切割電氣圖
由圖2可以得出定長(zhǎng)切割控制的I/O資源分配(如表1所示)。
表1 I/O資源分配
由于光電編碼器(通常是5~12V)與PLC輸入信號(hào)(24V)經(jīng)常不一致,建議使用高速光耦轉(zhuǎn)換器進(jìn)行電平轉(zhuǎn)換。
(1)HSC向?qū)Ь幊?/p>
在S7-200編程環(huán)境中,選擇菜單命令工具(T)> 指令向?qū)SC;或點(diǎn)擊瀏覽條中的指令向?qū)D標(biāo),然后選擇 HSC;或打開(kāi)指令樹(shù)中的“向?qū)А蔽募A并隨后打開(kāi)HSC向?qū)А?/p>
☆ 選擇計(jì)數(shù)器類(lèi)型和操作模式
從圖3的列表框(根據(jù) PLC)選擇須配置的計(jì)數(shù)器,從列表框選擇操作模式,根據(jù)選擇的計(jì)數(shù)器決定它可用的模式。
圖3 選擇計(jì)數(shù)器類(lèi)型和操作模式
☆ 指定初始參數(shù)
如圖4所示的初始化參數(shù)包括:向?qū)樽映绦蛑付ㄒ粋€(gè)默認(rèn)名稱(chēng),用戶(hù)也可以指定一個(gè)不同的名稱(chēng),但請(qǐng)勿使用現(xiàn)有子程序名稱(chēng);為計(jì)數(shù)器 CV 和 PV 指定一個(gè)雙字地址、全局符號(hào)或整數(shù)常數(shù);指定初始計(jì)數(shù)方向。
☆ 程序中斷事件/編程多步操作
計(jì)數(shù)器類(lèi)型和操作模式選擇決定可用的中斷事件。當(dāng)用戶(hù)選擇對(duì)當(dāng)前數(shù)值等于預(yù)置值事件(CV = PV)進(jìn)行編程時(shí),向?qū)г试S指定多步計(jì)數(shù)器操作,如圖5所示。
圖4 指定初始參數(shù)
圖5 程序中斷事件/編程多步操作
☆ 生成代碼
完成 HSC 參數(shù)配置后,可以檢查計(jì)數(shù)器使用的子程序/中斷程序列表。在點(diǎn)擊“完成”按鈕后,允許向?qū)?HSC 生成必要的程序代碼。代碼包括用于高速計(jì)數(shù)器初始化的子程序。另外,為用戶(hù)選擇編程的每一個(gè)事件生成一個(gè)中斷程序。對(duì)于多步應(yīng)用,則為每一個(gè)步生成一個(gè)中斷程序。當(dāng)然要使能計(jì)數(shù)器操作,必須從主程序中調(diào)用包含初始化代碼的子程序,如使用 SM 0.1 或沿觸發(fā)指令確保該子程序僅被調(diào)用一次。
(2)高速計(jì)數(shù)器設(shè)置的相關(guān)步驟
從定長(zhǎng)切割的電氣圖中可以看出,這里選用的是A/B相正交計(jì)數(shù)器,它可以選擇模式9、10或11,對(duì)于該模式,可以按照以下步驟來(lái)進(jìn)行:
☆使用首次掃描內(nèi)存位調(diào)用執(zhí)行初始化操作的子程序。因?yàn)槭褂米映绦蛘{(diào)用,隨后的掃描不再調(diào)用子程序,因此可減少掃描時(shí)間執(zhí)行并使程序結(jié)構(gòu)更條理化。
☆在初始化子程序中,根據(jù)所需的控制操作載入SMB47。
例如(1x 計(jì)數(shù)模式),即設(shè)SMB47 = 16#FC產(chǎn)生下列結(jié)果:?jiǎn)⒂糜?jì)數(shù)器、寫(xiě)入新當(dāng)前值、寫(xiě)入新預(yù)設(shè)值、設(shè)置HSC初始方向、向上計(jì)數(shù)、將起始和復(fù)原輸入設(shè)為現(xiàn)用水平高。
又如(4x計(jì)數(shù)模式):即設(shè)SMB47 = 16#F8產(chǎn)生下列結(jié)果:?jiǎn)⒂糜?jì)數(shù)器、寫(xiě)入新當(dāng)前值、寫(xiě)入新預(yù)設(shè)值、設(shè)置初始HSC方向、向上計(jì)數(shù)、將起始和復(fù)原輸入設(shè)為現(xiàn)用水平高。
☆執(zhí)行HDEF指令,HSC輸入設(shè)為1,無(wú)外部復(fù)原或起始的MODE(模式)輸入設(shè)為9,有外部復(fù)原但無(wú)起始設(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)定長(zhǎng)切割的具體程序
定長(zhǎng)切割的主程序、子程序和中斷程序具體如圖6~圖8所示。
圖6 定長(zhǎng)切割主程序
圖7 定長(zhǎng)切割子程序
圖8 定長(zhǎng)切割中斷程序
在S7-200中,可以使用高速計(jì)數(shù)器定義指令來(lái)定義計(jì)數(shù)器的模式和輸入,同一個(gè)輸入點(diǎn)不能用于兩個(gè)不同的功能,但是任何一個(gè)沒(méi)有被高速計(jì)數(shù)器的當(dāng)前模式使用的輸入點(diǎn),都可以被用作其他用途。
[1] 李方園. 自動(dòng)化綜合實(shí)訓(xùn)教程[M].北京:科學(xué)出版社,2011.
[2] 李方園. 零起點(diǎn)學(xué)西門(mén)子S7-200 PLC[M].北京:機(jī)械工業(yè)出版社,2012