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