RM新时代赚钱项目

CS機器人RS485通訊

2024-10-15

1.  控制柜485

艾利特機器人CS系列支持RS485通訊,用戶(hù)可以通過(guò)將 RS485 設備連接到圖 1-1 中所示的連接器來(lái)從控制柜執行串行通信。為了能在控制柜中設置 RS485 連接器,必須拆掉串口連接 器,并將 RS485 線(xiàn)焊接到黑色連接器背面的金屬觸點(diǎn),如圖 1-2 所示。黑色塑料裝置的正反 面分別標有 PIN“1 3 5”和“2 4 6”。PIN3 應焊接到 RS485B,PIN4 應焊接 到 RS485A。該 接口支持的最大波特率為 500Kbps。

image.png

image.png



2.  工具IO485

艾利特機器人同樣支持末端工具485通訊,當需要使用末端 RS485 接口與執行器通信時(shí), 需要在示教器工具 IO 界面下進(jìn)行配置,具體配置路 徑為:“工具模擬 IO>工具模式”,選擇 USART 模式,并根據執行器實(shí)際參數配置波特率等參數。從在機器人控制器上寫(xiě)入發(fā)送數據到 數據在 RS485 上開(kāi)始發(fā)送,延遲范圍為 2ms 到 4ms。從在 RS485 上開(kāi)始接收數據到機器人控制器收到數據并開(kāi)始處理,延遲范圍為 2ms 到 4ms。本篇文章介紹控制柜實(shí)現485通訊方式,工具端485查詢(xún)腳本手冊。

3.  腳本指令

3.1 控制柜RS-485 配置

serial_config(enable, baud, parity_bit, stop_bit, size, modbus_rtu, port="/dev/ttymxc0")

   功能: 該指令用于打開(kāi)或關(guān)閉機器人控制柜 RS-485 通信功能,并對其進(jìn)行配置。

   參數: enable:串口通信的使能狀態(tài),boolean 型數據;

              baud:波特率,integer 型數據:2400、4800、9600、19200、38400、57600、115200、230400、 460800、921600、500000;

              parity_bit:串口奇偶校驗,integer 型數據:0(不校驗)、1(奇校驗)、2(偶校校驗);

              stop_bit:串口停止位,integer 型數據:1、2;

              size:串口的位寬。不指定時(shí),使 用默認參數 8,integer 型數據:7 或 8(可選參數)。 若為 MODBUSRTU 模式,則必須為 8;

              modbus_rtu:是否啟用 modbus-rtu 模式,指定為 True 時(shí)為 Modbus-rtu 模式,指定為 False 時(shí)為 RS485 模式,不指定時(shí)使用默認參數 False,boolean 類(lèi)型數據;

              port : 串口的端口名,目前僅支持 :”/dev/ttymxc0” 。不指定名稱(chēng)時(shí) , 使用默認名稱(chēng) “/dev/ttymxc0”,string 型數據(可選參數)。

  返回值: 如果配置成功,返回 True,如果配置失敗,返回 False,boolean 型數據 。

3.2 寫(xiě)入控制柜 RS-485 通信數據

serial_write(data, port="/dev/ttymxc0")

   功能: 該指令用于機器人控制柜 RS-485 發(fā)送數據。

   參數: data:待發(fā)送的數據,string 型數據、integer 型數據、整數 list 型數據、bytes 型數據或 bytearray 型數據,若為 integer 或整數 list 型數據,會(huì )寫(xiě)入一個(gè)或多個(gè)整數數據,數據值若超過(guò) [0-255] 范圍, 會(huì )自動(dòng)按照內存類(lèi)型轉換或內存截斷的方式強制轉換至范圍內。

              port:串口的端口名,目前僅支持:”/dev/ttymxc0”。不指定名稱(chēng)時(shí),使用默認名稱(chēng)“/dev/ttymxc0”, string(可選參數)。

   返回值: 如果發(fā)送成功,返回 True,如果發(fā)送失敗,返回 False,boolean 型數據。

3.3 讀取控制柜 RS-485 通信數據

serial_read(len,is_number=True,time_out=0.1,port="/dev/ttymxc0")

   功能: 該指令用于讀取機器人控制柜 RS-485 通信的數據。

   參數: len:要讀取的字節數,注意假設要讀取的字節數為 5,但實(shí)際只接收到 2 字節數據,最后讀出的 長(cháng)度為 2 字節;

               is_number:是否按照整數格式返回字節數據。若不指定,使用默認參數 True,boolean 型數據 (可選參數);

               time_out:超時(shí)時(shí)間,單位:秒,若小于等于 0,則等待超時(shí)時(shí)間為無(wú)限長(cháng),不指定時(shí),使用默 認值 0.1,float 型數據(可選參數);

               port : 串 口 的 端 口 名 ,目前僅支持 :”/dev/ttymxc0” 。 不 指 定 名 稱(chēng) 時(shí) ,使用默認名 稱(chēng) “/dev/ttymxc0”,string 型數據(可選參數)。

   返回值: bytearray 或 list 型數據,若 is_number 參數 True,則返回值為整數類(lèi)型的 list,若is_number 參數 False,則返回值為 bytes array,若發(fā)生超時(shí),則返回所有已經(jīng)讀取到的數據。

