Configuring EL2008 in Workvisual for lampstack

  • KSS: KRC4 8.5.0

    Robot: KUKA iiwa 7 R800

    OS: Windows 10

    Sunrise Workbench: 1.16.2.16

    WorkVisual: 5.0.5/Build0600 (with Sunrise.kop: 1.3.15.0)


    I am currently setting up a lampstack to the system. The lampstack consists of four lights. Ideally I would like them to be set up:

    - 1 Light for Motors on

    - 1 Light for Auto Mode

    - 1 Light for if an Error occurs

    - still deciding the fourth


    I have connected an EK1100 EtherCat Coupler and an EL2008 DO terminal to the X44 Extension Bus, and I have followed steps from this thread (Creating EtherCAT I/O connections through WorkVisual) to begin the configuration through work visual. But I was wondering if there is a way to directly link the auto mode is selected and motors is on and error occurred to the outputs of the EL2008. If someone could lead me in the right direction that would be great. Let me know if I am missing any details or if i need to further explain anything.

  • configure I/O

    test I/O manually

    write test program to verify you know how to use the I/O

    create background task to actually use the I/O

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • So I am not too sure how to configure the IO, as when I am in work visual I can only really configure the IO to the KRC Digital inputs and outputs. But I am not too sure how to assign the Digitial outputs to be the Auto Mode, or Motors on or if the Emergency Stop has been activated or if an application is running.

  • Edit: haha, haven't seen that this is a sunrise controller, so forget what I wrote here. Sorry.


    There are several predefined signals like $Aut $peri_rdy... they represent your mentioned states like 'auto mode' or 'motors on'.

    You can assign them to your outputs in the configuration menu for auto extern signals (on the Smartpad).

    Or you can use them in SPS.sub like

    Code
    $out[1] =$Aut
  • Sweet thankyou, that makes sense. Do you know where I can find a list of the pre defined signals, as well as how to get access to the configuration menu to assign the outputs? I know that on other controllers I have used the signals $PERI_RDY, $PRO_ACT or APPL_RUN, $AUT, and $ALARM_STOP but I just cant seem to find out where the config menu is on the smartPAD

  • that would be in KSS, this is SunriseOS.

    in java you would write something like


    Code
    if (whatever) {
      my_IO.setOutputGrnLight(true);
    }

    for example to check operating mode you can use

    Code
    if (lbr.getOperationMode().isModeAuto()) {
        blah.blah;
    }


    more is in the manual, for example to check internal EStop use getEmergencyStopInt()

    etc.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • ahh makes sense thankyou, looks like ill need to write in the robot application using these functions.

    getEmeegencyStopInt()

    getEmergencyStopExt()

    getOperationMode()


    I guess I Just need to find the equivalent functions for motors on and application running

  • well, this could be in the application but selecting different one would mean the lights would no longer work. this is why such logic should be in the background task and run all the time, regardless if and what program is selected.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • how would you set the IO in sunrise though?

    for example attached is how I linked the EL2008 to the KR C Digital Outputs in workvisual.

    Now if $OUT[1] is linked to the red light, in sunrise what would I specifically call/set to give an output to the red light.


    Code
    if (whatever) {
    my_IO.setOutputGrnLight(true);
    }


    is "my_IO" like the IO group name of the IO set in work visual and is "setOutputGrnLight" would be the individual digital output?

  • you need to create the i/o group. you can use different name, i happened to use "my_IO" in this example.

    and yes "setOutputGrnLight" would be the individual digital signal (output in this example)

    btw this is done in WoV under Sunrise I/O. you are on the wrong tab


    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • I have attached the whole code file below. So I was trying to write the code for a background task for the signal tower but unfortunately it was too hard to troubleshoot/debug any errors. When I made it an application, I saw it stopped at the line:

    Code
    ISafetyState safetyState = lBR_iiwa_7_R800.getSafetyState();

    The error I receive is saying "Stopping task due to the following error: java.lang.NullException at bnackgroundTask.SignalTower.run (SignalTower.java:47)


    Now I am not to sure what I need to do in regards to giving one of these objects a variable (Im assuming its the lBR_iiwa_7_R800 that needs a variable)

  • don't recall ISafetyState... can you omit it and just try to combine lines 47,48? does that work?


    EmergencyStop EStop = lBR_iiwa_7_R800.getSafetyState().getEmergencyStopInt();

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • unfortunatly that still provides the same error. Attached is where I read an example from the manual. I dont know if im missing something in terms of initialising the lbr_iiwa_7_R800, or calling a different function first or if im not declaring right. I feel like I need to write something before the line that I am having trouble in.GetEmergencyStopInt.pdf

  • I fixed the error.

    Below is what I had

    Code
        @Inject
        private Light_StackIOGroup lightstack;
        private LBR lBR_iiwa_7_R800;

    and this is what I changed it to.

    Code
        @Inject
        private LBR lBR_iiwa_7_R800;
        @Inject
        private Light_StackIOGroup lightstack;

    Wish I could tell you why changing it to this worked. But thought I'd post this. Will also post the variables I end up using for all four different lights.

Advertising from our partners