It's time to discover whether the components I have purchased are functional. I'm not capable of repairing any problems with an MX80L, and replacement parts are likely to cost more than simply purchasing another stage. Let's hope luck is on our side and get started.
Given that the MX80L is plug and play, this post is really about setting up the Parker VIX IH drives. As purchased, the VIX IH drives came with a full complement of cables. This is kind of nice since I can cut a few of them up for testing. I put them aside and got the drives ready.
The Parker VIX IH is a pretty high end servo drive and must be configured over serial communication using software they provide. The first step is to wire up a cable so that it can communicate with a computer. They provide a handy wiring guide to make it easy.
A touch of solder and heatshrink, and we have our cable.
Next we connect it to a computer and hope it communicates.
All three servo drives respond to a STATUS request and otherwise appear functional.
Since everything is looking good so far, its time to start the configuration. You are given a basic GUI interface to select the motor type, gains and other miscellaneous choices. As the MX80L is made by Parker you can simply select it from the list and click through.
At the end of the process you are prompted to upload the configuration to the drive.
If you aren't paying attention it is very easy to miss, but there is actually a huge twist here - the configuration was not directly uploaded to the drive! Instead, a 80 lines of code were generated, uploaded to the drive, and executed. The generated program configures the drive, sets up a fault handling event, and then loops in a "move" subroutine that runs the motor backwards and forwards.
The difference may seem insignificant, but this tells us something fairly critical: Doing anything with the VIX requires writing programs of reasonable complexity. In fact there is no configuration option for step/dir input - we are going to have to program that ourselves! The majority of the 250 page manual describes the "EASI" programming language, complete with subroutines, loops, conditional statements, and much more. The drive itself has a selection of input and output pins, and the whole experience feels a lot like programming the 1990s equivalent of an Arduino.
This unexpected in a servo drive and would probably scare most non-programmers away. It does, however, provide some extremely powerful options if you are willing to take advantage of them.
After configuring the drive I can finally connect the servo. This is a breeze since the connectors are compatible.
Finally we type 1GOTO(START) into the terminal to run our program and actuate the stage. I am powering everything using my benchtop supply which only goes to 30V. The components are designed to be run on 80V so this will somewhat limit performance.
The stage works perfectly, although when limited to 30mm/s its not that impressive to look at. You can monitor the maximum error of the stage and even when applying reasonable force to the table it never deviates more than 1 micron from the set point.
I repeated the same process with the second MX80L stage and the remaining two VIX IH drives to confirm that everything works. The second MX80L has a broken home switch but is otherwise in good shape. The lack of a home switch is not a big deal as it is superseded by the more accurate encoder Z channel.
This was fun, but everything pretty much worked as expected. Getting the Aerotech to move will be a much greater challenge and the topic of my next post.
19 comments:
What you did it look great i am wondering if you can help me with my project i plan to make a dlp 3d printer and i already bring a parker mx80l with a vix250ih if you can make for me the programing for this project it will be great (i know it is not easy and i know it will cost and i am ready to pay for this if you want) my email is (mchaar1974@gmail.com )
Thank you.
Hi Marwan, running a complete DLP printer (including slicing, controlling the projector/laser, and coordinating several axes of motion) is beyond the capabilities of a VIX250-IH drive.
If you have a separate controller that can command servos using step/direction outputs then the code that has been posted to my blog (or even the built-in configuration wizard) should be sufficient.
Hi ryan
My dlp 3d printer have only one z axis without tiliting system so i dont need from vix 250 ih only to controle the z axis (parker mx 80l) . But untill now i can not configure the vix 250 on my labtop i try every thing ( widows xp and i reset the vix 250 ) i can not configure it .
Any idea ?
Thank you
Do you know how to give an analog signal from a function generator to Vix-IH? As is written in the manual, it can take an analog signal +/-10V.
I would be cautious of doing this because the analog input has limited resolution and shielding (compared to the resolution of the linear stage). If you attempt to control position via the analog input, the resulting motion may be extremely jerky.
The FRATE and FOLLOW commands can deal with analog input, and you could also just read the analog signal in a loop and output suitable motion commands.
I would only recommend using these features for testing, but you may be able to email Parker for a more precise answer.
I am trying to run an MX80L with VIX 250 IH driver.
The stage moves, but it is too slow even though I increased the velocity.
I guess it is because of low PID gain.
Do you have PID gain values I can use for initial setting?
If you can capture and share the image of gain setting in Easi-V software, it couldn't be better.
There's no load applied to the stage.
Thanks,
The configuration wizard will program suitable gains for your stage. If the stage feels rigid when on (difficult to push around) then the gains are fine.
If your stages are moving slowly it is more likely that you are being limited by encoder resolution. The ebay surplus stages come with a Renishaw interpolator which limits their speed to 30mm/s.
You can see more details here: http://www.everythingbends.com/2015/03/encoder-interpolation.html
I changed the velocity 10 (1PROFILE1(10,10,1300000,1)) to 100 (1PROFILE1(100,100,1300000,1)), but the motor moved at the same speed. Could you check my code below? I don't know what's wrong with that. Thanks,
;****************************************************************
; Example setup program for ViX-IH drive
; Generated by Easi-V
;****************************************************************
; Notes:
; 1) Prefix ALL commands with an axis address number
; 2) Spaces are not allowed in any command e.g. 2GOSUB (FRED)
; is a syntax error
; 3) A semi-colon (;) denotes the start of a comment
; 4) Comments are not stored in the drive
; 5) CLEAR all routines before re-defining them
; 6) DECLARE user-defined labels before use
; 7) Define a PROFILE before USEing it
;****************************************************************
1K ;Kill any program that is running
1CLEAR(ALL) ;Erase all routines, etc
1START: ;Define power-up START routine
1DECLARE(MOVE) ;Declare routine 'MOVE'
1DECLARE(INIT) ;Declare routine 'INIT'
1O(000) ;Outputs off
;Move profile 1
1PROFILE1(10,10,1300000,1)
1USE(1) ;Use profile 1
1GH ;Home to datum
1LOOP(MOVE,10) ;Call 'MOVE' routine 10 times
1END ;End of routine
1FAULT: ;Define routine 'FAULT'
1"FAULT" ;Error message
1END ;End of routine
1INIT: ;Define INIT routine
1OFF ;Disable motor
1W(AO,0) ;Analogue offset
1W(AB,0) ;Deadband
1W(AM,0) ;Analogue output
1W(EX,3) ;Communications settings
1W(EQ,0) ;Echo queueing
1W(BR,9600) ;BAUD rate
1W(CL,100) ;Current clamp
1W(CQ,1) ;Command queueing
1W(IC,7967) ;I/O configuration
1W(EI,2) ;Following encoder inputs
1W(EO,2) ;Simulated encoder outputs
1LIMITS(0,1,0,1000.0) ;Travel limits
;Homing setup
1HOME1(-,0,+1.00,100.0,3)
1W(EW,2500) ;Position error window
1W(IT,100) ;Settling time
;PIVF tuning
1GAINS(5.00,10.00,2.00,1.00,0)
1W(IM,1) ;Integral action in window
1W(IW,100000) ;Integral window
1W(ES,1) ;Drive enable sense (can over-ride input)
;Motor configuration
1MOTOR(49420,1.6,1300000,138,80,4.75,1.8,4.5)
1W(PC,300) ;Peak current
1W(TL,65536) ;Tracking limit
1END ;End of routine
Page 164 of the VIX IH manual shows: aPROFILE(AA,AD,D,V) - so velocity is the fourth number, not the first two (which define accel/decel). Try 1PROFILE1(20,20,1300000,5), which should run 5 times as fast as your current profile.
Also note that 1MOTOR(49420,1.6,1300000,138,80,4.75,1.8,4.5) indicates that you have the 10nm encoder option so the stage will be limited to 30mm/s unless you perform the modification I linked in my previous reply.
Thank you for your comments.
For our current experiment setup, feedrate 10mm/s is enough.
I tried 1PROFILE1(20,20,1300000,5), but I got an error massage whiling downloading the file to the driver. It says...
*********************************************
A driver has reported a *E error.
The problem is at or before line 24.
*********************************************
Here's something weird.
1PROFILE1(20,20,1300000,1) and 1PROFILE1(20,20,1300000,2) are working, but it is very slow.
I got the error message when I use 1PROFILE1(20,20,1300000,5). I found error when velocity is more than 3.
Do you have any idea?
Open the "Status Report" window in the software and press read, it will tell you the exact error. It is probably one of two errors.
If it reports a tracking limit error, the programmed move is too fast and the servo is falling behind. Lower the accel/decel of the PROFILE, increase the GAINS, or increase the Tracking Limit (TL). You can probably double the FF, P and D gains without issue, but be ready to cut power if the stage starts to shake.
If it reports an over-speed error you might want to go back into the config wizard and make sure its programming a 30mm/s maximum velocity. I've uploaded relevant screenshots here: http://imgur.com/a/L35ru
It could also be something else entirely, such as an undervoltage error if your power supply can't support the load spikes. If your still having trouble let me know what error is being produced.
Also you shouldn't need to upload to the drive that frequently. You can enter 1ON, 1PROFILE1(...), 1USE(1), and 1G into the terminal which is faster and will let you have more control over what the drive is doing.
1STATUS is also a pretty useful command in the terminal.
Hello Ryan, thank you for posting this about MX80L
I'm using it with vix to just firstly to move it. I'm trying to use it with a labview interface and a RS232 cable. do you think you can help me with that ? so far it is not working. I could send my .vi if you can give me an email.
Thanks so much
Hi Saba, did you try sending a '0' bit (0x30) and seeing if it is echoed back? I assume you have RX and TX wires in 'crossed over' configuration (confirm this by shorting them and getting echo back). When it is connecting to the Vix, EasiV software sends a '0' bit followed by '}\r\n' (0x7D, 0x0D, 0x0A
0 when it's looking for communication. This gets echoed back by the Vix. You can start there since it's what the Easi-V software is doing. I don't know if this helps but each command sent by Easi-V ends with the characters "\r\n". I expected just a regular '\n' at the end of the line because that is what I am used to but you need "\r\n" or the commands don't register. For example sending "1ON\r\n" turns the servo on. I have not used LabView but I was able to send commands and get feedback from the Vix controller using the Python pyserial module.
Hi Ryan-
Do you still have any MX80Ls and if so, would you be interested in selling them. Same goes for anyone else in the comment threads.
Thanks!
Ryan
Hello,
Thank you for the tutorial,
I was wondering if you have any tutorials on how to control VIX 250IH using "Labview"?
Or any useful link?
Thank you.
Post a Comment