Jump to content
OMRON Forums

deltaa

Members
  • Posts

    12
  • Joined

  • Last visited

Posts posted by deltaa

  1. I used the latest version of the spreadsheet(v2.8) to generate the data.

    I changed Ixx71 and Ixx91 to match with the rest of the motor settings (which derived from DLS). Ixx69 was generated from the spreadsheet.

     

    I attached the screenshot of the spreadsheet and the configuration file for your reference. Motor is setup on axis #1.

     

    // Geo Brick LV Setup Assistant 2.8 Auto-Generated Parameters
    CLOSE
    DEL GAT
    
    // Clock Setup Parameters
    I7100=1473        // 20kHz PWM frequency
    I7101=3          // 10kHz Phase frequency
    I7102=1          // 5kHz Servo Clock
    I6800=1473
    I6801=3
    I6802=1
    I7000=1473
    I7001=3
    I7002=1
    I10=1677653          // 0.19999 msec Servo Period
    I7003=1746 I7004=4 
    I7103=1746 I7104=4
    
    #define timer32     I6612
    #define msec32     *8388608/I10WHILE(I6612>0)ENDWHILE
    
    // initialization PLC
    OPEN PLC 1 CLEAR
    DISABLE PLC 2..31
    timer32 = 50 msec32
    CMD"WX:$78014,$F8CDFE"          //Motor #1 CLRF
    timer32 = 50 msec32
    CMD"WX:$78014,$F84DFE"          // Motor #1 Type
    timer32 = 50 msec32
    CMD"WX:$78014,$F00DFE"          // Motor #1 Protection
    timer32 = 50 msec32
    
    CMD"WX:$78014,$F9CDFE"          //Motor #2 CLRF
    timer32 = 50 msec32
    CMD"WX:$78014,$F94DFE"          // Motor #2 Type
    timer32 = 50 msec32
    CMD"WX:$78014,$F10DFE"          // Motor #2 Protection
    timer32 = 50 msec32
    
    CMD"WX:$78014,$FACDFE"          //Motor #3 CLRF
    timer32 = 50 msec32
    CMD"WX:$78014,$FA4DFE"          // Motor #3 Type
    timer32 = 50 msec32
    CMD"WX:$78014,$F20DFE"          // Motor #3 Protection
    timer32 = 50 msec32
    
    CMD"WX:$78014,$FBCDFE"          //Motor #4 CLRF
    timer32 = 50 msec32
    CMD"WX:$78014,$FB4DFE"          // Motor #4 Type
    timer32 = 50 msec32
    CMD"WX:$78014,$F30DFE"          // Motor #4 Protection
    timer32 = 50 msec32
    
    CMD"WX:$78114,$F8CDFE"          //Motor #5 CLRF
    timer32 = 50 msec32
    CMD"WX:$78114,$F84DFE"          // Motor #5 Type
    timer32 = 50 msec32
    CMD"WX:$78114,$F00DFE"          // Motor #5 Protection
    timer32 = 50 msec32
    
    CMD"WX:$78114,$F9CDFE"          //Motor #6 CLRF
    timer32 = 50 msec32
    CMD"WX:$78114,$F94DFE"          // Motor #6 Type
    timer32 = 50 msec32
    CMD"WX:$78114,$F10DFE"          // Motor #6 Protection
    timer32 = 50 msec32
    
    CMD"WX:$78114,$FACDFE"          //Motor #7 CLRF
    timer32 = 50 msec32
    CMD"WX:$78114,$FA4DFE"          // Motor #7 Type
    timer32 = 50 msec32
    CMD"WX:$78114,$F20DFE"          // Motor #7 Protection
    timer32 = 50 msec32
    
    CMD"WX:$78114,$FBCDFE"          //Motor #8 CLRF
    timer32 = 50 msec32
    CMD"WX:$78114,$FB4DFE"          // Motor #8 Type
    timer32 = 50 msec32
    CMD"WX:$78114,$F30DFE"          // Motor #8 Protection
    timer32 = 50 msec32
    DISABLE PLC 1
    CLOSE
    I5=2
    
    // Encoder Conversion Table Setup
    //WY:$3501,$78000,$78008,$78010,$78018,$78100,$78108,$78110,$78118
    //WY:$3509,$6800BF,$018018,$EC0009,$68013F,$018018,$EC000C,$6801BF,$018018,$EC000F,$68023F,$018018,$EC0012,$6802BF,$018018,$EC0015,$68033F,$018018,$EC0018,$6803BF,$018018,$EC001B,$68043F,$018018,$EC001E
    WY:$3501,$6800BF,$018018,$EC0001
    WY:$3504,$68013F,$018018,$EC0004
    WY:$3507,$6801BF,$018018,$EC0007
    WY:$350A,$68023F,$018018,$EC000A
    WY:$350D,$6802BF,$018018,$EC000D
    WY:$3510,$68033F,$018018,$EC0010
    WY:$3513,$6803BF,$018018,$EC0013
    WY:$3516,$68043F,$018018,$EC0016
    
    // Activation Control
    I100=1
    I200=1
    I300=1
    I400=1
    I500=1
    I600=1
    I700=1
    I800=1
    
    // Commutation Enable
    I101=1
    I201=1
    I301=1
    I401=1
    I501=1
    I601=1
    I701=1
    I801=1
    
    // Output Address
    I102=$078002
    I202=$07800A
    I302=$078012
    I402=$07801A
    I502=$078102
    I602=$07810A
    I702=$078112
    I802=$07811A
    
    // Position feedback
    I103=$3503
    I203=$3506
    I303=$3509
    I403=$350C
    I503=$350F
    I603=$3512
    I703=$3515
    I803=$3518
    
    // Velocity feedback
    I104=$3503
    I204=$3506
    I304=$3509
    I404=$350C
    I504=$350F
    I604=$3512
    I704=$3515
    I804=$3518
    
    // Current Loop Settings
    I182=$078006
    I282=$07800E
    I382=$078016
    I482=$07801E
    I582=$078106
    I682=$07810E
    I782=$078116
    I882=$07811E
    
    // ADC Mask
    I184,8,100=$FFFC00
    
    // Phase offset
    I172=512
    I272=512
    I372=512
    I472=512
    I572=512
    I672=512
    I772=512
    I872=512
    
    // PWM Scale Factor
    I166=1399
    I266=1399
    I366=1399
    I466=1399
    I566=1399
    I666=1399
    I766=1399
    I866=1399
    
    // Current Loop Gains
    I161=0.0685419728429138 I162=0 I176=0.907231124374112
    I261=0.0685419728429138 I262=0 I276=0.907231124374112
    I361=0.0685419728429138 I362=0 I376=0.907231124374112
    I461=0.0685419728429138 I462=0 I476=0.907231124374112
    I561=0.0685419728429138 I562=0 I576=0.907231124374112
    I661=0.0685419728429138 I662=0 I676=0.907231124374112
    I761=0.0685419728429138 I762=0 I776=0.907231124374112
    I861=0.0685419728429138 I862=0 I876=0.907231124374112
    
    // I2T Protection Settings
    I157=2489 I158=151 I169=4
    I257=4149 I258=2486 I269=4
    I357=5335 I358=2889 I369=4
    I457=5927 I458=2945 I469=4
    I557=5927 I558=2945 I569=4
    I657=5927 I658=2945 I669=4
    I757=5927 I758=2945 I769=4
    I857=5927 I858=2945 I869=4
    
    // Flag Settings
    I125=$078000
    I225=$078008
    I325=$078010
    I425=$078018
    I525=$078100
    I625=$078108
    I725=$078110
    I825=$078118
    
    I124=$820401
    I224=$820401
    I324=$820401
    I424=$820401
    I524=$820401
    I624=$820401
    I724=$820401
    I824=$820401
    
    // Commutation Parameters
    // On-going Phase Position
    I183=$3503
    I283=$3506
    I383=$3509
    I483=$350C
    I583=$350F
    I683=$3512
    I783=$3515
    I883=$3518
    
    // Number of pole pairs per revolution
    I170=1
    I270=1
    I370=1
    I470=1
    I570=1
    I670=1
    I770=1
    I870=1
    
    // Number of encoder counts per revolution
    I171=4096
    I271=4096
    I371=4096
    I471=4096
    I571=4096
    I671=4096
    I771=4096
    I871=4096
    
    // Motor Phasing Parameters
    // Phase Search method
    I180=0
    I280=0
    I380=0
    I480=0
    I580=0
    I680=0
    I780=0
    I880=0
    
    // Phase Search Magnitude
    I173=0
    I273=0
    I373=0
    I473=0
    I573=0
    I673=0
    I773=0
    I873=0
    
    // Phase Search Time
    I174=0
    I274=0
    I374=0
    I474=0
    I574=0
    I674=0
    I774=0
    I874=0
    
    // Absolute Phase Position Source Address
    I181=$3503
    I281=$3506
    I381=$3509
    I481=$350C
    I581=$350F
    I681=$3512
    I781=$3515
    I881=$3518
    
    // Absolute Phase Position Format
    I191=$500000
    I291=$500000
    I391=$500000
    I491=$500000
    I591=$500000
    I691=$500000
    I791=$500000
    I891=$500000
    
    // Magnetization Current
    I177=829
    I277=1383
    I377=1778
    I477=1975
    I577=1975
    I677=1975
    I777=1975
    I877=1975
    
    // Quadrature current loop calculation only (brushed motors)
    I196=0
    I296=0
    I396=0
    I496=0
    I596=0
    I696=0
    I796=0
    I896=0
    
    // PID values for Stepper Motors Only
    I130=1024 I131=0 I132=85 I133=1024 I134=1 I135..139=0
    I230=1024 I231=0 I232=85 I233=1024 I234=1 I235..239=0
    I330=1024 I331=0 I332=85 I333=1024 I334=1 I335..339=0
    I430=1024 I431=0 I432=85 I433=1024 I434=1 I435..439=0
    I530=1024 I531=0 I532=85 I533=1024 I534=1 I535..539=0
    I630=1024 I631=0 I632=85 I633=1024 I634=1 I635..639=0
    I730=1024 I731=0 I732=85 I733=1024 I734=1 I735..739=0
    I830=1024 I831=0 I832=85 I833=1024 I834=1 I835..839=0
    
    // Commutation Delay Compensation for Microstepping
    I156=18/360*2048/(I169*I108*32)
    I256=18/360*2048/(I269*I208*32)
    I356=18/360*2048/(I369*I308*32)
    I456=18/360*2048/(I469*I408*32)
    I556=18/360*2048/(I569*I508*32)
    I656=18/360*2048/(I669*I608*32)
    I756=18/360*2048/(I769*I708*32)
    I856=18/360*2048/(I869*I808*32)
    
    

     

    Thanks.

     

     

     

    It does not look to me like you followed the steps in the manual properly (make sure you look at the latest revision on the website). But also, your settings are not consistent with the spreadsheet either:

     

    - Ixx71 = 4096, this is using the older micro-stepping technique

    - Ixx69 = 4!

    - Ixx91 = 0!

     

    It would be helpful to take a look at all of your I variable settings (global), and not only motor 1's.

    1120157286_ScreenHunter_01Jan_2815_30.jpg.66ab63c6df0496967e126707c7335b14.jpg

  2. I used the latest version of the spreadsheet(v2.8) to generate the data.

    I changed Ixx71 and Ixx91 to match with the rest of the motor settings (which derived from DLS). Ixx69 was generated from the spreadsheet.

     

     

    It does not look to me like you followed the steps in the manual properly (make sure you look at the latest revision on the website). But also, your settings are not consistent with the spreadsheet either:

     

    - Ixx71 = 4096, this is using the older micro-stepping technique

    - Ixx69 = 4!

    - Ixx91 = 0!

     

    It would be helpful to take a look at all of your I variable settings (global), and not only motor 1's.

  3. The motor I used is VEXTA PK264-03B.

    Step Angle

    1.8 °

    Connection Type

    Bipolar (Series)

    Current per Phase (A/phase)

    2.1 [bipolar (Series)]

    Resistance (Ω/phase)

    1.26 [bipolar (Series)]

    Inductance (mH/phase)

    2.4 [bipolar (Series)]

     

    I used the latest Geo Brick LV Setup Assistant to generate the settings(attached). With the setting (I169=4), the motor quickly developed following error and stopped. When I increase I169 to over 100, the motor can move continously (although not very smooth, may need further current loop tunning).

     

    Please use the "Geo Brick LV Setup Assistant" Excel spreadsheet to generate all the proper settings for your Geo Brick LV and your motors.

     

    You can get the "Geo Brick LV Setup Assistant" file from the filedepot: http://forums.deltatau.com/filedepot/download.php?f=Turbo%20PMAC/Tools/Geo%20Brick%20LV/Geo%20Brick%20LV%20Setup%20Assistant%202.8.xls [FILE REMOVED]

    config_testing.txt

  4. Hi,

     

    I need help on how to properly setup Ixx69 on a Geo Brick LV controller to drive a direct micro-stepping motor. If I follow the instruction in pg.158 of the Geo Brick LV user manual, or use Geo Brick LV setup assistant, both give a small value of Ixx69 (under 42), when the value used to drive the motor, following error will be quickly developed. I'm wondering if I missed something here.

     

    Thanks

  5. Setup the test according to the suggestion, ran several tests and checked ADC readback. When motor is running at a lower speed, the performance is acceptable, with the increase of the speed, more vibration introduced and ADC B readback became distorted, any suggestion? Thanks

    Setup: 2048 steps/full step, motor current around 3amp RMS.

     

    I122=100, looks good and feels acceptable

    I122_100.thumb.jpg.e3b962e5c5dfa12d85071ea0003d3a0a.jpg

     

    I122=200, looks ok

    I122_200.thumb.jpg.bbbf9c7d50cb8449a4c91f0b4e0a6d3c.jpg

     

    I122=300, looks and feels bad

    I122_300.thumb.jpg.f1e0aac05212d836a245725324c2ef9f.jpg

     

    I122=300, difference Geo Brick

    I122_300_2nd.thumb.jpg.b77c106c8a5e1a672956458809e4f300.jpg

     

    2 suggestions:

     

    1. Use the Geo Brick LV Setup Assistant Excel spreadsheet available through FileDepot Link (in the menu bar of the forum) in order to get 2048 microsteps per full stepper of the motor.

    2. Reduce the I7004 and I7104 (Pwm Dead-time) to a value of 4. This should reduce your zero-crossing distortion.

  6. Please refer to the attached plot,

    1403265556_ScreenHunter_06Jun_1313_43.thumb.jpg.668bef9062882ccf1254728d124e432e.jpg

     

    zoomed,

    1778281012_ScreenHunter_08Jun_1313_43.thumb.jpg.aca80a8f38a59685a0527ff7a8c30ddc.jpg

     

    Motor is not running smoothly during the movement. ADC readback shows the same pattern as the phase current measurement. The waveform deteriorates as the current setting becomes smaller and smaller.

  7. Geo Brick LV to drive a two phase stepping motor in direct micro-stepping mode with 32 micro steps per full step.

    Current waveform distortion noticed around zero-cross area as shown in the attachment.

    Motor current: 5 A peak to peak

    Frequency: 20 ms/div

     

    Any idea on how to correct the zero-crossing distortion? thanks.

    phase_current_5apeak.jpg.2cccc39362ae1fc277817a1660577382.jpg

  8. The PID gains are

    I430=4096;Motor 4 PID Proportional Gain

    I431=0;Motor 4 PID Derivative Gain

    I432=16384;Motor 4 PID Velocity Feed Forward Gain

    I433=10000;Motor 4 PID Integral Gain

    I434=0;Motor 4 PID Integration Mode

    I435=4096;Motor 4 PID Acceleration Feed Forward Gain

    I436=0;Motor 4 PID Notch Filter Coefficient N1

    I437=0;Motor 4 PID Notch Filter Coefficient N2

    I438=0;Motor 4 PID Notch Filter Coefficient D1

    I439=0;Motor 4 PID Notch Filter Coefficient D2

     

    Do I need to tune the position loop for an external pulse/direction setup?

    By the way, when I jog to specified position using #4j=***, the problem does not happen.

    It only happens when using jog stop command j/ when the motor is moving.

  9. System config,

    ==

    External micro stepping amplifier

    Two phase stepping motor

    Geo Brick LV drive channel 4 output Step/Dir signal

    ==

     

    Parameters used,

    ==

    I403=$3504

    I404=$3504

    I8003=$C78018

    I7040=8

    ==

     

    Use jog command #4j+ or #4j- to start motor, motor runs without problem, then #4j/ to stop jogging, after the motor stops, it's still vibrating. Use scope to check the pulse and direction signal from Geo Brick LV, these two signals still have outputs. Anyone has similar experience? What could be wrong?

     

    Thanks

  10. The mircostepping uses a simulated feedback in the Turbo PMAC's memory and doesn't use any of the DSPGate1 ASIC functionality which position compare is one of them. If you want to do a position compare, the best way is to set up a virtual motor using an internal pulse and direction on one of the available channels on one of your DSPGate1 ASIC(s) and set it as a salve to your microsteped channel and perform all the position capture on the virtual axis.

     

    I hope this helps.

     

    Trying to use motor #1 for direct micro stepping and motor #4 as the virtual motor with internal pulse & direction wrapped back, with the following setup, both motors work fine individually.

     

    ; ECT for motor #1

    I8000=$6800BF

    I8001=$10020

    I8002=$EC0009

    ; ECT for motor #4

    I8003=$C78018

    ;virtual motor #4

    I400=1

    I401=0

    I402=$7801C

    I403=@I8003

    I404=@I8003

    I405=@I8002

    I406=1

    I7040=8

    I7046=3

     

    When trying to move motor #4 along, position compare works no problem. When enable position following on #4 and moving motor #1, position compare does not work. It seems motor #4 does not "follow". What could be wrong?

     

    Thanks

×
×
  • Create New...