Jump to content
OMRON Forums

TerryTham

Members
  • Posts

    5
  • Joined

  • Last visited

Posts posted by TerryTham

  1. I did tried the pcommserver "Download()" function, it seem alright. I could download the program into the card, and it created .56k, log, map, and TBL file. i guess its good to go. I'll be waiting for the mechanical structure to finish assemble to do the testing then.

     

    Thank You guys for the help.

  2. No, 1 or 3 dwells do not matter. It is just a programming efficiency matter.

     

    Again, even if the in position bit is defined, you do not need to check for in position after moves in motion programs. PMAC does that automatically for you. Just specify the bandwidth, Ixx28, which you would consider your motor(s) in position.

     

    So this is a typo ABS®? why is the R encircled? this is not a correct syntax for PMAC.

     

    Sure, the user can change pre-configured parameters and run a program (recipe). I think if you pre-compute the expressions in your conditionals, you would be fine.

     

    Also, there is no need to check if all moves are completed in the beginning of the program. PMAC will not allow running a program if any axis in the coordinate system is in the middle of a commanded move or not in closed loop.

     

    Have you gotten your program to download, and run? I stripped some stuff out of your program, but this should download and execute if all the input values are set.

     

    End Gat
    Del Gat
    Close
    
    // --------------------------------------------------- //
    &1
    #define CURRENT_TRAJECTORY 	Q99		; 
    #define MoveType						Q100	; =1 linear, =2 CCW circle
    #define MoveTa							Q102	; msec
    #define MoveTs							Q103	; msec
    #define MoveF								Q104	; 
    
    Q99..104 = 0
    
    OPEN PROG 100 CLEAR
    FRAX(X,Y)
    DWELL 0
    
    IF(Q100 = 1)		// Linear
    ABS
    LINEAR
    TA(MoveTa)
    TS(MoveTs) 
    F (MoveF)
    X(Q200 + CURRENT_TRAJECTORY)	Y(Q300 + CURRENT_TRAJECTORY)
    DWELL 0
    ENDIF
    
    IF(Q100 = 2)		// CCW Circle
    TA(MoveTa)
    TS(MoveTs)
    F (MoveF)
    NORMAL K-1
    ABS
    CIRCLE2
    X(Q200 + CURRENT_TRAJECTORY) Y(Q300 + CURRENT_TRAJECTORY) I(Q500 + CURRENT_TRAJECTORY) J(Q600 + CURRENT_TRAJECTORY)
    DWELL 0
    ENDIF
    CLOSE
    // --------------------------------------------------- //
    

     

    1. The ABS ( R ), please refer to the attachment. Its running fine in the previous machine for the circular interpolation.

    2. I am still waiting for the new motion card to arrive to do the actual testing where i do not want to interrupted the previous machine since its running fluids dispensing application correctly.

    3. I've change a method to do the continuous moves of trajectories.

    my software will create and generate a text file base on all the positions and moves type (linear or circular), then save as pmc extension (refer attachment), and download to motion card using pcommserver function:

    Download(long dwDevice, BSTR filePath, VARIANT_BOOL bMacro, BOOL bMap, BOOL bLog, BOOL bDnld, BOOL *pbSuccess); and execute.

    Let me try out and let you guys know the outcome.

     

    Thank You.

    CircleInterpolation.jpg.a4a8cf87e32278eff6c4cf1cb1c6ef66.jpg

    PMACProgram100.pmc

  3. Have you had any Turbo PMAC training?

     

    Pre-compute all the expressions inside parentheses and hold them in separate parameters.

     

    Why do you believe that you need 3 x DWELL 0?

     

    You do not need to insert while loops to wait for the motion to stop. PMAC does that automatically. The axis is considered in position based on the in-position bandwidth specified by Ixx28.

     

    And what is ABS® ???

     

    Closing the while loop is done either with a Wait or an End while, not both.

     

    1. I did not conducted any Turbo PMAC training before. All are base on the reference of the software manual and self study.

    2. 1 or 3 DWELL0 does any different?

    3. The in position bit was defined in .h file.

    4. ABS( R ), that i was defined the I and J value as absolute value.

    5. Got that.

    6. In my application, user are not be able to change the pmac code every time they changes the laser cutting pattern. It has to be receive the different position buffers from the machine software (FASAMachine).

  4. In the attachment, there's a brief description of the current machine system.

     

    Current system is moves point to point where the motion will accelerate, then decelerate, then stop, then moves second point, and so on.

    Due to the application of laser cutting, it required to moves without stopping point to point.

    Furthermore, under my program, the user needs to export random drawing to do cutting, which will be a random set of trajectories (linear or circles or arcs).

     

    Hence, I would like to use the method like following

     

    ;------------------------------------------------

    ;Move Trajectory

    ;Q100-Q199 for Move type (Linear/Circle/Arc/etc)

    ;Q200-Q299 for Position X

    ;Q300-Q399 for Position Y

    ;Q500-Q599 for I

    ;Q600-Q699 for J

     

    OPEN PROG 100 CLEAR

    Frax(X,Y)

    IF(XYAxis_WB=0) ;make sure all moves complete before execute

    CURRENT_TRAJECTORY=0

    WHILE(CURRENT_TRAJECTORY < NO_OF_TRAJECTORY) ;loop for all the trajectory

     

    IF(Q100+CURRENT_TRAJECTORY=1) ;if profile is straigh line

    ABS

    TA(XYAxis_TA)

    TS(XYAxis_TS)

    F(XYAxis_F)

    X(Q200+CURRENT_TRAJECTORY)Y(Q300+CURRENT_TRAJECTORY)

    DWELL0

    DWELL0

    DWELL0

    WHILE(XAxis_InPosition = 0 AND YAxis_InPosition = 0) ;wait motion done

    WAIT

    ENDWHILE

    ENDIF

    IF(Q100+CURRENT_TRAJECTORY=2) ;if profile is CCW circle

    TA(XYAxis_TA)

    TS(XYAxis_TS)

    F(XYAxis_F)

    NORMAL K-1

    ABS

    ABS®

    CIRCLE2

    X(Q200+CURRENT_TRAJECTORY) Y(Q300+CURRENT_TRAJECTORY) I(Q500+CURRENT_TRAJECTORY) J(Q600+CURRENT_TRAJECTORY)

    DWELL0

    DWELL0

    DWELL0

    WHILE(XAxis_InPosition = 0 AND YAxis_InPosition = 0) ;wait motion done

    WAIT

    ENDWHILE

    ENDIF

    CURRENT_TRAJECTORY=CURRENT_TRAJECTORY+1

    ENDWHILE

    ENDIF[/code]

    DWELL0

    DWELL0

    DWELL0

    XYAxis_MV_Trajectory=0

    CLOSE

    ;---------------------------------------------------

     

    the highlighted lines are the part couldn't get it through. I need to loop reading the Q variables which i pre-set all the positions and parameters before execute this program.

    IMG_2462.thumb.JPG.ee501a1ca98193255a420fbab7b21479.JPG

  5. Hello there

     

    In my software, it extracts dxf files into set of trajectories data for the entire profile, which consists of position X, position Y, Speed, IJK values (for circular trajectories), Move Type(linear, circular, arc or spline).

     

    Currently i am command the XY Axis moves interpolation point by point where the pmac code was very simple of moves interpolation, decelerate, and stop, then for the next point of the trajectory to complete an entire profile.

    However this gives unsatisfied output of quality which required to moves entire profile without decelerates and stops.

     

    I'm considering using the Q variables, but then what if the number of position X&Y and other parameters exceed the number allowance of variables? and do you have a sample of pmac code or similar case to study or reference?

     

    How do i throw in all the trajectories data (position, type of moves, speed, and ijk value) as buffer and it runs the entire profile in the pmac program but not command by command from my software?

     

    Thank You

    Best Regards

    Terry

×
×
  • Create New...