在matlab中,简单地利用RS485协议对伺服电机进行控制
首先利用usb轉485串口線將伺服電機連接到電腦上,需要安裝USB轉UART的驅動,并且在matlab中設置串口,串口設置代碼如下:
%% 設置串口 scom = serial('COM3',...'BaudRate', 115200,...'Parity', 'none',...'DataBits', 8,...'StopBits', 1,...'BytesAvailableFcnCount', 1,...'BytesAvailableFcnMode', 'byte',...'BytesAvailableFcn', {@read_serial});其中COM3是串口名,可從設備管理器>端口查看,其他參數為RS485總線參數及單電機命令數據幀格式,可從電機RS485協議說明中查看。
?設置完串口以后,利用485協議將信號寫入到伺服電機中。代碼如下:
gui1=[62,164,1,12,239,160,241,4,0,0,0,0,0,160,140,0,0,193]; fwrite(scom,gui1);其中數組gui1就是利用485協議寫的命令,第一位數62為頭字節,均為62,RS485協議中為0x3E,轉為十進制即為62。第二位164為命令字節,協議中有讀取pid參數命令,電機關閉命令等諸多命令,這里舉例的是多圈位置閉環控制命令,RS485協議中為0xA4,轉為十進制即為164。第三位1即為ID字節,代表需要控制哪個電機,最多可以控制32個電機。第四位為數據長度字節,第五位239為幀頭校核字節,即前四個字節62,164,1,12之和。第六位到第十三位為速度控制字節,首先需要轉動的角度轉化為字節數,3600個字節轉一度,再將所需字節數用十六進制表示,接著將每一位上的十六進制數轉為十進制表示,位數越小,字節位置越靠前。例如所需轉動角度為90度,字節數需要324000,轉為十六進制即為4f1a0,該十六進制數共三位,即04,f1,a0,轉為十進制數為4,241,160,位數由低到高排列160,241,4。第十四位到第十七位為速度控制位,計算方法與位置控制相同,最后一位為字節校驗和,保證前面數據無誤,計算方法將第六位到第十七位按十進制相加除256取余即可,實例代碼中相應位數的和為705,除256取余即為77。
最后需關閉串口。
stopasync(scom);fclose(scom);delete(scom);clear scom;初學rs485,撰此文以記。
總結
以上是生活随笔為你收集整理的在matlab中,简单地利用RS485协议对伺服电机进行控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1602 c语言驱动程序,51单片机驱动
- 下一篇: matlab 7.0电路图,基于Mult