免费观看一区二区,国产一级av网站在线观看,99re热有精品视频国产,久久免费精品一区二区三区,久久久久久久做爰毛片

專業(yè)的微特電機產(chǎn)品發(fā)布平臺
用戶名: 密碼: 注冊
設(shè)為首頁 加入收藏 聯(lián)系我們
免費注冊 企業(yè)免費建站
新技術(shù)論壇 會員產(chǎn)品發(fā)布
TB6600QQ群:70241714   步進電機論文   六軸工業(yè)機器人解決方案  
步進電機     驅(qū)動器     控制器     馬達IC     伺服電機     無刷直流電動機     微特電機文獻     工控器件     運動控制新產(chǎn)品     六軸工業(yè)機器人    
 當前位置:首頁--無刷直流電機型號大全--
Modbus 控制方式(ZHM)
2017年9月4日

Modbus 控制方式

1.寄存器說明

    驅(qū)動器可以通過 modbus(RTU 模式)來控制驅(qū)動器。主機可以

通過 modbus 的讀寫寄存器功能來設(shè)置驅(qū)動器參數(shù)和控制運行。驅(qū)

動器支持的功能碼為0x3(讀寄存器)、0x6(寫寄存器)、0x78(寫

目標位置)、0x7a(修改設(shè)備地址)。

寄存器列表如下:

blob.png

blob.png

2.Modbus 通信格式

a.modbus 主機讀取數(shù)據(jù)及從機應答格式 (功能碼 03)

blob.png

串口接收到的數(shù)據(jù)都是無符號數(shù),如果寄存器是有符號數(shù),

發(fā)送的則是二進制補碼的格式,轉(zhuǎn)換成有符號數(shù)的算法如下(VB

代碼):

    If modbus.data(11) > 32767 Then

    disp_modbus_data.PU = (modbus.data(11) - 32768) * 65536

+ modbus.data(10)

    disp_modbus_data.PU = -((&H7FFFFFFF - disp_modbus_data.

PU) + 1)

    Else

    disp_modbus_data.PU = dmodbus.data(11) * 65536 + modbus.

data(10)

    End If

    注 : modbus.data(11) 為目標位置高 16 位 modbus.data(10)

為目標位置低 16 位

   b.modbus 主機寫數(shù)據(jù)及從機應答格式 ( 功能碼 06)

blob.png

    c.modbus 主機寫脈沖數(shù) (功能碼 0x10)

blob.png

    脈沖數(shù)是有符號數(shù),一個負數(shù) ( 假設(shè)此數(shù)為 X) 轉(zhuǎn)換成 32 位

16 進制數(shù)的算法如下 (vb 代碼 ):

    If X < 0 Then

        X = &H7FFFFFFF + (X + 1)

        PU24_31 = Fix(X / (256 * 65536)) + &H80

Else

        PU24_31 = Fix(X / (256 * 65536))

End If

   PU16_23 = Fix(X / 65536) mod 256

    PU8_15 = Fix(X / 256) mod 256

    PU0_7 = X mod 256

    注:fix() 為取整函數(shù)

blob.png

    d.modbus 主機寫脈沖數(shù) (特殊功能碼 0x78)

blob.png

3.CRC 校驗示例代碼

unsigned short CRC16(puchMsg, usDataLen)

unsigned char *puchMsg ; /* 要進行 CRC 校驗的消息 */

unsigned short usDataLen ; /* 消息中字節(jié)數(shù) */

{

unsigned char uchCRCHi = 0xFF ; /* 高 CRC 字節(jié)初始化 */

unsigned char uchCRCLo = 0xFF ; /* 低 CRC 字節(jié)初始化 */

unsigned uIndex ; /* CRC 循環(huán)中的索引 */

while (usDataLen--) /* 傳輸消息緩沖區(qū) */

{

uIndex = uchCRCHi ^ *puchMsgg++ ; /* 計算 CRC */

uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;

uchCRCLo = auchCRCLo[uIndex] ;

}

return (uchCRCHi << 8 | uchCRCLo) ;

}

    /* CRC 高位字節(jié)值表 */

    static unsigned char auchCRCHi[] = {

    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00,

0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,

0x40, 0x01, 0xC0,

    0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,

0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,

0xC0, 0x80, 0x41,

    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00,

0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,

0x41, 0x01, 0xC0,

    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,

0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00,

0xC1, 0x81, 0x40,

    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00,

0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,

0x40, 0x01, 0xC0,

    0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,

0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01,

0xC0, 0x80, 0x41,

    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00,

0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,

0x40, 0x01, 0xC0,

    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,

0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,

0xC0, 0x80, 0x41,

    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00,

0xC1, 0x81, 0x40

    } ;

    /* CRC 低位字節(jié)值表 */

    static char auchCRCLo[] = {

0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5,

0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9,

0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F,

0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13,

0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6,

0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA,

0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA,

0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6,

0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3,

0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF,

0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79,

0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75,

0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90,

0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C,

0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98,

0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C,

0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81,

0x80, 0x40 }

4.modbus 方式主機控制過程

a:位置模式

(1)寫 設(shè)備 1(功能碼 0x06 地址 0 Modbus 使能) 1

