日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

ABB機器人與PLC位置數(shù)據(jù)交互 詳細講解

 鉞YUE 2024-05-28 發(fā)布于天津

圖片ABB機器人發(fā)送當前坐標位置給PLC的詳細過程可以分為以下幾個步驟,以下將結(jié)合參考文章中的信息進行清晰講解:

1. 通信協(xié)議與接口選擇

  • 通信協(xié)議:ABB機器人與PLC之間可以通過多種工業(yè)現(xiàn)場通信協(xié)議進行數(shù)據(jù)傳輸,如ProfiBus、ProfiNet、DeviceNet等。其中,ProfiNet作為一種高性能的以太網(wǎng)解決方案,常用于實現(xiàn)機器人與PLC之間的實時通信。

  • 接口選擇:根據(jù)PLC的型號和配置,選擇合適的接口與ABB機器人進行連接。例如,S7-1200 PLC可以通過PROFINET接口與ABB機器人進行通信。

2. 變量聲明與數(shù)據(jù)類型

  • 變量聲明:在ABB機器人中,需要聲明用于存放機器人當前位置數(shù)據(jù)的變量。這些變量包括表示TCP(工具中心點)當前坐標的x、y、z坐標值以及繞x、y、z軸旋轉(zhuǎn)的角度值。這些數(shù)據(jù)的類型通常是實數(shù)類型,在ABB機器人中可以使用num或dnum來表示,其中num類型與西門子PLC中的real類型一致,都是32位的單精度實數(shù)。

  • 數(shù)據(jù)類型匹配:確保ABB機器人中聲明的變量數(shù)據(jù)類型與PLC中對應(yīng)的數(shù)據(jù)類型一致,以便進行正確的數(shù)據(jù)傳輸和解析。

3. 組輸出信號配置

  • 信號長度:由于機器人當前位置數(shù)據(jù)都是32位的單精度實數(shù)類型,因此每個組輸出信號的長度也應(yīng)該是32位。

  • 信號配置:在ABB機器人中配置組輸出信號,以便將機器人的實時位置數(shù)據(jù)發(fā)送給PLC。這可以通過使用ABB機器人內(nèi)置的數(shù)據(jù)處理指令編寫實時位置數(shù)據(jù)發(fā)送程序來實現(xiàn)。

4. 中斷子程序編寫

  • 讀取位置數(shù)據(jù):在ABB機器人中創(chuàng)建一個中斷子程序,用于定期讀取機器人的當前位置數(shù)據(jù)。這些數(shù)據(jù)包括TCP的x、y、z坐標值以及旋轉(zhuǎn)角度值。

  • 數(shù)據(jù)處理:在中斷子程序中,對讀取到的位置數(shù)據(jù)進行必要的處理,如單位轉(zhuǎn)換、格式調(diào)整等,以確保數(shù)據(jù)符合PLC的接收要求。

5. 數(shù)據(jù)發(fā)送與接收

  • 數(shù)據(jù)發(fā)送:將處理后的位置數(shù)據(jù)通過之前配置的組輸出信號發(fā)送給PLC。這可以通過ABB機器人的通信模塊和PLC的PROFINET接口實現(xiàn)。

  • 數(shù)據(jù)接收:在PLC中編寫相應(yīng)的程序來接收ABB機器人發(fā)送的位置數(shù)據(jù)。這包括配置PLC的IP地址、端口號等網(wǎng)絡(luò)參數(shù),以及編寫用于解析和存儲接收到的數(shù)據(jù)的程序。

6. 調(diào)試與優(yōu)化

  • 通信測試:在完成上述配置和編程后,進行通信測試以確保ABB機器人能夠成功地將實時位置數(shù)據(jù)發(fā)送給PLC,并且PLC能夠正確地接收和解析這些數(shù)據(jù)。

  • 性能優(yōu)化:根據(jù)測試結(jié)果對通信參數(shù)、數(shù)據(jù)處理程序等進行必要的優(yōu)化和調(diào)整,以提高數(shù)據(jù)傳輸?shù)膶崟r性和準確性。

  • 1. ABB機器人發(fā)送浮點數(shù)數(shù)據(jù)

    圖片

    圖片

    2. 發(fā)送坐標,機器人回端要解決的問題

    圖片

3. 機器人端進行數(shù)據(jù)高低位轉(zhuǎn)換

圖片

4. PLC數(shù)據(jù)類型講解

圖片

圖片

5. 分析機器人端和PLC端需要創(chuàng)建的變量數(shù)據(jù)

   任務(wù)要求:回傳機器人1軸-6軸以及XYZ的坐標值

圖片

圖片

