下面是KUKA機器人中-TCP通訊里的純理論的東西.
CAST_TO
CAST_TO使得使用單個CWRITE語句處理多達4 KB的數據成為可能。CAST_TO將單個變量分組為一個緩沖區。然后,CWRITE將此緩沖區寫入通道。
最大緩沖區大小:4 KB(= 4,096字節)。如果數據量太大,以致最大緩沖區大小不足,則必須使用幾個連續的CWRITE語句。
CAST_TO不會觸發提前運行停止,但是,如果處理的變量確實觸發了提前運行stop,則間接觸發提前運行停止。
如果使用CWRITE傳輸使用CAST_TO生成的緩沖區,則CWRITE語句中僅允許以下轉換字符:
?r(=原始數據格式)?s(=字符串格式)與s相比,r具有以下優點:?如果傳輸了字符0,則將其整數表示為字符串的結尾。r不會發生此問題。
?偏移量以字節為單位。如果CREAD用r即二進制讀取數據,則可以使用偏移量輕松計算已傳輸的值的數量。
CAST_TO (Buffer, OFFSET, Var1 < ,? … , Var10 > )Buffer:類型:CHAR數組,將變量Var1…Var10寫入的緩沖區.OFFSET:類型:INT 緩沖區內的位置(以字節為單位),之后將數據寫入緩沖區。偏移量從0開始。
Var1 … Var10寫入緩沖區的變量。每個語句最多可以有10個變量。
對于未初始化的變量或數組元素,會將隨機值寫入緩沖區。由于隨機值可能會導致緩沖區接收器出現問題,因此建議初始化所有變量和數組元素。
CAST_FROM如果緩沖區是在數據列表中聲明的,則不能設置初始值!
原因:初始值被當前值覆蓋。電流值可以高達4KB,因此超過了KRL線路的最大允許長度。
對的:DECL CHAR mybuffer[4096]不正確:DECL CHAR mybuffer[4096]=" "CAST_FROM使得使用單個CREAD語句處理多達4 KB的數據成為可能。如果CREAD已從通道讀取緩沖區,則CAST_FROM可以將緩沖區分解為各個變量。
最大緩沖區大小:4 KB(= 4,096字節)。如果數據量太大以至于最大緩沖區大小不足,則必須使用幾個連續的CREAD語句。
CAST_FROM不會觸發提前運行停止,但是,如果處理的變量確實觸發了提前停止,則間接觸發提前運行停止。
CAST_FROM ( Buffer , OFFSET, Var1 < ,? … , Var10 > )
CAST 語句中允許的數據類型
例如在EthernetKRL( )程序中設定的EKI_GetFrame:
EKI_GetFrame從存儲器讀取 FRAME 類型的數值示例 RET = EKI_GetFrame("Channel_1", "Root/TCP", MyFrame)程序分析:GLOBAL DEFFCT EKI_STATUSEKI_GetFrame(strChannelName[]:IN,strPlace[]:IN,value:OUT)聲明變量: DECL CHAR strChannelName[] 字符串 DECL CHAR strPlace[] 字符串 DECL FRAME value FRAME坐標類型變量 DECL CHAR Buff[24]24長度的字符串 DECL STATE_T Stat 狀態變量 DECL MODUS_T Mode DECL EKI_STATUS Ret EthernetKRL通訊專用變量 DECL INT Offset設置模式: Mode = #SYNC設置同步模式 Ret = EKI_NULL_STATUS ret.buff=1 Offset = 0 Cast_To(Buff[], Offset,value) 將坐標變量寫入緩沖區 CONTINUE CWRITE($FCT_CALL,Stat,Mode,"EFC_eki_Get",strChannelName[],strPlace[],Buff[],Ret.Buff, Ret.Read, TYPEFRAME,Ret.Connected)使用”EFC_eki_Get”將Buff[] 里字符串坐標FRAME值通過EthernetKRL軟件發出開通的通道,給PC上位機軟件使用 Offset=0 Cast_From(Buff[], Offset,value)將緩存區里的值再發給變量 Ret.Msg_No = Stat.Msg_No RETURN Ret 發出反饋值ENDFCT![2f99783a-f815-11ed-90ce-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/46/wKgaomTnpUKAOLx0AACGXfnbJb8044.png)
發送標準編碼的real數據,PLC端可直接使用ID數據進行real數據的判斷。(注:使用CAST_TO函數后,Bytes[1]為對應二進制的低位,Bytes[4]為高位。上面的KUKA1對應的bytes4是為了將PLC能直接讀數據而不用通過SWAP指令進行轉換)接收到的數據存于DATA2中。
CAST_TO
CAST_TO使得使用單個CWRITE語句處理多達4 KB的數據成為可能。CAST_TO將單個變量分組為一個緩沖區。然后,CWRITE將此緩沖區寫入通道。
最大緩沖區大小:4 KB(= 4,096字節)。如果數據量太大,以致最大緩沖區大小不足,則必須使用幾個連續的CWRITE語句。
CAST_TO不會觸發提前運行停止,但是,如果處理的變量確實觸發了提前運行stop,則間接觸發提前運行停止。
如果使用CWRITE傳輸使用CAST_TO生成的緩沖區,則CWRITE語句中僅允許以下轉換字符:
?r(=原始數據格式)?s(=字符串格式)與s相比,r具有以下優點:?如果傳輸了字符0,則將其整數表示為字符串的結尾。r不會發生此問題。
?偏移量以字節為單位。如果CREAD用r即二進制讀取數據,則可以使用偏移量輕松計算已傳輸的值的數量。
CAST_TO (Buffer, OFFSET, Var1 < ,? … , Var10 > )Buffer:類型:CHAR數組,將變量Var1…Var10寫入的緩沖區.OFFSET:類型:INT 緩沖區內的位置(以字節為單位),之后將數據寫入緩沖區。偏移量從0開始。
Var1 … Var10寫入緩沖區的變量。每個語句最多可以有10個變量。
對于未初始化的變量或數組元素,會將隨機值寫入緩沖區。由于隨機值可能會導致緩沖區接收器出現問題,因此建議初始化所有變量和數組元素。
CAST_FROM如果緩沖區是在數據列表中聲明的,則不能設置初始值!
原因:初始值被當前值覆蓋。電流值可以高達4KB,因此超過了KRL線路的最大允許長度。
對的:DECL CHAR mybuffer[4096]不正確:DECL CHAR mybuffer[4096]=" "CAST_FROM使得使用單個CREAD語句處理多達4 KB的數據成為可能。如果CREAD已從通道讀取緩沖區,則CAST_FROM可以將緩沖區分解為各個變量。
最大緩沖區大小:4 KB(= 4,096字節)。如果數據量太大以至于最大緩沖區大小不足,則必須使用幾個連續的CREAD語句。
CAST_FROM不會觸發提前運行停止,但是,如果處理的變量確實觸發了提前停止,則間接觸發提前運行停止。
CAST_FROM ( Buffer , OFFSET, Var1 < ,? … , Var10 > )
Buffer | 類型:CHAR數組其數據用于填充變量Var1…Var10的緩沖器 |
OFFSET | 類型:INT緩沖區內的位置(以字節為單位),在該位置之后,數據被用來將它們寫入變量Var1…Var10。偏移量從0開始。示例:? OFFSET=0:緩沖器從第一個位置開始使用。? OFFSET=2:緩沖器從第三個位置開始使用。位置1和2被忽略。 |
Var1 …Var10 | 使用緩沖區中的數據寫入的變量。每條語句最多可以有10個變量。每個變量從緩沖區接收的字節數由其數據類型決定。INT變量1、BOOL變量2、REAL變量3Var1接收4個字節;Var2接收1個字節;Var3接收4個字節。 |
INT | 4 bytes |
REAL | 4 bytes |
BOOL | 1 byte |
CHAR | 1 byte |
ENUM | 4 bytes |
SIGNAL | 1 byte |
FRAME | 6*REAL |
POS | 6*REAL + 2*INT |
AXIS | 6*REAL |
E3POS | 6*REAL + 2*INT + 3*REAL |
E3AXIS | 6*REAL + 3*REAL |
E6POS | 6*REAL + 2*INT * 6*REAL |
E6AXIS | 6*REAL + 6*REAL |
EKI_GetFrame從存儲器讀取 FRAME 類型的數值示例 RET = EKI_GetFrame("Channel_1", "Root/TCP", MyFrame)程序分析:GLOBAL DEFFCT EKI_STATUSEKI_GetFrame(strChannelName[]:IN,strPlace[]:IN,value:OUT)聲明變量: DECL CHAR strChannelName[] 字符串 DECL CHAR strPlace[] 字符串 DECL FRAME value FRAME坐標類型變量 DECL CHAR Buff[24]24長度的字符串 DECL STATE_T Stat 狀態變量 DECL MODUS_T Mode DECL EKI_STATUS Ret EthernetKRL通訊專用變量 DECL INT Offset設置模式: Mode = #SYNC設置同步模式 Ret = EKI_NULL_STATUS ret.buff=1 Offset = 0 Cast_To(Buff[], Offset,value) 將坐標變量寫入緩沖區 CONTINUE CWRITE($FCT_CALL,Stat,Mode,"EFC_eki_Get",strChannelName[],strPlace[],Buff[],Ret.Buff, Ret.Read, TYPEFRAME,Ret.Connected)使用”EFC_eki_Get”將Buff[] 里字符串坐標FRAME值通過EthernetKRL軟件發出開通的通道,給PC上位機軟件使用 Offset=0 Cast_From(Buff[], Offset,value)將緩存區里的值再發給變量 Ret.Msg_No = Stat.Msg_No RETURN Ret 發出反饋值ENDFCT
![2f99783a-f815-11ed-90ce-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/46/wKgaomTnpUKAOLx0AACGXfnbJb8044.png)
![2fcbc10a-f815-11ed-90ce-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/46/wKgaomTnpUKAJrBQAADG2RmqISY146.png)
審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
接收器
+關注
關注
14文章
2482瀏覽量
72282 -
TCP
+關注
關注
8文章
1383瀏覽量
79366 -
KUKA機器人
+關注
關注
4文章
143瀏覽量
9191
原文標題:KUKA 機器人CAST_TO-CAST_FROM 數據傳輸
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
伺服電動缸在人形機器人中的應用
伺服電動缸在人形機器人中的應用非常廣泛,主要體現在以下幾個方面:一、核心運動部件伺服電動缸是將伺服電機與絲杠一體化設計的模塊化產品,能將伺服電機的旋轉運動轉換成直線運動。通過結構上的改造,伺服電動缸
發表于 02-06 09:04
KUKA機器人問題解答
1 開機坐標系無效 世界坐標系是以槍頭為基點,在這種坐標系中機器人所有的動作都是按照以槍頭為頂點來完成移動,XYZ方向切割槍方向不改變,如果機器人在世界坐標系中移動,槍頭也隨著改變方向,那就是我們在
發表于 07-15 07:48
現代機器人中有什么傳感器?
控制和通信 IC 的發展在實現下一代的機器人中起到重要作用。然而,這些復雜的現代機器人的核心是許多新的、小型化和低成本的傳感技術的出現與融合。對實現下一代機器人至關重要的幾項關鍵傳感器技術包括磁性位置傳感器、存在傳感器、手勢傳感
發表于 07-31 07:46
KUKA焊接機器人伺服電機常見故障及維修處理
KUKA焊接機器人伺服電機常見故障及維修處理1、庫卡機器人伺服電機的基本檢查由于庫卡機器人伺服電機內含有精密檢測器,因此,當發生碰撞、沖擊時可能會引起故障,在對庫卡
發表于 09-26 16:51
工業機器人中面對的控制問題是什么
剛開始接觸機器人的時候,我在師兄的機器人代碼里死活找不到有關控制計算的函數,作為常年和控制框圖打交道的我,很是疑惑控制回路去哪里了?因此本文介紹一下工業機器人中的控制問題。參考華科賀磊
發表于 06-28 09:29
沒有有前輩用LabVIEW控制kuka機器人c2的經驗?通訊是怎么做到的?
我看NI有Robotics Toolkit for KUKA KR C2的附加包,這個怎么用啊?如何和kuka機器人建立通訊啊?是Tcp接口
發表于 10-21 20:59
KUKA機器人中-TCP通訊里的純理論的東西
CAST_TO使得使用單個CWRITE語句處理多達4 KB的數據成為可能。CAST_TO將單個變量分組為一個緩沖區。然后,CWRITE將此緩沖區寫入通道。
KUKA機器人中-TCP通訊里的純理論
對于未初始化的變量或數組元素,會將隨機值寫入緩沖區。由于隨機值可能會導致緩沖區接收器出現問題,因此建議初始化所有變量和數組元素。
評論