usc2019-RobotSim

實踐-機器手臂程式設計

View on GitHub

五、自動化專案實作 一

KUKA Srver端通訊程式 EKI基礎

1.網路通訊手臂EKI

  <ETHERNETKRL>
	<CONFIGURATION>
		<EXTERNAL>
			<TYPE>Client</TYPE>   <!--設定外部為Client-->
		</EXTERNAL>
		<INTERNAL>
			<IP>172.31.1.147</IP>	<!--設定連線IP-->
			<PORT>54600</PORT>		<!--設定通訊埠-->
			<ALIVE Set_Flag="1"/>	<!--當確定連線後Flag[1] = TRUE-->
		</INTERNAL>
	</CONFIGURATION>
	<RECEIVE>
		<XML>
		   <ELEMENT Tag="Data/Direction" Type="String" Set_Flag="2"/>	<!--設定接收到的資料 Tag="路徑" Type="資料型別" 接收資料後Flag[2]=TRUE-->
		</XML>
	</RECEIVE>
	<SEND>
		<XML>
		<!--此部分可設定手臂傳出資料 例:<ELEMENT Tag="Data/Direction" Type="STRING"/> -->
		</XML>
	</SEND>
</ETHERNETKRL>
DEF XmlServer( )
   INT i
   DECL EKI_STATUS RET
   CHAR valueChar[20]
   CHAR EOL[2]	
   EOL[1] = 13						;ASCII碼 13 = \r
   EOL[2] = 10						;10 = \n
   $FLAG[1] = FALSE
   $FLAG[2] = FALSE
   
   RET=EKI_Init("XmlServer")			;初始化
   RET=EKI_Open("XmlServer")			;開啟
   
   wait for $FLAG[1] 					;等待連線
   
   FOR i=(1) TO (20)					;需要先給初始值 否則程式會有錯誤
      valueChar[i]=0
   ENDFOR
   
   WAIT FOR $FLAG[2] == TRUE			;等待有資料傳入
   RET=EKI_GetString("XmlServer","Data/Direction",valueChar[])	;讀取資料存入valueChar[]
   
   MsgNotify(valueChar[])				;將資料印在Smart-Pad訊息欄上
   
   RET = EKI_Send("XmlServer", "Comfirm")		;傳送Comfirm確定有接收到資料
   RET = EKI_Send("XmlServer", EOL[])			;傳送換行字元
   
   ;Send 可將資料先進行存取在傳送
   ;例: RET = EKI_Set("XmlServer","Data/Direction", "Comfirm")
   ;	  RET = EKI_Send("XmlServer","Data/Direction")
   
   wait for $FLAG[1]==FALSE
   
   RET=EKI_Clear("XmlServer")
END

2.程式匯入至手臂

3.通訊測試

作業內容