V2.2固件的CPU PTO停止后可以立即再次啟動(dòng),不需要有上一個(gè)有效脈沖的周期時(shí)間延遲。
由于在 PTO 操作正在產(chǎn)生脈沖時(shí)被禁止,再次執(zhí)行 PLS 指令之前必須要有時(shí)間延遲,并要確保其等于上一個(gè)有效脈沖的最大周期時(shí)間。因此,可采用如下方法來實(shí)現(xiàn)延遲執(zhí)行新脈沖串輸出:
延遲上一個(gè)有效脈沖的最大周期時(shí)間,再執(zhí)行PLS 指令,輸出新脈沖串。
2. 利用 PTO 空閑狀態(tài)位(SM66.7、SM77.7 和 SM566.7)和程序執(zhí)行錯(cuò)誤狀態(tài)位 SM4.3:
PTO 空閑(SM66.7=1、SM77.7=1 和 SM566.7=1)以及程序執(zhí)行無錯(cuò)誤 SM4.3=0 時(shí),執(zhí)行 PLS 指令;
PTO 空閑(SM66.7=1、SM77.7=1 和 SM566.7=1)以及程序執(zhí)行有錯(cuò)誤 SM4.3=1 時(shí), 通過GET_EEROR 指令獲取 CPU 程序執(zhí)行錯(cuò)誤代碼16#05,繼續(xù)返回直到錯(cuò)誤清除執(zhí)行 PLS 指令。
S7-200 SMART PLS 定位編程方法比較
采用定時(shí)中斷 | 利用 PTO 空閑狀態(tài)位和程序執(zhí)行錯(cuò)誤狀態(tài)位 |
實(shí)際應(yīng)用中,在 PTO 頻率值不固定的情況下, 需根據(jù)變化的 PTO 頻率值計(jì)算再次執(zhí)行 PLS 指令的延遲時(shí)間Tdelay = 1 / Fmax 編程相對復(fù)雜,但精確計(jì)算上一個(gè)有效脈沖的最大周期時(shí)間,有利于保證延遲執(zhí)行新脈沖串的輸出。 |
PTO 頻率越小,PTO 操作被禁止后內(nèi)在地完成該脈沖的周期時(shí)間越長。 即 LBL 標(biāo)簽內(nèi)跳轉(zhuǎn)次數(shù)越多,該部分程序處理時(shí)間越長,因此可能造成 CPU 看門狗超時(shí)錯(cuò)誤。此時(shí),則需要用戶編程延長看門狗時(shí)間,防止CPU 停機(jī)。 |
例如,V0.0 上升沿觸發(fā) PLS 指令,以 100 HZ 頻率輸出 5000 個(gè)脈沖數(shù)。在 5000 個(gè)脈沖數(shù)輸出完成之前,使能 I0.2 ,I0.2 上升沿中斷程序 INT_0 里中斷禁止 PTO 并啟用定時(shí)中斷 INT_1,定時(shí)中斷時(shí)間 SMB34= Tdelay = 1 / 100HZ= 10 ms;
定時(shí)時(shí)間到,更新 PTO 頻率為 2000 HZ 和脈沖數(shù)為 10000, 立即執(zhí)行 PLS 指令輸出新脈沖串并分離中斷。 程序編寫如下圖 5 所示:
程序說明:
PTO 控制字節(jié) SMB67=16#C5
PTO 頻率值 SMW68=100
PTO 脈沖數(shù) SMD72=5000
使能 V0.0,上升沿觸發(fā) PLS ,
在 5000 個(gè)脈沖數(shù)輸出完成之前,I0.2 上升沿中斷禁止 PTO并啟用定時(shí)中斷INT_1,定時(shí)時(shí)間 SMB34= 1 / 100HZ= 10 ms 。
定時(shí)時(shí)間到,進(jìn)入定時(shí)中斷 INT_1, 更新PTO 頻率為 2000 HZ 和脈沖數(shù)為10000
PTO 控制字節(jié) SMB67=16#C5
PTO 頻率值 SMW68=2000
PTO 脈沖數(shù) SMD72=10000
立即執(zhí)行 PLS 指令輸出新脈沖串并分離中斷。
圖 5. 采用定時(shí)中斷禁止延時(shí)執(zhí)行新脈沖串輸出
2. 利用 PTO 空閑狀態(tài)位(SM66.7、SM77.7 和 SM566.7)和程序執(zhí)行錯(cuò)誤狀態(tài)位 SM4.3:
例如,V0.0 上升沿觸發(fā) PLS 指令,以 100 HZ 頻率輸出 5000 個(gè)脈沖數(shù)。在 5000 個(gè)脈沖數(shù)輸出完成之前,使能 I0.2 ,I0.2 上升沿中斷程序 INT_0 里中斷禁止 PTO ,更新 PTO 頻率為 2000 HZ 和脈沖數(shù)為 10000, 并跳轉(zhuǎn)到標(biāo)簽 0;
程序說明:
PTO 控制字節(jié) SMB67=16#C5
PTO 頻率值 SMW68=100
PTO 脈沖數(shù) SMD72=5000
使能 V0.0,上升沿觸發(fā) PLS 。
在 5000 個(gè)脈沖數(shù)輸出完成之前,I0.2 上升沿中斷禁止 PTO , 更新PTO 頻率為 2000 HZ 和脈沖數(shù)為10000
PTO 控制字節(jié) SMB67=16#C5
PTO 頻率值 SMW68=2000
PTO 脈沖數(shù) SMD72=10000
在標(biāo)簽 0 編寫如下程序:
PTO 空閑 SM66.7=1 以及程序執(zhí)行無錯(cuò)誤 SM4.3=0 時(shí),執(zhí)行 PLS 指令,輸出新脈沖串;
PTO 空閑 SM66.7=1 以及程序執(zhí)行錯(cuò)誤狀態(tài)位 SM4.3=1 時(shí),
通過 GET_EEROR 指令獲取 CPU 程序執(zhí)行錯(cuò)誤代碼16#05,繼續(xù)返回到標(biāo)簽 0。
程序編寫如下圖 6 所示:
圖 6. 利用 PTO 空閑狀態(tài)位和程序執(zhí)行錯(cuò)誤狀態(tài)位延時(shí)執(zhí)行新脈沖串輸出
在向?qū)?nèi)激活STP后,當(dāng)STP使能高速脈沖會(huì)立即停車,當(dāng)需要再次發(fā)送脈沖時(shí),需復(fù)位STP信號,而有些工況人工無法干預(yù),如何復(fù)位STP?
以ST40為例,見圖7 所示:
圖7. 運(yùn)動(dòng)控制軸0組態(tài)
接線如下圖所示:
將實(shí)際的STP信號接入 I0.0,將 Q1.0輸出連接到 I0.1,如圖 8 所示:
圖8.ST40接線
注:紅色虛線為程序內(nèi)邏輯;黑色實(shí)線為實(shí)際接線
程序如下圖 9 所示:
圖9. STP功能復(fù)位
S7-200 SMART PLS指令 正在產(chǎn)生脈沖時(shí)被禁止,為何不能再立即執(zhí)行 PLS 指令輸出新脈沖串?
S7-200 SMART PTO 正在產(chǎn)生脈沖時(shí)被禁止,CPU 對立即執(zhí)行新脈沖串輸出不響應(yīng),導(dǎo)致非致命錯(cuò)誤。 再次執(zhí)行 PLS 指令前必須要有時(shí)間延遲,并確保其等于上一個(gè)有效脈沖的最大周期時(shí)間 Tdelay = 1 / Fmax
例如,I0.2 上升沿中斷禁止 PTO,立即更新脈沖頻率和脈沖數(shù),CPU 忽略立即執(zhí)行的 PLS 指令并報(bào)錯(cuò)。
程序說明:
PTO 控制字節(jié) SMB67=16#C5
PTO 頻率值 SMW68=100
PTO 脈沖數(shù) SMD72=5000
使能 V0.0,上升沿觸發(fā) PLS 。
在 5000 個(gè)脈沖數(shù)輸出完成之前,I0.2 上升沿中斷禁止 PTO , 更新PTO 頻率為 2000 HZ 和脈沖數(shù)為10000
PTO 控制字節(jié) SMB67=16#C5
PTO 頻率值 SMW68=2000
PTO 脈沖數(shù) SMD72=10000
立即執(zhí)行 PLS 指令。
如下圖 10 所示:
圖 10. 中斷程序里立即執(zhí)行 PLS 指令
STEP 7 Micro/Win SMART 軟件在線,從 PLC 信息可以查看到非致命錯(cuò)誤。如下圖 11 所示:
圖 11. 非致命錯(cuò)誤
電話:15721373211
郵箱:15721373211@139.com
網(wǎng)址:http://openxml.net/
地址:上海青浦區(qū)北青公路7171號111-112室