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