ABB robot dynamic joint data to PLC?

  • Hi all,

    I have a general question about ABB irb6400 robot with irc5 controller.

    The robot has device net option along with safe move and eps unit. Also noticed phoenix contact devicenet io inside the robot controller.


    The PLC I will be using is an S7-1200 safety with profinet.


    Question 1:

    In order to read real time dynamic data from robot joints.

    Does an Anybus DeviceNet Master/Profinet Slave AB7653 gateway allow me to map and control the robot using the PLC?


    Question 2:

    I know in Kuka robots $AXIS_ACT.X gives me the actual axis position of that particular axis with some loop going into the sps.

    So how do I achieve a similar outcome in Abb ? CRobT gives target coordinates but not Joint Data. And how dynamic will the data be?

    J1=

    J2=....so on with external axis J7.


    Any examples or sample projects are highly appreciated.


    Kindly she's some light over the issue.

  • Usually i use either EGM or RRI to get that kind of data our of the robot. Will also let you control the robot from a remote controller.

    Though i use TCP/UDP for the info stream.

    Look at option Externally guided motion 689-1, Robot reference interface is included in that option as well.

  • Hi thanks for the helpful suggestions.

    We only wish to read the robot positions to the safety plc to confirm robot position before activating gripper.

    So in that case will CJointT() be enough?

    What sort of budget will the Externally guided motion come up to?

  • Does it need to be safety input? Couldn't you use World Zones for that, they are the same as workspace monitoring (non-safety) in KUKA. Them you set a signal when the robot is inside that zone, just make it small like 1 or 2 degrees in each axis

  • hi pal, thanks for your reply.

    No it's not a safety signal I'm intending to get from the robot.

    I would like to map the joint data to the anybus gateway and send them as group outputs to the plc. Yes I'm aware of that but we're trying to help someone who's got no more dough to throw at the job to get it done so we're planning a proposal to see if this can be done.

  • If i remember correctly, EGM is like the most expensive software option. something like 2-4k dollars. But i could be wrong. If its not a time critical thing it should be just fine to read the current joint position with CJointT and send it as io's.


    You could just go to the position and from there read and send the data and wait for a response to accept or refuse the position.


    If you want a signal that constantly updates you could do it like palmedia says. use multitasking to set up a background task that just reads and sends constantly. The difference here compared to EGM would be the CPU usage. Not sure what update frequency you could get, if the limiting factor would be the IO communication or the CPU usage.

  • Hi thanks for all the helpful info.

    Any syntax as to how I can read each joint using CJointT?

    And assuming all this should be done in a cyclic task polling every 0.5sec ?

    And example references you can point me to would be great.

  • So you want to say that robot doesn't have the option 'world zones', but multitasking?

    The gateway should work.

    Good question. I will check that out when I connect to the robot next.


    Do you suggest that my theory won't work if the robot hasnt got the multitasking option?

  • Hi thanks for all the helpful info.

    Any syntax as to how I can read each joint using CJointT?

    And assuming all this should be done in a cyclic task polling every 0.5sec ?

    And example references you can point me to would be great.

    Data declarations and parameters not included.


    WHILE TRUE DO


    jT1:=CJointT(\TaskRef:=T_YourTask_Id);

    nRobotJoint1ToPLC:=jT1.robax.rax_1;

    .

    .

    .

    nRobotJoint6ToPLC:=jT1.robax.rax_6;

    SetGO go_Robax1,nRobotJoint1ToPLC;

    .

    .

    .

    SetGO go_Robax6,nRobotJoint6ToPLC;


    WaitTime 0.25;


    ENDWHILE

  • and this would work Even without the multitasking option?

  • Okay got a bit more done.

    Here's a list of Options that are currently on the robot.


    Options:


    RW Control module key


    RobotWare OS and English


    709-x DeviceNet


    - 709-2/709-5 Master/Slave Dual


    603-1 Absolute Accuracy


    608-1 World Zones


    610-1 Independent Axis


    611-1 Path Recovery


    612-1 Path Offset


    613-1 Collision Detection


    614-1 FTP and NFS client


    616-1 PC Interface


    617-1 FlexPendant Interface


    623-1 Multitasking


    897-1 Robot Reference Interface


    641-1 Dispense


    And this controller is using RobotWare 5.14 so i will have to try and migrate everything to 6.xx


    So this confirms the Multitasking Option is already there so the device net to profinet anybus gateway should be able to map the joint data and send it through to the Siemens PLC over Profinet as GO data ?

  • I have tried the above code and seems to read okay. The reason I have used AO instead of GO is to avoid the conversions for the num type. So I have tried creating a task in the controller like in the picture . So how do I call the above code in the task dyn_pos ? And does this task run parallel to the T_ROB1 ? And records joint data even in manual jogging? Any feedback appreciated. Regards

Advertising from our partners