1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. Cobot Help and Discussion Center
  4. KUKA LBR IIWA
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

Autoext kvp+eth only

  • WdeOliveira
  • August 12, 2024 at 12:40 PM
  • Thread is Resolved
  • WdeOliveira
    Reactions Received
    1
    Posts
    13
    • August 12, 2024 at 12:40 PM
    • #1

    Hi guys.

    After two months with a krc2lr + lbr4 robot, i already have a working system and I’m able to communicate with the host controller (ethernet) and remote io (devicenet). Programs runs ok and i have no big issues.
    But… some things are really annoying and i would like to ask you guys for help.
    Here is the list:

    1) Sometimes the boot fails. Either it doesn’t shows the windows logo and get stuck or stops during the loading bar. I installed a power and reset button on the pci bay to allow me to reset it without the internal batteries holding it on for minutes. It works after ine or two hw resets without issues.
    Does it happens to anyone alse?

    It’s not always like this. But randomly and rarely But it would be really annoying happening in the final application. I will test with other memory bank to be sure. Ddr 1 ecc type 1gb.

    2) any changes of running it in a fully automated mode without even the kcp2 attached, only with ethernet and x11 signals? Now I have the jumper but Im planning to use the external emergency stop and qualify inputs. There is a driver enable there. Don’t know why.

    3) i tried the auto external and it looks like everyone around is using it by means of the remote io and plc ro generate the required sequences. I have the wago remote io configured and working through devicenet. But i do t want to waste a remote io on the pc side just to set high and low on 16 pins ( driver en…ecc). Is there a way of setting this mess up through kvp variables? Kvp reads it but doesnt write to these autorxt variables.
    Can i map them to simple globals instead to avoid the hw mess and cost? I found the p00 where they set and read them. Can i modify it to do the same with these globals instead of IN[x] and OUT[x]?

    4) i also thought about ditching the autorxt idea and making my own auto internal program that does more or less the same without this messy hw (if the hw io is mandatory). The only downside it that i have to manually start the program the first time and indont know if i can seitch of the drivers and brakes in the middle of a program for when it has to stay idle for a while. The program basically respond to program requests from a human user through ethernet. Sometimes it will be idle for a while and indont know if letting drivers and brakes on forever are a good idea.


    5) what is the goal of external powering the esc circuit? The robot does nothing without power and shuts off. Does someone have an apolication where this thing is useful? Or should i just use the jumper and be happy?

    6) Im using the x14 relay to enable the field supply to avoid any unintended activation of the periphery while the robot is not running. It cuts the power from the field side of a wago remote io using a second relay (I don’t want to open the krc to change a fuse).

    I have electronics engineering and embedded programming background. This is my first robot. I read the manuals and found nothing about this part specifically. Seems like they assume everyone has a standard plc and robot cell.

    I dont want to waste time putting a microcontroller with lots of isolated inputs and outputs to interface with my pc just to control the autoext without selling a kidney for other ethernet remote io that i already need for the rest of the machine.

    Any help about any of the topics will be appreciated the main problem is the autoext without phisical io.


    Thank you for your help.

  • Go to Best Answer
  • Online
    panic mode
    Reactions Received
    1,299
    Trophies
    11
    Posts
    13,142
    • August 12, 2024 at 2:40 PM
    • #2
    Quote from WdeOliveira

    Hi guys.

    After two months with a krc2lr + lbr4 robot, i already have a working system and I’m able to communicate with the host controller (ethernet) and remote io (devicenet). Programs runs ok and i have no big issues.
    But… some things are really annoying and i would like to ask you guys for help.
    Here is the list:

    1) Sometimes the boot fails.

    2) any changes chances of running it in a fully automated mode without even the kcp2 attached, only with ethernet and x11 signals?

    3)... i do to want to waste a remote io on the pc side just to set high and low on 16 pins ( driver en…ecc).

    4) i also thought about ditching the autoext idea...

    5) what is the goal of external powering the esc circuit?

    6) Im using the x14 relay

    Display More

    1. i would make sure that CMOS battery is good and CMOS settings are not scrambled - replace it, then enter BIOS configuration. load and save default settings. also this is an older system, be prepared for HDD failure. this means make backup image or clone content to a new drive.

    2. running in EXT mode is meant to do just that.

    3. using EXT mode requires I/O. most of the signals can be simulated or replaced by variables but few essential ones must be I/O... but Inputs are read only - only IO drivers can write inputs. so workaround is to connect those few inputs to outputs. then you can write to outputs...

    4. keep dreaming....

    5. other people have different applications that require different setup

    6. no idea what X14 relay is

    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

  • Online
    SkyeFire
    Reactions Received
    1,061
    Trophies
    12
    Posts
    9,463
    • August 12, 2024 at 2:53 PM
    • #3
    Quote from WdeOliveira

    1) Sometimes the boot fails. Either it doesn’t shows the windows logo and get stuck or stops during the loading bar. I installed a power and reset button on the pci bay to allow me to reset it without the internal batteries holding it on for minutes. It works after ine or two hw resets without issues.
    Does it happens to anyone alse?

    That doesn't sound good. Also, doing adirect reset/powerdown of the KPC without allowing the KRC's standard power-down process to run is a great way to corrupt your hard drive.

    If you haven't already, MAKE A FULL HARD DRIVE IMAGE BACKUP. At this point, your robot is so old that KUKA no longer supplies the re-install media, so unless you have the original CD-ROMs, if your HDD fails you'll have no way to rebuild the KRC from scratch. There are KSS copies floating around, but the special KUKA-ized version of Win95/98/XP is going to be much harder to come by. Especially since the LBR version is very rare.

    The boot failure could be a warning sign of HDD issues, RAM issues, something getting old on the KPC mobo (visually check the mobo for any swollen/leaking capacitors).

    How large are your robot programs? Part of the powerdown sequence is saving all programs and state variable data to the HDD from the RAMdrive, so if you have lots of fhuge KRL programs, that can make the powerdown lag.

    General rule: don't interrupt the KRC controlled powerdown unless it runs really long -- like 15-30min or more. Normally it should take well under 5min.

    Quote from WdeOliveira

    2) any changes of running it in a fully automated mode without even the kcp2 attached, only with ethernet and x11 signals? Now I have the jumper but Im planning to use the external emergency stop and qualify inputs. There is a driver enable there. Don’t know why.

    No. The KCP 2 includes safety devices (the E-Stop in particular) that cannot be bypassed.

    What is "driver enable"? Use specific names -- there's $DRIVES_ON, $DRIVES_OFF, $MOVE_ENABLE, and a few other signals that might be slanged as "driver enable".

    Quote from WdeOliveira

    3) i tried the auto external and it looks like everyone around is using it by means of the remote io and plc ro generate the required sequences. I have the wago remote io configured and working through devicenet. But i do t want to waste a remote io on the pc side just to set high and low on 16 pins ( driver en…ecc). Is there a way of setting this mess up through kvp variables? Kvp reads it but doesnt write to these autorxt variables.
    Can i map them to simple globals instead to avoid the hw mess and cost? I found the p00 where they set and read them. Can i modify it to do the same with these globals instead of IN[x] and OUT[x]?

    Generally, EXT mode is intended to be used entirely by remote fieldbus I/O. Signals like $DRIVES_ON, $MOVE_ENABLE, etc, cannot be accessed any other way that I'm aware of.

    What's KVP? I'm assuming you mean KUKAVarProxy?

    There are some partial workarounds -- KVP can probably control some globalized variables that can trigger the CWRITE $CMD stop/cancel/run commands (lots of discussion in the archives) in place of the fieldbus remote start. But AFAIK, for $DRIVES_ON, $MOVE_ENABLE, $CONF_MESS, and most of the the related signals, You're stuck with fieldbus I/O. I think you could assign $DRIVES_OFF to $IN[1025] (the "always on" input), but your KSS version probably blocks you from doing that for $MOVE_ENABLE.

    P00 can be hacked to your heart's content -- it's not a system file (note the lack of $), it's a helpful convenience KUKA provides as a freebie with every KRC. Or you could bypass CELL and P00 entirely, if that's your preference.

    Quote from WdeOliveira

    5) what is the goal of external powering the esc circuit? The robot does nothing without power and shuts off. Does someone have an apolication where this thing is useful? Or should i just use the jumper and be happy?

    Some facilities required all safety to be powered from their power supplies as part of their safety standard. Some jurisdictions had legal requirements that anything safety-related had to be powered from supplies with special certifications, unique to that jurisdiction. So KUKA made it easy to power the ESC externally or internally, and left it up to the end user.

  • Online
    SkyeFire
    Reactions Received
    1,061
    Trophies
    12
    Posts
    9,463
    • August 12, 2024 at 2:59 PM
    • #4
    Quote from WdeOliveira

    Sometimes it will be idle for a while and indont know if letting drivers and brakes on forever are a good idea.

    Better to let the robot switch between Servo Holding and Brake holding. Saves power and wear. There's no way to control this directly -- there's just a delay time in the robot config files ($BRK_DEL_PRO) that controls how long the robot waits before doing the switch.

    Quote from WdeOliveira

    6) Im using the x14 relay to enable the field supply to avoid any unintended activation of the periphery while the robot is not running. It cuts the power from the field side of a wago remote io using a second relay (I don’t want to open the krc to change a fuse).

    I don't have a KRC electrical schema in front of me. What's x14? What energizes it?

    In the past, I've used the aux contacts on the KRC2's main power relay (K0? K1?) to pass/block the output power (not communication power) to I/O devices, in order to ensure that devices (like the EOAT) cannot energize without the robot drives being active. This was more useful for Teach mode, as it meant that dropping the KCP deadman would also deenergize the EOAT. Of course, this also required designing the EOAT such that it would "fail safe" on power loss -- having a gripper holding a 100kg object over your head open whenever you let go of the deadman would be... not very good.

  • WdeOliveira
    Reactions Received
    1
    Posts
    13
    • August 12, 2024 at 4:15 PM
    • #5

    Ok. lots of good answers.

    thank you guys

    I will go step by step. at first,

    Quote from panic mode

    6. no idea what X14 relay is

    I wrote it without the machine in front of me. the connector for the fieldbus supply relay is the X12. Dual + Single NO contacts that activates when the drives are enabled. at least it closes when i hold the enable switch.

    Quote from SkyeFire

    This was more useful for Teach mode, as it meant that dropping the KCP deadman would also deenergize the EOAT. Of course, this also required designing the EOAT such that it would "fail safe" on power loss -- having a gripper holding a 100kg object over your head open whenever you let go of the deadman would be... not very good.

    I was thinking about the safe state as well. having the "tool open" mode and "tool release" connected to the solenoid's NC as a safe state. thank you for confirming that!

    CMOS battery is new. internal lead acid batteries as well. all new.

    Motherboard looks like new. no signs of anything weird. I even put a fan on the CPU as it gets hot as fk. changed thermal paste... normal PC stuff.

    i'm not using the HDD. I took it of, backed up, copied to a SATA SSD using a IDE-SATA converter. Thank you kuka for disabling the internal SATA for nothing :unamused_face:. This SSD is attached to a PCI bay bracket that allows me to remove it without opening the KRC cabinet. really neat. I will try to run a chkdsk on this disk to verify if there isn't something going on. the new rams will arrive soon. Old RAMs does some weird stuff as I remember.

    May probably be some bad contact on RAMs or PCI as well. Now is running fine for a long time after I cleaned up the 3COM ethernet board contacts used by the FRI. has anybody used FRI before? would be an option? this robot has the license. It was from an university. The cabinet looks like new. Not even dust inside.

    General rule: don't interrupt the KRC controlled powerdown unless it runs really long -- like 15-30min or more. Normally it should take well under 5min.

    I'm not powering it down through those "backup" power buttons. That's just for these situations where it may hang up even before the windows has loaded. I had to close that PCI bay as well, so I 3D printed the bracket with power and HDD leds with PW and RST push buttons. I used only once. It powers ON and OFF in 30s more or less with the SSD. :smiling_face_with_sunglasses:

    3. using EXT mode requires I/O. most of the signals can be simulated or replaced by variables but few essential ones must be I/O... but Inputs are read only - only IO drivers can write inputs. so workaround is to connect those few inputs to outputs. then you can write to outputs...

    Now we are talking, yo.:smiling_face:

    If I understand well, I can reassign these signals inside P00 or config.dat ( i guess that was the name) to an OUT[x] instead of IN[x] and then write them through the Ethernet using KukaVarProxy? That would solve my problems! at least until I buy a cheap MODBUS TCP relay board just for the matter of controlling the bureaucratic AutoEXT sequence. Please, could you tell me more?

    What is "driver enable"? Use specific names -- there's $DRIVES_ON, $DRIVES_OFF, $MOVE_ENABLE, and a few other signals that might be slanged as "driver enable".

    My bad. I meant DRIVES_ON.

    There are some partial workarounds -- KVP can probably control some globalized variables that can trigger the CWRITE $CMD stop/cancel/run commands (lots of discussion in the archives) in place of the fieldbus remote start. But AFAIK, for $DRIVES_ON, $MOVE_ENABLE, $CONF_MESS, and most of the the related signals, You're stuck with fieldbus I/O. I think you could assign $DRIVES_OFF to $IN[1025] (the "always on" input), but your KSS version probably blocks you from doing that for $MOVE_ENABLE.

    DRIVE signals where assigned to $IN[1025] when I got the robot. It was displaying an error then I changed it to a random input and now seems fine.

    Thank y'all for the good answers. Now I have some directions depending on the answers to the following questions:

    1) As I understand from Panic Mode, the "soft" inputs can be assigned to Outputs (can somebody confirm where?) and these Outputs can be write to from kuka var proxy. maybe i'm gonna need just a couple of signals hardwired to the interface for the HW functions like $DRIVES_ON, $MOVE_ENABLE, $CONF_MESS.

    2) forget about not using KCP. Find a good place to store it inside the rack cabinet and that's it.

    3) As soon as I get the robot on path (I need to ensure a proper start in a HOME position to avoid a manual/auto BCO run) I can consider that the robot will start running CELL.src after booting and I can command all the process from the host computer. The idea is to avoid the person in charge of the machine to touch anything related to the robot unless something goes wrong.

    4) Is there a (safe) way to reset the system (KSS) to factory settings? as this robot was from an university, there are a lot of programs on it and I guess, by looking some config files, that they probably messed around a lot of config files. everything is working (more or less?) fine but I would like to avoid things not working due to unknow mods applied before.

    ps: Now I understand the reason why devicenet is being ditched. once it works, it is ok, but from making the cables, inserting isolated power, using those connectors, resistors flying around, the HW cost, the cable I have is quite stiff, protocol is complicated so it is not simple to build something custom (by yourself) that can communicate through. overengineered thang for a couple of IOs.

  • Online
    SkyeFire
    Reactions Received
    1,061
    Trophies
    12
    Posts
    9,463
    • August 12, 2024 at 5:26 PM
    • #6
    Quote from WdeOliveira

    If I understand well, I can reassign these signals inside P00 or config.dat ( i guess that was the name) to an OUT[x] instead of IN[x]

    Yes. You cannot assign a system input (say, $CONF_MESS) to a $OUT, but P00 uses "user space" signals, and you can hack on those with few limitations. Of course, this degree of freedom also lets you get yourself in trouble easily, so be careful doing this.

    Quote from WdeOliveira

    DRIVE signals where assigned to $IN[1025] when I got the robot. It was displaying an error then I changed it to a random input and now seems fine.

    $DRIVES_OFF could be assigned to 1025 -- it's an inverted logic signal. It turns off the drives if the input ever turns False. It's a holdover from the days when all these signals were passed over discrete wires and relays, so the robot would fail to an "off" condition if, say, the wire broke.

    $DRIVES_ON, $CONF_MESS, and $PRO_START are all "edge" signals -- they only "work" when the KRC sees a False-to-True transition. They should never be "held" True. They also need sequencing -- pulsing $PRO_START before the drives are on will have no effect.

    Quote from WdeOliveira

    1) As I understand from Panic Mode, the "soft" inputs can be assigned to Outputs (can somebody confirm where?) and these Outputs can be write to from kuka var proxy. maybe i'm gonna need just a couple of signals hardwired to the interface for the HW functions like $DRIVES_ON, $MOVE_ENABLE, $CONF_MESS

    Maaaybe. The thing is, due to SPOC requirements, KSS gets "jealous" of system outputs. Once a specific $OUT is assigned to $SystemSignalWhatever, that $OUT can no longer be set/reset from any KSS program, or from the pendant I/O display. I'm not sure how KVP controls $OUTs "under the hood", but I strongly suspect it won't be able to get past that safeguard.

    Quote from WdeOliveira

    4) Is there a (safe) way to reset the system (KSS) to factory settings? as this robot was from an university, there are a lot of programs on it and I guess, by looking some config files, that they probably messed around a lot of config files. everything is working (more or less?) fine but I would like to avoid things not working due to unknow mods applied before.

    Probably? Have to keep in mind that the KRC2/LBR was a very odd and rare beast -- it's a modified version of a base KRC2 that KUKA "hacked" as a testbed for what later became the iiWA. So there's room for the standard KRC2 tricks to maybe work, maybe not, on this special version.

    I would definitely make a full HDD (or SDD, in your case) image backup for safekeeping before trying anything. You should be able to perform a re-install of KSS (not Windows!) from the installer that should be present on the robot's D drive. This should "nuke and pave" the KRC2 back to its factory default settings. But, again, the LBR version was never bulletproofed as thoroughly as regular KSS versions, so make sure you have an Undo option in your back pocket.

    Quote from WdeOliveira

    ps: Now I understand the reason why devicenet is being ditched. once it works, it is ok, but from making the cables, inserting isolated power, using those connectors, resistors flying around, the HW cost, the cable I have is quite stiff, protocol is complicated so it is not simple to build something custom (by yourself) that can communicate through. overengineered thang for a couple of IOs.

    DN's big advantage was that it was very simple electrically[1] and at the protocol level -- it's basically a layer atop CANBUS, which is a layer atop RS485, IIRC. And DN was completely unencumbered by company-proprietary issues, which lets you do things like the Telnet commands in the KRC2 to scan the bus and get every device to report back what it is. Very handy. ProfiBus, OTOH, was... well, unless you were an expert in Siemens, good luck.
    (and even today, you cannot get Siemens PLCs to use EIP, or Allen Bradley to use ProfiNet. 3rd party bridges required).

    [1] The multiple wires and the resistors may seem otherwise, but DN devices are a lot simpler (ethernet-based devices have all that termination resistor equivalents buried inside the magnetics).

  • Fubini August 12, 2024 at 5:43 PM

    Moved the thread from forum KUKA Robot Forum to forum KUKA LBR IIWA.
  • WdeOliveira
    Reactions Received
    1
    Posts
    13
    • August 12, 2024 at 6:56 PM
    • #7

    Thank you SkyeFire !

    It is going to be simpler to get any PC IO module, probably a modbus one, and play with these signals as intended. I have to focus on the application.

    I had the same impression about this LBR4. looks like a testbed. all the solutions, from this KRC2 hw/mech/sw integration to the robot insides (the way those boards are integrated and the complexity around) looks either overengineered or adaptations made on hurry.

    I work with product development, so all the HW development part is my job, as designing circuits, debugging, printed circuit boards and integrating systems at low levels, so certain solutions smells bad. This robot was decommissioned (probably) because of a bad contact of an micro IDC connector inside of it on axis 6 and 1. it stopped completely (sometimes) due to the lack of torque feedback. I fixed it. Piece of cake to me, but for somebody not used to low level HW, the insides of this robot probably looks like a monster.

    then all the HW inside this cabinet, the way they are connected feels almost like a last minute project solution.

    I will not comment on the fieldbus part because i'm by no means an expert on that. Just recently I developed some fieldbus products (hart, modbus, analog...) and the first hand's on experience is with the devicenet. knowing the electronics behind it and the firmware implementation of other protocols, I tried just out of curiosity to sniff the CAN bus and read some documents about the protocol. would be cool to connect other custom parts of the machine to the devicenet just with a CAN interface. The protocol was quite complex in comparison to an rs485 modbus, for instance. I dropped the idea really fast.:grinning_squinting_face:

    I will build some IO on the PC side for the AUTO_EXTERNAL and report back if it worked ok or if I find any issues (hope not, probably yes.)

    btw, almost all I built here was by reading the forum topics. rack cabinet, devicenet, everything under an online-ups, kuka var proxy on the host, first programs, safety interface setup, understanding where to find information in the hundreds of manual pages, io-linking, safety interlocks. Thanks for sharing this kind of niche information.

  • Online
    panic mode
    Reactions Received
    1,299
    Trophies
    11
    Posts
    13,142
    • August 12, 2024 at 7:07 PM
    • #8

    normally one would just use any IO module (DeviceNet or whatever) to add some I/O to the KRC. then place jumpers between 4 outputs and 4 inputs and map them to essential signals like move enable, drives on, confirm messages and external start.

    this way state of those inputs are yours to control... by writing to outputs that connect to mentioned inputs.

    i have not tried it but IOSYS.INI also has a section [IOLINKING]. perhaps one can accomplish the same without hardware I/O.


    EDIT


    ok, just checked comments on IOLINKING and it it is not suitable - it operates only as output following input, not the other way around. there is also VIO but have not messed with that either.

    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

  • WdeOliveira
    Reactions Received
    1
    Posts
    13
    • August 12, 2024 at 9:29 PM
    • #9
    Quote from panic mode

    normally one would just use any IO module (DeviceNet or whatever) to add some I/O to the KRC. then place jumpers between 4 outputs and 4 inputs and map them to essential signals like move enable, drives on, confirm messages and external start.

    this way state of those inputs are yours to control... by writing to outputs that connect to mentioned inputs.

    i have not tried it but IOSYS.INI also has a section [IOLINKING]. perhaps one can accomplish the same without hardware I/O.


    EDIT


    ok, just checked comments on IOLINKING and it it is not suitable - it operates only as output following input, not the other way around. there is also VIO but have not messed with that either.

    Display More

    Sure panic mode . I'm already setting up something here to give me some IO's on windows side. the problem is the host computer side, not the KRC, as it already have the devicenet module up and running with a bunch of IO's. the PC is the problem. I need an interface just for that.

    but you convinced me. in the end, it is simpler to use the things as they are supposed to do, if the focus is the application, instead of hacking the device. I will probably use a modbus TCP wago 750-363 for that. the dowside will be to bring all the cabling to the cabinet instead of making it distributed at machine level as the host computer and the KRC2 controls different things at machine level. nobody is gonna die.

    now I learned as well that the absolute minimum IO's are 4I and 4O. I was wondering which of them where strictly necessary or optional. almost 20 signals sounded a little bit too much. there was where the desperation began.

  • Online
    panic mode
    Reactions Received
    1,299
    Trophies
    11
    Posts
    13,142
    • August 12, 2024 at 10:05 PM
    • Best Answer
    • #10

    the DeviceNet or whatever I/O does not need to connect to PC.

    It is enough that KRC can access the I/O so that you get something like:

    KVP > Write KRC variable (or write an output directly but... writing an output from an outside world can have limitations... perhaps for that controller must be in correct mode, drives must be on or similar...)> so just have Submit process the data further (add conditioning if needed etc.) ...(Submit can do this regardless if drives are on or not... > output turns on/off as requested... > output is physically wired to a related input so input will follow state of the output... and that means System will perform assigned function when input is set or triggered (for example clear messages, turn drives on...)

    as stated before, use EXT mode and you can do anything without touching teach pendant:

    1. move enable... you do need to be able to control this. if anything goes wrong, you need to be able to stop robot instantly. this is it.

    2. confirm messages... this is essential, must be able to acknowledge messages or robot may not be able to move.

    3. drives on... also essential. without this one cannot enable drives remotely.

    4. external start. this is needed to issue start from external controller (PC/PLC).

    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

  • WdeOliveira
    Reactions Received
    1
    Posts
    13
    • August 12, 2024 at 11:21 PM
    • #11
    Quote from panic mode

    the DeviceNet or whatever I/O does not need to connect to PC.

    It is enough that KRC can access the I/O so that you get something like:

    KVP > Write KRC variable (or write an output directly but... writing an output from an outside world can have limitations... perhaps for that controller must be in correct mode, drives must be on or similar...)> so just have Submit process the data further (add conditioning if needed etc.) ...(Submit can do this regardless if drives are on or not... > output turns on/off as requested... > output is physically wired to a related input so input will follow state of the output... and that means System will perform assigned function when input is set or triggered (for example clear messages, turn drives on...)

    as stated before, use EXT mode and you can do anything without touching teach pendant:

    1. move enable... you do need to be able to control this. if anything goes wrong, you need to be able to stop robot instantly. this is it.

    2. confirm messages... this is essential, must be able to acknowledge messages or robot may not be able to move.

    3. drives on... also essential. without this one cannot enable drives remotely.

    4. external start. this is needed to issue start from external controller (PC/PLC).

    Display More

    I get it.

    making it short... perform the gimmick by HW jumpers, as the sw has some stupid limitations. cool idea. thanks!

    I will clean up this KSS installation to have all the ports reset to standard values and avoid previous mods (university robot) causing problems, then assign a list of outputs to be written by KVP and fed back into the input modules at least for these 4 signals. fortunately, I have enough spare IO modules to use.

    bye bye driver-enabled signal for field power supply switching with this solution. it will be always on or use a different power rail in the future.

    update: the io expansion i had here was an Ethernet/IP wago 750-363. it didn't work in modbus mode and no common software uses this EIP protocol, like the bloody devicenet. no way (at least for me) to use any standard windows sw to make some external IO.

  • Online
    SkyeFire
    Reactions Received
    1,061
    Trophies
    12
    Posts
    9,463
    • August 13, 2024 at 3:10 PM
    • #12
    Quote from WdeOliveira

    but for somebody not used to low level HW, the insides of this robot probably looks like a monster.

    Heck, for those of us accustomed to working on "big iron" robots, the inside of the LBR is scary. It's stuffed to the point that just taking one of the covers off is a risk -- some of the internals are liable to "explode" out at you, and getting them stuffed back in is... well, it was so easy to screw up something critical that could only be fixed in Germany.

    It's part of why the LBR was almost exclusively a graduate-school R&D robot, and saw very little industrial use. Amazing machine, but technological overkill for most uses. Add in the fact that the internal force sensing was so easy to screw up and was a safety-critical item... the iiWA is more polished, but even it suffers from the "10kg of crud in a 5kg bag" issue.

    Quote from WdeOliveira

    then all the HW inside this cabinet, the way they are connected feels almost like a last minute project solution.

    Hm... I can't recall how much the standard KRC2 (which is a pretty pleasant internal setup) was modified to run the LBR. The bulk of the differences should have been in software. That said, the previous owners may have made their own off-label mods. And if there's one issue with working on German cabinets, it's that once you change anything in those incredibly perfect wiring layouts... you can never get it all back to German levels of neatness and organization.

    Quote from WdeOliveira

    update: the io expansion i had here was an Ethernet/IP wago 750-363. it didn't work in modbus mode and no common software uses this EIP protocol, like the bloody devicenet. no way (at least for me) to use any standard windows sw to make some external IO.

    You could try CodeSys. The free version will only run for 2hrs before needing a reboot, but aside from that I've found it quite handy for controlling EIP devices. There's also a non-commercial license for running it on a Raspberry Pi that runs about $35, last I checked.

    I'm pretty sure there's some open-source EIP stacks. I haven't tried any of them myself, but I've heard good things about pycomm3.

    All that said, either of those would probably involve learning a whole new software stack and writing custom code. Going with Panic's method of just buying another cheap DevNet module and adding it to the robot with some hot-wiring that will allow you to control inputs by setting outputs is probably the simplest approach.

  • WdeOliveira
    Reactions Received
    1
    Posts
    13
    • August 22, 2024 at 12:03 AM
    • #13

    Hi guys.

    Just bringing some updates. Maybe you guys have some hints.

    Since panicMode's advice on HW signal loopback I performed the following steps:

    1) found out a lot of limitations of cases when you can actively set an OUT from KVP in autoEXT. I found two variables to override on $config.dat to enable these interfaces (sorry but I don't have the sw here now to get their names. something like external IO enable.

    2) after that, I tried to make SUBMIT send the signals and it worked ok, it runs on boot and can use an intermediate global from $config as input. for some german reason, I cannot simply associate the variable value to an OUT[x] and I have to perform an if/else then true/false for each one but not a big problem.

    3)everything I read in the manuals assumes that you have a classic PLC in a 1wire per bit configuration to send the program data. I read P00 and noticed all the mess it does to bit-bang the data and transform it from physical inputs to an internal variable.

    In a scenario where you are communicating through Ethernet, this is not needed because the lower layers of OSI takes care of the error correction and things alike, so... I started modifying the P00 program with a new case. Ethernet PGNO.

    4) Of course I didn't know it this thing would work or not. I created a PGNO_TYPE 4 and forced this mode on $config (because the UI doesn't allow to set it to 4 as a normal gentleman) and wrote the CASE 4. It just displays a message to be acknowledged saying that its using Ethernet PGNO mode. This mod is done both on PGNO type and where it read the PGNO afterwards.

    5) I wrote 3 stupid programs with random moves starting from #HOME, resetted the controller, first MOVE_EN, Ack message, Start program, it showed me the message I wrote before, Start program again and... It WORKS!!!

    In essence, it needs 4 inputs (and outputs as well because of the loopback on HW through the devicenet).

    the weird part is that it turns the drivers on automaticaly from the first boot but, if you touch anything, it needs a reset or a manual drivers on signal.

    I noticed that this controller has the same teach pendant HW signals on X11 as well, as the dual channel stop switch, drivers ON, drivers OFF (single channel) and mode selection (AI, T1, T2 and AE). I tried a jumper for drivers ON and it works the same as on the TP.

    Questions on my mind:
    With the same signals on X11, theoretically I could run without KCP in auto mode through X11? I don't need it but, just wondering.
    Did I do anything stupid editing P00 to avoid the Old School checks and just accept the PGNO value?

    If i keep the PGNO number (that I can read back from the variable) I just have to acknowledge the movement and issue a program start and it runs again. Any comments about doing something stupid?

    The final cell will just have to wait for a human to perform a selection from an user friendly HMI and the PC in control of the KRC will receive the program number then set PGNO to start executing. this PC takes care of the entire cell as well, startup, accessories and other stuff, as I don't want to rely on the KRC for these upper level tasks because I'm considering making a second cell in the future with a more modern robot as a R900 SIXX KRC4. My idea is just to adapt the individual receipts (programs) and points/tool/workspaces.

    all these tests where done with push buttons to be fast, now I will come back to the SUBMIT loopback and automate from the host PC. Any advices?

    last point. has anyone used the circuit from the datasheet to enable the drivers in autoext mode that gets a signal (aparently) from the MFC to close a relay contact to DRIVES_EN on X11 using the voltage from the ESC (x14 I guess)?? I want to be sure before doing something stupid with the MFC and wrecking my startup's bank account 4 figures down.

    Thank y'all for the help and I will keep the post updated with the progress in case anyone else needs this kind of information.

  • Online
    SkyeFire
    Reactions Received
    1,061
    Trophies
    12
    Posts
    9,463
    • August 22, 2024 at 3:53 PM
    • #14
    Quote from WdeOliveira

    2) after that, I tried to make SUBMIT send the signals and it worked ok, it runs on boot and can use an intermediate global from $config as input. for some german reason, I cannot simply associate the variable value to an OUT[x] and I have to perform an if/else then true/false for each one but not a big problem.

    That's odd. What value are you trying to assign? $OUTs are Boolean, and as such only accept True or False -- unlike some systems, KRL does not treat 1 and 0 as Boolean equivalents.

    Quote from WdeOliveira

    the weird part is that it turns the drivers on automaticaly from the first boot but, if you touch anything, it needs a reset or a manual drivers on signal.

    No, that's pretty normal. The comm drivers a very low-level software, and generally have to be rebooted to reload their config files after said files have been changed. It used to be the only way was to reboot the KRC, which took 5min. These days, doing an I/O Reconfig can reboot the I/O subsystem in isolation -- much faster.

    Quote from WdeOliveira

    tried a jumper for drivers ON and it works the same as on the TP.

    Questions on my mind:
    With the same signals on X11, theoretically I could run without KCP in auto mode through X11? I don't need it but, just wondering.

    Not sure what you mean here? Mode Selection cannot be done through X11. And the X11 signals do not bypass the KCP safety signals -- unplugging the KCP will cause an Internal E-Stop error, period.
    The KRC4 series allows the SmartPad to be disconnected without causing a fault, if you follow the proper steps, but the KRC2 KCP is hardwired in.

    Quote from WdeOliveira

    If i keep the PGNO number (that I can read back from the variable) I just have to acknowledge the movement and issue a program start and it runs again. Any comments about doing something stupid?

    Shouldn't be a problem, depending on how much you hacked P00. P00 normally forces you to set the PGNO input value, then set PGNO_VALID, and then reset PGNO_VALID, before it will start the program. This is intended to protect against the kind of issue you're concerned about.

    Quote from WdeOliveira

    all these tests where done with push buttons to be fast, now I will come back to the SUBMIT loopback and automate from the host PC. Any advices?

    Should work mostly the same way. You'll want to protect against things like "buttons" getting held/stuck too long, multiple buttons pushed at once, pushed out of order, etc. That will be the same for buttons or remote signals.

    Quote from WdeOliveira

    last point. has anyone used the circuit from the datasheet to enable the drivers in autoext mode that gets a signal (aparently) from the MFC to close a relay contact to DRIVES_EN on X11 using the voltage from the ESC (x14 I guess)?? I want to be sure before doing something stupid with the MFC and wrecking my startup's bank account 4 figures down.

    Not sure what you're going for here.

  • WdeOliveira
    Reactions Received
    1
    Posts
    13
    • August 22, 2024 at 4:41 PM
    • #15
    Quote from SkyeFire

    Not sure what you're going for here.

    Neither me. I posted the datasheet section that says you should perform that wiring to be able to turn the drivers on in auto ext.

    in the doubt, i will do nothing. Is working for now.

  • Online
    panic mode
    Reactions Received
    1,299
    Trophies
    11
    Posts
    13,142
    • August 22, 2024 at 4:42 PM
    • #16

    Instead of long way, multi line IF statement

    IF expression THEN

    $OUT[123]=True

    ELSE

    $OUT[123]=False

    ENDIF


    You can get the same thing in just one line:

    $OUT[123] = expression


    About single drives on upon power up, this has to do with signal behavior an wiring. Some signals are edge sensitive. This means they react on rising or falling edge, and not input level ..

    But... you wired drives on input directly to 24V meaning this input only sees single edge - when 24V is present... or when powered on.. or when io driver is restarted.

    The edge sensitive signals include

    Drives on

    Drives off

    Confirm messages

    External start

    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

  • WdeOliveira
    Reactions Received
    1
    Posts
    13
    • August 25, 2024 at 9:16 PM
    • #17

    hi panic. I have some updates.

    shortly, everything is working now.

    I edited the P00 and added my case as PGNO type 4 and force it through the system variables, so there is no changes to the rest of the system behavior, except that it doesn't performs all those checks that are useful when wiring up bit by bit to a plc to set a program.

    it simply waits for PGNO and check if the number is in the range of the available programs. Done!

    Then I declared some proxy variables to control the critical signals as drives on/off move enable and program start from ethernet. SUBMIT takes care of translating that to the HW loopback (your Idea of wiring up the outputs with the inputs at the devicenet remote io) and normal mapping from the autoext IO. just 4 signals because I want to have the drives off as well for prolonged Idle periods.

    I developed a PC application that abstracts all the low level part and gives me (for testing) a simple gui with program number, robot status, init, run, pause, continue and stop. works like a charm. An WiFi LBR4!

    My doubt about the drives on signal wasn't about signal levels or edge detection. I'm an electronics engineer and I develop boards and microcontroller stuff btw, so I'm quite aware of all this stuff (just to give you a background:smiling_face:). but thank you for point it out anyway:thumbs_up:. I've seen that part in the datasheet and nowhere else (the picture attached on last post). the pinout of that MFC connector is not described anywhere I looked at, so I got a little bit reluctant to wire 24V to one essential (and expensive) expansion board without having a full documentation of that connector. is there any advantage in performing the drives activation through that interface?
    currently I'm using the "out[x] directly wired to two relays that toggles them high and low for 300ms at X11 when I want to toggle the drives state, directly from an ethernet command.

    am I being paranoid by using 3 different isolated power supplies on the devicenet? I have a tiny one (15W overkill but was the smallest I found) for the fieldbus, other for the devices themselves (remote IO logic, all of them together, 48W overkill as well) and other for the field side (48W), relays, sensors ecc.

    thank you guys once more. I have a lot to learn about the robot automation part, because everything is meant to be done in a certain way and you don't have to build circuits from scratch as i'm used to. I don't know if and how long I would take to solve these small issues that blocks the development, without your help. I'm relieved seeing the orange snake twisting around!

    cheers.

  • Online
    SkyeFire
    Reactions Received
    1,061
    Trophies
    12
    Posts
    9,463
    • August 26, 2024 at 3:24 PM
    • #18
    Quote from WdeOliveira

    is there any advantage in performing the drives activation through that interface?

    Not really. $DRIVES_ON isn't going to act any differently if you change which interface you connect it to. Your relays might be adding a small delay, but IMO that's a very small price to pay for the circut protection the relays give you. And the KRC still has to energize its big internal relays, and switch the motors from Brake Holding to Servo holding, all of which take enough time that any extra delay from your $DRIVES_ON hookup is probably lost in the noise.

    Quote from WdeOliveira

    am I being paranoid by using 3 different isolated power supplies on the devicenet? I have a tiny one (15W overkill but was the smallest I found) for the fieldbus, other for the devices themselves (remote IO logic, all of them together, 48W overkill as well) and other for the field side (48W), relays, sensors ecc.

    DN comm power needs to be pretty "clean", so often a low-power but high-quality (and rather $$$) supply is used there. Comm power is also usually pretty low wattage, as the current demands are low.

    Output power is (normally) completely separate, and often less stringently spec'd, so it's not unusual to see cheaper but heftier supplies used there. Still, you don't want 10% ripple or big harmonic spikes, so Ali Express supplies are probably not a great idea.

    There's also individual component specs. DN is fairly robust, but some brands abuse that by playing fast and loose with their components, and others are perhaps a bit too tight. For example, it's not unusual to see people just "steal" DN power from the KRC's internal 27VDC bus. Which, by a strict reading of the DN spec, is just a bit above the DN upper limit, but works anyway. Most of the time -- I've had a few modules that wouldn't run on it. Never had one burn up, just faulted on boot. It's also not unusual to see those same people run the comm power and the output power off the same tap-off in the KRC. Nothing wrong with that, per se, but it does remove some of your isolation benefits.

  • Online
    panic mode
    Reactions Received
    1,299
    Trophies
    11
    Posts
    13,142
    • August 26, 2024 at 6:19 PM
    • #19

    P00.SRC is just another ASCII file so yes, it can be modified... and while doing so may be tempting, i prefer to not touch any of the KSS supplied file. and P00 was created in a way that no modification is needed... or expected.

    to me it is much cleaner to make any customization or modifications only in own files. if needed they could still contain copies of code from files found on the robot. i guess it is a matter of taste but i think the next user may appreciate it.


    well... that is just me and i certainly have developed some ... preferences...

    for example i don't like to touch even places that have clear invitations to add user things in there - like sections in $CONFIG.DAT, or Submit, or in INI folds in the SRC files etc. and this is still in the 'ok' category... though i would do my best to avoid things like that, much more so if it involves customizing files like BAS.SRC, P00.SRC, or tech packages. i would keep those under 'last resort' as they will likely confuse other users and complicate any future work/support.

    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

  • WdeOliveira
    Reactions Received
    1
    Posts
    13
    • August 27, 2024 at 2:56 PM
    • #20

    I totally agree with you, panic mode .
    we do these same best practices on embedded software (firmware) as well. But some times we have to go down the rabbit role due to limitations of the platform. what we do is to document it.
    Btw, I got a RS485 to IO (8 opto inputs, unfortunately NPN, so I have to add some pull Down resistors manually, and 8 relays spdt) so these files will probably be brought back almost to original state. I have backups of everything, actually the entire system. Unfortunately kuka considered that everyone will wire up bit by bit to a PLC and never use a higher level system through Ethernet, so those routines messes up with the PGNO once you write externally and it tries to read from whtf IN[[PGNO_FBIT[x]] is set to.
    anyway, now with the PC IO I can get rid of the 4 HW signal loopbacks and just keep the PGNO type 4 switch case that I created. But your loopback solution made me advance before spending money on it avoided making stupid shit.

    SkyeFire Thanks man. I will keep it as it is and just use the RS485 relay outputs for it instead of the loopback. what matters is that the system is working as it is. so lets keep that MFC$$$ right there where it belongs to, doing her devicenet duties.

    About the power part, I really ask to myself how crappy a PSU should be to make all this mess. I made A LOT of power supplies in my life, almost for every PCB I made in my life, and in order to mess up a bus communication, worse yet, a CAN bus communication that is already isolated from the rest of the system, so no internal ground loops are possible, you have to be a little bit creative.
    I'm using simple DIN rail supplies from MW (who knows if original or not) and from the scope, the outputs are pretty clean.
    Also, in industrial or aerospace, the power supplies has a LOT of voltage range. The last one I made for an industrial ultrasonic flowmeter was from 9 to 36vin and would survive even 42.
    The problem is that you never know what they used inside there so, as you said, better to be safe keeping it around a couple of volts of the nominal.

    Guys, thank y'all once more and I think that I will wrap up this topic here. I'm gonna make the gripper for this guy.

    Cheers from Italy.

  • WdeOliveira August 27, 2024 at 2:57 PM

    Selected a post as the best answer.

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • krc5
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • krc5
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Tags

  • Ethernet
  • KUKAVARPROXY
  • KRC 2
  • Autoexternal
  • lbr4
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download