(2)讀 設(shè)備 1(功能碼 0x03 地址 16 報警代碼) (讀

到 0 時為運行正常)

(3)寫 設(shè)備 1(功能碼 0x06 地址 3 電機目標速度)2000

(4)寫 設(shè)備 1(功能碼 0x78 電機目標位置)1000

(5)讀 設(shè)備 1(功能碼 0x03 地址 10 目標位置低 16 位)

(6)讀 設(shè)備 1(功能碼 0x03 地址 11 目標位置高 16 位)

以上兩個寄存器都為 0 時代表已經(jīng)到了目標位置

(7)重復(4)(5)(6)過程,控制電機位置。

注:電機的目標速度為電機運行的****速度,如果目標位置

較小,電機可能達不到****速度即停止。加速過程寫入的電機目標

位置是在原剩余的位置上加上新的數(shù)值。例如,第一次寫入 1024

代表運行一圈,運行到還剩 256,代表還有 1/4 圈要運行,但此時

又寫入一個 1024,此時電機的目標位置變成 1024+256 而不是 1024

替代 256。這樣不會因為還沒到位又寫入一個數(shù)值而導致出現(xiàn)錯誤。

也可以自己定義誤差范圍,例如到了>-2且<2,就立刻寫入新的數(shù),

這樣在有些定位精度要求低的場合提高定位的速度。

b:速度模式

(1)寫 設(shè)備 1(功能碼 0x06 地址 0 Modbus 使能) 1

(2)讀 設(shè)備 1(功能碼 0x03 地址 14 報警代碼) (讀到

0 時為運行正常)

(3)寫 設(shè)備 1(功能碼 0x06 地址 3 電機加速度) 6000

(4)寫 設(shè)備 1(功能碼 0x06 地址 2 電機目標速度) 2000

(5)重復(4)過程,控制電機轉(zhuǎn)速。

5. modbus 方式主機控制多個從機

a:位置模式 控制多個從機不同時開始運動

(1)寫 設(shè)備 1(功能碼 0x06 地址 0 Modbus 使能) 1

(2)讀 設(shè)備 1(功能碼 0x03 地址 14 報警代碼) (讀到

0 時為運行正常)

(3)寫 設(shè)備 2(功能碼 0x06 地址 0 Modbus 使能) 1

(4)讀 設(shè)備 2(功能碼 0x03 地址 14 報警代碼) (讀

到 0 時為運行正常)

(5)寫 設(shè)備 1(功能碼 0x06 地址 3 電機目標速度) 2000

(6)寫 設(shè)備 1(功能碼 0x78 電機目標位置) 1000

(7)讀 設(shè)備 1(功能碼 0x03 地址 12 目標位置低 16 位)

8)讀 設(shè)備 1(功能碼 0x03 地址 13 目標位置高 16 位)

以上兩個寄存器都為 0 時代表已經(jīng)到了目標位置

