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