如果僅需要與外部設備485通訊用上述3條腳本指令即可收發(fā),如想同時(shí)寫(xiě)入\讀取多個(gè)寄存 器查找腳本手冊“寫(xiě)入\讀取多個(gè)MODBUS寄存器指令”,本文檔舉例和升降柱做485通訊。

image.png

下文為機器人腳本示例:


import struct
global Currentposition
#通訊設置modbus_rtu
def Connection_rtu():#連接機器人與升降柱伺服通訊
while True:
       Open_RS485 = serial_config(True,57600,0,2,8,True)
       mode = serial_mode()
if mode == "MODBUS-RTU":
return "Connection Success"
break
def Fault_reset():#復位伺服故障,絕大多數故障可復位
   serial_write([1,3329,1])
return "Fault reset Success"
return
def Point_speed(speed):#設置點(diǎn)動(dòng)的速度最小0,最大3000,單位rpm
   serial_write(1, 1540, speed)
return
def Move_position_speed(position,speed):#設置多段移動(dòng)的位置和速度,位置1MM等于10000個(gè)脈沖
#position = position * 10000
   getpos = struct.pack("i",position)
   posset = struct.unpack("2H",getpos)
   serial_modbus_write_registers(1,4364,[posset[0],posset[1]])
   sleep(0.01)
   serial_modbus_write_single_register(1,4366,speed)
return
while True:
       in3 = get_standard_digital_in(3)
if in3 == True :
           Servo_control(17)
           sleep(0.1)
           Servo_control(49)
           sleep(0.5)
           Servo_control(17)
           sleep(0.1)
           Servo_control(49)
break
       sync()
def Upper_limit_stop():#到達上限位置,DI2觸發(fā),停止上升,升降柱處于伺服使能狀態(tài)
   sleep(0.01)
   in2 = get_standard_digital_in(2)
if in3 == True:
       Servo_control(1)
def Lower_limit_stop():#到達下限位置,DI3觸發(fā),停止下降,升降柱處于伺服使能狀態(tài)
   sleep(0.01)
   in3 = get_standard_digital_in(3)
if in3 == True:
       Servo_control(1)
 
Connection_rtu()
#Fault_reset()
#sleep(0.01)
#Originsetting()
#Currentposition = Current_position()
#sleep(0.01)
#Servo_control(1)
#sleep(0.01)
#Move_position_speed(100000,500)
#sleep(0.01)
#Servo_control(9)
while True:
   Upper_limit_stop()
   Lower_limit_stop()
   Currentposition = Current_position()
 

3.4 與通訊助手測試案例

image.png

舉例機器人發(fā)送端,發(fā)送整數123,助手端同樣收到123。

注:1.下圖中紅色方框內的顯示編碼格式需設置為十進(jìn)制,因為機器人發(fā)送十進(jìn)制,若不勾選,則會(huì )顯示16進(jìn)制的123,值為7B。

image.png

十進(jìn)制"123"

image.png

十六進(jìn)制“123“

image.png

超過(guò)255的數據,顯示選擇Ascll

舉例機器人接收端:

image.png

助手發(fā)送需勾選16進(jìn)制發(fā)送

image.png

機器人接收后會(huì )轉為10進(jìn)制

這種方法看起來(lái)不夠直觀(guān),因此建議接收時(shí)不選用list,選擇bytearray,注意在接收指令的后面加python解碼指令,編譯為utf-8。

image.png

不需要勾選16進(jìn)制

image.png

這里選擇解碼編譯utf-8,可直接讀到助手發(fā)送的值


download-669.svg comicon14.svg

電話(huà)咨詢(xún)

download-397.svg comicon15.svg

免費試用

Vector.svg Frame.svg

微信小程序

img1.jpg

微信小程序

準備好體驗輪式人形機器人帶來(lái)的效率飛躍了嗎?開(kāi)啟智能制造之旅
了解我們的機器人如何幫助您的業(yè)務(wù)增長(cháng)
歡迎下載艾利特機器人資料

我已閱讀并同意艾利特《隱私政策》和《法律聲明》

我已知曉并同意艾利特通過(guò)電子郵件發(fā)送相關(guān)資料

提交
RM新时代赚钱项目