一、硬件準(zhǔn)備
以下以 CPU1215C DC/DC/DC和CM1241 RS485 模塊為例,介紹S7-1200 Modbus RTU 主站通信控制匯川IS620P系列伺服驅(qū)動(dòng)器的組態(tài)及編程步驟。
二、伺服驅(qū)動(dòng)器通信參數(shù)設(shè)置
功能碼 | 名稱 | 設(shè)定值 | 出廠值 | 備注 |
H00-00 | 電機(jī)編號(hào) | 14101 | 14000 | |
H03-10 | DI5端子功能選擇 | 0 | 1 | 取消輸入端子DI5的默認(rèn)伺服使能功 能,以便使用通信VDI控制伺服使能 |
H05-00 | 主位置指令來(lái)源 | 2 | 0 | 修改成多段位置指令 |
H05-02 | 電機(jī)每旋轉(zhuǎn)1圈的位置指令數(shù) | 10000 | 0 | |
H0C-00 | 驅(qū)動(dòng)器軸地址 | 9 | 1 | |
H0C-02 | 串口波特率設(shè)置 | 2 | 5 | |
H0C-09 | 通信VDI | 1 | 0 | |
H0C-26 | MODBUS通信數(shù)據(jù)高低位順序 | 0 | 1 | |
H11-04 | 位移指令類型選擇 | 1 | 0 | 絕對(duì)位移指令 |
H17-00 | VDI1端子功能選擇 | 1 | 0 | 伺服使能 |
H17-02 | VDI2端子功能選擇 | 28 | 0 | 多段位置指令使能 |
參數(shù)修改完成后,需要重現(xiàn)上電,修改H02-01為1,重啟伺服驅(qū)動(dòng)器,否則驅(qū)動(dòng)器上電后需要進(jìn)行原點(diǎn)復(fù)歸確認(rèn)機(jī)械原點(diǎn),斷電后無(wú)位置記憶。若報(bào)警731,則將H0D-20設(shè)置為1,然后重新上電重啟,若報(bào)警ER994,則表示通訊地址沖突。
三、S7-1200PLC的程序編寫(xiě)
1、plc硬件組態(tài)和相關(guān)指令的詳細(xì)介紹請(qǐng)參考(西門(mén)子官方技術(shù)文檔)
在西門(mén)子1200plc中Modbus RTU通信指令有兩個(gè)版本,在這里使用的是舊版本指令

通信參數(shù)的設(shè)置只需主站和從站一致即可,如果覺(jué)得在伺服驅(qū)動(dòng)器處修改比較麻煩,也可以從plc的組態(tài)中進(jìn)行修改,為了參考官方技術(shù)文檔資料,本例從伺服驅(qū)動(dòng)器修改通信參數(shù)
2、完成硬件組態(tài)之后,按如下方式添加通信數(shù)據(jù)塊

3、右鍵數(shù)據(jù)塊圖標(biāo)→點(diǎn)擊“屬性”→“屬性”→去掉“優(yōu)化的塊訪問(wèn)”的“√”


4、雙擊打開(kāi)剛添加的伺服控制數(shù)據(jù)塊,在數(shù)據(jù)塊中添加如下變量并編譯

5、添加“MB_COMM_LOAD”指令組態(tài)端口使用 Modbus RTU 協(xié)議來(lái)通信

注意:要組態(tài) Modbus RTU 的端口,必須調(diào)用“MB_COMM_LOAD”一次。完成組態(tài)后,“MB_MASTER”和“MB_SLAVE”指令可以使用該端口。如果要修改其中一個(gè)通信參數(shù),則只需再次調(diào)用“MB_COMM_LOAD”。每次“MB_COMM_LOAD”調(diào)用將刪除通信緩沖區(qū)中的內(nèi)容。為避免通信期間數(shù)據(jù)丟失,應(yīng)避免不必要地調(diào)用該指令。
6、添加如下指令,當(dāng)按下i0.0時(shí),讀取當(dāng)前位置并將數(shù)值存入DB塊中的編碼器反饋值,功能碼首地址H0B-58(指令首地址計(jì)算:16進(jìn)制0B00改為10進(jìn)制2816,再加58,再加上400001)

7、添加如下指令,按下i0.1,將DB塊中的位置、速度、加減速時(shí)間寫(xiě)入伺服驅(qū)動(dòng)器,功能碼首地址H11-12(指令首地址計(jì)算:16進(jìn)制1100改為10進(jìn)制4352,加上12,再加上400001)

其中,給定位置(第一段位移) 的數(shù)據(jù)范圍若超出 -65536~+65535,則屬于 32 位功能碼,占用兩個(gè)連續(xù)的功能碼組內(nèi)偏置號(hào),占用 2個(gè)連續(xù)的地址,分別為 H11-12 和 H11-13,但通信地址僅由偏置號(hào)較低的地址決定。寫(xiě)入功能碼時(shí),需要根據(jù) H0C-26 的設(shè)置,確定在通信幀中高16位和低16位的先后順序。H0C-26=0時(shí)高 16 位在前,低 16 位在后;H0C-26=1時(shí)低 16 位在前,高 16 位在后。默認(rèn)情況下H0C-26=1,偏置號(hào)較低的地址 (H11-12) 存儲(chǔ)功能碼值的低 16 位,偏置號(hào)較高的地址 (H11-13)存儲(chǔ)功能碼值的高 16 位,與西門(mén)子plc的存儲(chǔ)方式相反。速度和加減速時(shí)間功能碼的數(shù)據(jù)范圍在 -65536~+65535 之內(nèi),為 16 位功能碼,只占用 1 個(gè)功能碼組內(nèi)偏置,只占用 1 個(gè)地址,分別為H11-14和H11-15。
8、添加如下指令,按下i0.2將DB塊中的控制字寫(xiě)入伺服驅(qū)動(dòng)器,功能碼H31-00(指令首地址計(jì)算:16進(jìn)制3100改為10進(jìn)制12544,再加上400001)


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