kuka機(jī)器人使用profinet傳輸real類型數(shù)據(jù)的問題
2020-02-14 17:26:08
kuka機(jī)器人使用profinet傳輸real類型數(shù)據(jù)的問題
profinet即為實(shí)時(shí)數(shù)據(jù)通信,以IO的形式對(duì)應(yīng)二進(jìn)制數(shù)。
kuka機(jī)器人編程中real數(shù)據(jù)為4byte,即對(duì)應(yīng)32個(gè)IO。
庫(kù)卡機(jī)器人使用profinet傳輸該real類型數(shù)據(jù)時(shí),需將該real數(shù)據(jù)轉(zhuǎn)化為對(duì)應(yīng)的32位數(shù)據(jù)編碼,可如以下編寫:
1.定義數(shù)據(jù)
REAL DATA1
int offset
CHAR Bytes[4]
SIGNAL KUKA1 $OUT[256] TO $OUT[263]
SIGNAL KUKA2 $OUT[264] TO $OUT[271]
SIGNAL KUKA3 $OUT[272] TO $OUT[279]
SIGNAL KUKA4 $OUT[280] TO $OUT[287]
SIGNAL PLC1 $IN[256] TO $IN[263]
SIGNAL PLC2 $IN[264] TO $IN[271]
SIGNAL PLC3 $IN[272] TO $IN[279]
SIGNAL PLC4 $IN[280] TO $IN[287]
(OUT[256] 至OUT[287]為KUKA要發(fā)送的profinet數(shù)據(jù)IO,IN[256] 至IN[287]為KUKA要接收的profinet數(shù)據(jù)IO)
2.設(shè)置real數(shù)據(jù)
DATA1 = 7.891123
3.置位OUT[256] 至OUT[287],即發(fā)送數(shù)據(jù)
offset = 0
CAST_TO(Bytes[],offset,DATA1)
KUKA1 = Bytes[4]
KUKA2 = Bytes[3]
KUKA3 = Bytes[2]
KUKA4 = Bytes[1]
以上即可發(fā)送標(biāo)準(zhǔn)編碼的real數(shù)據(jù),PLC端可直接使用ID數(shù)據(jù)進(jìn)行real數(shù)據(jù)的判斷。
(注:使用CAST_TO函數(shù)后,Bytes[1]為對(duì)應(yīng)二進(jìn)制的低位,Bytes[4]為高位。以上第3步驟設(shè)置只是為了對(duì)應(yīng)PLC端ID數(shù)據(jù)的容易讀取,這樣在PLC端才不需要將數(shù)據(jù)倒置。)
4.接收來自PLC的實(shí)數(shù)QD數(shù)據(jù)
Bytes[1] = PLC4
Bytes[2] = PLC3
Bytes[3] = PLC2
Bytes[4] = PLC1
offset = 0
CAST_FROM(Bytes[],offset,DATA1)
接收到的數(shù)據(jù)存于DATA1中。
(注:PLC端直接設(shè)置QD數(shù)據(jù)為實(shí)數(shù),則PLC端對(duì)應(yīng)的IO映射到KUKA機(jī)器人端的IO,則PLC1為數(shù)據(jù)的高位,PLC4為數(shù)據(jù)的低位,所以步驟4這樣設(shè)置,才能使用CAST_FROM函數(shù)解析數(shù)據(jù))
————————————————
版權(quán)聲明:本文為CSDN博主「nongzhen_」的原創(chuàng)文章
原文鏈接:https://blog.csdn.net/nongzhen_2019/article/details/104052604
了解更多:庫(kù)卡機(jī)器人