(9)寫 設(shè)備 2(功能碼 0x06 地址 3 電機目標速度 2000

(10)寫 設(shè)備 2(功能碼 0x78 電機目標位置) 1000

(11)讀 設(shè)備2(功能碼0x03 地址12 目標位置低16位)

(12)讀 設(shè)備2(功能碼0x03 地址13 目標位置高16位)

以上兩個寄存器都為 0 時代表已經(jīng)到了目標位置

(13)重復(5)~(12)過程,控制電機位置。

注:驅(qū)動器的地址需要先設(shè)置,可以通過提供的上位機設(shè)置

驅(qū)動器地址。由于以上方式在寫了目標位置后驅(qū)動器會立刻控制電

機運動,而寫入地址 2 的控制數(shù)據(jù)需要一定時間,所以地址 1 和地

址 2 的電機不會同時運動。如果下一次的運行速度不變,可以不必

多次寫入電機目標速度。

b:位置模式 控制多個從機同時開始運動

(1)寫 設(shè)備 1(功能碼 0x06 地址 0 Modbus 使能) 1

(2)讀 設(shè)備1(功能碼0x03 地址14 報警代碼) (讀

到 0 時為運行正常)

(3)寫 設(shè)備 2(功能碼 0x06 地址 0 Modbus 使能) 1

(4)讀 設(shè)備 2(功能碼 0x03 地址 14 報警代碼) (讀

到 0 時為運行正常)

(5)寫 設(shè)備 1(功能碼 0x06 地址 2 電機目標速度) 2000

(6)寫 設(shè)備 1(功能碼 0x06 地址 3 目標位置緩存) 1000

(7)寫 設(shè)備 2 (功能碼 0x06 地址 2 電機目標速度)2000

(8)寫 設(shè)備 2 (功能碼 0x06 地址 3 目標位置緩存) 1000

(9)寫 設(shè)備 0(廣播)(功能碼 0x06 地址 1 使能) 1

(10)讀 設(shè)備 1(功能碼 0x03 地址 12 目標位置低 16 位)

(11)讀 設(shè)備 1(功能碼 0x03 地址 13 目標位置高 16 位)

以上兩個寄存器都為 0 時代表已經(jīng)到了目標位置

(12)讀 設(shè)備 2(功能碼 0x03 地址 12 目標位置低 16 位)

(23)讀 設(shè)備 2(功能碼 0x03 地址 13 目標位置高 16 位)

以上兩個寄存器都為 0 時代表已經(jīng)到了目標位置

(13)重復(5)~(13)過程,控制電機位置。

上位機軟件使用說明

本驅(qū)動器提供一個上位機軟件,用于監(jiān)測和測試驅(qū)動器?

以通過軟件查看和設(shè)置驅(qū)動器內(nèi)部參數(shù)。

blob.png

如上圖所示,軟件分為波形顯示,電機運行參數(shù)等幾個部分。

下面介紹一下各個部分的功能和作用。

波形顯示:一共有 4 個通道,分別用 4 種顏色表示。顏色和

電機運行參數(shù) 內(nèi)的字體顏、色相同。即:藍表示電流,綠表示輸

出的脈寬,紅表示當前轉(zhuǎn)速,黑表示電壓。

電機運行參數(shù):表示電機運行的實時數(shù)據(jù)。

驅(qū)動器設(shè)置參數(shù):顯示驅(qū)動器的撥碼開關(guān),和方向使能設(shè)置。

如果是 modbus 模式,此欄無效。

驅(qū)動器運行狀態(tài):此欄會顯示驅(qū)動器的報警狀態(tài),如果沒有

報警會顯示運行正常。

Modbus 控制參數(shù):此欄內(nèi)的參數(shù)是驅(qū)動器內(nèi)部的參數(shù),如果

要修改這些參數(shù),必須先對 modbus 使能寫 1。具體的參數(shù)含義參考

寄存器說明。

Modbus 讀取:此欄可設(shè)定驅(qū)動器的地址,讀取驅(qū)動器數(shù)據(jù)的

周期,和是否讀取。

Modbus發(fā)送:此欄用于修改驅(qū)動器參數(shù),首先選定參數(shù)類型,

再設(shè)定好參數(shù)數(shù)據(jù),然后點發(fā)送即可。

上位機測試如何開始

1. 連接需要的信號

1. 插上電機動力線和編碼器線

2. 驅(qū)動器上+VDC 和 GND接上電源,電源根據(jù)電機的額定電壓來,

電機額定電壓 36V 就接 36V.

3 插入附帶的 USB 轉(zhuǎn) 485 線在電腦的 485 接口上,另外一端插驅(qū)動

器上

2. 安裝驅(qū)動和上位機軟件

1. 安裝 USB 線驅(qū)動程序,在光盤中,blob.png 。安裝好后,插入

附帶的 USB 轉(zhuǎn) 485 線在電腦的 485 接口上,另外一端插驅(qū)動器上,

然后在電腦中的設(shè)備管理器中查看分配的 COM 口號。如下圖所示為

COM2

blob.png

2. 安裝電腦上位機軟件,blob.png

安裝好后打開。在驅(qū)動

器運行狀態(tài)中選擇剛剛在設(shè)備管理器中看到的 COM 口號,這個是

COM2。正常的話可以讀到數(shù)據(jù)。如下圖所示:

blob.png

3. 試運行

重新上電,然后在上位機中如操作

選擇 modbus 使能 參數(shù)數(shù)據(jù)輸入 1 點發(fā)送

選擇 PU 步數(shù) 參數(shù)數(shù)據(jù)輸入 4000 點發(fā)送

(1000 線編碼器,經(jīng)過內(nèi)部倍頻后有 4000 脈沖一圈)上面發(fā)送

4000 電機會轉(zhuǎn)一圈,發(fā)送 -4000 發(fā)轉(zhuǎn)一圈。 這個是試運行,具體

需要什么控制方式,可以查看說明書。

 常見問題處理

1. 如果脈沖控制端口 DIR 導通方向和我所需要的方向不同怎

么改?

答:可以通過上位機來設(shè)置 DIR 的極性,接上上位機后,

modbus 使能寫 1 , DIR 極性 寫 0. 最后參數(shù)保存標志寫 1. 重新

上電即可。

2. 上電驅(qū)動器不報警,給運行脈沖后驅(qū)動器報警,怎么回事?

答:檢查接插件是否松動,電機 UVW 和編碼器線任何一根斷

或順序交換都會無法正常運行。

3. 怎么通過上位機控制運行

答:連接好電機,驅(qū)動器上電,通過提供的 USB 線連接驅(qū)動

器和電腦,根據(jù)“上位機使用說明”設(shè)置好,使得上位機能讀取到

數(shù)據(jù)后。 Modbus 使能 發(fā)送 1。然后 PU 步數(shù) 發(fā)送需要走的距離。


設(shè)為首頁   |   加入收藏   |   聯(lián)系我們   |   站長留言   |   廣告服務   |   友情鏈接   |   免費展示
網(wǎng)站實名:步進電機網(wǎng) 步進電機驅(qū)動器網(wǎng) 微特電機網(wǎng) 網(wǎng)站地圖 新聞中心
版權(quán)所有:北京時代四維科技有限公司
© Copyright By m.wlywrsj.cn
京ICP備11042559號-1