前言
最近在學習西門子PLC的高速計數器指令和運動控制部分,是用運動控制軸輸出 頻率為10kHz,AB相正交信號的一萬個脈沖信號 來讓高速計數器接收,想記錄一下自己的學習過程。一、高速計數器
關于高速計數器的介紹和原理可以去看西門子的開發手冊和官方介紹,這里提供鏈接:高速計數器
當程序都配置完成后,在西門子上位機里就會自動生成相應的代碼。
可以在中斷程序(Count_EQ0)中寫自己想要添加的控制程序。
二、運動控制
關于運動控制,西門子PLC上位機中也有運動控制向導,可以直接是用運動控制向導來生成配置程序。
西門子官方運動控制
1.選擇要使用的軸
2.選擇測量系統,有相對脈沖和工程單位(由于我只要發送一萬個脈沖,所以選擇相對脈沖)
3. 配置輸出脈沖的信號類型和極性
4.后面的配置按照自己的需求去選擇,我這里只需要發送脈沖,所以直接跳到運動控制生成的子程序。
生成的代碼如下:
這里有生成很多子程序,主要用到的有AXIS0_CTRL和AXIS0_GOTO
這些子程序中CTRL要和其他子程序搭配起來用,CTRL必須要使用,重點來介紹一下AXIS0_CTRL和AXIS0_GOTO。
AXIS0_CTRL
啟用和初始化運動軸,方法是自動命令運動軸每次 CPU 更改為 RUN 模式時加載組態/包絡表。
MOD_EN 參數必須開啟,才能啟用其它運動控制子例程向運動軸發送命令。 如果 MOD_EN 參數關閉,運動軸會中止所有正在進行的命令;
Done 參數會在運動軸完成任何一個子例程時開啟;
Error 參數存儲該子程序運行時的錯誤代碼;
C_Pos 參數表示運動軸的當前位置。 根據測量單位,該值是脈沖數 (DINT) 或工程單位數 (REAL);
C_Speed 參數提供運動軸的當前速度。 如果您針對脈沖組態運動軸的測量系統,C_Speed 是一個 DINT 數值,其中包含脈沖數/每秒。如果您針對工程單位組態測量系統,C_Speed 是一個 REAL 數值,其中包含選擇的工程單位數/每秒 (REAL)。
C_Dir 參數表示電機的當前方向:信號狀態 0 = 正向;信號狀態 1 = 反向;
AXIS0_GOTO
命令運動軸轉到所需位置
START 參數開啟會向運動軸發出 GOTO 命令。 對于在 START 參數開啟且運動軸當前不繁忙時執行的每次掃描,該子例程向運動軸發送一個 GOTO 命令。為了確保僅發送了一個 GOTO 命令,請使用邊沿檢測元素用脈沖方式開啟 START 參數;
Pos 參數包含一個數值,指示要移動的位置(絕對移動)或要移動的距離(相對移動)。 根據所選的測量單位,該值是脈沖數 (DINT) 或工程單位數 (REAL);
Speed 參數確定該移動的最高速度。 根據所選的測量單位,該值是脈沖數/每秒 (DINT) 或工程單位數/每秒 (REAL);
Mode 參數選擇移動的類型:
0:絕對位置
1:相對位置
2:單速連續正向旋轉
3:單速連續反向旋轉
Abort 參數啟動會命令運動軸停止當前包絡并減速,直至電機停止。