一、硬件準備
以下以 CPU1215C DC/DC/DC和CM1241 RS485 模塊為例,介紹S7-1200 Modbus RTU 主站通信控制匯川IS620P系列伺服驅(qū)動器的組態(tài)及編程步驟。
二、伺服驅(qū)動器通信參數(shù)設(shè)置
功能碼 | 名稱 | 設(shè)定值 | 出廠值 | 備注 |
H00-00 | 電機編號 | 14101 | 14000 | |
H03-10 | DI5端子功能選擇 | 0 | 1 | 取消輸入端子DI5的默認伺服使能功 能,以便使用通信VDI控制伺服使能 |
H05-00 | 主位置指令來源 | 2 | 0 | 修改成多段位置指令 |
H05-02 | 電機每旋轉(zhuǎn)1圈的位置指令數(shù) | 10000 | 0 | |
H0C-00 | 驅(qū)動器軸地址 | 9 | 1 | |
H0C-02 | 串口波特率設(shè)置 | 2 | 5 | |
H0C-09 | 通信VDI | 1 | 0 | |
H0C-26 | MODBUS通信數(shù)據(jù)高低位順序 | 0 | 1 | |
H11-04 | 位移指令類型選擇 | 1 | 0 | 絕對位移指令 |
H17-00 | VDI1端子功能選擇 | 1 | 0 | 伺服使能 |
H17-02 | VDI2端子功能選擇 | 28 | 0 | 多段位置指令使能 |
參數(shù)修改完成后,需要重現(xiàn)上電,修改H02-01為1,重啟伺服驅(qū)動器,否則驅(qū)動器上電后需要進行原點復(fù)歸確認機械原點,斷電后無位置記憶。若報警731,則將H0D-20設(shè)置為1,然后重新上電重啟,若報警ER994,則表示通訊地址沖突。
三、S7-1200PLC的程序編寫
1、plc硬件組態(tài)和相關(guān)指令的詳細介紹請參考(西門子官方技術(shù)文檔)
在西門子1200plc中Modbus RTU通信指令有兩個版本,在這里使用的是舊版本指令
通信參數(shù)的設(shè)置只需主站和從站一致即可,如果覺得在伺服驅(qū)動器處修改比較麻煩,也可以從plc的組態(tài)中進行修改,為了參考官方技術(shù)文檔資料,本例從伺服驅(qū)動器修改通信參數(shù)
2、完成硬件組態(tài)之后,按如下方式添加通信數(shù)據(jù)塊
3、右鍵數(shù)據(jù)塊圖標→點擊“屬性”→“屬性”→去掉“優(yōu)化的塊訪問”的“√”
4、雙擊打開剛添加的伺服控制數(shù)據(jù)塊,在數(shù)據(jù)塊中添加如下變量并編譯
5、添加“MB_COMM_LOAD”指令組態(tài)端口使用 Modbus RTU 協(xié)議來通信
注意:要組態(tài) Modbus RTU 的端口,必須調(diào)用“MB_COMM_LOAD”一次。完成組態(tài)后,“MB_MASTER”和“MB_SLAVE”指令可以使用該端口。如果要修改其中一個通信參數(shù),則只需再次調(diào)用“MB_COMM_LOAD”。每次“MB_COMM_LOAD”調(diào)用將刪除通信緩沖區(qū)中的內(nèi)容。為避免通信期間數(shù)據(jù)丟失,應(yīng)避免不必要地調(diào)用該指令。
6、添加如下指令,當按下i0.0時,讀取當前位置并將數(shù)值存入DB塊中的編碼器反饋值,功能碼首地址H0B-58(指令首地址計算:16進制0B00改為10進制2816,再加58,再加上400001)
7、添加如下指令,按下i0.1,將DB塊中的位置、速度、加減速時間寫入伺服驅(qū)動器,功能碼首地址H11-12(指令首地址計算:16進制1100改為10進制4352,加上12,再加上400001)
其中,給定位置(第一段位移) 的數(shù)據(jù)范圍若超出 -65536~+65535,則屬于 32 位功能碼,占用兩個連續(xù)的功能碼組內(nèi)偏置號,占用 2個連續(xù)的地址,分別為 H11-12 和 H11-13,但通信地址僅由偏置號較低的地址決定。寫入功能碼時,需要根據(jù) H0C-26 的設(shè)置,確定在通信幀中高16位和低16位的先后順序。H0C-26=0時高 16 位在前,低 16 位在后;H0C-26=1時低 16 位在前,高 16 位在后。默認情況下H0C-26=1,偏置號較低的地址 (H11-12) 存儲功能碼值的低 16 位,偏置號較高的地址 (H11-13)存儲功能碼值的高 16 位,與西門子plc的存儲方式相反。速度和加減速時間功能碼的數(shù)據(jù)范圍在 -65536~+65535 之內(nèi),為 16 位功能碼,只占用 1 個功能碼組內(nèi)偏置,只占用 1 個地址,分別為H11-14和H11-15。
8、添加如下指令,按下i0.2將DB塊中的控制字寫入伺服驅(qū)動器,功能碼H31-00(指令首地址計算:16進制3100改為10進制12544,再加上400001)
四、plc指令中通信存儲器地址的計算方法
1、伺服參數(shù)地址為什么要進行進制轉(zhuǎn)換:
伺服驅(qū)動器功能碼顯示形式:HXX-YY
其中:
XX:功能碼組號,為十六進制數(shù)據(jù);
YY:功能碼組內(nèi)偏置,為十進制數(shù)據(jù)
以功能參數(shù)H0B-58為例,功能參數(shù)中0B00為功能組參數(shù),為16進制形式,進行通信時需要轉(zhuǎn)換成十進制數(shù)字,而后面的58為偏移地址,本身就是十進制形式,通信時不需要轉(zhuǎn)換。
2、plc地址為什么要加40001
PLC地址一般采用10進制描述,共有5位,其中第一位代表寄存器類型,后面的代表偏移地址。Modbus Master 協(xié)議庫把標準的Modbus 地址映射為所謂Modbus 功能號,讀寫從站的數(shù)據(jù)。Modbus Master 協(xié)議庫支持如下地址:
?00001 - 09999:數(shù)字量輸出(線圈)
?10001 - 19999:數(shù)字量輸入(觸點)
?30001 - 39999:輸入數(shù)據(jù)寄存器(通常為模擬量輸入)
?40001 - 49999:數(shù)據(jù)保持寄存器
支持 Modbus 協(xié)議的設(shè)備或軟件,使用時用戶直接設(shè)置或看到的應(yīng)當是 Modbus 數(shù)據(jù)地址。如果 Modbus 通信的一方提供的所謂 Modbus 協(xié)議只有功能碼,則需要注意了解此功能號與 Modbus 地址間的對應(yīng)關(guān)系。
五、伺服驅(qū)動器相關(guān)功能碼介紹
1、H00-00電機編號
14000:匯川20位增量編碼器電機
14101:匯川23位絕對值編碼器電機
電機編號設(shè)置錯誤,將發(fā)生ER120(產(chǎn)品匹配故障)
2、H02-31 系統(tǒng)參數(shù)初始化,用于使參數(shù)恢復(fù)出廠值或清除故障記錄。
設(shè)定值 | 操作含義 | |
0 | 無操作 | |
1 | 恢復(fù)出廠設(shè)定值 | 除 H00、H01 組參數(shù),其他組參數(shù)恢復(fù)至驅(qū) 動器出廠值 |
2 | 清除故障記錄 | 最近 10 次故障和警告代碼被清除。 |
3、H03-10 DI5端子功能選擇
DI/DO基本功能定義
設(shè)定值 | DI 端子功能 | 設(shè)定值 | DI 端子功能 |
0 | 不分配 DI 功能 | 19 | JOGCMD-( 反向點動 ) |
1 | S-ON ( 伺服使能 ) | 20 | PosStep( 步進量使能 ) |
2 | ALM-RST( 故障與警告復(fù)位 ) | 21 | HX1( 手輪倍率信號 1) |
3 | GAIN-SEL( 增益切換 ) | 22 | HX2( 手輪倍率信號 2) |
4 | CMD-SEL( 主輔運行指令切換 ) | 23 | HX_EN( 手輪使能信號 ) |
5 | DIR-SEL( 多段運行指令方向選擇 ) | 24 | GEAR_SEL( 電子齒輪選擇 ) |
6 | CMD1( 多段運行指令切換 1) | 25 | ToqDirSel ( 轉(zhuǎn)矩指令方向設(shè)定 ) |
7 | CMD2( 多段運行指令切換 2) | 26 | SpdDirSel ( 速度指令方向設(shè)定 ) |
8 | CMD3( 多段運行指令切換 3) | 27 | PosDirSel ( 位置指令方向設(shè)定 ) |
9 | CMD4( 多段運行指令切換 4) | 28 | PosInSen ( 多段位置指令使能 ) |
10 | M1-SEL( 模式切換 1) | 29 | XintFree ( 中斷定長狀態(tài)解除 ) |
11 | M2-SEL( 模式切換 2) | 30 | 無 |
12 | ZCLAMP( 零位固定使能 ) | 31 | HomeSwitch ( 原點開關(guān) ) |
13 | INHIBIT( 位置指令禁止 ) | 32 | HomingStart ( 原點復(fù)歸使能 ) |
14 | P-OT( 正向超程開關(guān) ) | 33 | XintInhibit ( 中斷定長禁止 ) |
15 | N-OT( 反向超程開關(guān) ) | 34 | EmergencyStop ( 緊急停機 ) |
16 | P-CL( 正外部轉(zhuǎn)矩限制 ) | 35 | ClrPosErr( 清除位置偏差 ) |
17 | N-CL( 負外部轉(zhuǎn)矩限制 ) | 36 | V_LmtSel ( 內(nèi)部速度限制源 ) |
18 | JOGCMD+( 正向點動 ) | 37 | PulseInhibit( 脈沖指令禁止 ) |
注意:
①、H03-10 請勿設(shè)定為上表以外的值。
②、相同 DI 功能不可重復(fù)分配。否則,將發(fā)生 Er.130(DI 功能重復(fù)分配 )。
③、請勿分配了某一 DI 功能,并將該 DI 邏輯置為有效后,再取消該 DI 功能分配,否則該 DI 功能將保持有效!
4、H04-00 DO1端子功能選擇
DO基本功能定義
設(shè)定值 | DO 功能名稱 |
0 | 不分配 DO 功能 |
1 | S-RDY:伺服準備好 |
2 | TGON:電機旋轉(zhuǎn) |
3 | ZERO:零速信號 |
4 | V-CMP:速度一致 |
5 | COIN:定位完成 |
6 | NEAR:定位接近 |
7 | C-LT:轉(zhuǎn)矩限制 |
8 | V-LT:速度受限 |
9 | BK:抱閘 |
10 | WARN:警告 |
11 | ALM:故障 |
12 | ALMO1:輸出 3 位報警代碼 |
13 | ALMO2:輸出 3 位報警代碼 |
14 | ALMO3:輸出 3 位報警代碼 |
15 | Xintcoin:中斷定長完成 |
16 | HomeAttain:原點回零完成 |
17 | ElecHomeAttain:電氣回零完成 |
18 | ToqReach:轉(zhuǎn)矩到達 |
19 | V-Arr:速度到達 |
注意:
①、H04-00 的參數(shù)值請勿設(shè)定為上表以外的值。
②、相同 DO 功能可分配到不同的 DO 端子,包括硬件 DO 與 VDO 端子。
5、H05-00 位置指令來源
位置控制模式時,用于選擇位置指令來源。
設(shè)定值 | 指令來源 | 指令獲取方式 |
0 | 脈沖指令 | 上位機或者其他脈沖發(fā)生裝置產(chǎn)生位置脈沖指令,通過硬件端子輸入至伺服驅(qū)動器。硬件端子通過 H05-01 選擇。 |
1 | 步進量 | 由參數(shù) H05-05 設(shè)置步進量位移。由 DI 功能 FunIN.20 觸發(fā)步進量指令。 |
2 | 多段位置指令 | 由 H11 組參數(shù)設(shè)定多段位置功能的運行方式。由 DI 功能 FunIN.28 觸發(fā)多段位置指令。 |
6、H05-02 電機每旋轉(zhuǎn)一圈的位置指令數(shù)
7、H05-30 原點復(fù)歸使能控制,設(shè)置原點復(fù)歸模式及觸發(fā)信號來源。
設(shè)定值 | 觸發(fā)信號 | 備注 | |
原點復(fù)歸模式 | 觸發(fā)信號 | ||
0 | 關(guān)閉原點復(fù)歸 | 禁止原點復(fù)歸功能 | |
1 | 通過DI 輸入 HomingStart 信號,使能原點復(fù)歸功能 | 原點回零 | DI 信號 FunIN.32(HomingStart:原點復(fù)歸使能 ) |
2 | 通過DI 輸入 HomingStart 信號,使能電氣回零功能 | 電氣回零 | DI 信號 FunIN.32(HomingStart:原點復(fù)歸使能 ) |
3 | 上電后立即啟動原點復(fù)歸 | 原點回零 | 位置模式下,重新上電,第 1 次伺服使能信號 |
4 | 立即進行原點復(fù)歸 | 原點回零 | 位置模式下,伺服使能信號 回零成功后,H05-30=0 |
5 | 啟動電氣回零命令 | 電氣回零 | 位置模式下,伺服使能信號 回零成功后,H05-30=0 |
6 | 以當前位置為原點 | 原點回零 | 不需要 回零成功后,H05-30=0 |
8、H11-12 多段位置第 1 段移動位移。
9、H11-14 多段位置第 1 段最大運行速度。
最大運行速度是指電機不處于加減速過程的勻速運行速度,若 H11-12( 第 1 段移動位移 ) 過小,電機實際轉(zhuǎn)速將小于 H11-14。
10、H11-15 第一段位移加減速時間
多段位置第 1 段電機由 0rpm 勻變速到 1000rpm 的時間。
11、H0C-00 驅(qū)動器軸地址
0:廣播地址,上位機可通過廣播地址對所有驅(qū)動器進行寫操作,驅(qū)動器收到廣播地址的幀進行相應(yīng)操作,但不做回應(yīng)。
1~247:當多臺伺服驅(qū)動器進行組網(wǎng)時,每個驅(qū)動器只能有唯一的地址,否則會導(dǎo)致通信異常或無法通信。
12、H0C-09 通信VDI,設(shè)置是否使用虛擬數(shù)字信號輸入端子 (Virtual Digital Input,簡稱 VDI)。
VDI 類似硬件 DI 端子,可分配 DI 功能。當使能 VDI 時,相當于擴展 DI 的個數(shù),VDI 個數(shù)為 16 個。VDI 與 H03 組 DI 端子分配同一非零 DI 功能,驅(qū)動器將發(fā)生 Er.130 !
首次上電,VDI 端子邏輯由 H0C-10( 上電后 VDI 默認虛擬電平值 ) 決定。之后,VDI 端子邏輯由 H31-00(VDI 虛擬電平 ) 決定。
H0C-10 在面板上顯示為十進制,H31-00 面板不可見,轉(zhuǎn)化成二進制后,H0C-10(H31-00) 的 bit(n)=1 表示VDI(n+1) 端子邏輯為“1”,bit(n)=0 表示 VDI(n+1) 端子邏輯為“0”。
13、H0C-11 通信VDO,設(shè)置是否使用虛擬數(shù)字信號輸出端子 (Visual Digital Output,簡稱 VDO)。
VDO 類似硬件 DO 端子,可分配 DO 功能。當使能 VDO 時,相當于擴展 DO 的個數(shù),VDO 個數(shù)為 16 個。
H0C-12 和 H17-32 在面板上顯示為十六進制,轉(zhuǎn)化成二進制后,H0C-12(H17-32) 的 bit(n)=1 表示 VDO(n+1) 端子邏輯為“1”,bit(n)=0 表示 VDO(n+1) 端子邏輯為“0”。建議各 VDO 端子邏輯電平設(shè)置與 H0C-12 設(shè)置成相反的邏輯。
14、H11-04 位移指令類型選擇
0:相對位移指令
1:絕對位移指令
15、H17-00 VDI1 端子功能選擇,設(shè)置 VDI1( 虛擬輸入端子 1) 對應(yīng)的 DI 功能。
16、H17-02 VDI2 端子功能選擇,設(shè)置 VDI2( 虛擬輸入端子 2) 對應(yīng)的 DI 功能。
17、H02-01 絕對值系統(tǒng)選擇(選擇驅(qū)動器絕對位置功能)。
設(shè)定值 | 絕對值系統(tǒng)選擇 | 備注 |
0 | 增量位置模式 | 驅(qū)動器后需要進行原點復(fù)歸確認機械原點,斷電后無位 置記憶功能。 |
1 | 絕對位置線性模式 | 適用于絕對值編碼器電機(電機編號 H0000=14101), 驅(qū)動器斷電時編碼器通過電池備份數(shù)據(jù),上電后驅(qū)動器 通過編碼器絕對位置計算機械絕對位置。 |
2 | 絕對位置旋轉(zhuǎn)模式 |
18、H02-02 旋轉(zhuǎn)方向選擇
19、H0B-58 機械絕對位置(低 32 位)
顯示使用絕對值功能時,機械對應(yīng)的位置反饋低 32 位數(shù)值 ( 編碼器單位 )。
20、H0B-60 機械絕對位置(高 32 位)
顯示使用絕對值功能時,機械對應(yīng)的位置反饋高 32 位數(shù)值 ( 編碼器單位 )。
21、H0D-20 絕對編碼器復(fù)位使能
通過設(shè)置 H0D-20 復(fù)位編碼器內(nèi)部故障或復(fù)位編碼器反饋多圈數(shù)據(jù)。
◆注:執(zhí)行復(fù)位編碼器反饋多圈數(shù)據(jù)操作后,編碼器絕對位置發(fā)生突變,需要進行機械原點復(fù)歸操作。
設(shè)定值 | 功能 |
0 | 無操作 |
1 | 復(fù)位故障 |
2 | 復(fù)位故障和多圈數(shù)據(jù) |
22、H31-00 通信給定 VDI 虛擬電平
使用 VDI 功能時,設(shè)定 VDI1~VDI16 對應(yīng)的 DI 功能電平。
H31-00 為十進制數(shù),在面板上不可見,只能通過通信方式給定。
23、H0C-02串口波特率設(shè)置(設(shè)置驅(qū)動器與上位機通信速率),出廠設(shè)定值5
設(shè)定值 | 波特率設(shè)置 |
0 | 2400 Kbp/s |
1 | 4800 Kbp/s |
2 | 9600 Kbp/s |
3 | 19200 Kbp/s |
4 | 38400 Kbp/s |
5 | 57600 Kbp/s |
伺服驅(qū)動器的通信速率必須和上位機通信速率一致,否則無法通信。
24、H0C-25 MODBUS 指令應(yīng)答延時,設(shè)定范圍0-5000,出廠設(shè)定值1。
25、H0C-26 MODBUS 通信數(shù)據(jù)高低位順序,設(shè)置使用 MODBUS 通信時,針對 32 位數(shù)據(jù)的傳送格式。出廠設(shè)定值1。
設(shè)定值 | 32 位數(shù)據(jù)高低位順序 |
0 | 高 16 位在前,低 16 位在后 |
1 | 低 16 位在前,高 16 位在后 |