Change asynchronous axis to synchronous axis

  • Hi for all,


    I have robot with KRC2 and I use asynchronous axis but for one application.. I need change from asynchronous axis to synchronous axis.. But only for one application! Not for all! After I want change back... I´m not sure how and where in system I can overwrite status of external axis.. If just only change status "$ASYNC_AXIS before process or?


    Please can you write me some exam how I can change type of external axis exactly?


    Really thanks and I wisch only luck!!!


    :help:

  • Yes, it is normally possible to switch an external axis between SYNC and ASYNC modes, by turning its respective bit in $ASYNC_AXIS on or off.


    $ASYNC_AXIS is an INT variable, but is usually manipulated as a bit code for clarity in programming.

    Code
    $ASYNC_AXIS = $ASYNC_AXIS B_OR 'B000001' ; set E1 in ASYNC mode
    $ASYNC_AXIS = $ASYNC_AXIS B_AND 'B111110' ; set E1 in SYNC mode
    $ASYNC_AXIS = $ASYNC_AXIS B_OR 'B100000' ; set E6 in ASYNC mode
    $ASYNC_AXIS = $ASYNC_AXIS B_AND 'B011111' ; set E6 in SYNC mode


    This approach, using B_AND and B_OR, allows you to control the status of one axis without changing any of the others. If you only have one external axis, then a simple

    Code
    $ASYNC_AXIS = 'B000001' ; E1 ASYNC
    $ASYNC_AXIS = 'B000000' ; E1 SYNC


    will suffice.

  • Thank you very much Skyefire!


    If I understand well does mean that I will have program with points where I have asynchronous axis and in moment when I will want change axis from asynchronous to synchronous I will overwrite $ASYNC_AXIS = B000001 to $ASYNC_AXIS = B000000? And when I will want to change it back I will overwrite it to original value? Normally in program where I have points?


    I would like to know it because right now I can´t try it.. Only when I will be at the customer...


    Thank you...


    :merci: :merci:

  • If an external axis is set to ASYNC mode, it will not move when a PTP, LIN, or CIRC motion command is executed, even if the E6POS or E6AXIS data includes a value for that axis. The axis will only respond to ASY_PTP commands. If the axis is in SYNC mode, it will move along with the other axes of the robot for any normal PTP/LIN/CIRC command.


    Caveats: In ASYNC mode, the axis speed will be controlled by $OV_ASYNC. This defaults back to 10% every time the robot is rebooted, so you will need to control it from inside your program. Also, certain system events, like E-Stop, may reset the axis from ASYNC to SYNC mode. Your program will need to protect against this.

  • Thanky you like always Skyefire that you comunicate with me and like always I will have stupid questions....


    In my robot I have one external axis to set asynchronous and I turn with table in own task where I count about how much I want turn table and after I have points of robot without external axis... But in one time I will need to change external axis from asynchronous to synchronous because I will need to move with robot in LIN and simultaneously I will need to move with table.. Only in one operation...


    Does mean for me that in program I change "$async_axis" from 'B=000001' to 'B=000000' and when I will create a new point with robot I will save position of table too?


    About your caveats I hope that I don´t need change nothing when I have external axis asynchronous like default...


    Forgive me that my questions are so simply...


    Thank you for your time....


    :icon_redface:

  • $ASYNC_AXIS does not affect how points are recorded, only how they are executed. When the MOTION or TOUCHUP buttons are used, the point is recorded for all axes, with no regard to whether an axis is Sync or Async.


    When it needed to move the external axis E1 synchronously with the A1-A6, this must be preceeded by $ASYNC_AXIS=0 or $ASYNC_AXIS='B000000'. When it is needed to move E1 separately from A1-A6, this must be preceeded by $ASYNC_AXIS=1 or $ASYNC_AXIS='B000001'.

  • Hello Skyefire,


    I tried what you wrote me almost four month ago on one robot with KRC 2 where I had one external axis E1 to set like SYNCHRONOUS... When I wrote to system task for ASYNCHRONOUS axis where I overwrote $ASYNC_AXIS from $ASYNC_AXIS=0 to $ASYNC_AXIS=1 I dont´t remeber that I had problem with moving and system indicate "connected asynchonous axis E1".. Only when I was in program and when I sell line with button the system set value back to SYNCHRO axis.. But all was fine and I moved with axis asynchro mode...


    But right now I have robot where I need to have this application and here I use standardly ASYNCHRO external axis and when I created task whrere I want to set $ASYNC_AXIS from $ASYNC_AXIS=1 to $ASYNC_AXIS=0 the system do nothing... This value I can´t change...


    Does mean that I must to set simultaneously $ASYNC_OPT from TRUE to FALSE? Or?


    I have it write so:



    WAIT SEC 0.1
    $ASYNC_AXIS = 0
    WAIT SEC 0.1
    WAIT FOR ($ASYNC_AXIS == 0) ;Here the robot wait and that´s all...



    What I need? I count position of external axis by PLC and I do always same moving with robot (PTP,LIN and CIRC) and only move to some angle what I count with PLC... But right now I want to move with ASYNCHRO axis like always and when I move with points of robot there I need move with all axis SYNCHRO.. That I will move with robot and simultaneously with external axis.. After this condition I want set external axis back and move with external axis like ASYNCHRO...


    I know that I this is very simply but I dont´t know what I must overwrite for this condition when I can´t change value $ASYNC_AXIS....


    I think that I must overwrite more values, or?


    Really thank you for your help and time to reed my boring problems...


    :icon_redface: :love029: :icon_redface:

  • What happens when you try to change $ASYNC_AXIS?


    What is the value of $EX_AX_ASYNC and $EX_AX_NUM?


    $ASYNC_OPT should always be TRUE for any robot with an external axis being used in Async mode. $ASYNC_OPT cannot be switched on and off during a program.

  • Good morning Skyefire,


    in $EX_AX_NUM I have 1 and in $EX_AX_ASYNC also 1...


    When I want ovewrite $ASYNC_AXIS in program the system do nothing and when I want to change it unde variable the system write me that variable is only for reading....


    What I can do?

  • But when I change in $machine.dat variable $EX_AX_ASYNC to $EX_AX_ASYNC=0, that I have only SYNCHRO external axis I can change it in program to ASYNCHRO.. It´s nice but I need always only ASYNCHRO axis!! :wallbash:


    Right now I have that I rotate with table (E1) in ASYNCHRO to some angle what I count and after go to program where I have moving of robot (There I have synchro mode - does meant that in other task I change value $ASYNC_AXIS from 1 back to 0) The robot go standardly like in synchro mode... After I go with repeat in my process back and set from SYNCHTO to ASYNCHRO, after turn with table (E1) in ASYNCHRO on next angle what I count and when I continue to program where I have points of robot with SYNCHRO mode the robot do same points but external axis go back to position where points was created... And this I don´t want it!!! :bawling: :bawling: :bawling: :bawling:


    I know that each point has line with type of point and some instruction XP and number of point.. Second LIN point in program has LIN XP2 (I think that there is position of external axis... I know that when I have SYNCHRO mode and I want to shift this point with angle of table I must to overwrite this line to same angle like external axis and this point will be well with table... But for me does mean that this point I must copy for each angle of table and I want to have only one point.... :tired: :tired: ??? ???


    What I can do??


    Really I´m desperate so much....


    Or why I cant to have only ASYNCHRO mode and to change it in program to SYNCHRO only when I need it?

  • I'm not understanding this very well.


    $EX_AX_ASYNC is used to "lock" an axis permanently into Async mode -- $ASYNC_AXIS will no longer have an effect on any axis whose bit is set in $EX_AX_ASYNC.


    Your application *sounds* like you want to use $EX_AX_ASYNC and keep the axis permanently Async, but I'm not sure I understand your explanation.

  • Yes yes yes... I need to have permanently asychro external axis... Because I weld with three points (LIN, CIRC) on the same space and I only turn with table on position what I count... This is standard condition what I use on this robot.. Move with table and weld with same points... But right now they need to move with table during welding.. Does mean that I need SYNCHRO mode during welding and after welding I need to turn with table like always... (ASYNCHRO)... But problem I have in SYNCHRO because when I do first weld in firs position of table and then I turn with table to second position in ASYNCHRO mode and I do next weld (but with same points) the table go back to first position with first weld´s points... It´s normal for SYNCHRO mode I think, but is possible to do something?


    From this I´m crazy and also that I must to have $SYNC_AXIS=0 because only so I can in program overwrite value to $ASYNC_AXIS=1....

  • Welding on the table while the table is in motion will require Sync mode. There are a few ways I can think of to program this using advanced KRL, but none of them are really compatible with TouchUp programming. Your safest approach might be to simply keep the axis in Sync mode and create a different program for each position on the table.

  • Yes I know but this I don¨t want it because it will be very long program and I can have from 7 to 14 position of table... I found well way how to do it but right now I solve other problem! Right now I have permanently only synchro external axis because when I have permanently ASYNCHRo mode I can´t change variable $AYNC_AXIS. In one task I change it to asynchro mode with $ASYNC_AXIS=1 because almost all programs in robot need asynchro mode..
    But when I have asynchro mode with variable $ASYNC_AXIS=1 and I go in program all is fine to time when I want sell line by button sell line from consol of robot.. It this time I lost ASYNCHRO mode and robot is BACK in SYNCHRO mode! And this is absolutelly horrible because I need always mode what I set in my task and not that robot will set it alone without me!!!!


    Do you know what I can do with this?


    My program in synchro mode with only several points fo more position of table in ASYNCHRO mode is fine I think but right now I solve this! :wallbash:

  • first i want to know that difference between async and sync.


    and if i have 3 external axis then how will use this variable of $async_axis


    and in 1st code B000001 and B111110 and in 2nd code B000001 and B000000 have same mean but B........ are different. please explain this.


    thank you

    SHUBHAM JAIN

    Edited once, last by Shubham Jain ().

  • I'm not understanding this very well.


    $EX_AX_ASYNC is used to "lock" an axis permanently into Async mode -- $ASYNC_AXIS will no longer have an effect on any axis whose bit is set in $EX_AX_ASYNC.


    Your application *sounds* like you want to use $EX_AX_ASYNC and keep the axis permanently Async, but I'm not sure I understand your explanation.

    $EX_AX_ASYNC can lock any axis ?


    and if this variable can lock then what value should be there for lock or unlock the axis like $EX_AX_ASYNC = ?:question_mark::question_mark::question_mark:


    and i lock A1 by this variable, then, will A1 move or not.:frowning_face:

    SHUBHAM JAIN

  • robot has several axes. when issued command all axes move and stop together (ok, CP motions may have other constraints too). this means those axes are synchronous.


    robot system can also have external axes. they can move together with robot axes synchronous) or separate (asynchronous). if you want some axis to move independently from robot, it need to be asynchronous.


    which axis is set asynchronous is determined by bit pattern of the value assigned.

    this integer value can be entered in different formats - decimal, hexadecimal or binary. format does not matter, but can make things more readable in some cases.


    following three assignments are identical:

    Code
    DECL IN n ; n declared as integer
    
    n=13             ; assigned value 13 using decimal
    n='H000D'        ; assigned value 13 using hexadecimal
    n='B001101'      ; assigned value 13 using binary

    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

  • and one thing is that this variable use only for external axis, for async or sync with A1 - A6.

    SHUBHAM JAIN

  • $ASYNC_AXIS does not affect how points are recorded, only how they are executed. When the MOTION or TOUCHUP buttons are used, the point is recorded for all axes, with no regard to whether an axis is Sync or Async.


    When it needed to move the external axis E1 synchronously with the A1-A6, this must be preceeded by $ASYNC_AXIS=0 or $ASYNC_AXIS='B000000'. When it is needed to move E1 separately from A1-A6, this must be preceeded by $ASYNC_AXIS=1 or $ASYNC_AXIS='B000001'.

    if suppose i need sync E5 with A1-A6, then how will write in INT $ASYNC_AXIS = ? :question_mark::question_mark:

    SHUBHAM JAIN

Advertising from our partners