西門子PLC STEP7 SMART運(yùn)動向?qū)Ц鶕?jù)所選組態(tài)選項(xiàng)創(chuàng)建唯一的指令子程序,從而使運(yùn)動軸的控制更容易。各運(yùn)動指令均具有“AXISx_”前綴,其中x代表軸通道編號。由于每條運(yùn)動指令都是一個子程序,所以11條運(yùn)動指令使用11個子程序。
(說明:運(yùn)動指令使程序所需的存儲空間增加多達(dá)1700個字節(jié)。可以刪除未使用的運(yùn)動指令來降低所需的存儲空間。要恢復(fù)刪除的運(yùn)動指令,只需再次運(yùn)行運(yùn)動向?qū)А#?/P>
表1:
運(yùn)動控制指令使用準(zhǔn)則必須確保在同一時間僅有一條運(yùn)動指令激活。
可在中斷例程中執(zhí)行AXISx_RUN和AXISx_GOTO。但是,如果運(yùn)動軸正在處理另一命令時,不要嘗試在中斷例程中啟動指令。如果在中斷程序中啟動指令,則可使用 AXISx_CTRL指令的輸出來監(jiān)視運(yùn)動軸是否完成移動。
運(yùn)動向?qū)Ц鶕?jù)所選的度量系統(tǒng)自動組態(tài)速度參數(shù)(Speed和C_Speed)和位置參數(shù)(Pos或C_Pos)的值。對于脈沖,這些參數(shù)為 DINT值。對于工程單位,這些參數(shù)是所選單位類型對應(yīng)的 REAL值。例如:如果選擇厘米 (cm),則以厘米為單位將位置參數(shù)存儲為REAL值并以厘米/秒(cm/sec)為單位將速度參數(shù)存儲為REAL值。
有些特定位置控制任務(wù)需要以下運(yùn)動指令:
要在每次掃描時執(zhí)行指令,請?jiān)诔绦蛑胁迦階XISx_CTRL指令并使用SM0.0觸點(diǎn)。
要指定運(yùn)動到絕對位置,必須首先使用AXISx_RSEEK或AXISx_LDPOS指令建立零位置。
要根據(jù)程序輸入移動到特定位置,請使用AXISx_GOTO指令。
要運(yùn)行通過位置控制向?qū)ЫM態(tài)的運(yùn)動包絡(luò),請使用AXISx_RUN指令。
其它位置指令為可選項(xiàng)。
1.AXISx_CTRL:
功能:啟用和初始化運(yùn)動軸,方法是自動命令運(yùn)動軸每次CPU更改為RUN模式時加載組態(tài)/包絡(luò)表。
▲ 圖1
需要注意的是,在您的項(xiàng)目中只對每條運(yùn)動軸使用此子例程一次,并確保程序會在每次掃描時調(diào)用此子例程。使用SM0.0(始終開啟)作為EN參數(shù)的輸入。
MOD_EN:參數(shù)必須開啟,才能啟用其它運(yùn)動控制子例程向運(yùn)動軸發(fā)送命令。如果MOD_EN參數(shù)關(guān)閉,運(yùn)動軸會中止所有正在進(jìn)行的命令;
Done:參數(shù)會在運(yùn)動軸完成任何一個子例程時開啟;Error:參數(shù)存儲該子程序運(yùn)行時的錯誤代碼;C_Pos:參數(shù)表示運(yùn)動軸的當(dāng)前位置。根據(jù)測量單位,該值是脈沖數(shù) (DINT)或工程單位數(shù)(REAL);
C_Speed:參數(shù)提供運(yùn)動軸的當(dāng)前速度。如果您針對脈沖組態(tài)運(yùn)動軸的測量系統(tǒng),C_Speed是一個DINT數(shù)值,其中包含脈沖數(shù)/每秒。如果您針對工程單位組態(tài)測量系統(tǒng),C_Speed是一個REAL數(shù)值,其中包含選擇的工程單位數(shù)/每秒(REAL)。
C_Dir:參數(shù)表示電機(jī)的當(dāng)前方向:信號狀態(tài)0= 正向;信號狀態(tài)1= 反向;
2、AXISx_DIS
功能:運(yùn)動軸的DIS輸出打開或關(guān)閉。這允許您將DIS輸出用于禁用或啟用電機(jī)控制器。
▲ 圖2
EN位打開以啟用子例程時,DIS_ON參數(shù)控制運(yùn)動軸的DIS輸出。
注意:
如果您在運(yùn)動軸中使用DIS輸出,可以在每次掃描時調(diào)用該子例程,或者僅在您需要更改DIS輸出值時進(jìn)行調(diào)用。若實(shí)際DIS連接了電機(jī)驅(qū)動器的DIS輸入,如果不使能則可能導(dǎo)致電機(jī)不運(yùn)轉(zhuǎn)。
3、AXISx_MAN:
功能,是將運(yùn)動軸置為手動模式;這允許電機(jī)按不同的速度運(yùn)行,或沿正方向或負(fù)方向慢進(jìn)。
▲ 圖3
RUN參數(shù)會命令運(yùn)動軸加速至指定的速度(Speed參數(shù))和方向(Dir參數(shù))。用戶可以在電機(jī)運(yùn)行時更改 Speed參數(shù),但Dir參數(shù)必須保持為常數(shù)。禁用 RUN參數(shù)會命令運(yùn)動軸減速,直至電機(jī)停止;
JOG_P(點(diǎn)動正向旋轉(zhuǎn))或JOG_N(點(diǎn)動反向旋轉(zhuǎn))參數(shù)會命令運(yùn)動軸正向或反向點(diǎn)動。如果JOG_P或JOG_N參數(shù)保持啟用的時間短于0.5秒,則運(yùn)動軸將通過脈沖指示移動JOG_INCREMENT中指定的距離。如果JOG_P或JOG_N參數(shù)保持啟用的時間為0.5秒或更長,則運(yùn)動軸將開始加速至指定的JOG_SPEED;
Speed 參數(shù)決定啟用RUN時的速度。如果用戶針對脈沖組態(tài)運(yùn)動軸的測量系統(tǒng),則速度為DINT值(脈沖數(shù)/每秒)。如果您針對工程單位組態(tài)運(yùn)動軸的測量系統(tǒng),則速度為REAL值(單位數(shù)/每秒)。
4、AXISx_RSEEK:
功能:使用組態(tài)/包絡(luò)表中的搜索方法啟動參考點(diǎn)搜索操作。當(dāng)運(yùn)動軸找到參考點(diǎn)且移動停止時,運(yùn)動軸將RP_OFFSET參數(shù)值載入當(dāng)前位置。
▲ 圖4
RP_OFFSET的默認(rèn)值為0。可使用運(yùn)動控制向?qū)А⑦\(yùn)動控制面板或AXISx_LDOFF(加載偏移量)子例程來更改RP_OFFSET值;
EN 位開啟會啟用此子例程。確保EN位保持開啟,直至Done位指示子例程執(zhí)行已經(jīng)完成;
START 參數(shù)開啟將向運(yùn)動軸發(fā)出RSEEK命令。對于在START參數(shù)開啟且運(yùn)動軸當(dāng)前不繁忙時執(zhí)行的每次掃描,該子例程向運(yùn)動軸發(fā)送一個RSEEK命令。為了確保僅發(fā)送了一個命令,請使用邊沿檢測元素用脈沖方式開啟START參數(shù)。
5、AXISx_GOTO:
▲ 圖5
START參數(shù)開啟會向運(yùn)動軸發(fā)出GOTO命令。對于在 START參數(shù)開啟且運(yùn)動軸當(dāng)前不繁忙時執(zhí)行的每次掃描,該子例程向運(yùn)動軸發(fā)送一個GOTO命令。為了確保僅發(fā)送了一個GOTO命令,請使用邊沿檢測元素用脈沖方式開啟START參數(shù);
Pos參數(shù)包含一個數(shù)值,指示要移動的位置(絕對移動)或要移動的距離(相對移動)。根據(jù)所選的測量單位,該值是脈沖數(shù) (DINT)或工程單位數(shù)(REAL);
Speed 參數(shù)確定該移動的最高速度。根據(jù)所選的測量單位,該值是脈沖數(shù)/每秒(DINT)或工程單位數(shù)/每秒(REAL);Mode參數(shù)選擇移動的類型:
0:絕對位置
1:相對位置
2:單速連續(xù)正向旋轉(zhuǎn)
3:單速連續(xù)反向旋轉(zhuǎn)
Abort 參數(shù)啟動會命令運(yùn)動軸停止當(dāng)前包絡(luò)并減速,直至電機(jī)停止。
注意:
若Mode參數(shù)設(shè)置為0,則必須首先使用AXISx_RSEEK或AXISx_LDPOS指令建立零位置。
6、AXISx_RUN:
功能:命令運(yùn)動軸按照存儲在組態(tài)/包絡(luò)表的特定包絡(luò)執(zhí)行運(yùn)動操作。
▲ 圖6
START參數(shù)開啟將向運(yùn)動軸發(fā)出RUN命令。對于在 START參數(shù)開啟且運(yùn)動軸當(dāng)前不繁忙時執(zhí)行的每次掃描,該子例程向運(yùn)動軸發(fā)送一個RUN命令。為了確保僅發(fā)送了一個命令,請使用邊沿檢測元素用脈沖方式開啟START參數(shù);
Profile參數(shù)包含運(yùn)動包絡(luò)的編號或符號名稱。“Profile”輸入必須介于0- 31。否則子例程將返回錯誤;
Abort參數(shù)會命令運(yùn)動軸停止當(dāng)前包絡(luò)并減速,直至電機(jī)停止;
C_Profile參數(shù)包含運(yùn)動軸當(dāng)前執(zhí)行的包絡(luò);
C_Step參數(shù)包含目前正在執(zhí)行的包絡(luò)步。
7、AXISx_LDOFF:
功能:建立一個與參考點(diǎn)處于不同位置的新的零位置。
▲ 圖7
開啟START參數(shù)將向運(yùn)動軸發(fā)出LDOFF命令。對于在 START參數(shù)開啟且運(yùn)動軸當(dāng)前不繁忙時執(zhí)行的每次掃描,該子例程向運(yùn)動軸發(fā)送一個LDOFF命令。為了確保僅發(fā)送了一個命令,請使用邊沿檢測元素用脈沖方式開啟START參數(shù)。
注意:
在執(zhí)行該子例程之前,您必須首先確定參考點(diǎn)的位置。您還必須將機(jī)器移至起始位置。當(dāng)子例程發(fā)送 LDOFF命令時,運(yùn)動軸計算起始位置(當(dāng)前位置)與參考點(diǎn)位置之間的偏移量。運(yùn)動軸然后將算出的偏移量存儲到 RP_OFFSET參數(shù)并將當(dāng)前位置設(shè)為0。這將起始位置建立為零位置。
如果電機(jī)失去對位置的追蹤(例如斷電或手動更換電機(jī)的位置),您可以使用AXISx_RSEEK子例程自動重新建立零位置。
8、AXISx_LDPOS:
功能:將運(yùn)動軸中的當(dāng)前位置值更改為新值。用戶還可以使用本子例程為任何絕對移動命令建立一個新的零位置。
▲ 圖8
START參數(shù)開啟將向運(yùn)動軸發(fā)出LDPOS命令。對于在 START參數(shù)開啟且運(yùn)動軸當(dāng)前不繁忙時執(zhí)行的每次掃描,該子例程向運(yùn)動軸發(fā)送一個LDPOS命令。為了確保僅發(fā)送了一個命令,請使用邊沿檢測元素用脈沖方式開啟START參數(shù);
New_Pos參數(shù)提供新值,用于取代運(yùn)動軸報告和用于絕對移動的當(dāng)前位置值。根據(jù)測量單位,該值是脈沖數(shù) (DINT)或工程單位數(shù)(REAL)。