亚洲aⅴ精品,亚洲精品日本,国产精品97色综合国产精品,欧美日韩国产一二三区

CS機器人RS485通訊

2024-10-15

1.  控制柜485

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

圖 1-1CS 控制柜 RS485 連接器

圖1- 2 黑色器件

2.  工具IO485

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

3.  腳本指令

3.1 控制柜RS-485 配置

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

? 功能: 該指令用于打開或關閉機器人控制柜 RS-485 通信功能,并對其進行配置。

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

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

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

              stop_bit:串口停止位,integer 型數(shù)據(jù):1、2;

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

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

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

? 返回值: 如果配置成功,返回 True,如果配置失敗,返回 False,boolean 型數(shù)據(jù) 。

3.2 寫入控制柜 RS-485 通信數(shù)據(jù)

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

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

? 參數(shù): data:待發(fā)送的數(shù)據(jù),string 型數(shù)據(jù)、integer 型數(shù)據(jù)、整數(shù) list 型數(shù)據(jù)、bytes 型數(shù)據(jù)或 bytearray 型數(shù)據(jù),若為 integer 或整數(shù) list 型數(shù)據(jù),會寫入一個或多個整數(shù)數(shù)據(jù),數(shù)據(jù)值若超過 [0-255] 范圍, 會自動按照                           內存類型轉換或內存截斷的方式強制轉換至范圍內。

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

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

3.3 讀取控制柜 RS-485 通信數(shù)據(jù)

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

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

? 參數(shù): len:要讀取的字節(jié)數(shù),注意假設要讀取的字節(jié)數(shù)為 5,但實際只接收到 2 字節(jié)數(shù)據(jù),最后讀出的 長度為 2 字節(jié);

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

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

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

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

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

下文為機器人腳本示例:

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():#復位伺服故障,絕大多數(shù)故障可復位

   serial_write([1,3329,1])

   return "Fault reset Success"

   return

def Point_speed(speed):#設置點動的速度最小0,最大3000,單位rpm

   serial_write(1, 1540, speed)

   return

def Move_position_speed(position,speed):#設置多段移動的位置和速度,位置1MM等于10000個脈沖

   #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 與通訊助手測試案例

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

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

十進制"123"

十六進制“123“

超過255的數(shù)據(jù),顯示選擇Ascll

舉例機器人接收端:

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

機器人接收后會轉為10進制

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

不需要勾選16進制

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


download-669.svg comicon14.svg

電話咨詢

download-397.svg comicon15.svg

免費試用

Vector.svg Frame.svg

微信小程序

img1.jpg

微信小程序

準備好突破增長瓶頸,開啟智能制造了嗎?
了解我們的機器人如何幫助您的業(yè)務增長
歡迎下載艾利特機器人資料

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

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

提交