前言
最近在學(xué)習(xí)西門子PLC的高速計數(shù)器指令和運(yùn)動控制部分,是用運(yùn)動控制軸輸出 頻率為10kHz,AB相正交信號的一萬個脈沖信號 來讓高速計數(shù)器接收,想記錄一下自己的學(xué)習(xí)過程。一、高速計數(shù)器
關(guān)于高速計數(shù)器的介紹和原理可以去看西門子的開發(fā)手冊和官方介紹,這里提供鏈接:高速計數(shù)器
在西門子的上位機(jī)中可以直接使用高速計數(shù)器向?qū)砼渲贸绦颉?BR>
當(dāng)程序都配置完成后,在西門子上位機(jī)里就會自動生成相應(yīng)的代碼。
可以在中斷程序(Count_EQ0)中寫自己想要添加的控制程序。
二、運(yùn)動控制
關(guān)于運(yùn)動控制,西門子PLC上位機(jī)中也有運(yùn)動控制向?qū)В梢灾苯邮怯眠\(yùn)動控制向?qū)砩膳渲贸绦颉?BR>西門子官方運(yùn)動控制
1.運(yùn)動控制向?qū)?/STRONG>1.選擇要使用的軸
2.選擇測量系統(tǒng),有相對脈沖和工程單位(由于我只要發(fā)送一萬個脈沖,所以選擇相對脈沖)
3. 配置輸出脈沖的信號類型和極性
4.后面的配置按照自己的需求去選擇,我這里只需要發(fā)送脈沖,所以直接跳到運(yùn)動控制生成的子程序。
生成的代碼如下:
這里有生成很多子程序,主要用到的有AXIS0_CTRL和AXIS0_GOTO
這些子程序中CTRL要和其他子程序搭配起來用,CTRL必須要使用,重點(diǎn)來介紹一下AXIS0_CTRL和AXIS0_GOTO。
AXIS0_CTRL
啟用和初始化運(yùn)動軸,方法是自動命令運(yùn)動軸每次 CPU 更改為 RUN 模式時加載組態(tài)/包絡(luò)表。
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 = 反向;
AXIS0_GOTO
命令運(yùn)動軸轉(zhuǎn)到所需位置
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ī)停止。