RobotStudio event

Send and receive data via IRC5-profinet master and an end-effector slave

Hi all,

We have an IRB 6640 from 2012, with an IRC5 controller with Robotware 5.16. There is a profinet card CP1616 installed inside. We have an end-effector attached to the robot, whose force, rpm, etc can be set. Owing to the older robotware version, we were unable to use RobotStudio for the configuration. Instead, using Siemens TIA Portal, we managed to configure the profinet card together with the IRC5 as the master and the end-effector control box as the slave, with 8 bytes DI and 8 bytes DO modules added, to send and receive info to and from the end-effector. 

We now want to send some data, for example, "set_speed = 3000 rpm" to the end-effector. Since this is an integer value, it first needs to be converted into its binary 101110111000, which can then be transmitted as a group digital output signal (of, say, 2 bytes size) to the end-effector control box. Is this thought process right? If not, it would be great if someone could explain how the process works. And if yes, then we are stuck because this is completely out of our expertise that we are not sure how to proceed:
- how is the signal set up in the IRC5?
- how do we write this in the program, can we just refer to the signal name and set it to 3000 (and the conversion to binary happens internally) or do we need to first convert it to binary and then set the binary value to the signal in the program?

[Our background is not robotics/electrical engineering, so if you can explain things as if you would to a child, then we would highly appreciate it!  ;)]


Answers

  • Hallo, look to "technical reference manual - RAPID overview".
    What you need is IO-unittype, io unit and signal definition, all in EIO.cfg
    For instance:
    #
    EIO_BUS:
    ...
          -Name "DeviceNet1" -BusType "DNET" -ConnectorID "PCI1"\
          -ConnectorLabel "First DeviceNet"
    ...
    #
    EIO_UNIT_TYPE:
    ...   

          -Name "KEMP_ARC" -BusType "DNET" -VendorName "KEMPPI"\
          -ProductName "KempArc" -DN_VendorId 90 -DN_ProductCode 12\
          -DN_DeviceType 12 -DN_ProdInhibitTime 50 -DN_C1Type "COS"\
          -DN_C1OutputSize 8 -DN_C1InputSize 8 -DN_C2Type "COS" -DN_C2InputSize 8\
          -DN_QuickConnectEnabled
    ...     
    #
    EIO_UNIT:

          -Name "B_AW_PROC_40" -UnitType "KEMP_ARC" -Bus "DeviceNet1" -DN_Address 5
    ...
    #
    EIO_SIGNAL:
    ...    

          -Name "goMemoryChannel" -SignalType "GO" -Unit "B_AW_PROC_40"\
          -UnitMap "32-39"

    This declares a groupoutput on a welding power source which is connected via DeviceNet.
    Example in from RW 5.15.
    The value of UnitMap depends on protocol of your IO device.
    Once mapped, in Rapid you just assign "SetGO goMemoryChannel, 12;" (to set the Channel to 12).
    In this case, there is only 1byte 8 bits. With 2bytes on a PLC you might to have swap lower and upper byte. 
    Things are more tricky with analog values (but try to read the manual ;-) )




  • lemster68
    lemster68 ✭✭✭
    Treating it as an analog is the way to go.  I have posted probably more than one example of how to map this out.
    Lee Justice
  • Apologies for the late reply, but matti, your example provided the link that was missing in our understanding of the whole process.
    We added a few GO signals and set some values to it and it seems to be sending out these values correctly, though our end effector didn't seem to respond to it, but that's something new for us to dive into now, before I post more questions!
    But thanks for the nudge in the right direction (including the advice to read the manual o:))