Jump to content
OMRON Forums

teremock

Members
  • Posts

    13
  • Joined

  • Last visited

Posts posted by teremock

  1. I think it's easy to do over SSH connect.

    You can try something like the following samples

    scp username@b:/path/to/file /path/to/destination
    scp -P 7121 /users/admin/downloads/* root@155.138.150.12:/home/
  2. Hello

    Is there way to include Leadshine ELP-ECxxx (EtherCAT) servos into PowerPMAC project?

    It seems like IDE wants ESI xml file after detect EhterCAT slaves.

    Can anybody provide such ESI file?

    or some other advise for resolve that issue?

    Roman

  3. Yes, you are right.

    I find sample project with following code:

    OPEN PROG 100
    DO
    {
        INC LINEAR TA 1 TS 0 f(JogZSpeed) Z(IncDistZ)    
    }
    WHILE(1)
    CLOSE

     

    and PLC script:

    ....

            IF(JogZPlusIn)
            {            
                IncDistZ = IncDist            
                START 2:100
                WHILE(JogZPlusIn){}
                ABORT 2
                WHILE(Coord[2].ProgActive || Coord[2].DesVelZero == 0){}
                pmatch
            }
        
            IF(JogZMinusIn)
            {
                IncDistZ =-IncDist
                START 2:100
                WHILE(JogZMinusIn){}
                ABORT 2
                WHILE(Coord[2].ProgActive || Coord[2].DesVelZero == 0){}
                pmatch
            }    

    ......

     

    Thank you.

  4. Hello

    I implement Forward and Inverse kinematic for axis Z.
    Axis Z contains several motors.

    All works good with CS commands like

    cpx linear Z12.34 F10;

    But Now I need to JOG Z axis. Something like

    &Zj+

    Is that possible or is there a some advice?

    Roman

     

  5. Hello Alex

     

    It seems I resolved the issue.

    I moved "error" code into *.plc script.

    And same code works perfect in PLC script.

    PLC code reads and copies the necessary axes ratios into GLOBAL arrays.

    After that, I can access to that GLOBAL arrays in kinematic scripts *.kin

     

    It is strange that compiler logic is different for *.plc and *.kin files.

     

    Thank you.

     

    Roman

  6. Eric, can you explain why following code in kinematic script:

     

    open forward (1)      // Put Coordinate System number inside "(cs)"
       LOCAL mot;
       local ax;
       LOCAL ratio;
       ax = 1;
       mot = 1;
       ratio = Motor[mot].CoordSf[ax];
    close
    

     

    ... raises following compiler error:

     

    ...
    Total Project download time = 3.344 seconds.
    Total Project build and download time = 3.344 seconds.
    There were errors during the download process and the download process has stopped.
    The following errors were found:
       1 Error(s)
    
    C:\job\.....\PMAC Script Language\Kinematic Routines\Forward1.kin(18,1) : Error : ( error #31)  invalid data :   L322 = Motor[L320].CoordSf[L321]
    

     

    What is wrong? How to fix it?

     

    Roman

  7. Alex, thank you for detailed reply.

     

    Let me a bit explain:

    1) I show Z kinematic code as sample only. In real case it will be 2 or 3DOF arm. Therefore, I need to use the *.kin scripts.

    2) Yes, I know about a bit mask for used axes. In real code, I use:

    ...
    KinAxisUsed = KinEnaAxisZ + KinEnaAxisX + KinEnaAxisY;
    ...
    

     

    3) Hmmm ... I will think and check ...

     

    4) I try to implement forward1.kin script from PMAC Script Language\Kinematic Routines\Forward1.kin

    Please note that it is the short sample only. In real code, the MOT and AX variables are indexes in loops.

    I show this sample only to show compiler error for you.

     

    open forward (1)      // Put Coordinate System number inside "(cs)"
    LOCAL mot;
    local ax;
    LOCAL ratio;
    ax = 1;
    mot = 1;
    ratio = Motor[mot].CoordSf[ax];
    close
    

     

    I click Download All Programs and see the following error:

     

    ...
    Total Project download time = 3.344 seconds.
    Total Project build and download time = 3.344 seconds.
    There were errors during the download process and the download process has stopped.
    The following errors were found:
       1 Error(s)
    
    C:\job\.....\PMAC Script Language\Kinematic Routines\Forward1.kin(18,1) : Error : ( error #31)  invalid data :   L322 = Motor[L320].CoordSf[L321]
    
    

     

    Maybe I need to somehow change the local declaration of AX variable?

     

    version of PPMAC v4.5.1.3

     

    Roman

  8. Hello Alex

    Maybe "on fly" is not the correct word.

    but our equipment allows to have different configurations of manipulator axes. Some time it is XY only, some time customer adds rotation and angle axes XYZAC.

    All servo drivers are EtherCAT. If they are detached physically, Ether CAT shows error.

    Our desktop app starts and initializes ck3e with necessary actual axes to motor params.

    Also, we need to set necessary ratios that can differ in differ configuration of hardware.

    Therefore, when app starts, it sends:

    &1
    #1->123.33X
    #2->33.21Y
    ...
    

    ... and so on for other manipulator config and start

     

    (to change that parameters every time over ck3e firmaware from PowerPMAC IDE is not suitable for customer)

     

    And if app sets ratios over that commands, kinematic routines code needs to know current values of ratios for correct mapping axes to motors at runtime.

     

    So, I understand that access to CoordSf[...] values over variable index is not possible?

     

    Roman

  9. Alex, thank you for quick reply.

     

    I understand, and You confirm, that I need to map all used in CS motors to axes and vice verse.

    But problem that in our solution CS configuration can be changed at any time over SSH commands.

     

    And I need to detect actual CS configuration in inverse() and forward() code at runtime.

     

    I try following code:

     

    LOCAL mot;
    local ax;
    LOCAL ratio;
    mot = 1;
    while(mot <= Sys.MaxMotors)
    {
    	ax = 0;
    	do
    	{
    		ratio = Motor[mot].CoordSf[ax];
    		ax++;
    	}while(ax <33 && ratio != 0);
    
    	if(ratio != 0)
    	{
    		KinPosAxis(ax) = KinPosMotor(mot) / ratio;
    	}
    	mot++;
    }
    
    

     

    But the compiler shows the following error for line:

    ratio = Motor[mot].CoordSf[ax];
    ...\Forward1.kin(23,1) : Error : ( error #31)  invalid data :   L322 = Motor[L320].CoordSf[L321]
    

     

    It seems like compiler does not like AX variable and it wants a constant value in index of CoordSf[...]

    How can I use variable in index of CoordSf[...] ?

     

    Sorry if this issue too easy - I'm newbie in DT ck3e.

    Thank you

     

    Roman

  10. Hello

     

    I define following CS1:

    undefine all

    &1

    #1->x

    #2->y

    #3->i

    #4->i

     

    Then I declare necessary kinematic for motors #3 and #4 only:

    open forward (1)      // Put Coordinate System number inside "(cs)"
      if (KinVelEna > 0) callsub 100;	// Double pass for velocity or error calcs
      KinAxisUsed = KinEnaAxisZ;
    N100: 
      KinPosAxisZ = (KinPosMotor3 + KinPosMotor4) / 2000 * 360;
    close
    
    open inverse (1)      // Put Coordinate System number inside "(cs)"
    KinPosMotor3 = KinPosAxisZ * 2000;	
    KinPosMotor4 = (KinPosAxisZ - 100) * 2000;
    if (KinVelEna > 0) {			// True for unsegmented PVT only
    	KinVelMotor3 = KinVelAxisZ * 2000;
    	KinVelMotor4 = KinVelAxisZ * 2000;
    }
    close
    
    

     

    I expect that DT will move X,Y as default built-in kinematic and move Z by my declared logic.

     

    But DT ck3e shows Z axis only:

    &1p

    Z0

     

    Axes X and Y are invisible.

    Is possible to use default kinematic together with custom kinematic in one CS?

     

    If I add logic for X and Y into inverse() and forward() than all works fine

    &1p

    X0 Y0 Z0

     

    Roman

×
×
  • Create New...