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