RobotStudio event

About Robot Reference Interface(RRI)and Externally Guided Motion(EGM)

I'm trying to use Robot Reference Interface (RRI) -- which is the predecessor of the EGM -- to get position robot. I have put the three xml files in the correct folders. My C++ server is listening on the port I have defined on Description.xml. I try my server with a simple client application and it works.

But when I run the Rapid code ( SiConnect ),The result is that Rapid, not being able to initialize the communication, stops the application reporting the event message 112600.

 

My configuration and actions:

 

1) builded the virtual system in RobotStudio.(including EGM but RRI , because the 6.x versions has only EGM)

2) In the folder Home, I added the following files: GSI/Settings.xml, GSI/TestDevice/Description.xml, GSI/TestDevice/Configuration.xml.

Their contents :

~Setting~

<?xml version="1.0" encoding="utf-8"?>

<Settings>

  <Servers></Servers>

  <Clients>

    <Client Convention="CDP" Name="TestDevice" />

  </Clients>

</Settings>

 

~ Configuration~

<?xml version="1.0" encoding="utf-8"?>

<Configuration>

  <Enums>

    <Enum Name="opmode" Link="Intern">

      <Member Name="ReducedSpeed" />

      <Member Name="FullSpeed" />

      <Member Name="Automatic" />

    </Enum>

  </Enums>

  <Records>

    <Record Name="robotdata">

      <Field Name="type" Type="Real" Alias="Type" />

      <Field Name="status" Type="String" Alias="Status" />

      <Field Name="OperationMode" Type="opmode" Link="Intern" Alias="Mode" />

      <Field Name="PredictedTime" Type="Time" Link="Intern" Alias="Time" />

      <Field Name="PlannedPose" Type="Frame" Link="Intern" Alias="Frame" />

      <Field Name="PlannedJoints" Type="Joints" Link="Intern" Alias="Joints" />

      <Field Name="FeedbackTime" Type="Time" Link="Intern" Alias="FTime" />

      <Field Name="FeedbackPose" Type="Frame" Link="Intern" Alias="FFrame" />

      <Field Name="FeedbackJoints" Type="Joints" Link="Intern" Alias="FJoints" />

    </Record>

    <Record Name="replydata">

      <Field Name="type" Type="Real" Alias="Type" />

    </Record>

  </Records>

  <Properties>

    <Property Name="RobotMessage" Type="robotdata" Flag="WriteOnly" />

    <Property Name="ReplyMessage" Type="replydata" Flag="ReadOnly" />

  </Properties>

</Configuration>

 

~ Description~

<?xml version="1.0" encoding="utf-8"?>

<Description>

  <Name>TestDevice</Name>

  <Convention>CDP</Convention>

  <Type>SomeType</Type>

  <Class>SomeClass</Class>

  <Network Address="127.0.0.1" Port="Lan">

    <Channel Type="Cyclic" Protocol="Udp" Port="4999" />

  </Network>

  <Settings>

    <TimeOut>2000</TimeOut>

    <MaxLost>200</MaxLost>

    <DryRun>false</DryRun>

  </Settings>

</Description>

3) I wrote the following Rapid Module

 

MODULE RRI_module

 

    RECORD robotdata
        num type;
        string status;
    ENDRECORD  

 

    RECORD replydata
        num type;
    ENDRECORD

 

PERS sensor TestDevice := [-1,-1,0];
    PERS robotdata RobotMessage := [0,""];
    PERS replydata ReplyMessage := [0];
 
    PROC Main()
      SiConnect TestDevice;
    ENDPROC


ENDMODULE

 

"Compiling" this module, no errors are reported

 

4) Finally, I started the C++ server listening on port 4999 and, just after, I run the rapid program.

 

The result is that Rapid, not being able to initialize the communication, stops the application reporting the event message 112600.

 

Now, my questions:

1)    Do my configuration and actions have anything wrong?

2)    Does the means of using EGM differ from RRI and how to use the EGM?

3)    Are there version problems of robot or RobotStudio? My RobotWare version is 6.02.1029.

4)    Could you send me the code of a server listening on a port?

5)    Is there any other documentation on the Robot Reference Interface or EGM? Could someone provide me with more details about how to get position of robot(communicate with robot)?


Thanks in advance!