The FANUC amps need tacho input (analog speed feedback)
The FANUC motors have no tachos, but do have encoders.
Originally, the 6M control converted encoder frequency to an analog tacho voltage (TSA, TSB).
Because the amps required velocity feed back, and we supplied none. the amps cranked up their output, and caused runaway.
A new F/V was discussued. Steve, John K, John Elson & Matt guru'd the design & discussed the details.
Even after hitting ESTOP, the motor continued to run away. Scary! After tracing wires, second guessing our ESTOP chain design, and pulling our hair out for a while we finally discovered that the contactor in the old servo drive was sticky from dried up coolant/oil/gunk. The ESTOP chain was de-energizing the coil as designed, but the contactors took several seconds to drop out. Cleaning with alcohol fixed it. John Elson saw it, John K fixed it. The contactors immediately de-energized with estop then. We learned to test EStop without motors. A light bulb makes a handy dummy motor.
The 24V supply used for relays and contactors has a crowbar type overvoltage protector (which we didn't know about). The main ESTOP relay that we installed when we re-did the ESTOP chain had an unsuppressed coil. Normally not a problem, but the voltage spike when the relay dropped out was enough to fire the crowbar and blow the fuse in the power supply. That was a real pain to track down, because it appeared as a intermittent short that would blow the fuse for no apparent reason.
Roland suggested we use a "Kit" concept in our thinking. Ray suggested that a new amp could resolve longevity problems (compare expense of a dead FANUC amp and off the shelf amps). Possible candidates were PacSci??? and Copley (there's many mfctr's). This route still requires a F-to-V (encoder tik to velocity) module, UNLESS we run the motors in torque mode and close the velocity loop in the EMC.
There are many sensors and devices. Each needs to be tested in isolation prior to automation thru HAL / Tcl-Tk / Classic Ladder.
(Note from John: HAL can be used to manually control and verify individual devices before EMC is loaded.)
("garbage in, garbage out" F. Perl) ("doh!" H. Simpson)
This inciteful introduction and the quotations at its conclusion were contributed by Tom Powderly
Ray arrived, got his PC set up, and began gathering information, manuals, and such. Ray and Roland worked out the design for the spindle encoder mounting (to replace the old Magna-Scale that was used for spindle orientation during toolchanges).
Ray removed the old phase-controlled Fanuc servo drives.
Ray and Roland installed the new Servo Dynamics PWM based servo drives. Ray reconnected the existing servo power transformers so they produce 61VAC instead of 90VAC. When rectified this will deliver very close to 90VDC to the new servo drives. John arrived late in the evening, spent a couple hours bullshitting with Ray at the hotel.
John got his computer set up, and unloaded a collection of power supply parts (rectifiers, caps, heatsink, DB resistor, etc). Ray and John planned the new power supply, including issues like E-Stop, inrush limiting, dynamic braking resistors, component location and interlocking, etc. Decided to switch power and limit inrush on the AC side, at the transformer primary, and to connect the DB resistor on the DC side when the primary contactor(s) open. John prepared a list of parts, and laid out the heatsink (for rectifiers and DB MOSFET) and the mounting panel. Roland drilled/tapped the heatsink, and wrote G-code to machine the mounting panel (will be run tomorrow). Ray mounted and wired the primary side contactors. John got the machine PC running again (needed monitor, keyboard, and such), updated with the latest CVS, and compiled EMC2.
Roland machined the panel for the servo DC power supply. John assembled and wired the power supply. John and Ray discovered a transformer that was originally intended to step down 380 or 480V power to 210V for the spindle drive. Since the machine is now wired for 240V, someone had bypassed the transformer by connecting the incoming wires directly to the output. That means that the transformer was energized (and producing nearly 575V on it's primary terminals). Ray reconnected the wiring so the transformer is no longer hot.
Last parts for the power supply arrived, and Ray installed them. Jack started wiring of limit switches to the Motenc breakout board, John wired the amps to the motors and the breakout board. After chasing a number of problems (including diodes that John wired backwards) we were able to move the X axis in torque mode from HAL, at about 11:30pm.
John fixed the backwards diodes on the Y and Z amps, and adjusted all three amps to match the motors (current limits, etc). Ran both X and Y using raw torque commands thru the HAL. Z is still disabled because of mechanical work around the spindle encoder. Ray did a lot of vitally needed work on documentation. We spent a lot of time discussing ESTOP logic, and how to interface EMC's logic to a machine like this that has many different interlocks and checks prior to running, involving several stages of readyness. We came up with the concept of RunLevels as a mechanism to manage this, attractive idea but too much for the time available. John wound up modifying the iocontroller to provide an interface that handles ESTOP well, but additional levels will need more in-depth changes. Got the machine to come out of estop (under EMC control) at about 4:30am.
Ray discovered that the Z-axis brake runs on 24VDC, and needs over 1-1/2 amps. We were already worried about 24V power, the original machine had two 24V supplies, one rated at 3A that handled part of the system, and a larger one that was part of the old control and did the rest. The larger one is gone, removed with the old control. The load from the brake means we definitely need a bigger supply. John discovered that the servo amp "fault" signals actually indicate "not running", so they can't be connected directly to EMC. (EMC won't enable the amps if they are faulted, and the amps will indicate faulted until they are enabled... chicken and egg situation.) The answer is to condition the fault lines with "servo_enable", which is a natural job for ladder logic, which we will need later for the toolchanger anyway. With help from Pete in California, John was able to get ClassicLadder running, and wrote a few rungs of ladder logic to solve the fault logic problem. (Pete is the one who converted ClassicLadder to be compatible with EMC and HAL back in June.) With the fault and enable issues out of the way, John was able to hook a PID block to the X axis and get it tuned. By about 5:30am, X could be jogged and homed using EMC.
Ray reviewed the tuning on the X axis, tweaked it for better stability. We are getting 300ipm rapids and 20inch/sec^2 accels comfortably (we can get up to 45-50inch/sec accel, and 400ipm, but we don't want to abuse the machine). Following error is better than 0.003 during accel/decel, about 0.0002 during steady-state movement, even at 300ipm. Ray and John checked the scaling on X using a long dial indicator, it was off by about 4%, fixed that. John made the HAL and ini changes needed to enable Y, using the same tuning parameters as X. Got Y working pretty easily. Ray and John refined the homing and axis limits on X and Y, those axes are now pretty much done. Z is still waiting, that area of the machine is partly dissassembled for work on the spindle encoder mount. Roland finished some parts of the encoder mount, and expects to be able to assemble it at least enough to run the Z by mid-Saturday. Ray designed, built, and installed a bigger 24V power supply (good for about 8A). Jack wired all of the toolchanger outputs (16 solid state relays driving solenoid valves) to the PC Opto-22 cards, and also wired many of the inputs (mostly proximity switches, a total of about 30). Ray removed the contactor that we installed on the line side of the spindle drive in June, it turned out to be defective. The spindle drive has a hard-wired enable input that we will use for spindle ESTOP. John wired the control and reference signals for the spindle drive, and got rid of several bundles of unused wiring. A very productive day.
The spindle encoder drive system is completed. Very nice looking stuff that Roland and Mark designed and produced. It went together as planned. The eccentric shaft provides plenty of belt tensioning. Thanks to TomP? and fenn for measuring the prox dog positions and marking all that down for us. I believe that we have a winner with this. Roland ordered belts designed to run in oil so the bit of drip on the upper spindle bearing should cause no problems.
Head assembly is back together. Connecting encoder now. This means that we can sort out the useful wires and get rid of another bunch of unused ones from the old control. We still have a few wires to ring out and connect and a few prox and ssr systems to test and we will have the IO ready to setup in rungs.
7:00pm -- We've cut our first air parts. Running chips, cds, and 3dtest.
10:00pm -- We have hydraulic motor under estop and are able to move many of the actuators from HAL. This includes rotating the tool carousel and gear change. We will write a couple of bash scripts to handle gear change and access these from m101 and m102 commands from the interpreter. Jmk has the spindle encoder making a ramp as it rotates with resetting on each index pulse. Setting the spindle system to position loop and adding a pid is next for spindle orient.
Spindle orient also works. There is a HAL param that sets the orient angle. In a final version, this will also be settable from the INI file. The only ongoing hardware issue is that the set angle needs to be away from the index pulse so that deadband and dither don't cross the encoder counter reset. If this happens, it's best to provide for 1/4 turn rotation of the encoder itself. In the Mazak case, this can be done with the flat of the little spindle made to spin the encoder. The encoder has two set screws on the hollow shaft. It can also be done because Roland made four holes for mounting the encoder to the eccentric belt tensioner. As a last resort, it would be possible to loosen the belt, rotate the indexer and then retighten.
Today's first task is ringing out the rest of the ssr wires for hydraulic solenoid control and confirm all of the prox switches for tool change. This took most of the day. Made some progress identifying and labeling the inputs and drawing documentation for all of these. Jack worked most of the day finalizing input wiring. We now have lube levels and such represented in IO bits and will connect them through HAL to EMC. We will need to develop a scheme for handling the many overtemp switches and such.
With the help of Alex we were able to connect spindle to EMC. This required a slight mod of iocontrol for both directions. We still have to set geer change and orient by halcmd but these will come along.
All of the hydraulic actuators are working by command. I wrote a small tcl script that issues commands to halcmd to turn on and off each device. This works much better for me than the text mode cause I just can't get to the off quick enough. An example of this was testing the flood coolant. Mist pulled on okay but we have no air connected right now but the flood pipe was wide open and pointing toward the ceiling. We put a few gallons of very old very smelly coolent on everything around the machine. You can figure out your own moral for this story.
We were able to put a tool in the magazine pocket, pick it out with the intermediate arm and then transfer it under the spindle. Spindle orient is not in the right place so we were not able to load and use it yet. The drawbar or pusher in this case works well and we are able to load tools by hand. The
Today we move spindle orientation into line with the tool when it is in the transfer arm. This transfer arm is an interesting set of prox switches and solenoids. It is a two state device because resting can be either 0 or 180 degrees and the sequence to move it is different depending upon which state it starts out from. DaveE? got us the sequences so will begin to work on that as soon as orient is working properly.
4:00 pm Mark this date in the EMC historic events file. We were able to change tools using a manual set of buttons in a tickle program. Spindle orientation is great. Roland built a tool that looks like a tuning fork that is a close fit into the tool holder slot where the drive dog mates into. We moved a tool holder into place under the spindle. With spindle drive off, we rotated it so that the drive dog fit into the slot in the tuning fork. HAL told us the angle of the spindle using halcmd. Jmk had added ORIENT_POSITION to the ini file so we put the angle there. That worked great. While oriented, the spindle jumps about a degree or so across the deadband. (how do I reduce the deadband for a spindle?)
Create the prox signals in HAL and load them into CL and start building the tool change rungs. Got these into the .hal file and began to watch prox signals while moving hydraulic components. Discovery of the day was that the five proxes that show magazine pocket numbers are binary up through 12. At that it turns on the 5th and starts counting binary again up to 24. Being a binary sort of guy, it is difficult for me to understand the math behind this. The formula is (I'll use pr0-4 as least significant to most) pocket number (decimal) = pr0*1 + pr1*2 + pr2*4 + pr3*8 + pr4*13. The other prox signals work pretty much as the names implied.
Began testing CL. It really needs human readable names added to the display and writer. Jmk says that he had some problems with saving the ladder file. I'm hoping that running bin/classicladder sudo will solve the problem. It seems that CL used to save a bunch of files so the make only one, they send all the little ones to a temp location and then concatenate them all. I'll make lots of backups.
Serious CL rung work. Jmk added a few for testing and machine startup. Added some switches to these. Hydraulic pressure and such as preconditions for any activity that requires hydraulic motion.
Jack is rewiring the tool load and unload switches on the door near the tool magazine. These were wired through the front panel in the fanuc in order to save IO points in the computer. We'll put them right onto IO pins.
Alex worked on ioControl.cc so that we pass the tool change messages to HAL. These include the tool prepare, tool prepared, tool load, and tool loaded signals. Jmk worked on a HAL module for efficient bi-directional control of the tool magazine/carousel. Rayh worked on adding signals and pins to HAL and CL.
Still comprehending classicladder features and issues. Not able to call up the classicladder manual site. Testing the various elements in a running environment is interesting.
I've decided that there are a few hydraulic actuators that droop during machine down time. Most notable of these is the tool transfer arm. I've seen shops where they always place a wood prop under this because of the pain of getting it restored to a working condition. I've added a five second off delay to the "all systems up" coil so that I can bypass ordinary logic and proxes and initialize these sorts of issues with older machines.
CNC Workshop 2006! Lots of work, mostly unrelated to the Mazak. But we did save all the config info, then wipe the disk and install Ubuntu and the released EMC-2.0.0 packages.
The Mazak configuration is complex enough that it overflows HAL memory. The original HAL memory size of just under 64K was based on an invalid concern about shared memory block size. Increased it to 128K. There have been some changes to iocontrol since October, so we had to edit a few lines in the HAL file before it would load. Still haven't run the machine, too busy on other things.
After most of the crowd thinned out we tried bringing up the Mazak. The changes to iocontrol showed up again, the new (and better) approach to estop handling conflicted with the now obsolete estop latch HAL component. Removed the HAL block and added a classicladder rung to handle estop latching. After that the machine came up pretty smoothly, X, Y, and Z all jog and home just fine. Tried the spindle and found a few classicladder pins numbers that had gotten crossed up, fixed them and the spindle control now works (speed control, gear change, and orient).
A day-to-day log wasn't kept, but improvements included: