《modbus驅(qū)動電機(jī)》由會員分享,可在線閱讀,更多相關(guān)《modbus驅(qū)動電機(jī)(10頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
使用MODBUS通訊協(xié)議連接電機(jī)及簡單調(diào)試
剛好手頭有兩個電機(jī),其驅(qū)動器支持MODBUS協(xié)議,用這個來學(xué)習(xí)一下。
學(xué)習(xí)目的:搭建電機(jī)硬件環(huán)境/使用上位機(jī)發(fā)送速度指令控制電機(jī)轉(zhuǎn)速。
MODBUS的粗淺理解:
. Modbus是施耐德的
. 速度幾十K沒問題,跟芯片也有關(guān)系
. 可以掛247個節(jié)點
. 只有Master主動發(fā)數(shù)據(jù),slave才能返回數(shù)據(jù),slave不能主動說話
. 這里插一句吐槽,外國人取名太直接了,還有接插件公母也是,叫male,female,用的時候插在一起,真是讓人浮想聯(lián)翩
. 傳輸模式有RTU和ASCII兩種可選,RTU傳輸速率更高所以更常用
. 傳
2、輸距離比232遠(yuǎn)多了...
授課:XXX
. 代碼系統(tǒng):起始位,數(shù)據(jù)位,校驗位,停止位.....
. 另外網(wǎng)上有說反應(yīng)慢延時的,暫時沒碰到,幾十K一般也夠用了。
各種介紹:
http://www.modbus.org/
https://en.wikipedia.org/wiki/Modbus
硬件環(huán)境搭建:
. 硬件:驅(qū)動器 / 伺服電機(jī)兩個 / 串口服務(wù)器(宇泰UT-6601H) / PC / 網(wǎng)線若干
. 連線:
· 電機(jī)接驅(qū)動器;
· 驅(qū)動器出來DB9的接頭,使用485半雙工接線:RS485_A,RS485_B進(jìn)串口服務(wù)器的T/R+,T/R-;
授課:
3、XXX
· 串口服務(wù)器另一端用網(wǎng)線接PC。
3.?連接設(shè)置:PC需要和串口服務(wù)器設(shè)置在同一網(wǎng)段,串口服務(wù)器需要設(shè)置通訊模式MCP,波特率,連接方式RS485_HALF.
4.?設(shè)置虛擬串口:由于用的是網(wǎng)線進(jìn)的PC,所以需要設(shè)置一下虛擬串口,這里用的是NPort Windows Driver Manager。
授課:XXX
這時候PC到電機(jī)之間的連接就都完成了
上位機(jī)發(fā)送指令:
. 調(diào)試軟件調(diào)試:用驅(qū)動器自帶的軟件調(diào)試,使能,運轉(zhuǎn)OK
. 使用串口助手發(fā)指令:根據(jù)說明書,速度控制寄存器位置是20000,想讓電機(jī)以500rpm的速度轉(zhuǎn),發(fā)送指令01 06 4E
4、20 FE 0C DF 4D 00,電機(jī)運轉(zhuǎn)。
授課:XXX
其中01表示控制的節(jié)點,06是功能指令表示寫數(shù)據(jù),4E 20表示寄存器位置,F(xiàn)E 0C是寫入的數(shù)據(jù),DF 4D是CRC校驗,00表示停止位,校驗位可以用CRC校驗工具計算出來。
授課:XXX
CRC校驗工具:
授課:XXX
3.?使用MODBUS調(diào)試助手發(fā)送指令:串口助手畢竟還是不太方便,可以用專門的Modbus調(diào)試工具,我用的是Modbus調(diào)試精靈。這里有個坑是,寫入的寄存器地址必須是8進(jìn)制數(shù),之前我寫20000死活不轉(zhuǎn),改成47040就好了;數(shù)值是16進(jìn)制的,所以我寫500的時候電機(jī)飛轉(zhuǎn)起來。好處是不
5、用自己算CRC校驗之類的。
4.使用程序發(fā)送指令:?Python確實是高級高級語言,有了它確實喪失了學(xué)習(xí)其他語言的興趣...
Modbus的庫:
Modbus_tk :完整modbus協(xié)議棧的實現(xiàn),支持modbus tcp/RTU{1.提供slave模擬器,即模擬modbus server:502), web-based hmi master支持}
授課:XXX
Pymodbus:使用twisted實現(xiàn)的modbus完整協(xié)議(支持異步通訊)
MinimalModbus :只支持modbus rtu
我用的是MinimalModbus的庫:
安裝:$ pip instal
6、l minimalmodbus
說明書:https://minimalmodbus.readthedocs.io/en/master/readme.html
設(shè)置及寫入速度:
import minimalmodbus
#set the 1st slaveaxis1=minimalmodbus.Instrument('com1',1) axis1.serial.baudrate=9600 axis1.serial.timeout=1
#set the 2nd slaveaxis2=minimalmodbus.Instrument('com1',2)axis2.serial.baudrate=9600axis2.serial.timeout=1
#set axis speedaxis1.write_register(20000,0x1F)axis2.write_register(20000,0xDF)
電機(jī)運轉(zhuǎn)成功
授課:XXX
總結(jié):沒有總結(jié)。
凡事淺嘗輒止,電機(jī)能轉(zhuǎn)就行了,學(xué)習(xí)到此結(jié)束。
(注:可編輯下載,若有不當(dāng)之處,請指正,謝謝!)
授課:XXX