panic mode
Thank you for your advice. Is there any specific reading material i can refer to regarding this?
Appreciate it
Posts by emerald_geni
-
-
Hi skyefire,
Thank you for your explaination. Is this the same logical thinking that is used perhaps for robots in automobile manufacturing.
I get roboTeam is the Kuka varient but is the concept u mentioned applicable for other robot implementations as well in the industry? I am trying to find a industry followed methodology so I don't miss out any key factors.
Thanks once again.
-
Hi, i have experience with a single 6 Axis robot control Programming. but i am tasked with programming 3 robots to work in one cell safely and efficiently. I would like to know the development ideology involved for something like this.
Could anyone direct me to reading material regarding this. I have searched but got not find. Appreciate it -
Hi Hermann,
The PLC will check for this signal and then only give the command to execute a procedure.
i just want a output signal when at robot at HOME position.
This code is kind of a work around to achieve that. im not sure if this is the best way to do this?
-
Hi I have made my own HOME position and would like to signal my PLC that the ROBOT is at HOME.
I do not have WORLD ZONE package and wrote the code below.
Code
Display MoreVAR robtarget pCurrentPosition; VAR robtarget Differnce; VAR num val; GetSysData tCheck\ObjectName:=stToolName; GetSysData wobjCheck\ObjectName:=stWobjName; pCurrentPosition:=CRobT(\Tool:=tCheck\WObj:=wobjCheck); !val :=pCurrentPosition.trans.x; !val := Round(val\Dec:=2); IF HOME = pCurrentPosition THEN SetDO doRobotAtHome,1; ELSE SetDO doRobotAtHome,0; ENDIF
The issue with the above code is that the current position might have a few decimal places values different then HOME values.
Is there are any other more efficient solution to trigger Signal when robot at HOME Position?
-
-
-
ABB IRC5
Hi I have a gripper and trying to understand the best way to teach TOOL DATA. If my tool is a pointy object like the tip of a pen then its pretty straightforward on the 3/4 referencd points.
But my gripper or any other tool has not a single point. Which position do I take to perform this process? I can't hold a pointy object with my gripper as well.
Thanks.
-
Thank you so much DS186!
-
Which robot controller (e.g. IRC5, OmniCore, etc.), RW version, PLC brand and communication protocol are you using?
I am using an IRC5 robot with BECKOFF PLC and EtherNet/IP for communications
In ABB world this is called world zones. This requires the "World Zones" option on your controller.
is it available in all robots or do i have to get in added from the supplier?
Thanks
-
Hi everyone i have experience with KUKA robots. I have an ABB IRB1200 Robot that is to be installed upside down.
I have been reading the manuals but could not find info regarding the following:
- PLC Integration steps
-Common signals to send to PLC
- How to setup a safe area; similar to KUKA's $WORKSPACE
- For the upside down robot, do i have to change 'Mount Angle' or any other settings/configurations ?
Greatly appreciate your inputs guys.
-
Hi Panic mode,
Appreciate your time.
take needed programming courses. interrupts are powerful but there are limitations. most of limitations are intentional due to architecture and considerations of motion planner
I have
Operating and Programming Instructions for System Integrators_KSS 8.5
KUKA Robot Programming 1
KSS_85_System_variables_en
KSS_82_83_CREAD_CWRITE_en
For reference, is there any other material that go in depth regarding the limitations of ISRs?
as for training, i have to travel to another country to get inperson training and its not possible for me at the moment.
WAIT commands do not change $ADVANCE but they do cause advance run stop.
take needed programming courses.
Yes to prevent the Advance pointer from running off. I read it in the interrupt Manual page and had removed INI etc. as suggested from there, in my interrupt file. but i understand now that i cannot have any inline form instructions.
or example if you want to do an automated homing, write program for it (not an ISR). make sure to cover all cases (and this will be hard). test it.... and once you are happy with it, use case in CELL to call it like any other program. your button press to home robot should simply be used to call specific case.
I have tried this method as well and it was the reason why i had to comment off CHECK HOME and PTP HOME in my CELL.SRC, since when homing in initiated my robot won't be at home and thus PGNO would not be executed.
switch case block is missing.
I removed all the excess code not related to my question so its easier for you to read. but i do have a switch Statements below.
-
Hi everyone,
i am trying to get a homing sequence working for my robot.
I have setup my CELL.SRC with an interrupt. which will be triggered by a homing button.
my questions are:
1)I have commented out the CHECK HOME and PTP HOME in my CELL.SRC. Since when the interrupt is triggered the robot would not be at home. Will this cause any unforseen issues?
2)While in interrupt i get $Advance and $GEAR JERK Variable write-protected in module BAS, Errors. how do i fix these?
i believe for $advance i can set a WAITFOR but im not sure whats the best way to do so. i have read the INTERRUPT threads in the manuals page as well.
I have tried initiating my interrupt_test.src from a .SUB as well and get the same errors as above.
MY CELL.SRC
Code
Display More&ACCESS RVP &COMMENT HANDLER on external automatic DEF CELL ( ) ;FOLD EXT DECL EXT assytray();EXT EXAMPLE1 ( ) EXT CYL();EXT EXAMPLE2 ( ) EXT P15_inlet_to_platform45() EXT P16_inlet_to_rightassy() EXT P17_inlet_to_leftassy() EXT P18_recipe_rose() EXT P19_recipe_lavender() EXT P20_recipe_eucalyptus() EXT P21_recipe_teatree() EXT P22_recipe_sadalwood();EXT EXAMPLE3 ( ) EXT P23_recipe_citronella() EXT P24_recipe_peppermint() EXT P25_rightassy_to_home() EXT P26_leftassy_to_home() EXT P27_platform45_to_home() EXT P28_execute_recipe_right() EXT P30_EOATchange_1_to_2() EXT P32_EOATchange_2_to_1() EXT P43_RFID_to_outletTray1() EXT P44_RFID_to_outletTray2() EXT P45_RFID_to_outletTray3() EXT P46_RFID_to_outletTray4() EXT P47_RFID_to_outletTray5() EXT P48_home_to_RFIDout() EXT P54_Assy_CB() EXT P55_Assy_CH() ;ENDFOLD ;FOLD INIT DECL CHAR DMY[3] DMY[]="---" INTERRUPT DECL 20 WHEN di_bInitRecoveryfrmPLC == TRUE DO Interrupt_test ( ) INTERRUPT ON 20 ;ENDFOLD (INIT) ;FOLD BASISTECH INI GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS == TRUE DO IR_STOPM ( ) INTERRUPT ON 3 BAS (#INITMOV,0 ) ;ENDFOLD (BASISTECH INI) ;FOLD CHECK HOME ;$H_POS=XHOME ;IF CHECK_HOME==TRUE THEN ;P00 (#CHK_HOME,#PGNO_GET,DMY[],0 ) ;Testing Home-Position ;ENDIF ;ENDFOLD (CHECK HOME) ;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT ;PDAT_ACT=PDEFAULT ;FDAT_ACT=FHOME ;BAS (#PTP_PARAMS,100 ) ;$H_POS=XHOME ;PTP XHOME ;ENDFOLD
My Interrupt_test
-
-
you cannot do that... it is not how interrupts work. there are limitations.
your ISR routine cannot contain things like INI fold. so you need to remove lines 2-13 from Interrupt_Test()
have deleted as you said and tried again
I still am not able to see MsgNotify turn up.
Could my interrupt is triggered by IN[18] which is ON when i press ESTOP and then Press RESET in my PLC. Could ESTOP interfere with the interrupt?
-
If the Interrupt is DECL'd in CELL.SRC, it gets "inherited" by every routine that CELL calls, and every routine those routines call. GLOBAL is not required for that.
The reason that Interrupt 3 is DECL'd in the INI Fold of every module created using the default template, is because KUKA was trying to make a simple template that would work for all use cases. And re-DECLing an Interrupt doesn't do any harm.
It would help if we had any idea what you're trying to do with $ACC_AXIS. As a general rule, motion-controlling variables cannot be modified from inside the SPS, as those variables are "owned" by the Level 1 Interpreter (the Interpreter that the robot motion programs are executed in).
Below is my declaration of interrupt 20 in my CELL. i checked in my INPUT/OUTPUTS -> DIGITAL OUTPUTS and my di_bInitRecoveryfrmPLC is being switched ON correctly.
Code
Display More&ACCESS RVO &COMMENT HANDLER on external automatic DEF CELL ( ) ;FOLD EXT DECL ;ENDFOLD ;FOLD INIT DECL CHAR DMY[3] DMY[]="---" ;ENDFOLD (INIT) ;FOLD BASISTECH INI GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS == TRUE DO IR_STOPM ( ) INTERRUPT ON 3 INTERRUPT DECL 20 WHEN di_bInitRecoveryfrmPLC == TRUE DO Interrupt_test ( ) INTERRUPT ON 20 BAS (#INITMOV,0 ) ;ENDFOLD (BASISTECH INI) ;FOLD CHECK HOME $H_POS=XHOME IF CHECK_HOME==TRUE THEN P00 (#CHK_HOME,#PGNO_GET,DMY[],0 ) ;Testing Home-Position ENDIF ;ENDFOLD (CHECK HOME) ;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT PDAT_ACT=PDEFAULT FDAT_ACT=FHOME BAS (#PTP_PARAMS,100 ) $H_POS=XHOME PTP XHOME ;ENDFOLD ;FOLD AUTOEXT INI P00 (#INIT_EXT,#PGNO_GET,DMY[],0 ) ; Initialize extern mode ;ENDFOLD (AUTOEXT INI) ;GLOBAL INTERRUPT DECL 20 WHEN $IN[18] == TRUE DO Recovery ( ) ;INTERRUPT ON 20 LOOP P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
Interrupt_test ( ) just has the following:
Code
Display More&ACCESS RV DEF Interrupt_test ( ) ;FOLD INI;%{PE} ;FOLD BASISTECH INI GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) INTERRUPT ON 3 BAS (#INITMOV,0 ) ;ENDFOLD (BASISTECH INI) ;FOLD USER INI ;Make your modifications here ;ENDFOLD (USER INI) ;ENDFOLD (INI) MsgNotify("In read_CSV file",,) END
-
If the Interrupt is DECL'd in CELL.SRC, it gets "inherited" by every routine that CELL calls, and every routine those routines call. GLOBAL is not required for that.
The reason that Interrupt 3 is DECL'd in the INI Fold of every module created using the default template, is because KUKA was trying to make a simple template that would work for all use cases. And re-DECLing an Interrupt doesn't do any harm.
It would help if we had any idea what you're trying to do with $ACC_AXIS. As a general rule, motion-controlling variables cannot be modified from inside the SPS, as those variables are "owned" by the Level 1 Interpreter (the Interpreter that the robot motion programs are executed in).
Hi Skyefire,
I made positioning monitoring (SPS) that will record the robots positions to text file.
I am trying to get the INTERRUPT to initiate the recovery.SRC to get it back home after IN[18] is true.
my recovery.SRC has following:
$AXIS_ACT: to PTP to itself before homing(to prevent BCO to home)
SPTP P[i] WITH $VEL_AXIS[1] = SVEL_JOINT(10.0) C_Spl
-
-
Hi guys,
I am using KSS 8.6 END V6
I am trying to create a global interrupt that will initiate a recovery.src in my cell( interrupt 20). it should be always running.
i have a few questions regarding it.
Code
Display More&ACCESS RVO &COMMENT HANDLER on external automatic DEF CELL ( ) ;FOLD EXT DECL ;ENDFOLD ;FOLD INIT DECL CHAR DMY[3] DMY[]="---" ;ENDFOLD (INIT) ;FOLD BASISTECH INI GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS == TRUE DO IR_STOPM ( ) INTERRUPT ON 3 BAS (#INITMOV,0 ) ;ENDFOLD (BASISTECH INI) ;FOLD CHECK HOME $H_POS=XHOME IF CHECK_HOME==TRUE THEN P00 (#CHK_HOME,#PGNO_GET,DMY[],0 ) ;Testing Home-Position ENDIF ;ENDFOLD (CHECK HOME) ;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT PDAT_ACT=PDEFAULT FDAT_ACT=FHOME BAS (#PTP_PARAMS,100 ) $H_POS=XHOME PTP XHOME ;ENDFOLD ;FOLD AUTOEXT INI P00 (#INIT_EXT,#PGNO_GET,DMY[],0 ) ; Initialize extern mode ;ENDFOLD (AUTOEXT INI) GLOBAL INTERRUPT DECL 20 WHEN $IN[18] == TRUE DO Recovery ( ) LOOP P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 ) INTERRUPT ON 20
1) I am trying to replicate and have placed my own interrupt below it, at first.
:: GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS == TRUE DO IR_STOPM ( )
INTERRUPT ON 3
but my global interrupt does not seem to work,
2) if it is global interrupt, why is this line declared, being written in every .src file that is created.
3) would a .sub be better suited for this?
if so, i tried calling the file but get $ACC-AXIS variable write-protected in module BAS, line 411.
I tried searching in the forum to find a solution but i do not understand it fully.
Thanks for your help.
-
and to continue with few more tips....
4. do NOT write code in SPS. create separate SRC/DAT file, debug it in robot interpreter and when all is said and done, then just link it to SPS.
5. do not try to use Cartesian position like that. your program is continuously reading $POS_ACT and it will crash. you need to check if the tool and base are set or use OBN_ERROR_PROCEED
6. your RECORD strategy is flawed. it will crash the submit, for example RECORD can be set/reset multiple times. when it is reset, attempt is made to close the currently open file. but next time RECORD is true, attempts are made to write to a file without having new handle or file open.
7. STAT value is never evaluated. in a robust program this need to be handled.
Thank your for your reply Panic Mode.
have taken note of points 4 and 7 and made changes accordingly. i am still testing if this method is feasible. for point 6 i have a separate SRC file called CREATECSV to create a new file after the first one is closed.
do you have any other advice to address this issue or a solution more suitable? This is my first robot and still learning the ropes.