MODULE SUCC_B_station_Lmsa!B站林木森Lmsa VAR intnum intno1; !聲明一個中斷識別號 VAR num POS{9}; !聲明一個存放J1-J6 XYZ坐標的數(shù)組 VAR rawbytes rawbyte1; !聲明一個Rabytes數(shù)據(jù)類型用于存放打包與解包的數(shù)據(jù)。 VAR byte byte1{4}; !聲明存放一個浮點數(shù)數(shù)據(jù)被拆分成組成這個浮點數(shù)的4個字節(jié)數(shù)據(jù)。
VAR byte Position{36};!存放將9個坐標浮點數(shù)轉(zhuǎn)換為字節(jié)的4X9=36字節(jié)的一個數(shù)組“Position{36}” VAR num Lmsa; !聲明一個遍歷Position數(shù)組的NUM變量 CONST jointtarget Phome{8}:=[[[90,-20,-57.2,-0.59,90,0.2584],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[-7.85711E-7,7.00837,-7.39141,1.05234E-39,30.3831,1.45085E-37],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],[[4.50332,7.23671,-7.64511,-7.65159,30.7097,8.8439],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],[[-16.693,8.55096,-1.39327,32.3497,27.7035,-37.8103],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],[[-10.9289,-32.9271,32.5103,18.0069,32.1168,-20.9049],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],[[-36.0406,32.8987,-33.2878,45.3095,45.8053,-55.1465],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],[[-36.0406,60.5635,-0.919765,124.632,38.277,-151.317],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],[[-36.0406,37.4155,-47.9823,39.4339,-1.33303,-46.1254],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]]];
PROC Position_Lmsa() !讀取機器人當前位置的子程序
VAR jointtarget Jpos; !聲明jointtarget用于存放機器人關(guān)節(jié)軸角度數(shù)據(jù) VAR robtarget Lpos; !聲明robtarget用于存放機器人XYZ數(shù)據(jù) Jpos:=CJointT(); !讀取機器人當前位置6個關(guān)節(jié)軸角度存入Jpos Pos{1}:=Jpos.robax.rax_1; !把機器人1軸角度的數(shù)據(jù)放入到Pos{1}中 Pos{2}:=Jpos.robax.rax_2; Pos{3}:=Jpos.robax.rax_3; Pos{4}:=Jpos.robax.rax_4; Pos{5}:=Jpos.robax.rax_5; Pos{6}:=Jpos.robax.rax_6;!把機器人6軸角度的數(shù)據(jù)放入到Pos{6}中 Lpos:=CRobT(); !讀取機器人當前位置的坐標存入Lpos Pos{7}:=Lpos.trans.x; !把機器人X軸坐標的數(shù)據(jù)放入到Pos{7}中 Pos{8}:=Lpos.trans.y; !把機器人X軸坐標的數(shù)據(jù)放入到Pos{8}中 Pos{9}:=Lpos.trans.z; !把機器人Z軸坐標的數(shù)據(jù)放入到Pos{9}中
ClearRawBytes rawbyte1; !清除Rwabyte1中的值 Lmsa:=1; !初始化Lmsa,用于從下標1開始遍歷Position這個數(shù)組 FOR I FROM 1 TO 9 DO !開始9次循環(huán) PackRawBytes POS{I},rawbyte1,1\Float4; !把Pos{i}的值以浮點數(shù)的形式打包放入到Rwabyte1中 FOR J FROM 1 TO 4 DO !開始4次循環(huán) UnpackRawBytes rawbyte1,J,byte1{J}\hex1;!把rawbyte1中的值拆分成四個字節(jié)以16進制的形式放入到Byte1數(shù)組的四個元素中 ENDFOR !結(jié)束4次循環(huán) FOR K FROM 4 TO 1 DO !開始4次循環(huán) Position{Lmsa}:=byte1{k};!把byte1數(shù)組中的元素從大到小賦值給Posittion數(shù)組 Incr Lmsa;!Lmsa 變量自增1 ENDFOR!結(jié)束4次循環(huán) ENDFOR!結(jié)束9次循環(huán) ENDPROC
Proc Send_Pos() SocketClose Socket1; SocketCreate Socket1; SocketConnect Socket1,'192.168.0.1',2000; SocketSend Socket1\data:=Position; SocketClose Socket1; ENDPROC
PROC main()!主程序 IDelete intno1; !刪除一個中斷識別號 CONNECT intno1 WITH HuiChuan_Lmsa; !把Huichuan_Lmsa這個程序關(guān)聯(lián)在Intno1的中斷識別號上 ITimer 0.8,intno1; !每0.8秒執(zhí)行一次HuiChuan_Lmsa程序 FOR i FROM 1 TO 8 DO for j from 1 to 8 DO MoveAbsJ phome{j},v500,z30,tool0; waittime 2; ENDFOR ENDFOR ENDPROC
TRAP HuiChuan_Lmsa !中斷程序 Position_Lmsa; !調(diào)用Position_Lmsa Send_Pos; !調(diào)用Send_Pos ENDTRAP !結(jié)束中斷
ENDMODULE

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多