Common Questions and Answers

Questions

Showing 390 of 390 entries
Q1 Can we exit the CamSoft program and perform background data entry into other programs while the system is executing a part program?

Answer

Yes, however, it depends on the priority of time slices given to each program by the control panel in Windows and the Windows Operating System that you are running. Just click on the AS3000 File Manager button and you will have access to a full-featured editor, not just a limited MDI editor window.

Q2 Is the same CamSoft Machine Tool Controller package used for both lathes and mills?

Answer

Yes, using the CNCSETUP.EXE program restore the CBK file (backup) contained on either a floppy disk or a USB flash drive that came bundled with your CamSoft software. If you have a lathe, refer to the Introduction section of this manual and read Step No. 2 under “Before You Begin” for instructions on how to switch the system into LATHE mode.

Q3 Is cutter compensation available?

Answer

Yes, as part of the CAD/CAM system it can offer a settable look ahead feature for all types of 3D cutters as well. Just select the Tool Comp feature under the Tool Icon or the Create Path feature under the 3D Icon for single or multi-surface, gouge-free tool compensation. Also refer to the TOOLCOMP logic command contained in the Logic Language Reference Guide section of this manual for typical G40, G41 and G42 usage.

Q4 Simultaneous operation of how many axes?

Answer

8 axes simultaneous operation and 8 axes positioning. Just set the AXIS= setting to the correct number in the CNCSETUP.EXE program.

Q5 Maximum rapid rates?

Answer

Any numeric value can be accepted. This is really a limitation of the motion control card selected and the physical mechanical restrictions of the machine. (See the motion card integration documentation.) Set the RAPIDSPEED= setting for each axis in the CNCSETUP.EXE program for specifying the maximum rapid rate.

Q6 Can you handle servo and stepper motors?

Answer

Yes, servos are closed loop systems and steppers can be opened or closed loop. (See the open loop question in this file). This is done by setting the SERVOSTEP= setting in the CNCSETUP.EXE program. See the on-line documentation in the CNCSETUP.EXE program for the different stepper pulse rates. Also see the motion card integration documentation for jumper settings, etc.

Q7 Servo drive output voltages?

Answer

This is settable by the motion control card. It is generally plus or minus 10 volts. (See the motion card integration documentation.) Set the TORQUE= setting in the CNCSETUP.EXE program to specify the voltage range.

Q8 What about tuning the servos?

Answer

If you are having trouble servo tuning and you have Velocity mode servo drives, refer to QUESTION 321. There are servo-tuning programs available through the motion control card people directly. This is the best and most accurate method. Tuning the servos plays an important role in the performance and accuracy of the machine. It is our recommendation that a professional with prior experience perform this task. There are also Proportional, Derivative and Integral gain settings in the CNCSETUP.EXE program for fine-tuning. The user may also adjust the gains for each axis through the Maintenance/Diagnostic Icon, which consists of an easy Windows interface using slider bars. Remember to only use the general tuning method if you have velocity mode amplifiers. Servo Tuning should be done before motion test or homing are preformed. Stepper motors do not need tuning. Both of the auto tune programs "advanced and basic" methods do account for both scales and encoders. These tests will vary in time from 3 seconds to start or longer. This is normal and up to 5 to 20 minutes to tune an axis is normal. The time it takes depends on how hard it has to try or how many times it tries to find good settings. The harder it tries the longer it takes — in rare cases 30 minutes or more. It is safe to say that as long as there are no error messages, then it is still working. It will eventually turn itself off or recommend that you try the manufacturer’s servo tuning program. You are not required to run our tuning program nor the manufacturer’s. It is only an optional tool. There are slider bars that allow the user to adjust their own PID settings on the diagnostic window and some manufacturers offer PID estimated values per motor size.

Q9 Are there any other settings to increase performance and accuracy of the machine?

Answer

Yes, the ADJUST.FIL file will provide a method to set an error correction factor at different places along the ball screw. Just enter the position in the ADJUST.FIL file at which point to do an offset correction and an equal sign followed by the value. You can also use the VOLUME.FIL file. This file is much like the ADJUST.FIL file in the sense that it will look up positions in the VOLUME.FIL file based on a user-defined table along the X and Y axes. This file is designed for 3-axis machine tool types using X, Y and Z-axis positioning. The principle function is to look up a position along either the X and Y axis and apply the Z position in the look-up table to the current Z-axis position to compensate in 3D for the bow or curve in the table. The NEXTMOVE= setting in the CNCSETUP.EXE program tells the control to issue the next motion target position to the motion card when the table arrives within the amount specified after the NEXTMOVE= setting. However, the table will not move until it has finally reached the target position. The need for this setting is to get the target position ready for the next move. Once it is issued, the G code display changes on the screen to the next move. A value too big causes the G code display to show the next move prematurely and a value too small can cause the machine to stop and dwell for a few milliseconds on each move. Another command that affects when the table moves to the next position is the BLEND= setting in the CNCSETUP.EXE program. This is a time value not based on any reference value. This can be set to a negative number to cause the machine to start the next move before it gets to the target position issued. Not all motion cards use the blend setting. (See the motion card integration documentation.) There is no stable advice on what to set this value at. It is our advice that you decrease the value negatively until the test part is within tolerance and all jerkiness is removed from motion. Please call the motion card manufacturer directly if you have problems with any jerkiness or rough unstable motion. There are many factors and issues to get advice on. There is a tolerance setting in the CNCSETUP.EXE program called TOLERANCE=. This setting will set the system wide tolerance and the axes display readouts to the desired decimal precision. There is a system wide tolerance value to set under the LOCK Icon in the CAD/CAM system, which affects the G code program and drawing independently from the controller. Please review the section in the AS3000 Installation & Training Manual for increasing your computer's speed and performance. This is important and can save you time. Set the AUXCARDTYPE to zero in the CNCSETUP.EXE program if you are not using an auxiliary digital I/O card. Clean up the logic commands in the GCODE.FIL file to get rid of any display updates, runtime calculations and part counting and find other ways to handle math calculations on the fly to do offsets, table position checking, tool comp, counting and spindle speed calculation conversions. In fact, go through all the Logic files to make the best use of the EXIT command to avoid running extra logic statements that do not need to be executed after the desired function has performed its task. You can also set the graphics window to wire frame mode instead of solid model, which will increase motion up to 100 percent. If you cannot improve your performance with these suggestions, then a faster CPU is the ONLY answer. To speed up loading the G code program, you can set the Graphics Viewport to invisible. This will skip much of the G code verification and material sizing process for the graphics. It will run the G code program through for 1 pass to check for some errors, but this is a small portion of the part loading and the end result will be that the G code will load must faster. To increase the execution speed of the G code program, see the modes FASTMODE and BUFFER used in G64/G61 and G8/G9 in QUESTION 160. See QUESTION 282 for optimizing performance.

Q10 How do you set the acceleration and deceleration?

Answer

Use the ACCEL= and DECEL= settings in the CNCSETUP.EXE program. These settings are usually in encoder counts per second.

Q11 What if I have an OPEN LOOP system as opposed to a CLOSED LOOP?

Answer

There is a setting in the CNCSETUP.EXE program for encoder types. Set the ENCODER= value to -1.

Q12 What about homing and other startup procedures the machine needs to do each morning?

Answer

There are examples of homing routines, which you can view in the Visual Process Editor that are not for any specific machine type. You may also avoid homing your machine each day unless there was a crash or premature shut down of the control by setting the SAVEPOSITION= setting in the CNCSETUP.EXE program to TRUE or FALSE. If set to TRUE, then the control will automatically save the last position upon gracefully exiting the control program and will load that position back when the machine comes back on. There is a STARTUP.FIL and SHUTDOWN.FIL file in the AS3000\CNC directory. These files will provide access to user-defined automatic events to perform upon start up and shut down.

Q13 Can we password protect the control?

Answer

You can issue and enter individual passwords for the control starting up as well as access to the CAD/CAM system and access to the maintenance and diagnostic screens through the CNCSSETUP.EXE program. Passwords that you enter for logic files are encrypted in such a way that even CamSoft cannot decode them. Therefore, you must remember your passwords. See the SPECIAL INTEGRATOR NOTE in Section 1 of this manual.

Q14 What about displaying user messages, prompts and even special routines like part counting or run time tracking?

Answer

There are special commands like RUNTIME which will keep track of the run time since the cycle start button was pressed and then store that time to a variable for the user to do what he or she wishes with it such as display it or add it to a final message to be displayed. There is also a MESSAGE command to display messages and prompts. You can also create any logic needed to perform special tasks behind any user-defined button or unused M Code in the MCODE.FIL file.

Q15 Are there maintenance reminders?

Answer

You may set up and define a whole maintenance schedule to remind the machine operator to grease the bearings, change the oil, tighten the belts, inspect the gears and so on at individually set regular intervals each morning when the machine comes on.

Q16 Are there any diagnostic tools provided?

Answer

Yes, click on the Maintenance/Diagnostic Icon and you will be asked which screen to display — the Maintenance Screen or the Diagnostic Screen. From the Diagnostic Screen you can control and view many factors about the machine itself including servo tuning and all digital I/O status states. You can also send motion card native commands directly to the card itself for immediate action and flip the states of outputs on and off. In addition, the motion card manufacturer has several diagnostic programs and tools that far exceed the needs of most general users. (See the motion card integration documentation.) We use the diagnostic screen to test with and the CNC Watch window to trace and display variables as they change. When a routine runs through, we examine the LOGFILE.FIL file and we can see the Hour, Minute and Second each command was issued and what response, if any, happened along the way to trace something. If another event happens during this same time that might affect the outcome, such as a change in I/O state or user interaction, it is also written to this history file in the order it occurred. The more you make use of MESSAGE or LOGWRITE to write notes in your routines, the more readable they become.

Q17 How do I tell the system the amount of axes travel per revolution?

Answer

Use the RATIO= setting in the CNCSETUP.EXE program. This setting is usually in encoder counts per inch. If you have a metric system, refer to the RATIO setting as encoder counts per millimeter and change your AS3000 setting under the Lock Icon to Metric.

Q18 Can you orientate the Spindle?

Answer

Yes, this is done by use of limit switches or the FINDINDEX logic command.

Q19 How do I use a handwheel with axis select switches?

Answer

You would use an uncommitted auxiliary axis encoder to read the direction and amount like any rotary device. The user can purchase a standard handwheel, which can be interfaced to an auxiliary encoder on the terminal strip. For example, the user either presses the function key on the keyboard he or she assigned to initiate the handwheel or flips or presses a physical button to initiate the handwheel. Refer to the HANDWHEEL parameters in the CNCSETUP.EXE program.

Q20 Do you have part programming software travel limits?

Answer

Programming limits are software settable in the CNCSETUP.EXE program and act independently of the hardware limit switches. Also, you may use the SOFTLIMITS.FIL file to customize what happens when the soft limit is reached.

Q21 How many inputs and outputs are included and what type of interface is used?

Answer

There are inputs provided for all the over travel limit switches and homes switches plus between 8 and 24 extra digital I/O points depending on the motion card chosen. (See the motion card integration documentation.) CamSoft can optionally provide an auxiliary set of digital I/O modules, which virtually extends the number of I/O points into the hundreds. There are settings in the CNCSETUP.EXE program for what terminal number the inputs, outputs and auxiliary digital points begin and end. The interface to these points are common industry standard optically isolated OPTO 22 modules placed on a provided terminal block with a cable coming from the back of the computer. Each additional auxiliary I/O point costs approximately $10 plus the cost for an I/O card and external rack to place each module of any voltage being DC or AC. The motion card I/O sample rate is much slower than the auxiliary I/O card, which can detect a change of state in the 10 KHz range, whereas the motion card I/O is roughly every 60 milliseconds.

Q22 Program zero and fixture offsets?

Answer

Program zero and fixture offsets?

Q23 Jog routines?

Answer

Jogging routines are already part of the standard interface. There are two distinct methods to employ them. (1) Set the JOG Icon to visible using the Design Interface feature in the CNCSETUP.EXE program and you will have access to an on screen placement of a jog window which the user operates by simultaneously pressing the arrow keys with the Shift key for high speed jogging or the Ctrl key for slow speed jogging. (2) The user can purchase a standard jogging type joystick, which can be interfaced through 4 or 8 digital inputs. For example, once the user either presses the function key on the keyboard he or she assigned to initiate jogging or has flipped or pressed a physical button to initiate jogging, then logic written in the INPUTIO.FIL file would trap for the inputs changing from off to on which then commands a GO command to move the appropriate axes. Refer to the JOG command contained in the Logic Language Reference Guide section of this manual.

Q24 What kind and how many user screens are available for display and how can I change them?

Answer

There are several screens to access directly. If you have set the proper Icons and screens to VISIBLE=TRUE using the Design Interface feature in the CNCSETUP.EXE program, then you will have access to (1) G Code Display Screen [GCODE], (2) Axes Readout Displays [READOUT], (3) Jogging Window [JOG], (4) Editor and Manual Data Input Screen [MDI], (5) Help Screens [HELP], (6) DNC Communication [TERMINAL], (7) Maintenance Records [MAINT], (8) Diagnostics [MAINT], (9) Job File Loading [FILE], (10) Multiple Tool Parameter Screens on a rolodex [TOOLS], (11) CAD and G Code Import Features [IMPORT] and (12) Access to AS3000 CAD/CAM [AS3000]. The CNC main screen, G Code and Axes Readout screens are accessed in a unique way through the use of the Page Down and Page Up keys. The Page Down key rotates the screens from one to the next while the Page Up key toggles between the screen being the normal window size and location you specified using the Design Interface feature in the CNCSETUP.EXE program to a fully maximized display with enlarged alphanumeric fonts. Simply press the Page Up key to go between each size while you are visibly rotating to the screen you want by pressing the Page Down key.

Q25 Dry run mode and program inhibit?

Answer

In the tool parameter screen there is a check box that will inhibit the Z-axis motion while allowing the spindle to travel above the part in rapid mode with the spindle off. Also, refer to the DRYRUN logic command contained in the Logic Language Reference Guide section of this manual.

Q26 Optional Stop?

Answer

Use the M00 or M01 codes. See the MCODE.FILE file for an example. Pressing the Cycle Start Icon or giving a CYCLESTART logic command starts and pauses the program.

Q27 Spindle gear change?

Answer

Simply perform the logic specific to your application at any unused M code of your choice in the MCODE.FIL file. This would result in a series of events specific to that machine's wiring to detect and power certain digital outputs and analog devices necessary to perform the events in the proper order. Look inside the Visual Process Editor for examples.

Q28 Does CamSoft include the following operation modes?

Answer

a. Program mode b. Set up mode c. Transmit/Receive mode d. Teach mode The CamSoft control compares to other control usage as follows: Program mode is really the AS3000 CAD/CAM, which, if set up properly, does not need a switch to flip into. Simply use standard Windows methods to change into a programming mode or click on the MDI Editor Icon. Set up mode is always in effect unless you are running a job. Transmit/Receive mode is accessed through the Terminal Icon. Teach mode is done with the TEACH logic command. Refer to the TEACH logic command contained in the Logic Language Reference Guide section of this manual.

Q29 Automatic tool change sequences?

Answer

Use the M06 function to invoke an automatic tool change. Each machine will be different. Simply perform the logic specific to your application at any unused M Code of your choice in the MCODE.FIL file. This will result in a series of events specific to that machine's wiring to detect and power certain digital outputs and analog devices necessary to perform the events in the proper order. Examples of pre-written logic are available for reference when you get to that point. Look inside the Visual Process Editor for examples.

Q30 DNC terminal mode?

Answer

Transmit/Receive mode is accessed through the Terminal Icon. This will even allow the machine operator to have unattended remote control access to the office computer through a standard RS232 cable without the need for network software and hardware.

Q31 Can we network the control to our office computer?

Answer

Yes, remember the control is really just a standard personal computer. This may present a problem of speed or could even introduce the chance of a controller lock up!

Q32 What G Code format does the control understand?

Answer

The system comes with post processors called CONTROL.POS, MILL- PC.POS, LATHE-PC.POS, WATER-PC.POS and others within AS3000 to convert graphics to a generic Fanuc type G Code motion. Therefore, using any of the numerous reverse post processors that come standard with AS3000 that convert existing G Code programs into graphics will allow the controller to process the graphics directly into motion. Using the CNCSETUP.EXE program, you can also define how each G code and M code will work. There is a 199 definable G code and M code table.

Q33 System compensation include the following: Bi-directional lead screw error compensation? Reversal error compensation? Lead screw mapping? Tool length compensation?

Answer

Volumemetric 3D compensation (VOLUME.FIL file). Bi-directional and reversal error compensation are a factor of the motion card closed loop system. (See the motion card integration documentation.) See

Q34 Programming aid as follows: a.

Answer

Decimal point programming? b. Inch/Metric input? c. Mirror image? d. Drill cycles? e. Bore cycles? f. Tap cycle? g. Peck drill cycle? a. Decimal point programming is of course implemented. b. Metric values are just numbers. Just be sure you set the proper tolerances in the CNCSETUP.EXE program and AS3000 accordingly. AS3000 has a metric switch under the LOCK Icon to facilitate messaging. c. Mirroring is a feature found under the Service Icon in AS3000. d-g. All are switchable while creating the program in AS3000 by using Mode on the Main Icon Window. See the G81, G83, G84, G85, G86 Codes in the GCODE.FIL file to adjust the operation of these canned cycles to your own needs.

Q35 Rectangular, circular and irregular pocket milling and 3D cavity milling?

Answer

These are standard features of the CAD/CAM system beginning with AS3000 Level 5. These features are found under the Tool and 3D Icons. See G65, G66, G67 and G68 for built-in pocketing type G codes.

Q36 Automatic radius generation between linear moves?

Answer

This is a standard feature of the CAD/CAM system found under the Tool Icon called Tool Comp. You would check off the Round Corners Automatically option within the Tool Comp feature.

Q37 Helical interpolation?

Answer

This is a standard feature of the CAD/CAM system found under the Tool Icon called Utilities. Use the Helical Utility and answer the questions. CamSoft does have a G code sample file and a macro logic file for your reference.

Q38 Do you have a suspend and continue with single step mode?

Answer

Simply press on the cycle start button to start or suspend the machine movement to the next G Code block or use the CYCLESTART logic command. The tool will continue to travel to the existing pre-given target position. The Icon will change from the current machine tool type to a Signal Light Icon at which time it will indicate that there is a program in motion and the operator can click on the Signal Light Icon to suspend motion. Press on the Single Step Icon to execute a single G Code block one at a time.

Q39 Manual feedrate and spindle speed override?

Answer

There are three ways to handle this. (1) You can purchase an analog pot to physically change the voltage to the spindle motor. Refer to the FEEDPOT and SPEEPOT parameters in the CNCSETUP.EXE program. (2) The user can purchase standard rotary knobs, which can be interfaced to terminals on the terminal block. Logic is written in the MCODE.FIL file, which would trap for the changes and adjust the variable values set up through the Design Interface feature in the CNCSETUP.EXE program for feed and speed. These variable values are usually found under the [ANALOG1], [ANALOG2] or [ANALOG3] settings in the Design Interface feature in the CNCSETUP.EXE program. These variables store the percentage values at which to vary the current given F Code (Feed) and S Code (Speed) in the G Code program. (3) Just use the provided slider bar controls for speeds and feeds right on the control screen itself. Set VISIBLE=TRUE for [ANALOG1], [ANALOG2] or [ANALOG3] as needed.

Q40 Custom screen generation?

Answer

The entire main control screen can be customized right down to your own logo. Launch the CNCSETUP.EXE program and click on the Design Operator Interface button.

Q41 Are PLCs needed?

Answer

No, you can do away with the physical PLC itself, Wiring, Ladder Logic Programs and need to burn in E-PROM chips. We have replaced this with simple logic commands in plain text files that any computer can read or write using any word processor or editor that can save a file in ASCII format. These files have a filename extension of.FIL and can be found in the AS3000\CNC directory. See the help on LOGIC COMMANDS for an explanation of this efficient reduced instruction set.

Q42 How do I correctly issue the INPUT and OUTPUT numbers to connect to the standard terminal block using the existing on-board digital I/O and any extra auxiliary I/O?

Answer

Use the CNCSETUP.EXE program to indicate what position on the terminal strip your Inputs, Outputs and Auxiliary I/O begin and end. End is not needed for non-auxiliary I/O. For example: AUXCARDTYPE=1 IOINPUTBEG=25 IOOUTPUTBEG=33 AUXINPUTBEG=41 AUXINPUTEND=56 AUXOUTPUTBEG=57 AUXOUTPUTEND=72

Q43 Could you give me an example of Spindle speed logic?

Answer

For the most part nothing extra has to be done; it's all automatically changed when you program an S Code or you move the slider bar on the screen. You must set the SPINDLE parameter in the CNCSETUP.EXE program to tell the software what axis the spindle is connected to. Also, you may use the SPEEDPOT parameter to connect a rotary knob to control spindle speed. Refer to Question 116. Remember that most likely your 4th axis will be connected to the spindle. Be sure you set the following parameters in the CNCSETUP.EXE program: RAPIDSPEED4=3000 'the maximum spindle speed limit GEAR4=1 'the other 4 axes settings are zero RATIO4=4000 ‘if an encoder is attached, enter counts per revolution To program a button to stop the spindle, enter: SPINSTOP To program a button to start the spindle in a forward direction, enter: SPINFORWARD To program a button to start the spindle in a reverse direction, enter: SPINREVERSE You may also use a spindle speed knob (potentiometer) to control the spindle speed. Refer to the SPEEDPOT logic command.

Q44 How are the variables shared between different INI and FIL files?

Answer

The variables are global and universally shared between all modules. There are 999 available variables.

Q45 If a line label appears in one M-function can it be reused in a different M-function and if not, can it be called from a different M-function?

Answer

Yes, the same labels can be reused in any M-function, but since each M- function has only its logic, the labels cannot be called by another M-function and you cannot call one M Code from another.

Q46 Can buttons on the screen be disabled?

Answer

There are no commands that enable or disable a button but you can change its appearance. The best thing to do is set an unused variable to 1 when it's okay to use the button and 0 when it's not. Think of it as a flag where 0=Off and 1=On. This way when the variable equals off, you can test for it at the beginning of the logic statements by entering: IF \12=0 THEN EXIT or simply set the button to invisible. Refer to the BUTTON logic command contained in the Logic Language Reference Guide section of this manual.

Q47 Can we create Start/Stop or On/Off buttons on the screen?

Answer

Yes, you can create a button on the screen using settings contained in the Design Interface feature in the CNCSETUP.EXE program. You can make the buttons any size or color and they can be positioned in any location and contain any caption. When a button is pressed for the first time, an M code you set using the Design Interface feature in the CNCSETUP.EXE program will execute a list of commands in the MCODE.FIL. There is another setting in the Design Interface feature for the same button that will execute a different M code the second time it is pressed. There is also a logic command to make the button appear pressed in or popped out.

Q48 How do we write logic to turn on a combination of outputs?

Answer

If there are 4 outputs that control various clutch or air cylinders to achieve varying spindle speeds, use the lower case s character which stores the current speed to determine what combinations of outputs to turn on or off. EXAMPLE: IFs<300THEN#42=1:#43=0:#44=0:#45=0:EXIT IFs<600THEN#42=1:#43=1:# 44=0:#45=0:EXIT IFs<1200THEN#42=0:#43=0:#44=1:#45=0:EXIT IFs<2000THEN#42=0:#43= 0:#44=1:#45=1:EXIT IFs<3000THEN#42=1:#43=1:#44=1:#45=1:EXIT

Q49 How do I write logic to use a value entered by the user in a text box on the screen?

Answer

In the Design Interface feature in the CNCSETUP.EXE program there is a setting to assign a variable to the value in the text box. For example, if the variable you assigned was \80, then code the logic as follows: GO {x-\80};y;z 'Go to the current X axis minus the value of variable 80

Q50 What should I do if the control gets hung up?

Answer

You can press the ESC key to abort the current motion and the control will ask you if you want to continue or not continue. If the control is waiting for an input to change states but never does, then the ESC key will release the control from all current logic.

Q51 How do I turn on lights?

Answer

In previous versions of the machine tool controller, we asked you to set an I/O number for each light. This is no longer applicable. The proper way to turn on or off a light is with the LIGHT command. Refer to the Interface Design section of this manual for an example of the LIGHT command and it parameters.

Q52 New Diagnostic Window We added a new digital I/O diagnostic window to the control.

Answer

It shows all the I/O at once in a long skinny window at the bottom of the screen. You can put the control in demo mode and click on the I/O numbers in this new window to trigger the inputs and outputs on or off to test your logic as if the machine was actually changing the I/O states. It is like a virtual machine-man interface.

Q53 Demo or Development mode?

Answer

Demo mode is set in the CNCSETUP.EXE program by setting the CARD parameter to DEMO (example: CARD=DEMO). In DEMO mode the control does not react to the physical digital inputs or outputs. It also stops short of sending any commands to the motion card itself. Therefore, the motion card does not have to be present in the system to prove out the logic. While in DEVELOPMENT mode the diagnostic panel will allow you to trigger inputs and outputs in a virtual environment, fooling the control to think that the I/O signals really came from the machine. This way you can prove out the logic on your desktop computer without ever having to disconnect your existing machine's control until you are satisfied that the control runs properly.

Q54 Who is responsible if the control crashes or does something wrong to create damage or injury?

Answer

We must state that even though it is impossible to detect the probable cause of the mishap due to the fact that it may be one or more items involved that play a role in the problem such as the computer, motion card, digital I/O card, electrical noise, RF interference, mechanical limit switch, user error, poor or bad logic planning or even a fluke from a program bug, YOU ARE AT YOUR OWN RISK. We have to state that we must refer you to the CamSoft Program License Agreement for details. If you become a user of the software, you are automatically bound by its terms. We must disclaim this fact since we carry no insurance for personal injury or property damage. Since the control is sold as a kit, CamSoft cannot and did not perform, check or approve the entire finished project or integration to get to the end result. We admit that there can be program bugs and caution you to thoroughly test the control with the motors disconnected. What would be a concern is if the machine goes into E-STOP while cutting. It could be that it exceeds the set tolerance and went into position error. If so, then keep an eye on this and open the tolerance just a bit. If you can make it happen, make a History file and send it to us. If there is a Windows or PC power problem, it won't show up in the History file. Therefore, if it becomes un-explainable, see QUESTION 385. You may want to take the shot gun approach on this, with the end result being safety, and do everything you can including replacing, reformatting a clean Windows install or swapping out the PC if necessary.

Q55 Why do we sometimes get a General Protection Fault, Application Error, Fatal Exception or Invalid Page Fault?

Answer

We cannot tell you specifically why you got a GPF or an Application Error because it was not from us. It is a concern, however, because it suggests that another memory residence program interfered in memory with the control. It may be a fluke from some other program you may have ran before you entered the CNC program. However, if it happens again, we should investigate until we find the program or device driver that is causing the error or memory conflict. You may also get a message: "Fatal Exception" or "Invalid page fault" This is not a CamSoft message. It is a Windows message and problem. The possible causes are that some Windows drivers are either missing, damaged or are mixed older versions. Solution: Reinstall Windows. Upon successful reinstallation of Windows, do not install any other software that may overwrite the Microsoft Windows drivers with older ones for now. Avoid loading and running other programs that run in the background such as Network drivers, Virus checking, Pop-up reminders and Microsoft Office. If you must load these programs, then simultaneously press the CTL- ALT-DEL keys and click on these listed programs one by one to shut them down. Get help from someone who knows what these programs are on your computer. Insert your CamSoft CD and run the Microsoft update program by double clicking on the SETUP.EXE file located in the UPDATE folder on your CamSoft CD.

Q56 Why does the F10 key need to be pressed twice sometimes and the other function keys only once?

Answer

This is a very common question. (It is Microsoft's fault.) One of the Microsoft interface guidelines state that the F10 key shall hand over control to the Microsoft's window control box located at the top, left corner of the window. If we did not follow Microsoft's interface guidelines, then we could not claim 100 percent compatibility to Windows. We have removed the Microsoft window control box altogether so you will either have to issue the END command to gracefully exit the CNC program or press the Esc key.

Q57 How do I eliminate the Speed or other analog slider bar controls you have placed on the operator interface by default?

Answer

In the Design Interface feature in the CNCSETUP.EXE program there are ANALOG controls, which you could set to invisible or you can set the ANALOG axes parameters in the CNCSETUP.EXE program to zero. However there are two other issues related to the analog controls that were originally set by CamSoft as defaults for example purposes. First, in the CNCSETUP.EXE program there is a setting to assign a variable to SPEED, which may be set to zero. If it is greater than zero, then the assigned variable number will be reserved and only used for speed changes. The second issue deals directly with the example logic we used in the GCODE.FIL file to display the current speed when using G00, G01, G02 and G03. This logic should be erased to avoid a division by zero error.

Q58 On power up of the CNC program, is the STARTUP.

Answer

FIL file executed before the operator screen is displayed? Yes, before the operator gets control the G code display window appears first then the logic in the STARTUP.FIL file will execute. After this the full screen is displayed and the operator gains control of the interface. The reason the G code window appears by itself first is to allow the user to place a DIAGNOSE command in the STARTUP.FIL file to watch the diagnostic events as they happen in the G code display window.

Q59 Upon start up, how do I preset certain items from saved values from the last time I used the control?

Answer

Remember, any logic commands are legal in the STARTUP.FIL file. Therefore, if you would like to set the initial speed, for example, force the lower case s to the desired initial value. EXAMPLE: s=75 If the speed is a series of outputs, then issue each of the outputs as needed. If you desire to preset the tool number or display to some value from the last time the control was used, then use the command SAVEVARB in the SHUTDOWN.FIL file to save the values and then use the READVARB command in the STARTUP.FIL file to restore those values.

Q60 I would like to change the color of the buttons on the screen.

Answer

It is a common practice to change the appearance or color of a button when it is pressed especially if the button does two functions. Refer to the BUTTON IN or OUT logic command. Also see the ORGANIZE logic command.

Q61 Can the buttons on the screen have more than two functions?

Answer

Originally you can set either one or two M code functions using the Design Interface feature in the CNCSETUP.EXE program for each button. However, by using variable incrementing or de-incrementing logic in the M code routine, you can have numerous functions for a single button. See the MANAGE logic command. For example: Take an unused variable and add one to it each time the button is pressed — \65={\65+1} or \65={\65-1} and then create an IF THEN statement for each of the button's functions. Be careful to trap to see if the value of the variable is over the last choice or less than zero. If the button was pressed once, then variable \65 would be 1; if it gets pressed twice, then it would be 2 then 3 and so on. Now you will need to create IF THEN statements for each time you press the button. EXAMPLE: IF \65>3 THEN \65=1 IF \65=<0 THEN \65=3 IF \65=1 THEN blah,blah,blah:EXIT IF \65=2 THEN blah,blah,blah:EXIT IF \65=3 THEN blah,blah,blah:EXIT

Q62 Can we change the specific description or color of a button?

Answer

Yes, the new BUTTON command has a few new parameters. Each button is numbered and has four parameters. (Also see the ORGANIZE logic command.) EXAMPLE: BUTTON1 OUT;DESCRIPTION;12;FILENAME The first parameter can be IN or OUT, which displays the button's appearance. The second parameter is the button's text wording the user sees. The third parameter is the button's text color, which can be 1 through 15. The fourth parameter allows you to change the bitmapped image with a new bitmapped image by specifying the filename of the new bitmap.

Q63 The program does not stop when it sees an M00?

Answer

Change the wording in the MCODE.FIL file above M0 to read the message shown in the example below and then on the next line add the command CYCLESTART EXAMPLE: MESSAGE Press the Cycle Start Button to Resume CYCLESTART

Q64 How do I change the axis direction?

Answer

Set the GEARX, GEARY and GEARZ parameters in the CNCSETUP.EXE program to be -1.

Q65 How do I change the encoder or readout direction?

Answer

Set the FINETUNEX, FINETUNEY and FINETUNEZ parameters in the CNCSETUP.EXE program to be -1.

Q66 How do you do an IF THEN command with an AND statement?

Answer

If you needed to test for two or more limit switches at the same time, the following example would only reach the last THEN statement only if all tests passed. There is no AND statement. Use the IF THEN statement twice in a row as shown below. (An OR contradiction is two IF THEN statements on separate lines.) EXAMPLE: IF#17=1THENIF#18=1THEN

Q67 How do I trap for an Emergency Stop button or Limit Switch?

Answer

OSHA does require you to have physical E-stop buttons and/or wires plus a POWER ON and OFF button. You do this in the INPUTIO.FIL file. Use any free digital input and hold the signal high so if the signal ever goes low, caused by a break or an E-Stop button push, then the control will come to a stop. Also, you can use the ABORT TERMINAL pin on the motion card or you can even cut power to the amplifiers. EXAMPLE: IF #34=0 THEN ESTOP Normally E-STOP is wired to the first or last Digital Input on the terminal strip or motion box. Also, you may optionally connect the E-stop button to the ABORT pin for extra safety. See the INPUTIO.FIL file for previously used IO#s. If that line is remarked out, then un-remark the E-STOP line in the INPUTIO.FIL file after it is physically connected. You may change the IO# as needed. There is no right or wrong IO# to use for ESTOP nor is normally open or closed right or wrong. You may change the open/close state and also the IO# if you wish. The INPUTIO.FIL file will show you the current IO#s used. If it shows IF IO#=0 THEN ESTOP:EXIT this means it is normally closed and then if opened, it will ESTOP. Change to IF IO#=1 THEN ESTOP:EXITif you want normally opened.

Q68 Should I use a Watchdog timer?

Answer

Yes, we do recommend a watchdog timer. It is a card you can purchase that requires the control to send its signals at a predetermine time frame. If the signal is not receive by the Watchdog timer board in time because the application locked up, then the board will send a digital output signal to the motion card or cut power to the motors. Call the Motion Card company for information.

Q69 Should we have a UPS or battery back up?

Answer

Yes, we do recommend a common PC battery power supply to the computer that is the control and the low voltage power supply providing power for the Digital I/O relays. The UPS battery is a common item to purchase at any computer store at a low cost. It protects against short duration power interruptions, filters electrical noise and guards against power spikes. It is a must in a machine shop environment with momentary power fluctuations. An uninterrupted power supply (UPS) unit can be used to allow graceful shutdown of a PC in the case of a power outage. Most UPS units come with some method of connecting the unit to the PC. In newer models this is usually done through a USB port. In older models a digital IO on the UPS unit can be connected to a digital input on the terminal strip and trapped in the INPUTIO.FIL file to display a message and/or execute the END SHUTDOWN command. Once connected, most UPS units are plug-and-play and Windows will already have the driver available for the device. The device driver will automatically install. If this is not the case, the unit may come with its own driver setup program, which can be installed in Windows. Once Windows has found the device, the Windows Power Options applet in the Windows Control Panel can be used to set up options. The Windows Power Options applet has several options to set up for a UPS. We recommend that under options for the battery that it be set up so that Windows will display a notification when the battery is in use because of power loss. See QUESTION 385. IMPORTANT: Plug the UPS into an outlet that does not share a circuit with a heavy electrical load and check to be sure that the wattage rating of the UPS is powerful enough to drive all of the devices that are plugged into it.

Q70 How do I program a Joystick?

Answer

This can be a complicated subject since you must have knowledge on how to add a button on the screen that sets a variable that either allows the operator to use the joystick or not. The variable should be set to 1 (one) when it is allowed and to 0 (zero) any other time. This way you can trap the value of the variable in the INPUTIO.FIL file to either permit joystick movement or not. There should be five positions on the Joystick — four for each direction and one for dead center. Each position should be connected to a different digital input number. If the Joystick remains in dead center, then all movement stops. The keyboard arrow keys’ jog feature only jogs in four directions: left, right, up and down. Here are some alternatives: In the MACRO.MAC file there is the [Analog Joystick] macro. If you have a real physical joystick that is analog, this can jog in 360 degrees. In the MACRO.MAC file there is the [JoyStick] macro. Use this macro if you have a real physical digital joystick model that can move in eight directions. If you have our USB joystick, it can jog in 8 directions at 45 degrees. Touch screens have their own jog buttons on the screen that are virtual and user configurable.

Q71 I get a message that says: "DMC1000.

Answer

DLL cannot talk to VXD.386. Please reinstall Galil Driver. " Please copy the DMC1000.DLL and VXD.386 files along with any.DLL,.VBX and.OCX files from the AS3000\CNC directory into your Windows\System directory. Also, you may have to insert a new line under the [386Enh] section in your SYSTEM.INI file, which is located in your Windows directory. The new line entry is shown below: [386Enh] device=VXD.386

Q72 How do I automatically start or exit the CNC control screen?

Answer

The system has a few user-configurable methods to start up and shut down. To start up once Windows is up, click on the Controller’s Desk Top ICON to launch the controller screen or go to Windows START/PROGRAMS/STARTUP and drag the Controller’s Desk Top ICON into the Windows STARTUP folder. This latter procedure will automatically launch the CamSoft controller screen upon boot up. To shut down gracefully you can press the ESC key on your keyboard and the control will ask you if you are sure you want to shutdown. Another method for exiting the controller screen is to enter the logic command END in a button. (See the END command.) The END command has a SHUTDOWN parameter option. Review the SHUTDOWN.FIL file for configuration options. Upon shut down it is easy to have the system completely and gracefully shut down (turn off) everything including the PC or have only the controller screen close without requiring a Windows shut down. There is a single command/button called END that first shuts down the controller then any other Windows programs that happen to be up. Next it will shut down Windows itself and automatically turn off power to the PC. It should never be that you just turn off power to the PC. It is always best to stop motion first, move the tool to a safe position and turn off any spindles or power. Perhaps even turn off I/O in a certain order in a sequential list that you can set up in your SHUTDOWN.FIL file. In fact we recommend a battery backup (UPS) to keep the PC on just in case of a power failure so if a signal that a power failure happened is received from the UPS, it can turn itself off gracefully if you are not around. At the same time you may even have the controller call your cell phone or send you an e-mail to let you know it had to shut down because of a power failure. For the most part, you cannot lock someone out of Windows if they want to get to it. If you make the “size” of the height and width of the CNC windows just right, you can fill the screen so no piece of the desktop shows. You can also right mouse click on the Task Bar to Hide It.

Q73 How do we add a FEEDRATE knob to the control?

Answer

First you have to disable the slider bar on the screen. To do this change the [ANALOG1] settings using the Design Interface feature in the CNCSETUP.EXE program to VISIBLE=FALSE. Second look at the FEED= setting in the CNCSETUP.EXE program. By default it is set to variable \73. This tells the control what variable to use to vary the motion card's velocity on the fly. When the value in this variable changes, the feedrate automatically changes. The value of this variable should be a non-negative number from 0 to 150 percent. It can be higher. That is, if the variable was 200, then the motion card would move 200 percent faster than the F code in the program. Refer to Question 116 and the FEEDPOT parameter settings in the CNCSETUP.EXE program for information on connecting a physical rotary knob. There are two basic ways to handle a variable spinning knob. You can handle the knob with either analog or digital signals. Remember that we reserved variable \73 to FEED in the CNCSETUP.EXE program. The feedrate will change by that percentage. For example, if the feedrate knob is a digital device, place IF THEN statements in the INPUTIO.FIL file to trap for combinations of digital inputs to determine the exact value. For instance, inputs #20, #21, #22 and #23 may be set to various combinations of ON or OFF by the feedrate knob itself. You could trap for these combinations on Inputs like this to set variable \73 to a percentage. EXAMPLE: IF#20=0THENIF#21=1THENIF#22=0THENIF#23=1THEN\73=25 IF#20=1THENIF#21=0THENIF#22=1THENIF#23=0THEN\73=50 IF#20=1THENIF#21=1THENIF#22=1THENIF#23=0THEN\73=75 IF#20=1THENIF#21=1THENIF#22=1THENIF#23=1THEN\73=100

Q74 Is there a wiring diagram for the control?

Answer

The CamSoft control software talks directly to the motion card itself; therefore, it is not involved with the wiring after the motion card. The best place to start is with the motion card people themselves. They can suggest wiring techniques to their terminal strip or break out box that they sell. The wiring aspect of any integration project is always different from machine to machine and overall application. For us here at CamSoft we tell people it is always the hardest part. We sell the software as a kit telling people up front they need to get someone to furnish the wiring diagrams for the machine they intend to integrate or ask an electrician for help.

Q75 What is the terminal strip you talk about? What does it connect to? How much does it cost?

Answer

The terminal strip or break out box is generally supplied by the motion card supplier. It does connect directly to the motion card itself. The cost varies from dealer to dealer. There is another optional auxiliary I/O board that adds extra optically isolated digital I/O to a rack. We do sell this card, cable and rack and the cost varies for the amount of I/O needed. We do not sell the optical relays that are voltage specific, but we know where to obtain these. The relays are color coded by voltage and are the industry standard OPTO 22 brand. We only handle other brands of digital or analog cards on a custom basis for large quantity orders. Also see QUESTION Nos. 21 and 42 for more info.

Q76 How do the Pixel numbers relate to position on a monitor in the Design Interface feature in the CNCSETUP.

Answer

EXE program? Microsoft has set up a universal memory map to display graphics on the screen. It started out in pixels years ago; however, it changed in later versions to a generic grid system that is universal across platforms for all computers running Windows. We have heard it referred to as TWIPS but many people still call it pixels. The number is only relative if you stuck to the same color card and monitor. Therefore, it must be referred to as a location "value" which will change with resolution and monitor size. We have the same problem here and developed an elaborate programming scenario for our CAD/CAM system. The best advice we can offer is to adjust the value to your display.

Q77 Does your software feed a single block of data at a time to the motion card?

Answer

It may in some cases, but in general it sends blocks of positions to the buffer on the motion card and monitors the buffer to keep it full so the program size could be as large as the hard disk itself.

Q78 What does the 'Blend' function in the CNCSETUP.

Answer

EXE program do? It tells the software when to send the next command to the motion card. The value is in milliseconds and can be negative, zero or positive. If negative, it sends the command early. Too early and the graphics, logic and G Code displays update prematurely. Too great a value and a pause will occur between each move causing a dwell.

Q79 What does the TORQUE setting do in the CNCSETUP.

Answer

EXE program? It sets the maximum voltage limit that the motion card can send out. In the Galil card it is the TL command. For the Delta Tau card it is the Ix69 parameters groups.

Q80 How do settings like ACCEL, DECEL, ARCFACTOR, PROPROX, INTEGX, DERIVX, GEARX, BLIMITX, FLIMITX and TOLERANCE in the CNCSETUP.

Answer

EXE program affect the present settings on my motion card? We use the same methods you use to set all the settings to the same stored parameters on the card. Therefore, the stored parameters are overwritten. Our goal is to directly set as many parameters to the motion card as necessary so you do not have to learn how. If you are happy with the previous parameters stored on the card, write them down or call the motion card company to ask them how to save them on disk. The CNCSETUP.EXE program values for settings like ACCEL, DECEL, PROPROX, INTEGX and DERIVX are the same numeric values that are stored on the motion card itself. They can be interchanged between the CNCSETUP.EXE program and the motion card’s parameters. Although some cards are not that easy, they can come with a wide range of defaulted parameter settings. There is no way for us to tell you what still needs to be set or changed. We advise you to review all the settings after the control is initialized to see what was not covered by the originally stored motion card settings. These type of motion cards, however versatile, will require you to review and coordinate additional parameters since the default settings the card came with or was downloaded with can be unpredictable.

Q81 How are the RATIO and GEAR settings in the CNCSETUP.

Answer

EXE program affected if I have quadrature encoders? The RATIO settings for each axis are really how many encoder counts it will take to move 1 inch or 1 millimeter. The GEAR setting is the gear ratio multiplier in inches after it figures the encoders counts per inch. Thus a GEAR setting of 2 doubles the counts in the RATIO setting. The GEAR setting is determined by knowing if the encoders are mounted at the end of the ball screw or if they are mounted on the motors, which go through a gearbox first. You may keep the GEAR setting to 1 or negative 1 (-1) and just adjust the RATIO setting to a value that moves the axis one inch. This setting has no effect if the encoders are quadrature types. However, if you have a 500 count per revolution quadrature encoder, these really send four times the counts they say.

Q82 Does the HOME setting in the CNCSETUP.

Answer

EXE program mean the physical position of the system at power up? Yes, but only if the SAVEPOSITION setting in the CNCSETUP.EXE program is set to TRUE. In this case the motion card is told that the present location of the axis is now set at the values saved in the HOME settings. Caution, if SAVEPOSITION=TRUE, then the HOME settings get overwritten each time you gracefully exit the control with the last position the table was at. This is a poor mans way to avoid a homing sequence ritual each time the machine powers up. If SAVEPOSITION=FALSE, then the HOME settings have no meaning at all.

Q83 What are the BLIMITX and FLIMITX settings for exactly?

Answer

These are software limit positions for the two ends of each axis. The F is for the forward traveling end limit and the B is for the backward traveling limit. We wish we could tell you X+, X-, Y+, Y-, Z+ and Z- but we cannot since you could change the wiring polarity or GEAR settings to negative. Instead, the motion card companies use general generic terms. The values here are in inches and relate to the actual travel limits of your table from the MACHZERO home location. Therefore, if you command a negative X-88.000 inch move and the BLIMITX was set to negative -70.000, then when the travel starts moving and passes the -70.000 position, the motion stops. We are assuming that the physical limit switch is broken or else it would have stopped it. Some motion cards must have a non-zero value before they are activated. A zero value disables software limits. On other cards you must set a large negative and positive value to disable the software limits. Please, check your motion card manual. If you are concerned about hitting the software limit when powering up in the middle of the table before doing your homing routine, then just set SAVEPOSITION=TRUE in the CNCSETUP.EXE program. This will preset the card upon power up to realistic table positions before you do a homing routine.

Q84 What if I have no home switches or even over travel limit switches?

Answer

Well, we do highly recommend the use of over travel limit switches. Homing switches are not so important. Set SAVEPOSITION=TRUE in the CNCSETUP.EXE program and the machine will not have to be homed every day. It may accumulate an error after time. However, most companies home each part by a G92 function or create a Home button for the operator to press once he indicated the part in with an edge finder or trammed a tooling hole. If you ever loose home, then you could make a button on the screen that the operator could press to tell it the MACHZERO home position. You could also go to the tool parameter window in the controller to force the MACHZERO home position and then exit the control, thus updating and saving the last good position to the CNCSETUP.EXE program.

Q85 What does the TOLERANCE setting in the CNCSETUP.

Answer

EXE program really do? It is not the deadband setting or following error on the motion card. Rather, it sets the overall tolerance factor the controller uses to satisfy a number of positioning and math functions internally. When the control reads the current axes position to see if the commanded position has been reached, it must satisfy the given target position within this tolerance before it goes onto the next move. For instance, this value would vary if you used the control in metric mode.

Q86 Do you initialize all the card parameters upon startup?

Answer

No we do not initialize all of them, but quite a few. There is more than one kind of board reset; we only do a partial board parameter reset. The best way to tell you to be sure is to check the on-board parameters before and after. If there are any we are resetting, you can override this by entering the parameters in the STARTUP.FIL file using the COMMAND logic feature we have.

Q87 How do the controller software files (INPUTIO.

Answer

FIL, etc.) access each I/O? Remember, there are fixed places on the terminal strip for Home, Over travel limits and the 8 inputs and 8 outputs that come standard with the card. Therefore, there can only be one choice for the software to use. The I/O number you use with the # sign in the logic is selected by you in the CNCSETUP.EXE program. All the extra digital I/O points beyond the 8 inputs and 8 outputs the card comes standard with, depending on the motion card, are only accessed by a certain OPTO 22 board. See the CNCSETUP.EXE program to assign I/O numbers to each I/O point. For example, the IOFLIMITX=11 setting in the CNCSETUP.EXE program would mean that you wanted to call the Forward over travel limit switch for the X axis #11 whenever referring to it with logic. That is all… it is always going to be the Forward over travel limit switch I/O point. IOINPUTBEG=34 tells the control that the 8 inputs will be referred to as #34, #35, #36, #37, #38, #39, #40 and #41. Hence, IOINPUTBEG=34 means you are beginning the general purpose I/O at #34. For efficiency, the most important thing to keep in mind is the order in which I/O is triggered and acted on. Example: Put important I/O functions near the top of the INPUTIO.FIL file. Then, make an IF THEN GOTO list near the top of the INPUTIO.FIL file that jump over unnecessary logic to go right to the section of logic that is required when that particular I/O is tripped. This makes the system run smoother and not waste time processing logic that is not needed for that event.

Q88 How does a lathe use the Z and X axis and not X,Y,Z in the control?

Answer

Remember something important, we say X,Y,Z and so on but we really do this so that most people can relate. This really means motors 1,2,3. So your Z is our X (motor 1) and your X is our Y (Motor 2) and encoder 3 is read by the logic command READOUT3 \3. This means the position of encoder 3 is stored in variable \3. If you have a lathe, remember to set AS3000 to LATHE mode and restore the provided CBK file.

Q89 How do you clear or reset the axes to zero?

Answer

There are one of two ways depending if you want the machine zero position or the job home position reset. To reset the machine zero in your program issue a G92 X0 Y0 Z0. Also, the XYZ values in G92 may be set to any coordinates to reset the axes to any position. To reset the work piece create a button on the screen that calls an M code that has the logic command HOME…. you can also preset any of the axes individually by making buttons on the screen for each axis and calling an M code that has the logic HOMEX 0. This example sets only the X axis to zero and the other axes remain unchanged. MACHZERO is the machine zero position that relates to the tool change location coordinates and homing routines while HOMEX, HOMEY, HOMEZ is the job or work piece home position all the XYZ moves in your program are taken from.

Q90 I get an OVERFLOW error and it kicks me out.

Answer

What causes this? The control is being told by Windows that a math calculation resulted in a value that is greater than the computer can handle. Perhaps it is a setting incorrectly given in the CNCSETUP.EXE program that causes a math calculation to result in a very large number. Look at your settings for RATIO, GEAR and FINETUNE.

Q91 We do not need to use the AUXILIARY I/O board, what should we do?

Answer

In the CNCSETSUP.EXE program set: AUXCARDTYPE= 0

Q92 I get a MAINTENANCE REMINDER message when I start.

Answer

What is this? These are example maintenance reminders that we put in. You can reset or reconfigure these messages using the MAINT/DIAGNOSTIC Icon. As a user, you simply acknowledge the message.

Q93 Why doesn't the Z go to depth with the X and Y axes on the first move?

Answer

This is just a procedure setup in your post processor. Either you or we can configure your post to do almost anything you want in any order. Just edit the post you used to create the G code program within the AS3000 File Manager or we can do it for you. You also may have a tool height offset in effect. Check your tool parameter screen.

Q94 Are the LINE NUMBERs in the program needed?

Answer

Using line numbers in your program are optional. You can suppress the line number counting by setting [LINENUM] VISIBLE=FALSE in the Design Interface feature in the CNCSETUP.EXE program. You can also change your post so that it will not create line numbers by removing the Nn in each line in the post itself and it will not write line numbers at all.

Q95 My Z axis is off by.

Answer

05. Where do I set the axis offsets?

Q96 Does encoder counts per second equal stepper motor counts per second?

Answer

No! The encoders read between 200 – 6000 counts per revolution and the stepper motors can step between 200 – 32000 steps per revolution. Neither of these relate to time.

Q97 Why does the machine go off to some random position after E-STOP?

Answer

We all agree that the control should not move off to nowhere randomly. This should never happen. It may have to do with the abort procedures of the ESC key verses the E-STOP button you have set up and also a third factor (Abort input wiring) on the motion control card itself for emergency stop situations. 1. There is a wire provided on the motion control card that you should have directly connected from the motion control card to multiple emergency stop buttons that will signal the motion card to stop all motion, despite what the computer is doing. 2. There should be a digital input connected to an E-STOP button held closed – meaning that the voltage is on completing the circuit. This should be connected to the same emergency stop buttons that when pressed, opens or breaks the circuit to the input. In the INPUTIO.FIL file there should be logic to stop all motion. See QUESTION 67 to understand how to do this. Both methods 1 and 2 need to be applied so that the control will first safely stop and then reset its current location so that it knows where it is and does not try to finish the move it was doing. 3. You can press the ESC key while in motion and the control will come to a safe stop and ask you to either abort or resume the current move it was trying to make. This method is recommended to be used in conjunction with the first two methods and not in lieu of them. The basic reason is that you cannot reach the ESC key conveniently all the time and also the ESC key will only work if the computer is functioning properly.

Q98 How do you write logic to sense and set the digital I/O?

Answer

First we will explain the digital I/O states and their terms. An input is a digital I/O that detects an open or closed circuit while a digital output is something that sets the circuit closed or opened. Open actually is the same as broken or off circuit while closed means an on or completed circuit. You can turn electrical devices on or off with a digital output in CamSoft by using the device number you set in the CNCSETUP.EXE program with a zero or a one. Zero is off and one is on. For example, in the CNCSETUP.EXE program let's say you set your digital outputs to begin at number 26. Let's also say you wired a coolant motor to the first output numbered as 26. If you want to turn the coolant motor on, you write logic #26=1. If you want to turn it off, you write #26=0. If you want to detect an input device that is on or off, you write IF #26=1 THEN… REMEMBER you cannot change a state of an input. Inputs are read only! There are several files you could write logic in. The logic in each of these files only gets executed under certain events for speed and organizational reasons. STARTUP.FIL file only gets executed when the control powers up and before the operator can use the CNC interface. LIMITS.FIL file only gets executed if a digital I/O is assigned to a limit switch in the CNCSETUP.EXE program and that I/O changes states from on to off or vice versa. INPUTIO.FIL file only gets executed if an uncommitted digital I/O is assigned for general purposes in the CNCSETUP.EXE program and that I/O changes states from on to off or vice versa. The INPUTIO.FIL file covers all I/O except limit switches. MACRO.FIL file is where you can check for and set any digital I/O either on or off on an individual basis per program code. GCODE.FIL file is where you can check for and set any digital I/O either on or off on an individual basis per G code. MCODE.FIL file is where you can check for and set any digital I/O either on or off on an individual basis. There are 199 M codes to give you room to create subroutines for buttons and other controls. You cannot call another M code from within an M code routine. However, you can call multiple M codes in a single line of your program. M codes in a line of code with X,Y,Z movements get executed simultaneously with the moves. Therefore, if you need to make sure an M code happens before the X,Y,Z moves, place the M code on a line by itself before the X,Y,Z line in your program. SHUTDOWN.FIL file only gets executed when the control powers down after the operator losses control by exiting the interface. You must exit the CNC operator screen gracefully by pressing the ESC key or using the END logic command. JOG.FIL, ESTOP.FIL and SOFTLIMITS.FIL files are some other files but these files usually react to an I/O event.

Q99 How does ACCEL and DECEL work?

Answer

First, you have to understand that the ACCEL and DECEL rates set inside the CNCSETUP.EXE program control the rate of ramp up feedrate and ramp down. These values are in encoder counts per second squared and are steps per second squared for stepper motors. This means that for every one second of time that goes by, the value you entered will move the motor that many counts and for every second after that, the figure will be calculated by its square. The RAPIDSPEED setting in the CNCSETUP.EXE program will set the limit for the largest ACCEL rate despite the value you entered for ACCEL. This is very important because an ACCEL value of 16000 and a RAPIDSPEED value of 2048 will limit and hold back the true ACCEL to only 2048 not 16000 as you entered. Also, if you set the ACCEL value to 16000 and set the RAPIDSPEED value to 20000, this effectively would give very little ramp up range thus instantly throwing the control from a dead stop to full speed. This means that in less than a second it reaches maximum speed. If you need to set the RAPIDSPEED to a low figure because your machine cannot move very fast mechanically, then you need to consider a quadrature encoder with more lines of resolution per revolution when using servo motors. If you have stepper motor drives, then get a microstepping unit to give you more range. Caution and good programming practices have to be employed in the GCODE.FIL file and the user's G Code programs. A common occurrence is that the velocity (feedrate) bleeds or carries over from one move to the next. If you were in rapid mode and used a G01 with a feedrate of F20, it takes time to make the transition and slow down. The only way to avoid this is to place a DECELSTOP command on the line before RAPID above G0 in the GCODE.FIL file or use G10 instead of G01, which decels to a stop first.

Q100 Can we change a message or display a message on the screen?

Answer

We added new parameters to the LABEL logic command for color and visibility. EXAMPLE: LABEL1 Hello world;12;TRUE Valid label controls are LABEL1 or LABEL2 or LABEL3. The first parameter is the caption the label will display. The second parameter is the color number. Color range is 0-15. The third parameter is either TRUE or FALSE, which allows you to turn the message on or off. As an alternative, there is also a MESSAGE command.

Q101 How can I correct for ball screw backlash, lost motion?

Answer

This depends if you have servo or stepper motors. There are seven pieces of advice we can give you. For servo motors, all seven issues can be solutions. For stepper motors, answers 1 and 2 do not apply. Use linear scales instead of rotary encoders. This reports back the true position of the axes whereas servo motors will continue to strive to reach the target position. Move the encoders to the end of the ball screw itself skipping the gearbox, pulleys or belts. Use zero backlash gearboxes. Re-home the machine after each part to reduce as much accumulative error as possible. Backlash results from a combination of electrical and mechanical reasons. It is our best advice to have someone that knows take a look at the machine itself. There are more possibilities beyond what we have offered to solve this problem. Use the BACKLASH settings in the CNCSETUP.EXE program. Refer to the BACKLASH parameter settings for the control to automatically compensate for backlash. However, this should be your last resort because it is time consuming and will slow down the control's overall speed. Also, this will actually add and subtract the backlash amount to your programmed moves. We definitely believe that something more than just the BACKLASH setting should be done for lead screws. While this feature will remove the backlash in small amounts or even do so with larger amounts, anything more than.001 (.025mm) will show a witness mark in the part as the cutter relaxes. If you have lead screws rather than ball screws, you would use two bronze feed nuts or specially made lead screw mounts that have opposing fingers to reduce backlash by tightening them, which removes the slop. Be careful using the term "Linear Transducers" because transducers send a crude analog signal whereas a digital linear scale is very accurate. Back Lash Setting, Usage and Symptoms (A) When homing, you must make a move in either the positive or negative direction of travel in an amount to be sure you have removed the physical slop in the nut or pinion. Basically, you want the axis in a rested location that has no air or slop if the next move is to be made in that same direction. Then issue MACHZERO as your last statement in the homing routine. In CNCSETUP, click on the DESINTATION CONTROL button and then click on the button next to both USE BACKLASH and BACKLASH 1 to see full instructions for setting up and entering the correct values of either the value 1 or -1 or else positive or negative direction. (B) After homing, the first move or second move is not correct. If you see an error in the readout and/or the physical distance is not correct, then most likely you have not correctly set up the settings under USE BACKLASH and/or BACKLASH 1 through 8. In CNCSETUP, click on the DESINTATION CONTROL button and then click on the button next to USE BACKLASH and/or BACKLASH 1 to see full instructions. (C) If you keep making moves in the same direction, but each time the error in the readout and/or the physical distance is getting worse, then the RATIO setting is wrong. It is not the back lash settings. (D) If you make many moves that reverse direction on each move each time a move is made and the error in the readout and/or the physical distance is getting worse, then the back lash amount you have entered for this axis is not the real back lash amount needed. It may be over compensating or under- compensating on each move each time it reverses direction.

Q102 Where do you connect the Digital I/O wires?

Answer

First, you should understand that there is more than one choice when it comes to digital I/O. However, all methods include the original motion card's I/O. This is common to all choices. The choices come in four forms. The parameter for these choices is AUXCARDTYPE=0 and can be set using the CNCSETUP.EXE program. The AUXCARDTYPE=0 was added to give the user a choice in digital I/O card types. You should first decide if you wish to use either a TTL or Relay card. Here's the tradeoff. While both types are optically isolated signals, the TTL method is cheap and this card gives you 120 TTL I/O points plus the motion card's original 24 or 32 extra. However, TTL is for low voltage on and off signals like those of limit switches and light bulbs. On the other hand, while the Relay method cost a little more, it can provide high voltage on and off signals up to 110 volts. Very high voltage or amperage should be done with external devices. These are a few of the card choices and are set as follows: AUXCARDTYPE=0 'No card installed. AUXCARDTYPE=1 'A single 32 point relay rack. AUXCARDTYPE=2 'Dual 32 point relay racks for a total of 64. AUXCARDTYPE=3 '120 TTL Opto 22 card (72 inputs, 48 outputs). AUXCARDTYPE=4 '120 TTL Opto 22 card (48 inputs, 72 outputs). AUXCARDTYPE=5 '120 TTL Opto 22 card (96 inputs, 24 outputs). NOTE: If the AUXCARDTYPE is set to a negative value, it will perform reverse logic where ON is OFF and OFF is ON. The cards cannot be combined. Remember you still add the motion card's original 24 or 32 I/O to these cards. Also, the relays themselves cost about $9-$11 each. They each have a fuse and a "let you know it's working light." These can be replaced individually if they fail. For example, on a 32-position relay rack, place the inputs on terminal numbers marked 0-15 and the outputs on terminals marked 16-32. The numbers are marked on the inside row. Also apply the desired voltage to the black +/- terminal. The 120 I/O TTL card supplies its own 5 volts from the computer to the terminal strip.

Q103 My homing routine does not work.

Answer

Could it be blowing by the home switch? Keep the homing feedrate slow to get a consistent home position. If the table is traveling too fast, it may blow by any type of limit or proximity switch and the logic you programmed to stop happens too late. Some of the common remedies are: a. Place a SUSPEND BYPASS command just before the MACHGO command when moving toward any limit switch for homing, tool changes or locating purposes. The SUSPEND BYPASS command tells the control to skip the normal in-position checking routine for the next MACHGO or GO command thus allowing the next logic command to execute immediately without delay. If the next command happens to be a WAITUNTIL #1=0 command, then it will wait for the limit switch to change states to zero. The WAITUNTIL command is far tighter with less things to do than the MACHGO or GO commands are and, therefore, react faster. b. Do not forget to put logic in the LIMITS.FIL and/or INPUTIO.FIL files to STOP all motion if a limit or home switch gets hit. Also, if doing a motion, put a STOP command after the WAITUNTIL command. c. CPU and hard disk access speed could play a role in how fast the control executes the response to a limit switch. d. You may directly use native motion card commands for homing or reacting to any limit switch. Place the word COMMAND with a space and then give the native motion card command in any logic file. The SUSPEND command can be issued by itself to suppress all control reactions to the digital I/O and encoders in order for you to process native motion card commands thus preventing a conflict between the control and motion card reacting to the same I/O. To discontinue the SUSPEND command, enter RESUME. There are three new parameters to place after the SUSPEND command. They are: BYPASS, DISABLE and RESPOND. BYPASS skips the normal handling of graphic updates, in- position confirmation and I/O handling for the next MACHGO or GO commands. Another SUSPEND BYPASS command would be needed for the next move since it is only good for one time. The DISABLE parameter stops digital inputs and encoder processing until a RESUME command is issued. The RESPOND parameter stops all reactions of the control to all digital I/O. The SUSPEND command by itself without any parameters does all three. e. The digital I/O is set opposite or backwards. Remember that 0=Off or gray (Open circuit) and 1=On or green (Closed circuit). A limit switch is traditionally held closed all the time until something presses on it to open the circuit or break it. f. The DECEL rate may be set too slow. For example: WAITUNTIL #1=1:STOP Once switch #1 is hit and a STOP is issued, it will slow down at the rate of DECEL to a stop. If DECEL is set low, it will coast a bit further. You can always set DECEL at the top of your logic to a higher stopping rate and then at the end of your routine set it back low.

Q104 The tool path finish seems fine at slow feedrates but why is it course or jerky at faster feedrates?

Answer

This is usually a result of only four things: (1) mass and momentum, (2) mechanical gears or ball screws, (3) servo tuning or stepper smoothing or (4) the settings in the CNCSETUP.EXE program. ARCFACTOR is a value from 1-300 that defines the smoothness of an arc. The larger the value, the smoother the arc, which does increase the time to cut an arc. NEXTMOVE is a distance the user sets from the target position that when reached, tells the control to issue the next command. The control will, of course, finish the current move but the advantage is that the next move will be ready to go as soon as the target position is reached. The downside is that the G code windows and graphics will be updated early. SLOWDOWN is a percentage of the originally programmed feedrate to slow down to as soon as the cutter is within the NEXTMOVE distance from the target position. If set to less than 100, a slow down will occur. Nothing changes if the SLOWDOWN value is 100. BLEND is like an exact stop feature. The value is in millisecond units. A value less than zero will not cause the machine to delay between moves if the NEXTMOVE distance is greater than zero. A BLEND value greater than or equal to zero will cause the control to stop for the number of milliseconds specified at the target position before going onto the next position. We also have a G8-G9, G61-64 G code and a SMOOTH command to ensure smoother block-to-block cutting motions.

Q105 How come the machine does not move the first time I tell it to?

Answer

This is a common issue with certain motion cards' internal settings. It may not have every condition set just right to allow it to move. You can force this by placing the PREP command on a line just before the first MACHGO or GO in the STARTUP.FIL file. After this the PREP command is not needed anymore.

Q106 How do I get off a limit switch and resume cutting?

Answer

Remember, if you hit a limit switch, it will trigger the LIMITS.FIL file to execute all the listed commands, which usually stops all motion. Simply jog off the limit switch by jogging or moving in the opposite direction only. All other jogging or motion will trip the limit switches. IT WILL ONLY ALLOW travel in the OPPOSITE DIRECTION. If you keep trying to travel in the same direction that is moving further toward the over travel limit switch, it will give an error message. If you cannot JOG in the OPPOSITE direction, you may have the Forward and Back Limit switches reversed and may have to swap the wires labeled RLS# and FLS# – where the # is the axis letter X, Y, Z, etc.

Q107 If we have a rotary table, how do I convert degrees into encoder counts?

Answer

For example, if one revolution of the table was 2000 encoder counts, then use the following formula to set the RATIO parameter in the CNCSETUP.EXE program for that axis: one degree=encoder counts/360. Be sure to set this axis to degrees under the Motion Settings in the CNCSETUP.EXE program.

Q108 How do you tune the servo motors?

Answer

If you are having trouble servo tuning and you have Velocity mode servo drives, refer to QUESTION 321. This is a very hard concept to explain and best done by someone with experience. Think of servo tuning as an art or science, like a piano tuner. This is a very important subject. Please, ignore this section if you have stepper motors since it does not apply. If your servos are not tuned correctly, then the machine could drift, run away, be unstable, make a buzzing sound, oscillate, not stay in-position, be jerky, produce following error, not move and become inaccurate. The best advice we can give you comes in three forms as follows: Refer to the Basic Servo Tuning feature in Diagnostics. You can also directly purchase low-cost, automatic servo tuning software from the card manufacturers and dealers. The dealers that sell and distribute the motion cards have people that can do this for you in a few hours. Use the Amp Tuning Feature first. We want to force the user to have amp drives properly set up before we begin servo tuning, even though it could be less sensitive while testing, and continue to tune in order to recommend PID values that might work. In the case where the amps are not tuned, the PID values would be fighting the motor drifting or oscillating all the time. If the power goes off or the machine is in E-STOP with the SETESTOP set at RELEASE, then the motor would fall under gravity, drift the axis away or vibrate the table. If the amps are not correctly tuned, servo tuning will display a message and will not allow servo tuning to continue.

Q109 How does the S code in my program get converted to spindle speed?

Answer

A variable speed spindle or chuck gets converted to a varying voltage. You want to output the voltage to one of the unused axes, usually the last axis (for instance: the 4th axis of a 3 axis machine tool). Be sure you set the SPINDLE parameter in the CNCSETUP.EXE program to tell the system which axis the spindle is connected to. Also refer to the SPEEDPOT parameter to connect a physical rotary knob to automatically control the spindle speed. (Refer to Question 116.) Consider that the motion card axis outputs are nothing more than a plus or minus 10 volt DAC (digital-to-analog converter). This is also what a spindle drive accepts. Here is what happens internally. The S code in your program is multiplied by the value in variable SPEED= which you set in the CNCSETUP.EXE program. The value in the variable SPEED can also automatically change when the position of the slider bar on the screen is moved if you have included the word SPEED in the caption of a slider bar. For instance, there are three slider bars that can be defined using the Design Interface feature in the CNCSETUP.EXE program [ANALOG1], [ANALOG2] and [ANALOG3] under which you will see a VARNUM=. This is the variable that stores the position of the slider bar. The variable will contain a percentage from 0-150% and the S code will be automatically multiplied by this percentage. The result is a voltage output to the axis number specified in the ANALOG parameter in the CNCSETUP.EXE program. Here are the things to do to automatically handle the entire spindle speed issue. 1. Assign a variable to SPEED= in the CNCSETUP.EXE program. Example: SPEED=74 2. Also in the Design Interface feature for either the [ANALOG1], [ANALOG2] or [ANALOG3], assign the same variable number to VARNUM= as you did to SPEED=. Example: VARNUM=74 3. Assign the axis number you want to use to ANALOG= in the CNCSETUP.EXE program. Remember to match the ANALOG#= to the spindle axis number. Example: ANALOG2=4 4. The RAPIDSPEED parameter in the CNCSETUP.EXE program must contain the maximum or highest spindle RPM the spindle can spin. Example: RAPIDSPEED4=7000 5. Use the Spindle Test feature in Diagnostics to find the proper settings. Remember that all the above information has already been set by default for you!

Q110 How do I read ANALOG inputs?

Answer

Use either of the logic commands ANALOG4, ANALOG5 or ANALOG6 to read the voltage directly from the terminals AN4, AN5 or AN6 as marked on the terminal strip. The voltage will be stored in the variable given. EXAMPLE: ANALOG4 /30

Q111 How do I setup a lathe to do threading?

Answer

The best way is to have an encoder as well as a servo motor control the spindle. There is a way to crudely do threading while monitoring the RPM of the spindle on a D/C or A/C spindle motor but we do not recommend this method. The principle behind threading on a lathe is to precisely time the Z- axis motion so that it completes one thread pitch at the exact same time that the C axis completes one revolution of the spindle. To do this, we will assume that the first axis on your machine is Z (RATIOX), your second axis is X (RATIOY), and your third axis is C (RATIOZ). Set the RATIOZ setting in the CNCSETUP.EXE program equal to the number of counts there are in one revolution, not to the number of counts there are in one inch of travel. For example; to cut a 1 inch long thread with 12 threads per inch at a diameter of.75, you would program this line of G code: G1 Z-1 X.75 C12 (where C is your spindle axes). This moves the threading tool, from right to left, one inch at a diameter of.75 while forcing the C axis to revolve 12 times, making 12 threads in one inch. Remember, the C value is the number of threads PER INCH, additional math will need to be applied if the move is not 1". In AS3000 Level-10, you can use the THREAD-O.UTL or THREAD-I.UTL utility to create fully automatic threading cycles like those found on a FANUC control. Otherwise, you will be limited to a single point thread and have to program in any additional chase threads. Also see the logic for G113 and G114 in the G CODE PROGRAMMING section of this manual. You will find multiple sections and pages devoted to threading topics. All work with different motion & I/O hardware. This is based on what there is to work with on each machine to achieve varying degrees of threading RPMs. In summary, there are five threading methods: (1) The VIRTINDEX command, (2) I/O Triggering, (3) On-Board native logic, (4) Pulse marker device and (5) Servo threading. For more information, use “Search for Solutions” and do a keyword search on "THREAD". Also see Question Nos. 113, 122, 144, 168, 256 and 275.

Q112 Why does my machine not decel properly?

Answer

Incorrect ACCEL values can cause the machine to take too long to ramp up to full speed and incorrect DECEL values can take too long for the machine to slow down to the newly commanded change in feedrate. DECEL and ACCEL values are the number of counts to decelerate or accelerate the axis for every second of elapsed time. The ACCEL value is the number of counts per second squared that accumulate after the motion begins. For each second of time that goes by, the machine will increase its feedrate by the ACCEL value until it has reached its commanded feedrate. The DECEL value is the number of counts per second squared that slows down the motion as the travel comes to a stop. For each second of time that goes by, the machine will decrease its speed until it has reached a stop or the next commanded feedrate. As you can see, this can cause problems with small distance movements. If the distance of travel is too small and the ACCEL value is set too low, the machine cannot properly accelerate up to speed prior to finishing the move. Conversely, if the move is too short and the DECEL value is set too low at the end of motion, the machine cannot properly decelerate prior to reaching the end as there is not enough "time." If you are in a rapid travel and the next move is entered with a low feedrate, the time it will take to slow down from the rapid move is based on the DECEL value. If you are traveling at a low feedrate and the next move is entered as a rapid move, then the time it will take to reach rapid speed is based on the ACCEL value. Unless logic is written otherwise, only the first move of a profile or contour is accelerated and only the last move will decel. If there is no change in feedrate throughout the program, there will be no change in velocity, thus, no acceleration or deceleration with exception of the first and last moves. By default the GCODE.FIL file commands all positions to a canned cycle drilled hole with decel. The drilled hole itself is not decelerated. If you wish to force a decelerated move, then the GCODE.FIL file, by default, has G10 code to use in place of the G01 code to assist you. For example, enter G10 X10 Y10. Also see the DECELSTOP command in the LOGIC LANGUAGE REFERENCE GUIDE section of this manual. By default the system is setup to run the G1, G2, G3 cutter path in constant velocity mode. Under normal circumstances a smoother cutting path is desired that does not slow down speed or stop on each move. However, we are going to show you a few solutions for overriding constant velocity mode. To better understand how the ACCEL, DECEL works, by default, these rates are only applied when the machine either takes off, rapid traverses, transitions from one feedrate to another, DECELSTOP is used or when the path comes to the end. During cutting of the path it runs smoothly at the feedrate you programmed. Something to consider if you choose to override constant velocity mode is that for a lathe these settings will come into play with the feedrates that are calculated by IPR and Constant Surface Feed modes when they are all enabled together. Go through the following possible solutions: (1) You can selectively choose when to accel/decel without overriding constant velocity mode only when it is needed by adding a G11 to the beginning of any G code line to decel and then accel at the rates in the CNC SETUP program. Higher ACCEL/DECEL rates work best to keep the machine snappy during the ramp down and ramp up. (2) Use the NEXTMOVE, SLOWDOWN setting in CNCSETUP under DESTINATION CONTROL. (3) In the GCODE.FIL file in G1 add DECELSTOP on the line before the GO command. This will ramp down and ramp up on every move with the same effect as G11 but without you adding a G11 to the G code line. (4) Most CAD/CAM systems already have post processor settings for making intelligent decisions on when best to ramp up and down and also by how much on only the moves the CAD/CAM system and user settings permit. The end result will be that the G code program itself uses feedrate control that is read by the control interactively while cutting. (5) Add the logic macros in G1 or G2 G3 that can determine the upcoming radius size or angle of cut. Then, based on what range the returned values are, the user can decide what to do interactively. (6) Consider the SmartPath feature. There is a chapter in the CNC Professional manual about SmartPath. (7) For more details use Search for Solutions on Question Nos. 99, 134 and 201.

Q113 How do I get encoder information from my lathe spindle so that I can create threading cycles?

Answer

Usually, an axis motor will have an associated encoder that can be connected to the motion control card along with the +/- 10VDC motor I/O control. There are, however, some system configurations where the spindle motor is not servo. In this case, the user needs to connect the encoder leads for that axis to the auxiliary encoder connectors. Also, make sure that the auxiliary encoder cable has been properly connected to the motion control card and the interfacing terminal contact board (if your motion control card did not come with this auxiliary cable, you may contact CamSoft or your dealer to obtain one). If your system uses stepper motors, then encoders may be connected to the auxiliary encoder connections without interfering with normal motion operations and no additional cabling would be required. Use the Spindle Test feature in Diagnostics to have the system recommend the proper settings for your machine.

Q114 I gave the machine a feedrate but the table doesn't seem to move at that rate?

Answer

(1) First you have to determine why the feedrate is inaccurate. It is either only one of two scenarios. Most likely the problem is that the number of encoder counts or steps for each axis being moved are not consistent or equal with one another. Check your RATIO parameter settings in the CNCSETUP.EXE program. Only compare the RATIO values on the axes you specified in the AXIS parameter setting. The total number of axes or any axis defined above the number specified by the AXIS parameter setting does not matter. Those axes move independently and are not coordinated together. If the RATIO values are not the same, read answer number (1) below. If your RATIO values are of equal values, then the only other possibility is that the encoder is mounted to the back of the motor or some place that does not represent the actual table position. Therefore, the inaccurate feedrate is caused by some gearing or a non 1-to-1 ballscrew ratio increasing or decreasing the amount of actual table travel by some percentage or scale factor. If the RATIO values are equal, then read answer number (2) below. (1) Having a different number of encoder counts per axis is causing the axis with the largest value to move faster over the same amount of time as the others. For instance, let's say we have to move 10 inches in both X and Y at a feedrate of 10 inches per minute (IPM). We used RATIOX=10000 encoder counts per inch and the Y axis as RATIOY=5000 because it only needed 5000 counts to move one inch. In the interest of position accuracy and keeping both axes coordinated in a straight line while moving to the target position, the controller must tell the motion card to move X 100,000 counts and Y 50,000 counts. The controller must also be told the velocity of each axis so that both axes arrive at the target position at the exact same time. The counts per inch are what matters most to arrive at the target position together. Therefore, the trade off is that the number of counts given over the same amount of time will differ when the RATIO values of all the coordinated axes are not equal. As in our example, the X velocity was told to travel at 100,000 counts per minute while the Y velocity only needs 50,000 counts per minute to arrive there at the same time. If these velocities were not given as such, then the Y axis would arrive at the target position first before the X and you would not have cut a straight line. All moves, no matter how small or long without regard to the fact that one of the axes need not even move at all, are always calculated as coordinated moves together. The effect is more drastic when one of the axes only moves a small distance or no distance at all and the other a longer distance. There are no parameter settings or logic that can overcome a physical/mechanical situation like this. The only solution is to design a system or install gearboxes that require all coordinated axes on the machine use an equal number of encoder counts. There is also another method that is not recommended because of possible unwanted side effects in accel and decel. Please refer to the [FEEDRATE ADJUST] macro for a logic example that you could use. You may adjust or override the accel and decel rates per G code or position move and also adjust the FEEDRATE accordingly to result in the desired velocity, but this method is advised to be viewed as a temporary solution. (2) Since the encoder is measuring before the gearing or leadscrew, you can either mount the encoder after the gearing or leadscrew or as close to the table travel as possible even if you have to use linear glass scales. The only alternative is to set the FEED parameter setting in the CNCSETUP.EXE program to an unused variable and then give that variable in the STARTUP.FIL file the correct percentage that would reflect an accurate feedrate. For example, if the table travel was moving twice as fast as it should, enter \73=50. If it was moving half as fast, then enter 200 as the percentage value: \73=200. The drawback is you cannot use the on-screen slider bar control for feedrate override but you can use a FEEDPOT knob since this would not affect the percentage value in the FEED variable. Explanation of the Solution In essence, if you are willing to consider changing the parameter settings on your micro stepping drive to a different micro step, or if you have physical encoders changing the gearing ratio or the encoder itself to a closer PPR (pulse per rev) to the other motors, then you can skip the advice below, your problem is solved. When it appears that the feedrate (Velocity) is only correct when a single axis is being positioned but the same axis is not correct when making a move in combination with others axes, then ask yourself if the axis you are observing changes velocity when the other axis it is moving in conjunction with travels a further or shorter distance. If the answer is shorter, then the explanation is that the velocity of the other axis is the one traveling at the full velocity speed because it has a further distance to travel, while the axis you are observing must travel slower in order to arrive at the target position at the same time. Keep in mind that vector velocity is the path along which all the axes travel in combination along the vectored trajectory while the path and velocity of a single axis in motion is always isolated from the rest and very easy to determine its speed visually. The important issue to remember is that the vector velocity along the path is true and correct, even though it does not appear so. This is most apparent when linear axes measured in inches or mm and rotary axes measured in degrees are used together. Example 1: If the X axis is only commanded to travel 5 inches while the Y is commanded to travel 10 inches in the same move, both must reach the target position at the same time. The X axis must travel half the speed (Velocity) of the Y to arrive at the same time. To move in a straight, vectored line path is what is important. Example 2: If the X axis is only commanded to travel 5 inches while the A rotary axis is commanded to travel 90 degrees in the same move, both must reach the target position at the same time. The key factor here is to break down both axes travel distances into a common unit such as encoder counts or steps. If X only takes 5000 counts to get to the target and A requires 10000 counts to travel 90 degrees, then the X axis must travel half the speed (Velocity) of the A to arrive at the same time. Therefore, the X velocity is scaled back to arrive at the target position together. To both begin and end motion at the same time is what is important. If the answer is further, then the explanation is that there may be a max limit or cap set on the RAPIDSPEED settings of one of the other axes restricting the velocity at which the machine can move. The velocity of the total axes system will only move as fast as the slowest axis. The travel speed will be set by the slowest axis in the coordinate system in spite of that axis being commanded. If this were not so, then the machine motion would constantly be accelerating and decelerating while making transitional velocity changes between moves. Therefore, the cutting speed is limited by the speed of the slowest axis in the coordinate system. RAPID moves are treated differently than feedrate controlled moves. Rapid moves are evaluated internally by the system. The travel speed will be set by the slowest axis commanded in a single RAPID command. Other settings that affect the outcome of velocity are FEEDPOT, SLOWDOWN, NEXTMOVE, ACCEL, DECEL, AXIS parameter, RAPIDSPEED, the FEED variable and the SMARTPATH feature. If these explanations make sense, then no further action need be taken since the system is operating as designed. However, if a solution is required by the user because it is too noticeable due to the mechanical design of the system, then here is the solution. Inside each G code that controls motion, such as G00, G01, G02, G03 and G10, use the ISTHERE command to determine which axes are being commanded to move at that time. Next, create IF THEN statements that will reset the RAPIDSPEED values as needed while scaling the velocity with the FEEDRATE command per G code move. The worst that could happen is that the commanded feedrate varies slightly during acceleration and deceleration between moves. A high ACCEL and DECEL setting will nullify this effect. The important issue is that the actual cutting motion is always cutting and following the correct path no matter what, even if you took no action or miscalculated velocity. Each system design and axis configuration is so different there would be endless methods required. Therefore, no one internal algorithm or logic example we could provide would do. A custom solution would be necessary. These suggestions are only programming methods to overcome the physical properties of the machine design itself. The true cure is to engineer an axes system with equal encoder counts or steps. (A) If you are using either servo motors that accept pulse and direction command signals or stepper motors using step and direction, then adjust the dip switches so the end result is the number of microsteps each axis uses will travel the same physical distance. The goal is to get the RATIO values in CamSoft of each axis in the coordinated axis group as close as possible to the same values. NOTE: Some drive brands set their microstep ratios using an LCD window, buttons and menus or they are set via a laptop that connects to the drive by a cable. (B) There are devices on the automation market that take the signals from your existing encoder and divide the resolution by any number between 1 and 4096. The goal is the same. Get the RATIO values in CamSoft of each axis in the coordinated axis group as close as possible to the same values. These devices are sometimes low-cost solutions. Be sure you select a model that uses all four connections A+, A-, B+, B-. (C) Short of changing the machine design, we can work with the motion card company to provide a quote for calculating the axes ratio directly on the board. Again, each machine design is different so a custom firmware change would have to be made per machine. (D) If the issue is mainly for tapping or threading, such as in a G84 or for a single axis move such as Z, then separate the Z axis from the other axes by making it an independent axis using the SETUP command and the N parameter then use the POSITION command to move Z. When you are done tapping or threading, you may put the Z axis back into the coordinated axes group in G80 using the SETUP command with the Y parameter. (E) From a machine design point of view, changing the gearing on the gearboxes, belts or ball screws or replacing the encoders themselves with proportional counts to the other axes, corrects this problem at the root. (F) There is a macro called [RATIO FIX] which may work. This works but is inefficient and you will need help customizing the math. There are some other troubleshooting questions in this manual that refer to this same subject and macro name for more details.

Q115 Can we do constant surface feed on a lathe?

Answer

Yes, refer to the logic command CONSTANTSF and the parameter setting CONSTANTSF=1. This will enable the control to calculate and vary the spindle speed based on the diameter of the part. Also see the logic for G96 and G97 in the G CODE PROGRAMMING section of this manual.

Q116 Can we use analog potentiometer knobs or dials for speed and feed overrides?

Answer

Yes, refer to the logic commands SPEEDPOT and FEEDPOT and the parameter settings SPEEDPOT=4 and FEEDPOT=74. This will enable the control to calculate and vary the spindle speed or feed rate based on the voltage returned by the potentiometers connected to the analog inputs. Remember that if you are using digital dials instead of analog, they work on sets of digital inputs, which we have also documented in this manual.

Q117 Can I use a handwheel to control jogging positions?

Answer

Yes, refer to the logic command HANDWHEEL and the parameter setting HANDWHEEL=4. You may connect the handwheel to any auxiliary encoder whose axis is not used for motion. The HANDWHEEL logic command will tell the software which axis you want to jog or move. Every time you spin the handwheel, that axis will move until you set HANDWHEEL to zero.

Q118 How do I implement a typical FANUC-style FEED HOLD button?

Answer

There are two methods. Use the FEEDHOLD logic command or set the feedrate to zero. (Refer to the Logic Language Reference Guide section in this manual.) To use the FEEDHOLD logic command, simply trap a digital I/O as shown below. This is nothing more than creating a physical button that will trigger a digital input to tell the software to set the feedrate or velocity to zero. When pressed again, the input would set the feedrate back to what it was so that motion can continue. A change in feedrate happens instantly. Therefore, if you write logic to set f=0 in the INPUTIO.FIL file for that digital input, then all motion stops on all axes instantly. Remember, you can be clever and tie in the cycle start button with the feed hold button by setting a user variable to 1 to tell if you pressed the FEEDHOLD button in the INPUTIO.FIL file. Then, when you press cycle start, you will know that feed hold was in use and that you are to only issue commands that restore the original feedrate instead of restarting the program at the beginning. Method 1: Example of using the FEEDHOLD logic command: IF#32=1THEN FEEDHOLD (press Cycle Start to resume). Method 2: Example of setting the feedrate to zero in the INPUTIO.FIL file to trap digital I/O #32 and #33: IF#32=1THEN \200=f:f=0 'this saves the original feedrate and stops motion. IF#33=1THEN f=\200 'restores the original feedrate and resumes motion.

Q119 How can I enlarge the axes readout displays or G code display windows?

Answer

The axes readout displays, G code windows and the main operator screen can be enlarged for easier viewing with one keystroke. Simply keep pressing the PAGE DOWN key to get focus on any of the windows and then press the PAGE UP key to enlarge the screen. Another press will shrink the screen back to normal size. When the screen enlarges, the font size of the displays will also enlarge. You can set the font enlargement size within the CNCSETUP.EXE program.

Q120 Does your control have a TEACH mode?

Answer

Yes, the control does have a TEACH mode. Refer to the TEACH logic command for details. This feature will enable you to record or save the current axis position to a file each time the TEACH command is given.

Q121 Can I use variables and/or do math in my G Code Program?

Answer

The controller does have the ability to store unlimited variable names. A legal variable name is a name that begins with any letter of the alphabet. To save a value to a variable in a G Code program, enclose the math and the variable name followed by an equal sign (=) inside curly braces {}. For example, to store 5.5 to the variable KEEPME: {KEEPME=5.5} For example, to do math to an existing X axis coordinate in a G Code line where X needs to have.75 added to its value, write the G Code line like this: N100 G01 X{5.5+.75} Y6.2 F30 For example, to add the value of a variable to an existing X axis coordinate in a G Code line, enter: N100 G01 X{5.5+KEEPME} Y6.2 F30 For example, pre-store the values of variables at the top of the program. At the top of the program: {FIRSTX=3.489} {SECONDY=-4.555} {NUMOFPARTS=1} For example, to add the variable FIRSTX to the X axis coordinate in your G Code program, enter: N100 G01 X{5.5+FIRSTX} Y5 Think of commands like JUMP and IF THEN as logic commands that are understood by the internal system. Whereas G Code programming uses variables as commands that are exposed to the machine operator. The design is such that the machine operator can't mess with the internal logic operation or internal system variable values, but the internal logic has the power to interact with the G Code math and flow. One analogy is the common practice in G Code to change the flow of the program to call a subroutine then return from the subroutine. This is commonly known as M98 and the return is M99. CamSoft does the same thing, but the logic behind how this works is in the M Code. The machine operator doesn't see, use or have to learn CamSoft IF THEN, JUMP or GOSUB commands. Instead they use industry standard G&M Codes. You can see how this is done in the Default.CBK under M98 and M99. Also review the GOSUB and RETURN commands to see the proper syntax. If you look at M97 you will see JUMP. This way instead of the machine operator using CamSoft logic they use M97 like this: M97 P100 This is the same as JUMP N100. The reason you use P instead of N in the Default.CBK is because the logic in M97 uses the lowercase p character as the line number to jump to, much like M98 uses P, also to follow industry standards. However, if you want to change this to use N instead, you could write JUMP Nn JUMP Np —–M97 This leads us to the question regarding JUMP, Math counters and IF THEN. For example, if you want to loop through a G Code program a certain number of times, then write your program like this: {COUNTER=0} {PARTS=5} N100 {COUNTER=COUNTER+1} G0 X0 G0 X1 M97 N100 In the M97 logic write this: IF {COUNTER}<{PARTS} THEN JUMP Nn —–M97

Q122 Why does my spindle not run at the correct speed or RPM?

Answer

If you are using any type of commands that control the spindle like CONSTANTSF, IPM, IPR or just the S Code in your program, then there are five issues to double check to ensure proper spindle usage. Be sure you set the spindle parameter in the CNCSETUP program to the axis number the spindle is connected to. If you have encoder feedback to the main encoder for the spindle axis, then make sure you have the RATIO parameter set to a value that represents how many encoder counts it takes to spin one revolution. You can skip step 5 and use the TEST SPINDLE button on the DIAGNOSTICS window to recommend the best RAPIDSPEED, MAXSPEED and MINSPEED settings to you. Be careful; the spindle will spin freely during the test. Wait until the spindle comes to a complete stop then scroll the white window to read the information. You may hold down the ESC key if you wish to abort the test. Remember, the value of the SPEED variable in the CNCSETUP program is multiplied against the spindle speed to vary the speed when using the slider bar or Speed Pot. If the value of the SPEED variable is zero (0) because (a) your Speed Pot is turned all the way down, (b) you overwrote this same variable somewhere else in you program or (c) your Speed slider bar is set to zero, then any of these could make the spindle not rotate at all. Also keep in mind that when using CONSTANTSF, a lathe’s X axis produces its fastest speed at centerline X0 then rotates slower and slower as you move the X axis out to larger diameters. If you are using a SPEEDPOT, be sure the axis number you specify does not conflict with a slider bar that also controls the spindle speed as defined through the Design Interface feature in the CNCSETUP program. Also check the speed pot potentiometer itself to verify that it allows a full 0-10 volt D/C range and does not restrict too much voltage. Most important, the RAPIDSPEED parameter in the CNCSETUP program for the axis number the spindle is connected to must be set to the maximum RPM the spindle is capable of spinning. If you do not set RAPIDSPEED right, then you will have inaccurate spindle speeds. The TEST SPINDLE feature in diagnostics will automatically sample and recommend the parameter settings to you. However, if you do not have an encoder, we still advise you to use the TEST SPINDLE feature and go as far as you can. If you wish to override or adjust the spindle parameters yourself, then read the following commands in this manual: RATIO, RAPIDSPEED, MAXSPEED, MINSPEED and SPINADJUST. These commands can be set on the fly. For example, if you need to change gears and re-define these parameters, here is what you may want to do in the M code for the gear change. Make an M code that would turn on and off any digital I/O to engage the gear solenoids. If you plan to use the TRUERPM command and you do have an encoder on the spindle, then make sure the RATIO parameter for the spindle axis is set to equal the number of encoder counts per revolution. The RAPIDSPEED setting should be reset to represent a value that causes the spindle to rotate at the spindle's maximum RPM for that current gear's range. For high gear this should equal 10 volts most of the time. For low gear it is whatever value that reaches this gear's intended top RPM. MAXSPEED should be reset to represent the largest S code allowed for that gear range. MINSPEED should be reset to represent the smallest S code allowed for that gear range. SPINADJUST has two parameters. The first value is best taken from the TEST SPINDLE feature in diagnostics. The first parameter's purpose is an adjustment that represents the torque curve as the spindle rotates faster and faster. This value is an arbitrary unit from 0-4096. When done automatically by diagnostics, many samples will be taken but when done manually, then it is best to use only one RPM at the mid-range for the current gear. If 3000 RPM was low end and 6000 RPM was top end, then 4500 RPM would be midway. After you are sure all the preceding steps have been followed and RAPIDSPEED, MAXSPEED & MINSPEED are set the best they can be, go into diagnostics and enter SPINFORWARD 4500. Next, in the WATCH WINDOW, track variable \55 and then enter the command SPINDLERPM \55. Keep looking in the WATCH WINDOW until variable \55 equals 4500. Next, enter SPINADJUST 10 then 20 then 30 and so on until \55 equals 4500. The second SPINADJUST parameter is optional. Its purpose is to represent the base RPM that would output 0 volts to the spindle. If there is only gear range, then this is not needed. However, with multiple gears then this value would equal the RPM at which the spindle receives 0 volts. Don't confuse this with MINSPEED, which caps the lowest S code entered by the user. For example, if a gear range was between 3000 RPM as the low end and 6000 RPM as the top end, then the base RPM should be 3000. However, it is usually not because if S3000 was entered, then 0 volts would be output resulting in no spindle movement. The base value should be set so that the real spindle RPM matches the S code entered. Therefore, the base RPM usually begins much lower so that the voltage output at S3000 is enough to spin the spindle at 3000 RPM. If the problem is mainly threading. You will find many pre-written macros in the Lathe-PC.CBK and MACRO.MAC files that you should use for mills and lathes. The most common are a G33 for single pass threading and another for multiple pass threading. Pick only one. Both of these do not use spindles as servo motors, but there are some that do if your spindle is a servo motor. There is a TRUERPM command in some of these, but this may be omitted if your spindle is not stable. The purpose of TRUERPM is to frequently adjust the RPM to maintain the proper RPM you specify within a user-defined RPM tolerance. The first goal is to determine why your RPM is not stable. There are several reasons for this. Go to the Diagnostic window and enter TRUERPM commands with various tolerances as the second parameter to see what works best. You will see on the Watch Window two boxes. The boxes are labeled Commanded RPM and Real RPM. The goal is to use the tolerance that gets the real RPM as close as possible to the commanded RPM. It is adjustable in 1 RPM increments. If this does not work, run the SPINDLE TEST diagnostic feature. This will tune your spindle parameters automatically and recommend setting values for you to place in the STARTUP.FIL file. This step should be done before you spend too much time on anything else. If the diagnostic SPINDLE TEST feature or TRUERPM cannot hold a steady RPM, then you may have a velocity or tach drive model. In velocity mode the tach will over correct or over compensate adjusting the RPM if the gain pots on the spindle drive are not set right. You will notice pots that you turn with a screwdriver or up/down arrow keys to make these adjustments on most drive models. The adjustments are labeled differently by brand and may say GAIN, OFFSET, CURRENT LIMIT, BALANCE, DEADBAND, BIAS, etc. You will need some help here from the manufacturer or get documentation that describes these pot settings. The tach’s purpose is to self-correct for slight variations in RPM speed, but if adjusted too aggressively, it will fight the motion card when it adjusts RPM. Here you may have a tug of war where both units are correcting the RPM. In this case there are only three solutions. Do not use the TRUERPM command, disable the tach drive or adjust the pots on the spindle drive. Using VIRTINDEX verses Index pulse signals: We do have both methods available. We even have a third method that uses native motion card commands and traps for the top of thread in firmware on the motion board. VIRTINDEX is the default you will find in the macros. This works in the majority of cases. The others should only be explored as an alternative choice. The Index marker, however you trap it, will only work better than the VIRTINDEX method if you are using an auxiliary digital I/O. The motion board I/O is not as quick to respond as the driver made for the aux I/O cards. Here you can detect a change of state up to 10,000 Hz. VIRTINDEX has an optional parameter to trap for the same place on the thread every time in place of an index signal where one may not exist. The optional parameter is settable down to.000001 degree or plus/minus one encoder count, whichever is greater.

Q123 How do you wire and test the auxiliary I/O board?

Answer

There are a few issues here in order to understand the whole process. Starting at the beginning. There are two cards we currently make use of. Both of these cards are shipped to you ready to go. We have already set the jumpers and dip switches for you. All you need to do is plug the card into your computer and run the cable we provided to you to the terminal strip. It can only fit on one way. One of the many cards we use is the TTL Level digital I/O card. It is all low level 5 vdc TTL logic. The voltage it uses comes from the computer itself. There is no need to supply the terminal strips any voltage. If you need to control higher voltage digital I/O, simply connect voltage-specific OPTO 22 relays to a relay rack. They come in 24 and 32 position types. Refer to the I/O Diagrams section in your manual for relay information and wiring. The other I/O board that can be used is the 32- position relay rack, card and cable. NOTE: Presently, most other Digital I/O cards that use an 8255 chip by any manufacturer will work with our software. Relays are voltage specific to your application and are not supplied. You must acquire them directly from an OPTO 22 dealer. The relay rack must have OPTO 22 optically isolated relays inserted into the rack to work. Also you must supply 5 vdc to the + and – terminals on this relay rack for the rack to work. Refer to the I/O Diagrams section in your manual for relay information and wiring. For detailed explanations on the operational theory, wiring and software, refer to Question Nos. 21, 41, 42, 75, 91, 98, 102 and 110. To illustrate a simple example of how to read a digital input, follow these steps: NOTE: If you are using a TTL digital I/O card and terminal strip, skip to step 3. 1. Supply 5 vdc to the black + and – terminals on the rack. 2. Plug in the appropriate color coded relays that you acquired from OPTO 22 for the voltage of your choice into position 0 (next to the black + and – terminal on the rack). 3. Connect the two wires from your digital input to the terminals or relay rack to complete a circuit. If you are using relays, be sure your circuit has its own power supply that matches the relay's voltage and that you can physically open and close that circuit at will. 4. Double click on the CNCSETUP.EXE program located in the AS3000 \CNC directory and select I/O SETTING. Click on the AUXCARDTYPE button for information on how to activate your auxiliary I/O card for your application. 5. Enter the CNC.EXE program and use DIAGNOSTICS and you will see a panel of lights. As you open and close the circuit a light on the panel for that I/O number will turn on and off — Success!

Q124 How do I setup physical buttons like Cycle Start, Feed Hold, Jog and Handwheel?

Answer

All of these functions can be set up in various ways, which are addressed and discussed in previous questions. To repeat each answer would be too lengthy. Therefore, we will refer you to the appropriate prior questions: To set up a Handwheel see QUESTION 117. To set up a Feed Hold button see QUESTION 118. To set up a Jog button see QUESTION 23. To set up a Joy Stick see QUESTION 70. To set up a Rotary Switch see QUESTION 19. To set up F Key Buttons see QUESTIONS 46, 47, 60, 61 and 62. To write logic for the INPUTIO.FIL file see QUESTIONS 87 and 98 and the INPUTIO.FIL file Example and Techniques contained in the Logic Programming Examples section of this manual. Also refer to the logic commands CYCLESTART, FEEDHOLD, HANDWHEEL and JOG, which are contained in the Logic Language Reference Guide section of this manual. For standard examples of logic in the INPUTIO.FIL file: IF #41=1 THEN CYCLESTART:EXIT IF #42=1 THEN FEEDHOLD:EXIT IF #43=1 THEN HANDWHEEL 1:EXIT IF #44=1 THEN HANDWHEEL 2:EXIT IF #45=1 THEN HANDWHEEL 3:EXIT IF #46=1 THEN JOG:EXIT

Q125 Is there someone that can help me with writing logic commands for my application?

Answer

Yes, there are several people and firms. We hold classes here at CamSoft, both publicly and privately, or we can refer you to companies and private people who write logic for specific applications and/or visit you on site. CamSoft does not normally perform custom programming unless it is specifically negotiated and listed on the invoice. However, you may have us write your logic after you purchase the software. To do so you must provide to us in writing your overall goal issue by issue, feature by feature in outline form. You must list the objective and the sequential list of events you wish to happen for each feature you want us to add. If you are having us write logic for devices you have connected to your digital I/O boards, please inform us as to which I/O numbers you have connected your devices to. The I/O numbers we are referring to are the ones you have defined in the CNCSETUP.EXE program under I/O SETTINGS. If you do not know the I/O numbers as of yet, we will assign the standard board I/O numbers we use as defaults and inform you on where to wire them. We will quote you upon receipt of this information. Work will begin after receipt of a credit card number or company check for the amount listed on the quote or invoice. Please, do not call CamSoft to explain your logic instructions since we may have a third party actually do the work.

Q126 Sometimes motion just stops; what's going on?

Answer

All motion made by the controller always moves all axes in concert. This is to protect you. It continuously checks encoder feedback, in position, servo stability and excessive error on all axes for any move. The only exception is on the Diagnostic screen with coordinated motion and the error checking box not checked off. You may have Soft Limits setup. Use the CNCSETUP.EXE program to change the soft limits to zeroes to disable them. The control may be waiting on a command to finish the DECELSTOP or WAITUNTIL STOP and it is not satisfied that it has reached position yet. Use the CNCSETUP.EXE program to increase your TOLERANCE parameter to satisfy the positioning. The axes may have decelerated to such a low feedrate or to no federate that it does not have enough velocity to continue.

Q127 I am losing position.

Answer

I can tell when I return to machine zero. Why? You may have some offsets enabled. Always use the logic command MACHGO instead of GO. This will move the machine without offsets relative to machine zero. If you are using stepper motors, you may be losing steps by accelerating too fast or rapiding too fast. The faster a stepper motor moves, the whimpier the stepper motor becomes thus losing torque –although it has good torque at slow speeds.

Q128 How do I use a rotary switch to control the spindle speed?

Answer

A digital rotary switch is interpreted by a series of inputs that produce a binary coded decimal. First, tell the software what axis the spindle is connected to. Remember to use the CNCSETUP.EXE program to set the SPINDLE parameter to the axis number the spindle is connected to. Then set the RAPIDSPEED high enough until that axis outputs a full 10 volts. Next, check to see that you disabled any analog slider bars using the same axis number to avoid conflicts. Set a SPEED variable in the CNCSETUP.EXE program that will control all spindle speed RPM. This works by percentage. All original spindle speed RPM values will be multiplied by this variable. Last, input code for a rotary selector switch in the INPUTIO.FIL file. The following example will set the percentage of the SPEED variable that all original spindle values get multiplied against: IF #41=0 THEN IF #42=0 THEN IF #43=0 THEN \74=0 'stop spindle IF #41=1 THEN IF #42=0 THEN IF #43=0 THEN \74=10 '10 percent IF #41=1 THEN IF #42=1 THEN IF #43=0 THEN \74=15 '15 percent IF #41=0 THEN IF #42=1 THEN IF #43=0 THEN \74=25 '25 percent IF #41=0 THEN IF #42=1 THEN IF #43=1 THEN \74=50 '50 percent IF #41=1 THEN IF #42=0 THEN IF #43=1 THEN \74=75 '75 percent IF #41=0 THEN IF #42=0 THEN IF #43=1 THEN \74=90 '90 percent IF #41=1 THEN IF #42=1 THEN IF #43=1 THEN \74=100 '100 percent

Q129 How do I set the system to get an accurate feed rate?

Answer

Create a program using the MDI editor to move each axis one at a time to move a given distance. The distance is relevant. For example, let's say 10 inches (G01 X10 F10) and run the program. Given this example, the machine should take 1 minute since you told it to move 10 inches given a 10- inch per minute feed rate. If this is not accurate time wise, then adjust your FEED variable in the CNCSETUP.EXE program for the correct scale or percentage ratio for that axis until it takes exactly 1 minute. Remember that the RAPIDSPEED setting also dictates the overall maximum feed rate in encoder counts or steps per second that the axis can move at. Also keep in mind that all RAPIDSPEED parameters are calculated together when moving the machine to allow simultaneous axes motion. Hence, all the RAPIDSPEED settings should be changed at once. The only exception is that there is a different RATIO value for each axis or you have the GEAR or FINETUNE parameter set to a value other than 1 or -1. Also, set very high ACCEL and DECEL values so that time is not lost accelerating and decelerating.

Q130 How can I tell how much backlash I have?

Answer

Unless your encoder is not directly connected to the motor, the following procedure will not work. If the encoder is connected to the motor, then the only way you can tell the amount of backlash is to physically make a cut and measure the difference. However, if the encoder or linear scale is directly connected to the load (table), you simply perform the following procedure on one axis at a time and begin by moving the axes in a negative direction then zero out the machine and moving the axis a fixed amount in a positive direction (for instance 10 inches). To find the amount of backlash in that axis, subtract the difference from the commanded position (for example 10 inches) from the amount displayed in the digital readout. Example: 10 – 9.998 =.002 of backlash. Repeat this test a few times and take the average of the backlash amount and enter it into the BACKLASH parameter using the CNCSETUP.EXE program. One important issue to remember: you must also increase your TOLERANCE parameter value as well by the amount of the backlash to satisfy the machine's positioning or else you will be able to move only once and the machine will wait until it believes it is in tolerance.

Q131 How do I use the R Code for turning a radius instead of I, J & K?

Answer

The first thing to do is to use the CNCSETUP.EXE program to set the FANUCARC parameter to equal 2. The second thing is change the format of the CW and CCW commands in your GCODE.FIL file for G02 and G03 to the following format: EXAMPLE: CW x;y;z;r CCW x;y;z;r

Q132 Can I simulate the tool path in high-resolution solid modeled graphics?

Answer

Yes, there are two ways if you have AS3000 Level 5 or greater. From the control's Operator Screen you can press the Simulate Icon. This will immediately bring up a window and commence animating your G Code program in high-resolution solid modeled graphics. The Simulator will attempt to define the stock boundaries of the material based on the width, length and height defined in the G Code program. There will be an opportunity presented to you in a window to change the stock material size. You must also enter in tool information for each tool, especially the tool size. One draw back to simulating from the control's Operator Screen is that the animation simulates the actual G Code program — pre-backlash, tool comp, tool size and all tool parameters. As an alternative, we recommend you use the Simulator within AS3000.

Q133 How do I program my TOOL CHANGER to stop at the correct tool?

Answer

The same principle applies for a Mill, Lathe or Punch Press tool changer carousel. The theory, in general, is quite simple. However, we cannot get into specific issues that deal with the digital I/O commands that may be necessary to locate the specific tool number by counting the number of limit switches as it passes around the tool carousel. For this example we are going to explain how to use a servo and stepper motor to position the tool carousel. First, find out how many encoder counts or steps it takes to rotate the tool carousel around one complete revolution (let's say 1000). Now divide this number by the number of tools in the carousel. Let's say 1000/8=125 where 8 equals the number of tools in the carousel. Insert the 125 value into the RATIO parameter for that axis. For example, if you have a 3-axis machine and the tool changer motor is axis number 4, insert this value into the RATIO4 parameter using the CNCSETUP.EXE program. (For example, RATIO4=125). This value represents how many encoder counts or steps it takes to move the tool carousel for each tool. You are really telling RATIO4 that this is how many counts it takes to move one tool NOT one inch as RATIO4 would normally expect if it were an axis move. Therefore, we just code a MACHGO logic command in the MCODE.FIL file above M06 using the tool number that is kept in the lower case "t" variable. We will not get fancy here and write logic to keep track of the shortest distance to each tool because that is another question. The example below positions the tool carousel. MACHGO;;;t 'Only move the 4th axis motor equal to the number of tool ‘positions. WAITUNTIL STOP4 'Wait until the 4th axis stops then allow to go on. ‘Next, do the required digital I/O to open the tool ‘fingers and do motions to swap tools.

Q134 Why does the DECEL function not work causing my machine to hang up when reaching position?

Answer

The DECEL function does work the way it was designed. When we tell the motion card to decel, it is not being ignored. The way that ACCEL and DECEL work are that the machine only accels and decels on the first and last move of your program. Once it reaches the current feedrate speed, it will remain constant until the feedrate is changed. It will then make a transition from the current feedrate to the new one by either automatically acceling or deceling to the new feedrate based on the ACCEL and DECEL parameter values. Changing the ACCEL or DECEL parameter values only have an effect on the first and last moves of your program unless there is a transition to a new feedrate in the program. The way you force it to decel from within the program is to use a DECELSTOP command. The DECELSTOP is usually combined with the RAPID moves G00 or G81-G89. When DECELSTOP is issued, it wants to decel to a complete stop and then move onto the next move when it is in position and motion stops. There are three parameters that will satisfy the machine to be in position and stopped. 1. Increase the TOLERANCE parameter value. This will satisfy the machine to be in position quicker. 2. Increase the DECEL parameter value so that your machine does not decel at such a slow rate. It moves very slowly when it comes near the target position. 3. Keep the SLOWDOWN parameter value at 100 to avoid a change in feedrate to a lower speed when approaching the target position and always keep the ACCEL and RAPIDSPEED parameters at conservative values for testing to prevent the servo signals from acting out of range for your motors. You could add a DECELSTOP to the GCODE.FIL file but this will decel and stop at the end of every G1. Use the SMART PATH feature to set up some automatic rules. You could use higher torque motors.

Q135 How do I use the RS232 communication port?

Answer

There are two methods to send and receive data to and from the control. The first is the Terminal Communication Program Icon. This feature allows you to send programs of any size to and from the control in a remote or unattended mode and is best used when you want to send or receive the entire G code program to or from another device in the background. The second method entails using the COMMSETUP, COMMIN and COMMOUT logic commands. These commands allow you to employ logic commands one at a time separately at any time to send or receive strings of data, numeric information, logic commands, Feedrate changes, Positional moves, Encoder feedback or Control status on an as-needed basis. (See the COMMSETUP, COMMIN and COMMOUT logic commands for usage information.) Remember there are a few tricks you could use to receive data through the RS232 comm port. The first simply employs the use of inserting logic commands in the COMMFILE.FIL file, which is, of course, optional. By doing this, each time a character or a group of characters followed by a carriage return character is sent to the control, the logic in the COMMFILE.FIL file will execute. To control the flow of incoming data, you may either set a variable flag to the value of one to inform other logic routines that there is data waiting in the input buffer or you may immediately read in the data into a variable by inserting a COMMIN logic command at the top of the COMMFILE.FIL file and then use IF commands to decide what to do with the incoming data. You may use the COMMIN logic command to directly read in data one line at a time whenever you wish. The COMMIN command will not execute the following next logic command until a carriage return is received. Make sure that all incoming data that is sent to the control ends with a carriage return or else the computer may hang up. Likewise, all data sent out using the COMMOUT logic command adds a carriage return to the end of each line. If you do not insert a COMMIN command in the COMMFILE.FIL file, then you must use the COMMIN command elsewhere to read in the data or it will remain in the input buffer forever until read. Use the following example in the COMMFILE.FIL file to give the control commands remotely from another computer. COMMIN \222 IF \222=CYCLESTART THEN CYCLESTART 'invoke Cycle Start IF \222=FEEDHOLD THEN FEEDHOLD 'invoke feed hold IF \222=TEACH THEN TEACH 'record a position IF \222=STOP THEN STOP 'halt motion IF \222=Z-AXIS THEN READOUT3 \100:COMMOUT \100 'send the Z axis ‘readout to another ‘computer IF \222=MOVE-X THEN GO 999;0;0 'move the X axis 999 inches

Q136 Do you recommend running the controller on the Windows NT, 2000, XP, Vista or Windows 7, 8 & 10 Operating Systems?

Answer

While the Windows NT, 2000, XP, Vista and Windows 7, 8 & 10 operating systems are acceptable platforms for the CAD/CAM system, running the system on a Windows XP machine has tighter control over the user interface. The controller will run on an NT, 2000, Vista and Windows 7, 8 & 10 machine but we just want to pass on what we have experienced so far. We originally thought that NT, 2000, Vista and Windows 7, 8 & 10 were the better choices, as did everyone else, except the features that make NT, 2000, Vista and Windows 7, 8 & 10 different are the features that cause our timing sensitive loops to sometimes miss their mark. The reason this is happening is because the NT, 2000, Vista and Windows 7, 8 & 10 operating systems completely and equally share the CPU time between all running applications in a true multitasking mode. Even if you think you do not have another application simultaneous running with the controller, Windows NT, 2000, Vista and Windows 7, 8 & 10 briefly go into a housekeeping mode from time to time thus causing the controller to share the CPU time with other applications or Windows itself, which may mean a degradation in performance when it is really needed. To overcome this situation in Vista and Windows 7, 8 & 10 (and even in Windows XP if needed) right mouse click on the CNC.EXE program in the Task Manager and set its priority to Realtime or High.

Q137 How do I count the tools as they go by a limit switch on my tool changer?

Answer

For instance, if a cam lobe on the tool changer trips an input switch each time the cam lobe passes the next tool station in the carousel, use this example code in the MCODE.FIL file above M06. #35=1 'Turns on D/C motor to rotate tool changer carousel:LOOP1 'Label to Go to WAITUNTIL #38=0 'Wait until tripped by cam lobe at next tool station \100={\100+1} 'Count each tool IF \100>20 THEN \100=1 'Go back to tool number 1 if carousel passes ‘the last tool IF \100<>t THEN GOTO:LOOP1 'Go back to LOOP1 unless variable \100 ‘equals the tool number #35=0 'Stop the tool changer motor But first there has to be a routine that finds tool number one when the machine starts up by either locating a special limit switch for tool one or finding an index on an encoder that is connected to the tool changer motor.

Q138 How do I recognize momentary input switch on and off states?

Answer

The best way is to use the WAITAUXIO command and a fast computer that is only running the CNC.EXE program. This will check at 2-5 millisecond intervals and then you could react to the input change immediately.

Q139 Why do my motors run away when I apply power?

Answer

This is really an electrical problem that may be quite simple to answer. There are no settings in the software that will effect this except possibly that the servos are grossly out of tune. Make sure you always have the motors disconnected from the load or ball screws before any testing. The most common cause of this is that the polarity on the A and B channels are reversed on one or more of the encoders. It is best to call the motion card manufacturer for wiring advice. The last resort is to have the pots on the servo amps themselves adjusted by a service tech. Have him adjust the amps to the servo motors. He will be looking for pots labeled dead band, balance, gains and/or voltage offset. Some people refer to the servo amps as servo drives. Also, consider using a digital output relay that you would turn on in the STARTUP.FIL file to keep the power off to the amplifiers until the motion card gets control. For further information refer to QUESTION 317.

Q140 How do I execute an operation automatically each time the table moves to position?

Answer

There are two ways. First, write the code directly after the GO or RAPID position move in G00 or G01 in the GCODE.FIL file to do what you need to do. Second, write the code in an M code in the MCODE.FIL file. This way, however, you would have to include the M code in your program after each position move.

Q141 Question 141 How do I get my tool changer to the correct position when using a clutch and an encoder?

Answer

The assumed configuration is that you have an AC or DC motor that is constantly spinning and a clutch is being opened or closed by a digital output to engage the tool changer turret into motion. Under this configuration you must first connect the encoder on the tool changer shaft to the AUXILIARY ENCODER connections instead of the main encoder connections on the terminal strip because the auxiliary encoder feedback will not attempt to force the motor to stay in position on the axis the encoder is connected to. The idea here is to engage the tool changer clutch to start it spinning and then disengage it when the auxiliary encoder reports that the tool is in desired position. Below, the lower case t holds the value of the tool number in your program. For example, when given T7 M06, the lower case t equals 7. To have t represent the correct value, use this formula to find out how many encoder counts it takes to rotate the tool carousel around one complete revolution (let's say 1000). Now divide this number by the number of tools in the carousel. Let's say 1000/8=125 where 8 equals the number of tools in the carousel. Insert the 125 value into the RATIO parameter for that axis. For example, if you have a three axis machine and the tool changer motor is axis number 4, insert this value into the RATIO4 parameter using the CNCSETUP.EXE program. (For example, RATIO4=125). This value represents how many encoder counts it takes to move the tool carousel one tool position. You are really telling RATIO4 that this is how many counts it takes to move one tool NOT one inch as RATIO4 would normally expect if it were an axis move. Notice in the example that we have given a.1 fudge factor tolerance to test if the tool is approaching the correct position. It has to have some tolerance since it may never hit on the position exactly and also we always need time to allow the clutch to stop and coast. #49=1 'engage turret clutch.:SPIN AUXENCODER3 \55 'read aux encoder position IF {\55-.1}<t THEN GOTO:MADEIT 'True if tool is in position GOTO:SPIN 'keep spinning:MADEIT #49=0 'stop turret clutch Also notice here that we are assuming that the motor only rotates in one direction; therefore, it is not required that we also add IF \55>t THEN to stop the motor when we are positioned between tools. If for some reason you do not have a spare axis to connect an auxiliary encoder to, then you may have to create a table of IF THEN commands to trap the tool when it is in position to some other value other than RATIO. This would also be a necessary step if your distances between tools are not equal or you would have to use the auxiliary encoder of an "in-use" axis motor like X,Y or Z. This procedure would vary from machine to machine so it is very hard to offer an example. However, it does involve creating a series of statements as follows: IF t=1 THENIF \55=1.5 THEN GOTO:MADEIT 'if doing tool one, only test ‘if carousel is at 1.5 IF t=2 THENIF \55=2.2 THEN GOTO:MADEIT 'if doing tool two, only test ‘if carousel is at 2.2 IF t=3 THENIF \55=3.7 THEN GOTO:MADEIT 'if doing tool three, only ‘test if carousel is at 3.7 etc…

Q142 How can I test to see if I am in position before I go onto the next move?

Answer

With the exception of using the logic commands POSITION, SMOOTH or SUSPEND BYPASS, the control will always wait until it has arrived at the target position before it goes onto the next move as soon as it satisfies itself within the value of the TOLERANCE parameter. Example Logic: Where variable \200 = The desired target position.:TESTPOSITION WAITUNTIL STOP3 Wait until Z is stopped READOUT3 \888 'Read the current Z axis position IF {\888+.02}>\200 THENIF {\888-.02}<\200 THEN GOTO:THERE POSITION 3;\200 'Re-send it to position GOTO:TESTPOSITION:THERE 'Got there within.02 of position 'Do your other things here

Q143 I am having a problem getting the CNC.

Answer

EXE program to talk to my motion card. I am getting the message: "Unable to connect to controller Card" You may have a problem with the Windows Registry. Either you have installed another program such as the Servo Design Kit that reconfigured the parameters in the Windows Registry for the motion card or the parameters in the Windows Registry have been corrupted. There are two possible explanations. One is that you have not answered the questions regarding Model No. and Address correctly when you first ran the CNC.EXE program. The second is that the Registry information has been corrupted or overwritten by another program. You may force the CNC.EXE program to ask you again the Model No. and Address of the motion card and to re-register these settings with Windows by using the REGCARD.EXE program. Before you do this, erase all prior Windows registration of the motion card. Galil makes a program called REGCLEAN.EXE to automatically do this.

Q144 How do I do precision threading?

Answer

The trick is to have an encoder on the spindle. This concept works for both lathes and mills. The principle behind threading is to time the rotational axis with the axis the single-point threading tool is on. Let's explain this with a real example on a lathe. You should set up for a normal Z and X axis and also a third axis for spindle rotation, which we will call the C axis. First, make sure that the RATIO parameter for the third axis, which is known as Z to the system and known to you as the C axis, is set so that the RATIO count equals one full revolution. This is a key factor since positioning the C axis to the same whole number will ensure that you are at the same pitch on the thread. For instance, the positions.125, 1.125, 2.125 and 3.125 are all on the same top pitch of the thread for the C axis. Therefore, if you start off the part by one thread for clearance at the same Z and C axis and any X-axis position at any depth on the thread, you will ensure the travel will follow and chase the original thread. This will work on any single-point thread. Your CAD/CAM system, starting with Level-10, can generate all the necessary motions to position and rapid the tool over to the next cut on the thread. Let's say you want to make a.375 diameter, 28-pitch thread 2.0 inches long. G0 Z.1 X.375 C0 'Rapid to the first position. G1 Z0 F25 'Feed to the start of the thread. G33 Z-2.5 C28 ‘This rotates the spindle 28 times per inch while ‘moving it 2.0 inches. G0 X.5 'Rapid out to clear the thread.

Repeat these steps until you are at the desired depth of the thread. Note: G1 could replace G33 if you issued C56 to equal the correct number of threads over 2.0 inches of travel. C56 = 2 times 28 which is 28 threads per inch.

Q145 Why won't limits switches work as homing switches?

Answer

There is a difference on the Galil card between the over travel limit switches and all the other inputs and home switches. Galil has elected to automatically stop all motion when an over travel limit switch turns on. Thus, all limit switch wiring states should be normally opened. This is backwards from the recommendation that home switches be wired normally closed. Therefore, we suggest you follow the example in the LIMITS routine in the Visual Process Editor when setting up your limit switch logic. This example stops motion when a limit switch is hit and closes the circuit. Home switches, on the other hand, break or open the circuit when they are hit. See the HOME routines in the Visual Process Editor. Remember, Galil will stop all motion moving in the direction it is going if the over travel limit switch gets hit and closes the circuit regardless if you have any logic in the LIMITS.FIL file or not. However, you will be allowed to jog off the limit switch in the opposite direction. Because of this automatic motion inhibitor when an over travel limit switch turns to a closed state, we do not recommend you use the over travel limit switches for homing; rather, only use the home inputs. If you are careful, there is a way that you could use the limit switches for homing, but it is not recommended for safety reasons since you have to disable the over travel logic in the LIMITS.FIL file. Change the I/O numbers from the home inputs to the limit switches in your homing routine. Remove any logic in the LIMITS.FIL file that stops the machine if a limit switch gets hit. Reverse the logic in your homing routine from reacting to normally closed I/O to normally opened. Disable the over travel logic in the LIMITS.FIL file since this will interfere with the homing. Set up soft limits for axes over travel using the CNCSETUP.EXE program.

Q146 What is the usual price to pay for on-site installation?

Answer

The best way to explain and quote the cost of on-site installation is to state that under ideal conditions, using our default operator screen, logic and G code, it would take an average of three days, which would include minor logic changes for homing, tools and M codes. If the customer or application requires custom work for unique tool changers, operator interface changes, exotic M codes or special logic for devices on the machine, it gets increasingly harder to quote exact installation times. If there is electro-mechanical problems getting the machine to move or position and we need to wait until those problems are solved or replaced, then it is not fair to anyone to quote such a high fee to cover unknown possibilities or for the installer to spend the extra time for free. We state that installation times may vary and that we are not responsible to replace damaged or inoperative parts that were not quoted. We always quote a fair price without over padding the time estimate to be fair. Relate this to car repair such as taking your car in for a repair and during the course of the repair they call you with a problem that needs extra work. You have the option to accept or decline the extra quote before work begins. Of course you should expect to be charged for travel and per-diem expenses also.

Q147 We sometimes experience overshooting the target position during a decelerated stop.

Answer

How can we correct this? We do understand why this could happen, although it should not be allowed to happen. In fact, we have invoked an automatic axis stop if any of the commanded axes move outside of the tolerance value you set in CNCSETUP on its way to or while arriving at the target position. To understand what is happening during a decelerated stop (G10), you must know that you can control the rate at which you can decelerate to a stop with a parameter in CNCSETUP. It seems that this is a case in which you may be traveling at a high enough velocity in conjunction with too fast a decel rate to cause an effect like jamming on your brakes at a stoplight when you are traveling at a high speed. This may cause you to cross or overshoot the pedestrian walkway. Two things that will solve this are really very simple. 1. In the case where you are reaching high velocities and you need to coast to a decelerated smooth stop, simply make several test moves and keep decreasing the DECEL parameter lower and lower until it smoothly coasts to the exact position without overshooting. Remember, you must exit the control program each time you change the parameter values. 2. In the cases where you are making short moves at high velocities and there is just not enough time to build up to full speed before you start deceling to a stop, either lower the overall feed rate to allow such a burst of acceleration (Leap) or tune your motors to an aggressive tuning factor while lowering the ACCEL parameter value. In either case you are dealing with a tug of war between weight, load, torque and motion factors such as velocity, accelerations and decelerations. Each machine is different and this makes it hard to know what to set things at initially. But you have to fine-tune each machine like this. Under ideal cases on a desktop servo motor unit not under load, we can still simulate this effect. We believe a tighter servo tune along with adjusting your velocities, accel and decel parameters will solve this overshooting problem. The servos should snap into position and respond quick while holding onto the position it was commanded to go to without overshooting. Taking the decelstop effect out of the picture does make the servo positioning factors and algorithms simpler. But let me assure you that the positioning overshooting errors do not progressively get worse with each move. In fact, each move is unique within itself and will position on target or overshoot under the circumstances of that move only. Keep in mind the control will not allow overshootings to occur outside the distance set by the TOLERANCE parameter in the CNCSETUP program. If your machine comes to a stop at the end of a move, then you could suspect that it is stopping on its own automatically and protecting you from overshooting. The only way to overcome this is by adjusting the overall feedrate, acceleration value and decel values unless you want to increase your allowable tolerance.

Q148 How can I position an axis driven by a hydraulic motor?

Answer

Use an auxiliary encoder to check for the position with a hydraulic valve and brake. This example will read the auxiliary encoder and stop the Z axis when in position by closing the valve and applying a brake. Example: LOADING \55 'Check to see if just loading file into memory IF\55=0THEN GO x;y;z:EXIT 'If just loading the file into memory, then skip #58=0 'Release brake #60=1 'Open hydraulic valve to start moving:LOOP AUXENCODER3 \55 'Read auxiliary encoder IF {\55-.001}<z THENIF {\55+.001}>z THEN GOTO:MADEIT 'See if made it GOTO:LOOP:MADEIT #60=0 'Close hydraulic valve #58=1 'Apply brake

Q149 What is a process?

Answer

A process could be thought of as a macro. A process is called from your program by surrounding the process name with square brackets [process name]. A unique property of a process is that it is universal or public to all logic files in your system. Once a process is created and loaded into memory by the machine tool controller, it can be shared or called repeatedly over and over by any logic file with confidence that it will execute the same logic consistently. Also, a process can be shared by many machine tools. You can merge it into any CBK or Backup file. A process can be a collection of many logic commands or a single logic command. For example, you may want to create a process with a single command that simply helps you remember a machine function. Let's say you want to make a process to quickly and easily turn on your coolant. You could title the process [COOLANT ON]. How about turning on the vacuum or air or maybe jogging the table or making the machine home the axes or raise the tool up. These all could be processes by any name instead of you trying to remember multiple digital I/O numbers and sequences of operations. You could also have a process written by a third person or company that can be easily added to your machine without any fuss. You would then call the process by name without having to know how it works. A process, or for that matter any logic, can also be password protected and encrypted so that only the person that knew the password could view, edit or change the logic. Whenever you save any logic or process, you automatically will be given the chance to password protect it. See the Visual Process Editor section of the PC-Based Machine Tool Controller Reference and Users Manual for an explanation of how to use CamSoft’s Visual Process Editor. Since you already using the controller's on- line help, you may do a search on Visual Process Editor to view an explanation of how to use the Visual Process Editor.

Q150 Why do my motors turn off when the machine starts up?

Answer

The motors may be getting turned off by the controller card automatically when the machine starts because the axes are slightly jerking causing an internal out-of-tolerance error. You should look into this problem to find the cause. Until then, add a MOTOR ON to the STARTUP.FIL file.

Q151 How do I separate the tool number from an offset number in code like T0203?

Answer

The answer is to treat the last two digits as the offset number and to treat the whole number rounded to the nearest hundredth as the tool number. Add the code below to your M code for tool changing. After this logic runs, variable \57 will retain the actual tool number and variable \56 will retain the offset number plus automatically load the offsets. ' Calculates tool number and offset ' T0203 tool 2 offset 3 ' Must give 2 digits for tool number and offset \56=t:LOOP \56={\56-100} IF\56=>100THEN GOTO:LOOP \57={INT(t/100)} IF\57>0THENt=\57 'tool number IF\56=0THENEXIT TOOLSIZE\56 \55;USEREAD TOOLVERT\56 \55;USEREAD TOOLHORZ\56 \55;USEREAD TOOLHEIGHT\56 \55;USEREAD Alternate method if you know the tool number format is always the same: Example: T0207012 Whereas: T02xxxx is the tool type or description Txx07xx are the tool offsets Txxxx12 is the tool size MIDSTR t;1;2;\55 TOOLDESP\55 \57;USEREAD 'Load and use description MIDSTR t;3;2;\55 TOOLHEIGHT\55 \56;USEREAD 'Load and use height offset TOOLVERT\55 \56;USEREAD 'Load and use vert offset TOOLHORZ\55 \56;USEREAD 'Load and use horz offset MIDSTR t;5;2;\55 TOOLSIZE\55 \56;USEREAD 'Load and use tool size

Q152 What would cause random problems on our computer, which will make the controller hang up or pause?

Answer

It is almost never the computer hardware itself; however, we have come across certain video chips mounted on the motherboard that cause these problems and also the use of non-Intel CPUs such as Cyrix and AMD processors. The most common problems are the result of your Windows Operating System configuration. Disable “Hibernation Mode.” Disable and close all other running programs such as Virus Checking Programs, Watchdog, Reminder, Microsoft Office, Microsoft Word, Network Drivers, Internet Connections, Screen Savers such as After Dark and ALL other running applications. To close these programs simultaneously press the CTRL ALT DEL keys to pop up the "Close Programs" Window. The contents of this window displays a list of all the programs currently running on your computer. Close all running programs except SYSTRAY and EXPLORER. One by one, highlight each program you want to close and click on the END TASK button. Take caution when closing drivers that are KNOWN to be loaded because of special hardware in your computer. Examine your AUTOEXEC.BAT and CONFIG.SYS files, if they exist, to see if there is another program or device driver interfering with the controller. Other memory-resident software or drivers may cause memory and addressing conflicts within Windows. You can either remark these items out by placing the capital letters REM in front of any command or device driver to disable it from loading. Also look for programs getting loaded when Windows starts up in the properties of your START UP or START MENU PROGRAMS Taskbar. Click the right mouse button on the Taskbar and then click on Properties to remove them. Make sure Windows itself is not powering down certain components. To check for this situation, follow the procedure below for the operating system you are using: ⦁ For Windows 95, click on the START button, select SETTINGS and then select CONTROL PANEL. Double click on the POWER icon. Go to DISK DRIVES and make sure that "When Powered by AC power:" is unchecked. ⦁ For Windows 98, click on the START button, select SETTINGS and then select CONTROL PANEL. Double click on the POWER icon. Set "Turn off monitor" to NEVER. Set "Turn off hard disks" to NEVER.

Q153 How can I debug my problems with my digital I/O logic?

Answer

There is a new feature starting with Version 9 that will help you trace and debug digital I/O problems and make it much more convenient to see what each input and output does or is doing in real time when your machine is up and running. If you go into the CNCSETUP program and click on I/O Settings button, you will find a button that is labeled I/O Descriptions. If you take the time to enter the description and voltage of each digital I/O you are using, the DIAGNOSTIC window in the controller will display a full description of what inputs and outputs are triggering while your machine is running to help you better understand what is taking place and when. Also, as you pass your mouse over each of the Digital I/O lights on the Digital I/O panel, a full description will be displayed within a small yellow balloon to indicate what each I/O number represents. Remember, you can click on any of the lights on the Digital I/O panel that represent outputs to manually trigger an output. If you are in Logic Simulation Mode (DEMO MODE), then you can even click on the digital inputs to simulate a limit switch or physical button on the operator’s panel. Another benefit of Logic Simulation Mode is that all the logic commands and positions that are issued to the motion card behind the scenes show up in the G code window. You can tell what the motion card was told to do and what I/O is triggering while your program is running.

Q154 Sometimes I see blanked out or white screen images when certain windows on the controller screen pop up, get moved around or disappear.

Answer

What is causing this effect? It’s not anything caused by what you are doing. This is a video memory problem with your computer and there are a couple of things you can do to correct it. Your video card needs more video memory – 4 MB or more of video memory is fine. The blanked out effect is caused by the loss of the image in the video card’s memory that holds the picture behind the current window. You need to either get more video memory or add the following statement to your CONFIG.SYS file located in your computer’s root directory: STACKS=9,512 or STACKS=9,1024 if needed.

Q155 What would cause my motors to turn off and lock up the table while executing my G code program?

Answer

This is caused by an excessive position error. When the commanded position varies from the actual position, as reported by the encoders, that is greater than the TOLERANCE you specified in the CNCSETUP program, then that motor will automatically turn off or go limp. This is a safety issue that will keep the motors from running away or stop the machine from undue stress while trying to move the table against an immovable object or travel with too much resistance. You can either increase your tolerance size or search for the cause of the resistance or possible binding. You can also temporarily override this safety feature for diagnostic purposes only with the POSERROR logic command. The answer may be as simple as: The ball screw is binding at a certain place along that axis. The ACCEL or DECEL values are too steep for the weight and load on your machine causing too much stress on the motors. Just lower the ACCEL or DECEL settings in the CNCSETUP program to make more gradual feedrate transitions. Your servo motors need to be better tuned. Inefficient servo tuning will cause the motors not to perform to the maximum ability. Your TOLERANCE setting may need to be higher than what it is. Use the Test Axis motion feature in the Diagnostic window. Check the box entitled Coordinated Move / Error Checking to have the controller tell you what is wrong.

Q156 What is causing my amplifiers and motor to move or jerk when the machine turns on?

Answer

This is due to the fact that the amplifier is getting powered up before the motion card can get control. You may even see red lights on your amps while this is happening. This is a major safety concern since the machine could run away during this time. You must have all four wires from each amplifier connected to the motion card. Two of the wires are Amp Enable or sometimes known as Amp Inhibit and Amp Fault. This will hold the signal low to the amplifier until the motion card gets up and running. You may also want to connect and use a digital output to turn on the power to the amplifiers only after the controller starts in the STARTUP.FIL file. Until then, the power will be off to the amplifiers. Also make sure no one has burnt in any native motion card parameters or logic into the motion card’s EPROM chip that is causing it to remember undesirable values upon start up.

Q157 How do I get the control to cut the graphics on the CAD/CAM screen?

Answer

It is true that you do not have to have a G code program prior to cutting the part you are viewing graphically on the CAD/CAM screen. Simply drive the tool in the CAD/CAM system around your geometry just as you would if you were going to post process the part. Next, click on the Service Icon and select Options and then select Load Into Controls Memory. This will allow the controller to share the CAD/CAM system's database in memory. The only other step is to press Cycle Start on the controller. The first time you do this the program takes a moment to display the graphics but every time after this it will start moving right away. If you make a change in the CAD/CAM system, just click on Load Into Controls Memory again and the controller will automatically pick up the changes. Remember to always set your Rapid Plane, Tool Number, Feed and Speed as usual since the controller will share this info also. The only exception is the Tool Size. The Tool Size will be based on the size entered into the Tool Parameter screen. The control will display a pseudo G code program for you to view and edit in the MDI editor.

Q158 Explain what is needed to do 3D or 5-axis tool comp at the control?

Answer

We use special codes (ABC and L) that you will notice in the G code program, which will be displayed on each line that is comped in 3D or 5 axis. The ABC is a normalized 3D vector and the L is an optional gouge protection parameter. These codes are automatically generated when you create a 3D or 5-axis tool path and when you select the checkbox entitled ALLOW CONTROL TO FIGURE COMP contained within most of AS3000's 3D and 5- axis features. You have three choices on how to pass this info onto the controller. (1) Follow the exact same procedure explained in QUESTION 157. (2) Use the Mill3Dpc.POS in AS3000 to create a G code program. (3) Modify the post processor on your existing CAD/CAM system. If you want to use a CAD/CAM system other than AS3000, make the following modifications to your post processor. On each line of G code that positions the tool with 3D or 5-axis compensation, add the proper G code to switch the tool comp to use the correct 3D comp method. The choices are G41, G42, G130, G131, G132, G135, G136. See the TOOLCOMP logic command for an explanation of these G codes. Also include on each line either ABCL or UVWL, which would represent a normalized 3D vector and an optional L code to provide gouge protection. CamSoft will have a technical explanation of these codes for the person writing the post processor. If you wish to use the letters UVW instead of ABC, insert the logic command TOOLCOMP UVWL in the STARTUP.FIL file. The default is ABCL.

Q159 Is there a way to have the feedrate automatically slow down if the spindle is under too much load?

Answer

Yes there is. Use the CVBOST logic command to do this. This command stands for: Change Velocity Based On Spindle Torque. If the spindle becomes loaded down while cutting through tough material, the feedrate or cutting velocity will proportionally slow down in relation to the torque on the spindle. If the torque becomes too high on the spindle, the user can define a percentage value that will generate an alarm to stop the machine. See the CVBOST logic command for an in-depth explanation.

Q160 When using the SMOOTH command, what are the basic differences between G61 & G64 and G08 & G09?

Answer

First, let's explain why a smoothing command was invented and why we should use it. The basic need for smoothing is to read ahead in the G code program to parse down the G code lines into encoder counts for each axis and convert the feedrates into velocities for each axis over the individual distances each axis has to move. This normally happens very fast. However, because of four related factors, the system is not able to keep up with the mechanical positioning speed of the machine. These four factors are: The CPU speed of the computer in use. A faster computer without any programs or drivers running in the background or even running on the motion card will crank through the calculations faster. Distance to move. The shorter the axes travel distance, the quicker the system needs to send it to the next position before it reaches the end of the current move. The higher the feedrate, the faster the move is completed. Without smoothing, each move is made and then waits to confirm "in position verification" before the next move is permitted to be sent to the motion card. With smoothing on, this verification is skipped thus allowing the next move to be sent to the motion card in advance onto a stack of positions to move to. If this stack is depleted, then the motion card will become starved for data and ratchet through the G code program, especially if you have a slow computer and you are making very short moves using high feedrates. G08 turns smoothing on and allows the system to start reading ahead in the G code program and parse down the G code program while the machine is moving. However, if circumstances are just right and the moves are very short using high feedrates, the computer may still not be fast enough to supply the machine tool with new positions. Therefore, you would either want to get a faster computer or use G61 instead of G08. You can test your CPU computer speed with the CPUSPEED.EXE program provided to you in the AS3000\CNC directory. G09 is used on the last feedrate controlled G code line in the profile to turn G08 smooth off. G64 turns smoothing on and immediately reads ahead in the G code program until it encounters a G64 while placing all the positions onto a stack or into a buffer. However, with this command all motion is held up until it reaches a G64 and then motion is initiated. This is best used at the beginning of a cutter path when the tool is off the part so that the tool does not leave a dwell mark. With this method even slow computers can keep up with the mechanical positioning speed of the machine enabling the machine to move as fast as it is able. G61 is used on the last feedrate controlled G code line in the profile to turn G64 smooth off. In either case a G08 or G64, which turns smoothing on, must be given on the first G01 feedrate controlled move and cancelled with a G09 or G61 on the same line as the last feedrate controlled G01 move, not on a line by itself. Since G00 or the use of DECELSTOP cancels smoothing, please take caution that there are no G00 or DECELSTOP logic commands issued before the G08 or G61. Also, never let the program end before you turn smoothing off or else some of the logic commands or G codes may not finish executing. One more thing to watch out for is a change in feedrate or velocity between SMOOTH ON and SMOOTH OFF. Since feedrate changes take effect immediately, there may be a transitional change to the new feedrate ahead of the place and time you really need it. G8 or G64 modes are similar in the respect that M codes as well as feedrates will execute as normal and wait to execute until the command line they are in is read. However, when using G61 or G9 before smoothing is finished, any M codes as well as feedrates will get executed as soon as they are seen in the program. Since it is reading ahead in the program, these codes may execute before the axes have reached location. The solution is to place the G64/G08 on the first G01 move after all the start up G & M codes and place the G61/G09 before any M codes, G00, DecelStops or feedrate changes. If need be, create multiple G8/G9 or G64/G61 sets turning smoothing on/off as needed. When smooth is on, there may be noticeable side effects on the operator's screen and the tool path graphics and G code program will scroll ahead of itself or using the FASTMODE option the G code and graphics will be held back. G8 should be executing the command SMOOTH ON;BUFFER;500 and start smoothing "line by line" until it sees a G09. If you want to read ahead without reading line by line, then use G64 to start smoothing and G61 to stop. This will use the SMOOTH ON;FASTMODE command instead. The light to show smoothing on/off in diagnostics on the CNC Watch Window will only turn on while between G8 and G9 or G64 and G61. If you stop or abort the program, it will turn off. The only way to see if it is on is to be in Diagnostic before you CYCLE START. Regarding feedrates, keep in mind that only FastMode will tag the feedrate changes to the proper G code line and make that feedrate change when an F code is seen while smoothing. Other considerations: Smoothing and FastMode are canceled by G00, G81-G89 or most canned cycles and rapid moves. If you stop or abort the program, it will also be canceled The maximum feedrate is capped by the RAPIDSPEED settings in CNC Setup. The feedrate will not go faster than these settings. G8 & G9 do not tag the feedrate to the specific line but rather execute the feedrate change as soon as the F code is read. Remember, because you are reading ahead in the program the feedrate change may switch to a feedrate that is read in advance of where the cutter is. Therefore, it is recommended that only G8/G9 mode be used on splines or cuts that are sandwiched between the G8 and G9 whereas FASTMODE will tag the F code to the specific line where it is issued. All feedrate changes while smoothing or while in FastMode are directly affected like all other feedrates commanded by the FEED variable issued in the CNCSETUP.EXE program, IPR command, SLOWDOWN, Feed POT and SmartPath. Any or all of these features will affect the final feedrate issued.

Q161 I realize these are not software questions, but do you have any motor or amplifier advice for me?

Answer

SYMPTOM: The motor runs away when the encoder loop is closed. CAUSE: Reversed encoder feedback polarity. REMEDY: Invert the polarity of the encoder by inverting the leads on the encoder. SYMPTOM: The motor runs away when connected to the amplifier without connecting the encoders. CAUSE: Amplifier offset or balance too large. REMEDY: Adjust the amplifier offset or balance pot on the amplifier. SYMPTOM: The motor runs away when connected to the amplifier even after adjusting the offset pot on the amplifier. CAUSE: Damaged amplifier. REMEDY: Replace amplifier. SYMPTOM: Controller does not read changes in encoder position at all or incorrectly. CAUSE1: Wrong encoder connections. REMEDY1: Double check encoder wiring. CAUSE2: Shorted connection at controller or terminal strip. REMEDY2: Connect the same encoder to different axis inputs for testing. CAUSE3: Either it is a bad encoder or it is the wrong type. REMEDY3: Replace encoder with a digital +-ABZ channel type with an index. SYMPTOM: The motor oscillates. CAUSE: The gain is too high or there is too little damping. REMEDY: Decrease proportional and integral gains and increase derivative gain. SYMPTOM: Everything is connected right but the motor does not move. CAUSE1: Motor is not functioning or wired correctly. REMEDY1: Disconnect the motor and encoder and apply a low DC voltage signal to the motor leads to test for movement. CAUSE2: The limit switch is falsely closed which stops the motor. REMEDY2: Use diagnostics to view the state of the limit switches. SYMPTOM: The motor drifts off slowly or gets a position error or reports following error. CAUSE1: Encoder noise. REMEDY1: If the encoder reports movement when there is no motor movement, then you have RF or EM noise. CAUSE2: Pots on amplifier are out of adjustment. REMEDY2: Have a technician adjust the pots labeled Gain, Offset, Balance, Current Limit and/or Dead Band.

Q162 How do I get the G code display window to show the next blocks?

Answer

In the CNCSETUP program, click on the "Design Operator Interface" button and then click on the "Display the Lines of G Code" button. When asked — Enter the number of lines of G code to be displayed? — Enter in a negative number representing the lines of G code to display ahead. There will be a small performance sacrifice for doing this and you will also not be able to view any of the Diagnostic information in the display since it would be out of order. You will still be able to view all the Diagnostic information in the correct order in the LogFile.Fil file.

Q163 What happens if various hardware faults occur and how do you recover?

Answer

Although no one can guarantee or assume that the electrical, mechanical or computer components of an integrated system are immune to errors, we have gone to great lengths to see that our software works with the motion cards we recommend and that it has the necessary safe guards on our end. DRIVE FAULT: There is a terminal connection for each motor labeled "AMP FAULT" which comes from each of your amps. If the drive has either overheated, over-voltaged or short circuited, this will automatically signal the controller through an I/O so that you may specify the order of events that will happen or make use of the ABORT pin on the motion board to turn off all the motors and stop cutting. Different manufacturers may use other terms for AMP FAULT or ABORT. POWER LOSS, POSITION LOSS or ENCODER FAULT: In any case the machine will stop cutting and turn off all the motors whenever the commanded position differs from the encoder position outside of a user- specified tolerance. You specify the tolerance to work within. If the command position falls outside the tolerance due to overwhelming resistance or excessive position error, then the system will turn off all the motors and stop cutting. Two other things that can be done are to connect the AMP ENABLE terminal connection on the motion board to the ENABLE or INHIBIT connection on the amp. Also use a battery back up (UPS) unit to protect the I/O and controller from power loss or voltage fluctuations. Different manufacturers may use other terms for AMP ENABLE or INHIBIT. COMPUTER FAILURE: The controller is a dual processor design that separates the computer CPU and motion operations. The motion of the machine is handled by an independent processor that will strive to complete its task or shut down the machine. A watch dog timer will ensure the computer and motion card are properly functioning every 60 milliseconds. Also use a battery back up (UPS) unit to protect the computer from power loss or voltage fluctuations. OVER TRAVEL or E-STOP: If wired to the motion board, it will trigger an I/O to stop the machine. The order of events that will occur is specified by the user in the LIMITS.FIL or INPUTIO.FIL files. To recover from a hardware failure in any case whenever it occurs, you must correct the error first. Once repaired or reset, you can then jog away and either press the cycle start or mid program start button which will allow you to begin at the place in your program where you left off. The mid program start feature will read all your tool numbers, speeds, feeds and offsets up to that place in the program and then stop and wait for the cycle start to be pressed. If a minor interruption in a cut occurs, you can simply press the ESC key and the controller will ask you if you want to continue, abort or travel backwards on the path before you begin cutting again. IMPORTANT: Plug the UPS into an outlet that does not share a circuit with a heavy electrical load and check to be sure that the wattage rating of the UPS is powerful enough to drive all of the devices that are plugged into it.

Q164 Our machine is losing position.

Answer

The more moves we make the more the position error accumulates. The problem, as we see it, is that it must take a fractional value representing encoder counts per inch entered into the RATIO parameter in the CNCSETUP.EXE program. The problem stems from an accumulation of encoder position errors resulting from the physical encoder feeding back position data in whole number formats when in essence it takes a fractional value. This fractional piece of an encoder count is being truncated or rounded off to the next encoder count on each and every move you make over one inch. After many moves you have lost many whole encoder counts. Our system has a built-in method of storing and issuing parts of an encoder count whenever they accumulate. Your goal is to first find out exactly how many encoder counts it took to move a predetermined distance that you can measure. If you can measure the table's true distance of travel and find out how many encoder counts it took to get there, then divide that number into the number of inches you traveled and you will have the correct RATIO values needed to be entered into the CNCSETUP.EXE program. The best way to do this yourself is to keep adjusting the RATIO value in the CNCSETUP.EXE program and make a move, preferably a long move. You would finally find the correct RATIO value that moves your table that predetermined distance you originally set up. This may be a fractional number. Step 1. Calculate encoder accuracy in inches 1 inch / Encoder counts per inch = accuracy of one encoder count Example 1: (1/4000) =.00025 Accuracy of the encoder. Step 2. Determine how many encoder counts are in any given number of inches of travel. For example, make a long move such as 10 inches. You can make a test move in Diagnostics one axis at a time. Step 3. Calculate number of encoder counts to make a 10-inch move. (Inches / Accuracy of the encoder) = Total # of encoder counts to complete the move. Example 2: (10" /.00025) = 40,000 encoder counts to move the axis 10 inches. Step 4. Take this number (40,000) and divide it by the total distance measured (10") to obtain the true number of encoder count resolution to enter in the RATIO parameter box for that axis. This number may end up being a fractional number of encoder counts. Example 1 is when everything is normal. The axis moved 10 inches when commanded to move 10 inches. (40,000 / 10") = 4000 encoder counts to move the axis 1" of travel. You would enter 4000 as the RATIO parameter. Example 2 is when the actual total measured distance was 9.985". (40,000 / 9.985) = 4006.009 encoder counts to move the axis 1" of travel. You would enter 4006.009 as the RATIO parameter. This fractional value should move your axis exactly 1.0" when commanded every time. Example 3: With the original RATIO values there was an X.012 error and Y.00145 error accumulated in 20 cycles. This means it accumulates.0006 in X per cycle and Y accumulates.00145 per cycle. RATIOX will be 5212 RATIOY will be 6231.6 Since it's suppose to take 5212 counts in X to travel 1 inch (will adjust below) 3.1272 counts moves the X.0006, 9.03582 counts in Y moves.00145 Next adjust the RATIOs by subtracting these values from the originals above: RATIOX will be 5208.8728 RATIOY will be 6222.5642 If we are dealing with a master slave axis setup as in a gantry, then work with only the master axis to measure distance and allow the slave to follow until you find the correct RATIO value for the master. After this is done you may need to adjust the third parameter of the SLAVE command to adjust the proper scale factor between the master and the slave. The important issue to keep in mind is that any true encoder RATIO must be divisible by 200 or 1024. If this is the case, then you will never lose any fractional values of a count, only true whole encoder counts would be returned. Example: 4000 / 200 = 20 (good) Example: 8192 / 1024 = 8 (good) Example: 20579 / 1024 = 20.0966796875 (bad) Example: 20579 / 200 = 102.895 (bad) In the case of odd belt sizes, pulleys, simulated encoder feed back or gearing that would cause the RATIO to be a number NOT divisible means that it must take some fractional value. If these fractional values are not accounted for, then you will lose them and after many moves you will have lost many whole encoder counts that will cause your machine to lose position. In order to have repeatability and an accurate machine this fraction, even if it is in the sub microns, needs to be known. Caution! It is possible to have an odd RATIO value and be able to accurately position an axis to say 1" or even 10". However, if you were to cut many parts in a production run, the problem will start to surface. Remember, the error accumulates with the greater number of moves made. If the error is small, then it will take many moves before you see any noticeable error, but it is still there and will surface at some point. Caution! It is possible to have a divisible RATIO by 200 or 1024 and be able to repeatedly cut parts over and over again. However you may NOT be able to move the machine accurately to 1" or even 10". This is also a telltale sign that you have a fractional encoder RATIO that needs to be addressed. This effect is usually a sign of odd belts, pulleys or gearing coming into play. Caution! Homing the machine resets the error to zero, masking the problem and is a telltale sign of a fractional RATIO error. This is to say that if you notice that after homing the machine between parts you are able to maintain repeatability over a production run, but repeatability is only maintained if you were to home the machine after each part. This is not desirable, but may work for you if homing between parts is feasible. Caution! An encoder value that is divisible by 1024 implies that this is an Emulated or Simulated position signal, not a real position from the encoder itself. Generally this is a calculated position from an amp drive. You get your signal from the drive rather than connecting to a real encoder. There are different qualities of these emulated signals per manufacturer. Some have a latency, meaning lag behind the real position, and some round off fractional pieces of encoder counts to whole integer values, thus dropping the very small precision values. After many moves this will accumulate a position error. Not all models do this. Caution! There are two main factors that will inhibit your ability to notice a change. (A) The system will only make a corrective action when the fractional value accumulated in memory produces an error greater than one whole encoder count. (B) When it does make a corrective action, it will tell the system to move to that location +/- 1 encoder count. However, most machines are not going to make it to the exact location every time within +/- 1 count because of mechanical reasons such as weight, load, inertia, etc. The position it will stop at is satisfied by the value entered into the TOLERANCE box in CNC SETUP. The best approach is to pick the average over a number of repeated tests. Test for Fractional Encoder Counts One way to test for this is to make a larger repetitive move back and forth over many iterations like 100. Remember, the fractional amount seems to grow with the more moves made in that axis. Make a test program to move the axis back and forth say 10 inches 100 times and see what the discrepancy shows in a dial indicator and divide this by the number of iterations. Then follow the instructions in the Common Questions to figure the fractional encoder value and add or subtract it from your RATIO value. We will help you figure out the best value to use. (Not speaking about BACKLASH here. Set USEBACKLASH to 0 or it will mess up this test.) In cases where Linear Scales are used or the encoder is mounted on the lead screw, this is what to do. This should also work if the encoder is mounted on back of the motor. 1. Set a dial indicator to zero touching a piece of the spindle or any spot on the machine that is stationary. 2. Write down the readout’s position when started. 3. Write down the readout when ended after last 100th move. 4. Tell us what the dial indicator reading is and the distance moved back/forth. 5. Send all 4 pieces of information to us and we will compare them to let you know what RATIO value to enter. This may take doing again after the changes are made to verify if it is close. There are rare cases gearing or belts create abnormal scaling of the encoder counts that would force you to use a fractional RATIO value to be accurate. The mechanical errors may be so small that it will accumulate over time and many moves before it is humanly noticeable. When dealing with amp drives that use resolvers that provide emulated or simulated encoder output, the norm is usually 1024. Note that it is common for the resolver to encoder emulator to drop or round off a count here and there. This is very rare and is only noticeable after many moves. You can either use real encoders or a fractional value to compensate. NOTE: The ultimate goal in all these cases, for example, is to add or subtract a very small fractional value to the existing RATIO count such as.001,.2 or.5 to compensate. Example: If after making 100 moves at.1387 produces.0045 error on average using 41615.36 encoder counts, then RATIOX needs to be 41617.232 577205.04=(.1387*100*41615.36) 'Number of encoder counts it takes now 577392.31=((.1387*100)+.0045)*41615.36) 'Number of encoder counts it ‘takes after adding.0045 1.872=(577392.31-577205.04)/100 'How many encoder counts it is off by 41617.232=41615.36+1.872 'New RATIOX value Solution Summary: (1) On drives that send out an emulated/simulated encoder signal, most brand name amp drives have a way to set the number of counts it outputs per motor revolution, such as a multiplier. They are usually in increments 10x, 100x, 1000x, etc. The goal is to change the amount of counts it requires to move the same distance (example 1", 1mm or 1 degree). If it originally took 80000 counts to move 1" but you can change this by a factor of 10 so the drive only outputs 8000 instead, then Step 2 below will be 10 times easier to accomplish. (2) The original thought of honing in the RATIO value for X&Y still applies. Adjusting these RATIO values is the KEY. Since removing the.48 fractional portion of the RATIO count helped, but not totally cured, this means you are getting closer to the most accurate value. The best way to do this is to make a program that moves ONLY one axis at a time, back and forth, many, many times, until it hangs/stops. This will be your test program. NOTE: Make a separate program for each axis. You may find that one or more axes are good. They never hang or stop. If so, you can rule out those axes and keep their RATIO values the same. We say one axis because it may be that only 1 axis out of all axes has this problem. For example, a circle uses 2 axes simultaneously. The other axes may have correct RATIO counts and should not be changed. Repeat this test with slightly different RATIO values. If you increase or decrease the RATIO and it gets worse (hangs/stops quicker on fewer moves), then enter a RATIO that is the opposite direction by only HALF. For example: IF RATIO=80000 stops after 100 back & forth moves, but 80100 stops after only 50 back & forth moves, then the next value you should try is 80050.

Q165 How do I ask for a filename and then open that filename to read or write to it?

Answer

One of the first things to do is to ask the user for the filename with the QUESTION command. This will store the path and filename into a variable. If the user only entered the filename and not the path, then you may add the path to the variable afterwards as follows: QUESTION Enter the filename;\55 \55=C!/AS3000/CNC/\55 FILEOPEN READ;\55 or do not give a filename and a standard Windows dialog box will appear. You must remember a few important issues first: (1) Use the ! exclamation mark in place of the: colon and a / forward slash in place of the \ backslash as described in the FILEOPEN command. (2) Be sure that the path does exist. (3) Don't forget to enter the filename extension.

Q166 What does CamSoft expect when setting up Lathe offsets?

Answer

We are expecting the same traditional home, Z and X offsets as practiced by industry standards. There are three separate subjects here to explain. We are expecting that each tool will have offsets entered into the tool parameter screen that will make Z0 the face of the part and that X0 will be the center line diameter. We are expecting that the home switches for machine zero that the tool turret registers off of will be in the rightmost, upper Z positive and X positive location past the longest part that could ever be placed in the chuck and also past the largest part diameter. The tool turret should have the first tool positioned as tool number one and be set at machine zero also. The tool turret can be zeroed by either finding the index marker of the encoder or by traveling to a home switch. This position for Z,X and the tool turret shall be given as MACHZERO 0;0;0. We are expecting that the values entered into the Z and X offsets on the tool parameter screen to always be negative values. The reason is that when setting up each of your tools in the tool turret, you should have to jog the tool insert in the negative Z-axis direction from machine zero to touch the face of the part. You should then enter this value into the tool parameter screen in the Z offset box for that tool number. The default Lathe operator interface screen provides a tool number box to enter the tool number being set and buttons titled Z preset and X preset that, when pressed, will automatically enter the Z or X offset in the tool parameter screen for you. The procedure for Z would be to jog slowly to the face of the part and touch off. Next press the TOUCH OFF Z FACE button. The procedure for X is that first you must have a pre-sized billet of a known diameter so that you can enter the diameter into the box on the operator screen titled PART DIA TO SET X. Then jog slowly to the known diameter of a part and touch off. Next press the TOUCH OFF X DIA button. Note:It is good practice to always use a thin piece of shim stock when touching off your tools to the part. It is also not a common practice to use the fixture offsets G54 through G59 on Lathes.

Q167 How does tool comp and axis offsets differ between a mill and a lathe?

Answer

On a mill the tool compensation is calculated around the center of the tool radius. The compensation will be a path running parallel to the original programmed path equal to the distance of the tool radius. Therefore, enter the full tool diameter into the tool size box on the tool parameter screen. Only use the wear box to adjust for tool wear in the range of a few thousandths. Never enter a value greater than half of the tool radius. The boxes on the tool parameter screen labeled Horizontal and Vertical offsets should only be used in cases in which a spindle or head is not in line with the programmed tool path. A good example would be when a machine has multiple heads and you need a way of entering the horizontal offset distance between each head. The height offset is the negative distance between the tip of the tool and the top of the part. The top of the part is usually Z0 on a mill. To invoke tool compensation you must use a G41 to offset the tool to the left of the programmed path or a G42 to offset the tool to the right. Always use a G40 to cancel tool compensation at the end of each 2D path before you raise the tool up. It is always a good practice to move to a position away from the part with tool comp off G40 and then lower the tool in Z after this initial positioning. Next make a move that is perpendicular to the first cut at a distance away from the part greater than the tool radius. The last move of the 2D path should move the tool away from the part. Remember to enter a G40 at the end of the path before you raise the tool or start a new path. 3D tool compensation is available with the full machine tool controller software. A Lathe uses a different theory. The path that should be programmed is to the Theoretical Sharp Corner better known as T.S.C. This position is not calculated around the tool nose radius but rather the imaginary intersection of the face of the tool insert and the bottom edge of the tool insert. This theory was developed originally by the Japanese and is not standard for pre 1980 CNC lathes built in America. It is up to the CAD/CAM system to calculate the tool path to this T.S.C. Always enter the tool nose radius into the tool nose radius box on the tool parameter screen. Only use the wear box to adjust for tool wear in the range of a few thousandths. Never enter a value greater than half of the tool radius. The boxes on the tool parameter screen labeled Z Axis Horz and X Axis Vert offsets should contain the negative distance from the tool to the part face in Z and the center line diameter in X. The face of the part is usually Z0 and the X center line is usually X0. To invoke tool compensation you must use a G41 to offset the tool to the left of the programmed path or a G42 to offset the tool to the right. Always use a G40 to cancel tool compensation at the end of each path before you send the tool home. It is always a good practice to start at an initial position away from the part with tool comp off G40. Next make a move that is perpendicular to the first cut at a distance away from the part greater than the tool radius. The last move of the path should move the tool away from the part. Remember to enter a G40 at the end of the path before you send the tool home or start a new path. There are some important rules for lathe compensation and remember that if the CAD/CAM system did the tool compensation there is no need to enter a tool nose radius into the tool parameter screen or to even use a G41 or G42. However, if you do want to do tool comp at the Lathe, then you must do these extra three things. Enter the tool nose radius into the tool parameter screen for each tool. Some tools will have sharp corners so the tool radius will be zero. This is a complex concept, but you must add or subtract the tool nose radius amount from the current value in the Z Axis Horz box on the tool parameter screen in the direction of the T.S.C. The amount is always equal to the tool nose radius, but whether to add or subtract is relative to the T.S.C. direction for each tool. You may want to ask an experienced CNC Lathe programmer to explain this one. The adjusted value in the X Axis Vert box on the tool parameter screen has the same complex concept as does the Z Axis Horz box. You must add or subtract the tool nose radius amount from the current value in the X Axis Vert box on the tool parameter screen in the direction of the T.S.C. The amount is always equal to the tool nose radius, but whether to add or subtract is relative to the T.S.C. direction for each tool.

Q168 I want to tap but I don't have a programmable spindle or an encoder on the spindle.

Answer

Using a programmable spindle allows for high-speed, rigid tapping or threading. If you could mount even a low-cost encoder on the spindle, then you could use the macro: [NON Rigid tapping] which uses TRUERPM instead of a programmable spindle motor. This method still needs an encoder to monitor the RPM. Without RPM feed back, it is a matter of matching speed and feed. We have to first verify that the spindle spins at the correct RPM whenever we command it. The best way to do this is to use an RPM meter or some other means. You will also require a spring loaded tapping head. The principle behind this will be to match the spindle RPM to the Z feed. Important, you must not feed faster than the spring loaded tapping head is adjusting for error between the commanded speed and the actual speed. ' Example G84 X1 Y1 Z-.1 F10 C24 R.25 T1 ' Assume Z0 is the top of work piece. ' Need C as threads per inch. ' This will calculate the spindle speed based on distance and feedrate. ' If the thread is 1 inch long and you are feeding at 10 inches a minute ' and you require 24 threads per inch, then the spindle speed would be ' Speed=Threads per inch * Feed in IPM ' With this formula it does not matter how deep the thread is. IFc=<0THENSTOP:MESSAGE Need C parameter as threads per inch for Tapping:EXIT \555={c*f} DECELSTOP RAPID x;y;r SPINFORWARD \555 GO;;z SPINSTOP SPINREVERSE \555 GO;;r SPINSTOP SPINFORWARD \555 Here are other alternatives: There are certain criteria that a machine has to meet in order to be able to do Rigid Tapping. Rigid Tapping implies that you are not going to use a spring loaded tapping head. Instead, you want to put the tap in a regular tool holder or collet. Rigid tapping is a standard feature in CNC Professional and is setup in the CNC SETUP program if you have the proper encoders and hardware to handle it. There are a few choices we give for tapping at different speeds based on the motors you have. Rigid tapping is best performed when the spindle is servo controlled. We can reach tapping speeds of up to 3,000 RPM. Rigid Tapping can still be done without a servo motor on the spindle or a spring loaded head at lower speeds using a device called "Spindle Marker Pulse" on our website. Using a spring loaded head such as a Tapimatic brand can sometimes equal rigid tapping speeds, so this is a consideration.

Q169 Can we call a Macro from within another Macro?

Answer

First, don't confuse a G code, M98 or M99 macro with a macro that contains logic. It is best to call M98 a subroutine and macros you call from within the system logic macros. Yes, you can do both because the controller maintains two memory stacks — one for called logic macros and another for subroutine macros. You may get fairly complex. The system can handle recursive calls, but you will reach a limit at some point, which is different for each person's application.

Q170 Why do our motors randomly run or drift away?

Answer

We made a special trap in the program to re-servo the motors if they fall out of PID servo loop software control. This could happen if the following error or position error becomes greater than the tolerance you set in CNCSETUP. This could also happen during a motor reset or motor parameter change. The software's PID formula monitors the position and automatically adjusts the voltage to the motors to keep the motors held in the position they were commanded to be in. For safety, speed and reliability the motion card works independently of the computer's CPU. Therefore, even if the computer fails, the motion card will still be in control as long as it's under power. If the software briefly stops monitoring the position because of one of the reasons listed above, then power to the motors is cut and the motors go limp. This is considered the norm. However, if the amplifier drive pots labeled offset, deadband or bias are not adjusted properly, then the motors will drift off or run away. These pots are there to tune the amps with the motors directly to counter such items as gravity. The software PID loop tuning is different. Its purpose is to monitor, stabilize and verify position during a move and at a stand still. The software will check if the motors go limp and re-servo the motors automatically unless they repeatedly receive an error. The concern is that if the amps are not tuned to the motors, there may be cases in which the software cannot re-servo the motors and therefore not be able to counter the forces that the amps are moving the motors in. As long as you are under PID loop software control, the PID loop will hold the motors in place and when you are not, the voltage offsets or bias pot settings on the amps will drift the motors away by themselves. One way to find out if your pots are adjusted correctly is to go into diagnostic and get ready to hit E-stop then enter: (1) POSERROR OFF (2) MOTOR OFF If any of the motors start to drift, you will need to adjust the pots on the amp drives. You may be able to stop the drift by entering: (1) MOTOR ON (2) POSERROR ON If not, hit E-stop or turn off power. What is important is that we first rule out some of the more common reasons for run away such as false encoder signals. (1) Are you using all four wires on the encoders A+, A-, B+, B-? (2) As long as you never issue the command POSERROR OFF, then the system will automatically self protect itself from run away and not allow the position error to be greater than TOLERANCE. Otherwise the amp drives would turn off. (3) See QUESTION 385. (4) If you entered MOTOR OFF in Diagnostics, do any of the motors drift? (5) Using Search for Solution, enter "RUN" and in the next box enter "AWAY" and do a search. In the CNC Professional manual see Question Nos. 108, 139, 161 and 171.

Q171 We are concerned with outside EM or RF noise.

Answer

It doesn't take much to stop EM or RF outside noise and if you take the normal precautions and use common sense, it will be fine. The OPTO22 I/O modules are optically isolated from a surge. It is really more common to have interference from power source problems, which is why we recommend a UPS battery to protect from internal electrical power noise. You say that EM and RF noise from outside is a main concern. We recommend that you take the normal precautions, listed below, to prevent the wires from acting as antennas: 1. Use shielded cable(s) when possible. 2. Keep high voltage wires or power away from the I/O cables. 3. Always use the metal ground wire wrapped up in most cables as a ground. 4. Keep away from large air compressors, welders or any electrical discharge machinery. 5. Keep as much of the wiring protected in an electrical cabinet. When regarding Ethernet cards and noise, they use a unique method of communication, which benefits long distance reliable communication, but on the other hand is much slower than standard PCI Bus Communications. Data sent via Ethernet is sent in packets. Windows waits until the packets are full before they are sent but more importantly it is built into Windows that a return packet must be received by the host that acknowledges the receiving device found no errors in the check sum of the packet size or else another repeat of data is asked to be sent again. If there is EM or RF noise present around the cable, this could cause much of the data to be dropped because of communication errors and repeats of packets are sent multiple times causing a pause while it waits for confirmation of an error-free packet. IMPORTANT: Plug the UPS into an outlet that does not share a circuit with a heavy electrical load and check to be sure that the wattage rating of the UPS is powerful enough to drive all of the devices that are plugged into it. Ultra Sonic Height Sensor and Laser Probe Sensor Wiring Recommendations Wire the analog voltage output signal from the sensor to the Analog Input connection on terminal (AN4) and the sensor’s analog signal ground to (ANALOG GND) on the ICM Terminal Strip. IMPORTANT #1: See QUESTION 385. IMPORTANT #2: Before connecting the sensor, as a test, use a standard square 9V household battery connected to (AN4) and (ANALOG GND) on the ICM terminal strip. Open the Diagnostics window. See the CNC Watch Window. Analog Input 4 should show a steady voltage reading (we are not worried about small fractions of a volt, these get filtered out by the routine). If not, then test with and without the motor/amp drives on or other high-voltage devices that might cause electrical EM or RF noise.

Q172 How should I register the PCI or ISA motion card or I/O with Windows?

Answer

Typically ISA cards do not need to be registered because they use a fixed address set by dipswitches on the motion card itself. This is better than using the Windows Plug and Play option on the card. Although in some cases Windows Plug and Play is the only way the card can be registered. Tip No. 1: Install the CamSoft software first so that you have the needed INF files ready to go when Windows ask you to install the hardware drivers. Tip No. 2: Allow Windows to setup the card by using the Windows Add New Hardware Wizard found under CONTROL PANEL/ADD NEW HARDWARE. This will walk you through the setup. Installing a Galil ISA Board: Using Windows 95 and 98 First Edition Important, you should be using a special version of CNC Professional offered by CamSoft, which includes these older drivers. We recommend that you disable the Windows Plug and Play option on the card in favor of the dipswitch address settings. If you do, then there is nothing to do regarding Windows registration. The first time you run the CNC program or GALILREG.EXE it will ask you for the address. Just accept the default answer. Use GALILREG.EXE to change the address if needed. Using Windows 98SE, ME, NT, 2000, XP, Vista or Windows 7, 8 & 10 We recommend that you do not disable the Windows Plug and Play option on the card. When you insert the card in the slot and reboot, Windows will detect new hardware and ask you for the driver. If not, use the Windows Add New Hardware Wizard. Point to the GLWDMISA.INF file in the AS3000\CNC directory. Match the GLWDMISA.INF file to the card model number. Installing a Galil PCI Board: Using Windows 95 and 98 First Edition Important, you should be using a special version of CNC Professional offered by CamSoft, which includes these older drivers. When you insert the card in the slot and reboot, Windows will detect new hardware and ask you for the driver. If not, use the Windows Add New Hardware Wizard. Point to the DMCxxxx.INF file in the AS3000\CNC directory. Match the DMCxxxx.INF file to the card model number. Using Windows 98SE, ME, NT, 2000, XP, Vista or Windows 7, 8 & 10 We recommend that you do not disable the Windows Plug and Play option on the card. When you insert the card in the slot and reboot, Windows will detect new hardware and ask you for the driver. If not, use the Windows Add New Hardware Wizard. Point to the GLWDMPCI.INF file in the AS3000\CNC directory. Match the GLWDMPCI.INF file to the card model number. Installing a Digital I/O ISA Board Using All Windows Versions: This is the easiest installation since you are not using Windows Plug and Play. Leave all the dipswitch address settings alone on the card because they are preset. There is nothing to do regarding Windows registration. Simply select the correct model AUX card number under I/O SETTING in the CNCSETUP.EXE program. Installing a Digital I/O PCI Board Using All Windows Versions: When you insert the card in the slot and reboot, Windows will detect new hardware and ask you for the driver. Point to the AS3000\CNC directory and Windows should automatically find the correct.INF file it needs. You will need to find the board address Windows has assigned. There are two choices on how to do this: Run the GETREG.EXE program or Right mouse click on MY COMPUTER, then PROPERTIES, then DEVICE MANAGER, then MULTI-FUNCTION ADAPTERS, then find the board name and click on RESOURCES. Write down the I/O board address. This will be a Hex value. After you have found the board address Windows has assigned, you will need to run the CNCSETUP.EXE program and click on the I/O SETTINGS button on the CNCSETUP.EXE window. First select the correct AUX card model number and then enter that hex value in AUXADDR1 board address.

Q173 How do we set either a max voltage or frequency to our laser that the laser will not exceed based on the current feedrate of our table in real time?

Answer

For voltage, set up one of the unused axes on the motion card using zero servo tuning parameters with the SETUP command in the STARTUP.FIL file. Then, setup a SLAVE command to focus the combined coordinated axes velocities to the slave axis by giving the master axis number as 0 and the slave axis as the axis number the voltage is to go out with a ratio of 1 to 1. Last, use the FV command ONLY on the GALIL motion card to calculate and convert velocity into voltage. Example: SETUP 4;0;4444;0;0;0;0;N SLAVE 0;4;1 COMMAND FVW=value To figure the value for FV, add all the max RAPIDSPEEDs together and divide by the number of axes to get the average Maximum RAPIDSPEED of all the axes defined by the AXES setting in CNCSETUP. RAPIDSPEEDX=80000 RAPIDSPEEDY=80000 RAPIDSPEEDZ=4000 AMR=Average Maximum RAPIDSPEED AMR=(80000+80000+4000)/3 MLP=Maximum Laser Power for programmed feedrate (MLP=75%) PFR=Programmed Feed Rate (PFR=300 in/min) MFR=Maximum Feed Rate of machine in (inches/millimeters) per minute (MFR=600 in/min) FVW value= {(((8191000/AMR)*(MLP/100))*(MFR/PFR))} FVW=224.76 For frequency, set up one of the unused axes on the motion card as a STEPPER axis using the SETUP command in the STARTUP.FIL file. Also, remember to place a jumper on the motion card that will tell the card to send out pulses instead of voltage on that axis only. Then, setup a SLAVE command to focus the combined coordinated axes velocities to the slave axis by giving the master axis number as 0 and the slave axis as the axis number the pulse goes out to with a ratio of 1 to 1. Use the third parameter on the SLAVE command to regulate a scale or ratio of velocity to frequency. Example: SETUP 4;2;4444;-1;0;0;0;N SLAVE 0;4;1

Q174 If I put an S, T or F code at the top of my G code program, is it still active several lines later when I use an M3 call?

Answer

The values after all the letters in a G code program are accessed by using the lower case of the letter. They remain with these values until they are re- assigned in the G code program or changed by logic. Example: x=1.234 Some lower case letters have special meaning as described in the beginning of the Logic Language Reference Guide section of the manual. For instance, the lower case t will automatically load the tool offsets for that tool number from the TOOL PARAMETER screen. When a t code is called, the tool LENGTH and SIZE parameters become active. Whereas the lower case s will represent the spindle speed. If you do not have a spindle, then letters such as s can be assigned to laser power or perhaps analog voltage. The lower case f is for feedrate and will remain using that same feedrate until changed. Many items affect the feedrate such as a RAPID, Feed Pot, Feed Variable and the FEEDRATE logic command.

Q175 Can the program process multiple G codes on the same line such as G0G54G17?

Answer

You can have as many G or M codes on the same line as you wish. The G codes will execute first before the M codes unless you use the EXECUTE logic command, which can change the order in which G and M codes are processed. All the G codes and M codes on the same line will execute together. All the lower case letters are accessible to you on the same line before the G or M codes process. Any unique G or M code events process from left to right.

Q176 Why do I get a wide variety of performance issues on my stepper motors?

Answer

At random on some parts, for example, we will start at X0 Y0 and when we follow the program around the profile, the readout is perfect, but when we arrive at the end of the program back at X0 Y0, the table does not come back to the same place. It is humanly noticeable that it is off position even though the readout says X0 Y0. Answer: This is due to the fact that steppers run in an open loop mode. Even if you have special amplifiers that close the servo loop between the motor and amp, but the amp takes step & direction signals, this is still open loop back to the controller. Open loop simply means that the controller will send positions or command positions but is not be able to receive feedback in the form of encoder pulses to verify or compensate for position error. Therefore, you always see the commanded position shown in the readouts not the actual position. In this case during acceleration from a dead stop, decelerating too fast to a stop or an abrupt change in direction can cause the steppers to loose some steps. The drawback to an open loop system is that you will never know it unless you can humanly notice it yourself. The only solution is to reduce the feedrates and avoid these situations unless you are willing to use larger motors. Some of the time our readout display is incorrect from the actual position. The greater we open up Tolerance the worse it gets. Answer: In an open loop system the readout only shows the commanded position. Therefore, the actual positions shown in the readouts are only the commanded ones. Unless the commanded position is affected by offsets from the tool parameter screen, fixture offsets, tool offsets or math calculations in the GCODE.FIL file, the position displayed is correct. During travel if torque is lost due to quick accelerations from a dead stop, decelerating too fast to a stop or an abrupt change in direction, the machine may freeze in position and the readout stop counting. The most common cause of a discrepancy between the readouts and actual position is that the controller is reading ahead in the G code program and displaying those positions. The use of BLEND, G8-G9 or G64-G61 is the most common cause since these features allow the motion card and Windows CPU to split up the motion tasks — one to read ahead and display the next line of code and the other to keep traveling until it arrives at the last position target. When using any of these features, the computer will read ahead in the G code program. The wider you open your tolerance the quicker the actual move will be satisfied that it is within tolerance and then read the next move. This happens most frequently on programs with shorts moves such as splines. Don't worry, the actual position is accurate. The controller will split the process up to allow the motion card to finish the last move while reading ahead and displaying the next move. The use of any of these commands will prevent this display discrepancy and allow the actual motion to catch up: G00 Decelerated stop (DECEL or G11) BLEND 0 WAITUNTIL STOP Either on the first move or from a dead stop the readouts will jump to position or the machine will freeze up. Answer: Steppers are notorious for losing torque during acceleration from a dead stop, decelerating too fast to a stop or an abrupt change in direction. When this happens, the motors may kick out, stall, ignore steps or freeze up. Some solutions are: Change the G00 to a G01 and lower the feedrate. Open the position error allowance using POSERROR Lower the maximum rapid speed using RAPIDSPEED Lower the acceleration rate using ACCEL

Q177 How do I capture a screen and save it to a bitmap image?

Answer

When the error pops up: (1) Press the PRINT SCREEN button on your keyboard (2) Open Microsoft PAINT by clicking on the START button and selecting PROGRAMS, then ACCESSORIES and then PAINT. (3) In PAINT, click on the EDIT menu and select PASTE. (4) In PAINT, click on the FILE menu and select SAVE AS. (5) Before you send the bitmap image to your dealer, it would be appreciated if you could zip or compress the file since a bitmap file can be quite large.

Q178 We have a Gantry machine.

Answer

How do you recommend we home the master and slave axes? Homing a gantry is tricky since some people will tell you that the slave and master axes should always move together no matter what even during homing. One side of the gantry should find home while the slave follows. Others will tell you that the master and slave should move together then separate during homing moving one side of the gantry at a time. This is tricky and could bind up the machine, which can cause damage, even if you try to make only small adjustments. With CNC Professional there is a single command called SLAVE that goes into your STARTUP.FIL file. This command will even allow you to scale the slave axis to the master if the pitch of the lead screw does not match exactly. You can even turn off the slave feature temporarily to separate the slave from the master to make fine homing adjustments. In CNC Professional's DEFAULT.CBK file you will find a gantry homing macro in the MACRO.FIL file called [[Home Dual Heads]] which homes a 7 axis machine gantry with 4 heads — X master, X slave, Y and 4 Z heads. Remove or delete the logic for the extra heads as required. This routine will show you how to separate the master and slave axes. If you do not want to separate them, then the regular homing macros will work just fine. You be the judge of where and when to begin the SLAVE command. We will use a typical example of a two axis CNC Gantry style machine with programmable spindle. We will setup the third axis to be slaved with the first axis. First of all, in every case the spindle will always be the last axis and the slave axis will be the second to last axis. The axis that you plan to use as a slave axis for Gantry mode needs to be un-coordinated with the rest of the axes in the system and set up independently. Set the AXIS to = 2 in CNCSETUP. This will set the software for a 2-axis coordinated motion system. Set the SPINDLE to = 4 in CNCSETUP. This will set the spindle to be the fourth axis. Now you will use the SETUP and SLAVE commands in the STARTUP.FIL file in CNCSETUP – "Edit Other Motion Control Files" to set the third axis to be slaved to the first axis. Place the SETUP command before the SLAVE command in the STARTUP.FIL file as follows: SETUP;3;0;4000;0;10;0;64;N Your parameters will differ than what is shown here. This will set up the third axis upon system startup to be non-coordinated with the first two axes. Refer to the logic command SETUP in the Reference and User Manual for a more detailed explanation of this command and its parameters. SLAVE 1;3;1 This will set the first axis as the master and the third axis as the slave with a ratio factor of 1 to 1. The last parameter may be different than that shown here if the ratio value for 1 in/mm of travel is different for each axis. This parameter is the ratio factor or scale between the master and slave axis. Refer to the logic command SLAVE in the Reference and User Manual for a more detailed explanation of this command and its parameters. Now your CNC Professional Controller is setup for Master/Slave axis union or Gantry mode. CNC Lite does not have the SLAVE command to do this elegantly but this can still be done in CNC Lite with native Galil commands in the STARTUP.FIL file. These are the GALIL commands needed in this order. See the Galil Command Manual for the parameter values you want. GA GR GM With CNC Lite the motors can also be hard wired together as long as both encoders on the master and slave have the same encoder counts per inch/mm and lead screw pitch. With CNC Lite it is recommended that you either hard wire the motors to the same axis outputs on the terminal strip or you only use the method in which the master and slave always travel together. If you do not want to hard wire the 2 motors to a single axis but instead want to control each motor with its own axis, then the GA, GR & GM commands go in the STARTUP.FIL file.

Q179 When I ask the user a question, how do I differentiate between them just pressing ENTER, typing zero, hitting Cancel or Escape?

Answer

When an answer comes back from the question box, the variable could contain either: A blank for hitting Cancel or the ESC key. LENSTR \55;\99:IF\99=0THEN EXIT ‘if zero length A space if they hit only ENTER if you used a space as the default answer. IF \55= THEN EXIT The value zero. IF \55=0THEN EXIT Example: Test for the value being 0 to 360 and EXIT if a letter was entered by accident. QUESTION ENTER 0-360;\1 IF\1<0THEN MESSAGE INVALID MUST BE 0 – 360:EXIT IF\1>360THEN MESSAGE INVALID MUST BE 0 – 360:EXIT IF\1>0THEN GOTO:SKIP IF\1<>0THEN MESSAGE INVALID MUST BE 0 – 360:EXIT:SKIP 'If it gets here okay

Q180 How do we set up fixture offsets, tool clearance heights and tool length offsets?

Answer

These are basically the G codes G54-G59 and G28 in use with the T## number in the G code program as set up in the default CBK files by example. Your installer may have changed your G codes and logic. You may also modify the G28 logic in the GCODE.FIL to do whatever you wish and change the default actions. Both G54-G59 and G28 are optional. The G54 through G59 fixture offset values are set on the tool parameter screen. Each axis and each G code from G54 through G59 has a fill-in-the-blank box that represents the offset to add or subtract to the original axis values as called out in the G code program. The fixture offsets are canceled by G53. By default, G28 would move the called out axis after G28 to the machine home position without any offsets. For example G28 Z0 would raise the tool up in Z to the Z home position, which is Z0 minus the tool height offset. Remember offsets are easily forgotten about and it is good practice to lift the tool in Z to a Z clearance height above the part before it moves in X,Y around the part. The same applies to Lathes except you are moving the turret or tool away from the stock. Just to be safe, please test this in dry run mode without a part on the table or in the chuck under different conditions in order to get familiar with the offsets that are set in the tool parameter screen and called out in the program. What is important is that each tool number have it's Z height offset pre-set to Z0 at the top of the part. On the default operator screen you can do this by entering in the tool number in the green box titled "Tool Length Number" or "Tool Set Num" then jogging slowly down in Z until the tool touches the top of the part maybe with a thin shim stock between the tool and part. Next press the F5 key. This will automatically enter the Z offset directly into the tool parameter screen for that tool. From now on any tool called out by T# in the G code program will look up this offset so when commanded to move to the same Z0 location, any of the tools will go to the same place despite the individual tool lengths. If you have the means of pre-setting up the tools in separate tool holders and a height gauge set up on a bench next to the machine using a tool length gauge and tool block, then you can write down the length of each tool number and enter it into the TOOL PARAMETER screen for each tool number. Each operator interface can be different slightly depending on who created it. So there may be other boxes with slightly different titles on the operator screen such as a green text box on the screen titled PRESET VALUE. Here is where you enter the tool length offset. Some user interfaces have separate boxes for each axis. Others use physical buttons on a hand held or swinging arm pendant or touch screen with similar wording. The goal is the same in each case, which is to enter the offsets into the TOOL PARAMETER screen for each tool number. For complete Lathe offset information, please review the Questions titled "What does CamSoft expect when settings up Lathe offsets?" and "How does tool comp and axis offsets differ between a mill and a lathe?"

Q181 How can we find the lead screw compensation points that are needed for the ADJUST.

Answer

FIL file and also the amount of backlash in the system? The traditional method is to use a laser interferometer device and record the points. However, this is a very specialized technique and only certain people can do this. The laser is the recommended method. The next best thing is to use our macros: [[BACKLASHCHK]] [[MAPPING]] These macros will prompt you through a routine that will report the backlash amounts per axis and also automatically create an ADJUST.FIL file. It is recommended that the more times you allow these routines to run the better the results. These are only provided as examples; therefore, you may also have to tweak these macros for your own purposes.

Q182 While jogging why does the axis keep moving in spite of releasing the CTRL/SHIFT and ARROW keys?

Answer

The keyboard jogging routine will start deceling at the rate set by DECEL from the time you release the Ctrl/Shift or arrow keys. If the DECEL rate is set very low or if the jog rate is very fast, then it may take time to decel to a full stop. You can customize or reset the DECEL value, RAPIDSPEED and/or SLOWRATE in the JOG.FIL file.

Q183 Why does the Z-axis move if we enter G0 X0 as the first line of a program?

Answer

We checked the current version and Z will not move as you have written it. However, if there were no other moves made between the last program run and the next program run but there was a cancellation of either tool offsets, job home offsets or fixture offsets that affected Z, then Z could move the distance minus these offsets if Z was not given in the first move. Since you do not know if there were any offsets used in the last program or if new offsets were set in the beginning of this program that affect the Z axis, it is always a good programming practice to include all axis letters in the first move of a program for safety even if you enter Z0.

Q184 What causes a dwell mark or a cutting pause delay type of effect on my part?

Answer

There are a few things that could cause this effect. Here are some things to check: 1. Are you using DECELSTOP between these moves, which may cause a slow decel to a complete stop before moving on? 2. Is your tolerance any tighter or smaller while you are running these routines, thus making it hard to satisfy the in-position target location within tolerance? 3. Are you using WAITUNTIL STOP, which will wait for complete non-motion before moving on? 4. Is the TIMER.FIL file running or triggering extra logic within the TIMER.FIL file causing a delay? 5. Is the SmartPath feature on, which could automatically invoke decel stops or a reduction of feedrate? 6. Is Dynamic Feed on? Dynamic Feed slows the feedrate based on spindle torque. Check for the use of the CVBOST command in your CBK file. 7. Is the SLOWDOWN parameter set to something other than the value 100? If so, the NEXTMOVE parameter will slow down the current feedrate to the percentage of SLOWDOWN at the end of each move. 8. Is BLEND set to a positive value? This will pause the given amount of milliseconds at the end of each move. To decrease the pause and increase the speed at which the next move is to be made, make BLEND a negative value.

Q185 How do you easily display the last error number from the motion board?

Answer

Make an extra BUTTON on the screen and enter this simple logic in M14. COMMAND TC 1 RESPONSE \55 MESSAGE \55 —–M14

Q186 How do we use the JOG.

Answer

FIL file to set our own jog settings? The Jog event, which runs the logic in the JOG.FIL file, runs both at starting and ending the Jog event. You could toggle a variable on/off to tell when you are beginning and ending jogging mode. Perhaps you may set RAPIDSPEED, ACCEL, DECEL, FEEDRATE, SLOWRATE when starting to jog and back again when ending jog mode. The principle is pretty simple to toggle the start and end of the JOG.FIL file event. '\555 variable 1=Entering or beginning jogging 0=Jog off or end \555={\555+1} IF \555 >1 THEN \555=0 'Below are some example settings IF \555=0 THEN RAPIDSPEED 20000:ACCEL 20000:DECEL 20000:FEEDRATE f:SLOWRATE 200 'Jog OFF IF \555=1 THEN RAPIDSPEED 99999:ACCEL 999999:DECEL 999999:FEEDRATE 500:SLOWRATE 999 'Jog ON By setting a flag in the JOG.FIL file, then you will know when you are beginning or exiting jog mode. Therefore, when exiting jog mode, set all the parameters you changed back. Remember, you should not be in a G code program at the time so feedrate is not important to set back, just the ACCEL, DECEL and RAPIDSPEED values as you entered them in CNCSETUP. When the jog event begins or ends, it runs the JOG.FIL file. Therefore \555 toggles only between 1 and 0 with this logic: \555={\555+1} IF \555 >1 THEN \555=0 where 1=begin jog and 0=exit jog mode Below are three examples of other methods using on-screen jog buttons, physical buttons or joy sticks. See Macros [Jog Buttons] [JoyStick] M codes M160-M165

Q187 What choices do we have to override feeds and speeds?

Answer

There are many other questions in this manual that explain software methods. Search for keywords SPEEDPOT, FEEDPOT, RAPIDSPEED, FEED VARIABLE, SLIDER BAR and macros such as [RAPID OVER RIDE UP], [RAPID OVER RIDE DOWN], [FEED OVER RIDE DOWN] and [FEED OVER RIDE UP]. (2) Use an on-screen slider bar to slide with a touch screen or mouse to override the feedrate. Set FEEDPOT to 0 under ANALOG CONTROLS in CNC SETUP. Set FEED variable to 73 under ANALOG CONTROLS in CNC SETUP. Set a Slider Bar to VISIBLE and the variable to the same 73 using the ANALOG CONTROLS under the Design Interface feature in CNC SETUP. When the slider bar moves by mouse or touch screen, the variable assigned will change. Therefore, if that variable happens to be the same as the FEED variable, then it will change the feedrate. Keep in mind that the slider bar control will automatically update and change the value of the FEED variable. You may choose the feedrate override range percentage of the slider bar using the Design Interface feature to 100%,150%, 200%, etc. Look at the MOVESLIDER command to slide the feedrate override slider bar by logic command. (3) Use a potentiometer to change the feedrate and display it. Set FEEDPOT to 73 under ANALOG CONTROLS in CNC SETUP. Set FEED variable to 73 under ANALOG CONTROLS in CNC SETUP. Disable the slider bar on the screen using the ANALOG CONTROLS under the Design Interface feature in CNC SETUP. WIRE the pot to AN1 terminal. STARTUP.FIL file TIMER ON;500 'set the timer to 500 ms TIMER.FIL file GETRPM 0;\55 'get the feedrate of all moving axes DISPLAY1 \55 'display the feedrate in display box 1 Keep in mind that the FEEDPOT control will NOT update and change the value of the FEED variable, so a value assigned to the FEED variable will have a double influence effect on the feedrate override. Therefore, unless the FEED variable is set to 100 for 100%, it will multiply the FEED variable together with the FEEDPOT value. On the other hand, the Slider Bar control will automatically update and change the value of the FEED variable. (4) To only measure a potentiometer voltage and only display the feedrate. Set FEEDPOT to 72 under ANALOG CONTROLS in CNC SETUP. Set FEED variable to 73 under ANALOG CONTROLS in CNC SETUP. Disable the slider bar on the screen using the ANALOG CONTROLS under the Design Interface feature in CNC SETUP. WIRE the pot to AN1 terminal. STARTUP.FIL file TIMER ON;500 'set the timer to 500 ms TIMER.FIL file ANALOG1 \55;IN 'get the voltage of the pot \55={ABS(\55/10}*f} 'multiply pot voltage to current feedrate \55={INT(\55*1000)/1000} 'limit display to 3 places after decimal DISPLAY1 \55 'display the feedrate override in display box 1 (5) To measure and display the feedrate after it's been overridden by some outside mechanical/electrical means, you can place these commands in the STARTUP.FIL and TIMER.FIL files. STARTUP.FIL file TIMER ON;500 'set the timer to 500 ms TIMER.FIL file GETRPM 0;\55 'get the real feedrate of all moving axes as reported by ‘encoders or scales DISPLAY1 \55 'display the feedrate in display box 1 (6) To make your own feedrate override using logic commands. Set FEEDPOT to 0 under ANALOG CONTROLS in CNC SETUP. Set FEED variable to 73 under ANALOG CONTROLS in CNC SETUP. Disable the slider bar on the screen using the ANALOG CONTROLS under the Design Interface feature in CNC SETUP. Setting the FEED variable to \73 for example sets the feedrate override percentage. This tells the control what variable to read to vary the motion card's velocity on the fly. When the value in this variable changes, the feedrate automatically changes by percentage. The value of this variable should be a non-negative number from 0 to 100, 150 or 200, etc., percent. It can be higher. That is, if the variable was 200, then the motion card would move 200 percent faster than the F code in the program. If you change the value of \73 in logic, then this changes the percentage of feedrate override. Keep in mind that the FEEDPOT control will NOT update and change the value of the FEED variable, so a value assigned to the FEED variable will have a double influence effect on the feedrate override. Therefore, unless the FEED variable is set to 100 for 100%, it will multiply the FEED variable together with the FEEDPOT value. On the other hand, the Slider Bar control will automatically update and change the value of the FEED variable. As an alternative, you can use an on-screen slider bar to slide with a touch screen or mouse. Look at the MOVESLIDER command to slide the feedrate override slider bar by logic command.

Q188 We have a rotary axis and we want the readout to show only degrees from 0 to 359.

Answer

999. We have a solution that allows you to configure the values displayed for the rotary axis. Instead of using the provided readout, you can use a similar label box or display box titled "A axis". In the G0, G1 GCODE.FIL file enter the following: \99=a IF\99=>360THEN\99={\99-360} IF\99=<0THEN\99={\99+360} DISPLAY1 \99 Both absolute and incremental values will show up correctly. Even without adding this logic, the default readouts, as is, will always position correctly. DISPLAY1 is an example box. You can use LABEL1 or any other display box or label number that exists. You can also replace the existing bitmapped images for these items to any size, look and feel. Under Motion Settings, you may also set the TOOL/DEGREE to DEGREE=6 to force the readout to stay within -360 to 360.

Q189 Why is our hand wheel motion too jumpy and sensitive at small increments?

Answer

We know what you are speaking of when you describe a ratchet type or jumpy motion. There are basically two types of hand wheels. One is tachometer type in which it will move the selected axis at a speed at which you spin the hand wheel. The faster or slower you spin, the faster or slower that axis travels. If you stop spinning, the axis stops moving until you start spinning again. However, it cannot position accurately in this mode. The second type uses a precision digital more expensive hand wheel, which usually has between 100-360 clicks or positions in one full revolution. The effect you described is due to the fact that each click of the hand wheel produces a user pre-defined distance to move. If the user pre-defined increment is defined to a very short distance and you are turning the hand wheel too slowly, then the machine finishes each short move and stops before you have spun the hand wheel to the next click thus producing a stop and go ratchet motion. CamSoft's handheld controller makes use of a switch that allows the user to select this distance. We simply look at the position of this switch when someone spins the hand wheel in the INPUTIO.FIL file. We also include logic to set the Accel, Decel and Velocity. For an example, look at the logic in the INPUTIO.FIL file for some of the handheld CBK files we provide on the CamSoft CD. There are a number of adjustments to make based on how you want it to perform. Accel, Decel, Velocity and Distance to move per each click are user definable in the logic the hand wheel uses, which usually may be found in the INPUTIO.FIL file. By using or not using the TACH parameter after the HANDWHEEL command, you can switch modes at will. The TACH parameter puts the hand wheel motion in Tachometer mode and not specifying TACH puts the hand wheel in the default digital positioning mode. Refer to the section titled “Hand Wheel Setup, Calculations and Modes of Operation” in the CamSoft Installation Guide for a more in-depth explanation of programming a hand wheel. You can also use the “Search for Solutions” feature located on the CNCSETUP window and do a keyword search on hand wheel or handwheel.

Q190 How can we position a conveyor belt driven axis or hydraulic unit?

Answer

There is a good logic example using either +/- 10 volt ANALOG signal to a DC motor or hydraulic valve called [[Position Analog]] in the MACRO.FIL file. If your motor is either a servo or stepper or else the hydraulic value is a proportional value with encoder feedback, then you can setup the motors as part of the regular coordinated axis system. If they will not be part of the coordinated axis system and they position independently, then use the SETUP command in the STARTUP.FIL file.

Q191 How would we ask the user a question to override the settings on the TOOL PARAMETER Screen?

Answer

There is a good logic example on how to adjust or reset tool settings on the fly called [[TOOL PARAMETER OVERRIDE]] in the MACRO.FIL file. This will show you how to make a button to ask a question from the operator screen for such things as horizontal/vertical offset, tool size or tool wear. See the F5 key titled SET TOOL on the default operator interface for a different example of tool height offset.

Q192 How would I password protect certain buttons on the operator screen?

Answer

There are several other topics on password protection you should also read. Do a keyword search on PASSWORD. For example, to password protect the TOOL PARAMETER screen you could make a button that shows the tool parameter screen by using the command TOOLS instead of clicking on the tool box ICON. Make the logic for the button ask for a password that is embedded into your logic. If it does not match, then use EXIT. To go even further you can password protect your logic using our logic editor so someone cannot see the password.

Q193 How can we better control the MIDPROGRAM restart feature?

Answer

The MIDPROGRAM command has these options: (1) Parameter to enter the extra G&M codes or axes positions you need before a restart begins. (2) Option to read quickly through the G code program from the beginning to automatically pick up tool changes and M codes for such items as Spindle On, Laser On or Flame On plus read tool, part and fixture offsets. It will then ask you to press Cycle Start when you are ready. (3) CNC Professional even has a MOUSEPICK option to graphically select the restart position with the mouse pointer even midway along a long move. (4) If you want more control over what happens before the restart, then take a look at the following example. Let's say you need to suppress the M codes from triggering a tool or spindle gear change while the program is scanning quickly in memory to pick up all the previous axes positions and offsets. Then, just before you get the prompt to press Cycle Start, you want all the M codes to resume normal actions plus turn on the Spindle, Laser or Flame. Keep in mind that you can add the commands you need before the program scans in memory and also just before Cycle Start is pressed. In this example we will suppress all M code functions while scanning and then re-activate the M codes plus turn on the spindle. SUSPEND MCODE 'Suppress all M code functions SUSPEND RESPOND 'Suppress all I/O relays MIDPROGRAM MOUSEPICK 'Execute graphically restart —–M100 SAY PRESS CYCLE START 'Talk out of the speakers to operator MESSAGE Press CYCLE START when Ready RESUME 'Re-activate M codes and I/O relays [SPINDLE ON] 'Spindle ON Macro CYCLESTART —–M199 (5) During a Visual / MOUSEPICK MIDPROGRAM it will execute the M codes that turn on any laser power, water flow or torch so these will be on and ready to cut. If there was concern that there may not be a clear path to the start point, you may use LOADING to ignore any actions only while in a MIDPROGRAM restart mode. LOADING \55:IF \55=6 THEN EXIT 'only skip while doing a ‘MIDPROGRAM restart. (6) Two important notes: a. Check if the FANUCARC setting matches the style of IJ or R in the JOB file. b. If you elect not to do a full Visual MIDPROGRAM restart and instead decide to enter a line number or add extra data to the program before restarting, keep in mind that the start point of the arc position will be missing if you restart on a G2 or G3. The user needs to be aware of what he/she is doing when starting on a certain line number that does not have enough information to fully prep the machine to restart. This goes for other M codes and I/O that a machine might require as well. In this case you will need to either: (a) Start at a line that has a linear move, (b) Enter in the arc starting point in the question box, (c) Write custom logic in M199 that moves the machine to the last X,Y,Z coordinates, lower case x;y,z and other axis letters per machine setup prior to restarting in M199, or (D) Get the coordinates from the Purple box on the MIDPROGRAM window. These are the exact same coordinates that you pointed to with the mouse, which automatically represent the starting point. These coordinates are automatically plugged into the QUESTION box when you choose to enter extra information when MIDPROGRAM prompts you to make a choice between just starting or enter extra information. The starting location of these coordinates will appear in the question box as the default answer. You may use these coordinates to start at or else edit them, for example, by adding a different Z starting point, adding a G1 F100 to them or adding M199 to customize your own restart routine.

Q194 I am using a laser interferometer to measure the machine accuracy.

Answer

What advice do you have? This is a complicated issue, more so than what it seems to be on the surface and is best handled by a professional. The readouts will show the actual position as reported by the scales/encoders. This position should be the same as the laser position if everything was perfect. However, it's often not, so there are items to rule out to explain the difference. (1) It would not matter how you made your move, be it manually, jogging, handwheel or G code, the readouts will show where the scales/encoders say it is by counting the scratches in the glass scale or count marks. Each count is a fixed length. You can adjust this perfectly to the 1/4 of a micron so that the scales/encoders equal the exact distance the laser said. To find out how accurate your scales/encoders can resolve position, divide the number 1 by the number of counts per inch/mm that you entered into each axes RATIO parameter. Move the machine exactly one inch or mm, whatever you want the RATIO value to equal, and check the laser reading. Sometimes the RATIO is not a whole number. We allow a fractional RATIO count to be entered into RATIO. The machine can only position itself to the nearest whole encoder count, but the software will keep track of the remainder in memory for the direction traveled in and add or subtract that piece of encoder count to the next move. (2) Where you started the move from is very important. It could have been.0007 off zero. To rule this out you would need to verify that both the readout displays and laser agree on position before you make your move. Two things to avoid when assuming you are at zero. Do NOT use MACHZERO to change the readouts to establish zero. Also, when you make your move to zero to the test starting position for that particular axis, make the direction of the test move in the same direction you will be moving to in your test to avoid backlash or pressure on the gears and screws. (3) If the readouts do not agree with the laser and you have accounted for all the suggestions in items (1) & (2) above, then we have a simple FINETUNE parameter under ENCODER SETTINGS that allows you to adjust the readouts. There is a complete explanation and description of how to use the FINETUNE parameter if you click on the button next to the setting. (4) Remember, when not using a laser, we provide a macro that will record the positions for you automatically. See the MACRO.FIL file [MAPPING]. There is also one called [BACKLASHCHK] to calculate the backlash in each axis. These two macros should only be used when you do not have access to a laser interferometer.

Q195 Can you define some of the terms used in motion control?

Answer

Velocity Drives or Amplifiers Velocity control moves the load continuously for a certain time interval or moves the load from one place to another at a prescribed velocity, which uses tachometer feedback to regulate velocity. Torque Drives or Amplifiers Torque control applies a 10-volt analog signal to the drive or amp and feedback from encoders vary the voltage in real time to maintain position. Following Error or Servo lag The instantaneous difference between actual position, as reported by the position feedback device, and the ideal position, as commanded by the controller. Trapezoidal Profile The trapezoidal profile changes velocity in a linear fashion until the target velocity is reached. When decelerating, the velocity changes again in a linear manner until it reaches zero velocity. Graphing velocity versus time results in a trapezoidal plot. Advanced controllers allow user modification of the acceleration/deceleration with more advanced controllers allowing individual settings for acceleration and deceleration. S Curve Profile A trapezoidal velocity profile is adequate for most applications. The S curve profile has an S shape during the acceleration and deceleration periods. This smoothes the rate of accel and decel caused in a mechanical system by a moving mass. Open-Loop Control Open loop refers to a control technique, which does not use feedback to determine and correct for position while moving. Stepper and microstepper motors are often used open loop. Skipped or ignored steps are frequent problems if the system is not properly designed. Steppers during quick acceleration, deceleration or high feedrates can often loose steps and you will never know it. The control readouts will only display the commanded position not the actual position. Closed-Loop Control Closed loop refers to a control technique, which constantly compares the desired position to the actual position then takes corrective action to correct position in real time. Different feedback mechanisms in closed-loop systems enhance the ability to correctly place and move loads. PID Control PID control is the combination of proportional plus integral plus derivative gains. For motion systems, the PID loop has become a very popular control algorithm. The feedback elements are interactive and knowing how they interact is essential for tuning a motion system. Optimum system performance requires that the coefficients Kp, Ki, and Kd be tuned for a given combination of motion mechanics and payload inertias. Feed Forward Loops When using a PID control algorithm, an error between the desired and actual positions must exist in order to generate a corrective input. The implication of this is that there will always be some non-zero following error. The goal when using a feed forward loop is to minimize following error. The concept in using a feed forward loop is to predict how the system will function in future updates and to make corrections now based on those estimates.

Q196 What are the differences between POSERROR and TOLERANCE?

Answer

The TOLERANCE sets the overall tolerance factor the controller uses to satisfy motion positioning and math functions internally. When the control reads the current axes positions to see if the commanded position has been reached, it must satisfy the given target position within this tolerance before it goes onto the next move. The POSERROR command turns on or off excessive position error checking and allows you to optionally set the tolerance for excessive error. If during travel any of the coordinated axes fall outside this tolerance for more than 60 milliseconds, the motors automatically will be shut down. The POSERROR gets its information from the tolerance setting and then internally the system sets the POSERROR to 10 times the tolerance for the allowable following error in encoder counts only. For example, let's say that the tolerance setting is set to.001. If 40 encoder counts =.001 for tolerance, then 10 times 40 = 400 encoder counts for position error. This is what is being allowed for the following error (400 counts).

Now the tolerance setting by itself with or without the POSERROR will wait for the system to be within tolerance of.001 before it will issue the next G code position to continue on to the next move. Therefore, if the machine never gets to the commanded position within the tolerance setting, then it should not issue the next line of code and hang up until it is within tolerance. You can override the POSERROR, which is turned on by default, and increase the following error to allow for spongy like performance and/or bad servo tuning so the machine can lag behind the default 10 times tolerance setting. However, the control will still not issue the next command until the machine has reached the target position within the tolerance setting.

Q197 What are the limitations of subprograms and variables within the G code program?

Answer

You should first be aware that we allow two formats to be used to assign variables, call macros and do math within the G code program. There are 3 types of variables: USER, LOCAL and SYSTEM variables. USER variables: Are named or numbered formats Curly Braces { } or Fanuc Style Square Brackets [ ] may be used in macros or to perform math equations. When using the FANUC style variables, begin the G code program with a % Named variables can be replaced by FANUC style # numbered variables and Fanuc Style Square Brackets [ ] See Example #1 for standard variable usage and math. See Example #2 for Fanuc Style variables and math. Example #1 {MYVARB=22} {MYNAME=45*TAN(MYVARB)} Same as: Example #2 % #9=22 #10=45*TAN[#10] Whereas: #9 is same as MYVARB #10 is same as MYNAME Basically the [ ] is a replacement for { } or ( ) when in Fanuc mode. By default USER and LOCAL variables are reset upon loading or reloading a new G code program. There is one exception. If the logic command PRESERVE VARIABLESON is issued, then all USER & LOCAL variables will be retained meaning they are public/global throughout the entire time the computer remains on even between different G code programs. They will only be erased when you exit the CNC or overwrite them or use the PRESERVE VARIABLESOFF command. LOCAL variables: These are the same as USER variables except they are only available locally within each subprogram. If you call a subprogram with M98, the variables in the main program are not seen by the subprogram. They are not shared. Variables automatically become local when they are placed inside a subprogram. Subprograms called using M98 or the command GOSUB must be complete enough to be able to run on their own, by themselves, including the use of user variables in G code, G41, G42, SmartPath or the 3-5 axes tool comp features. SYSTEM variables: Are for the installer's internal use only in logic routines. All variables in the G code program are also kept totally separate from the SYSTEM variables that the installer used within the internal system logic. The user cannot change the SYSTEM variable values; however, the installer does have access to the USER variables and can internally read and set the USER variables within the G code program. To access a SYSTEM variable from a G code program: Whereas in logic a SYSTEM variable gets assigned like this: \100={100+10} To make a SYSTEM variable such as \100 accessible to a G code program, reassign it to a named USER variable: {SIZE=\100} From within the G code program you would write this: G00 X{SIZE}

Q198 How do you calculate handwheel command values for each axis?

Answer

IMPORTANT: You must set the AUXENCODER parameter under the ENCODER SETTINGS to how many encoder/step counts there are in one full revolution of the handwheel. Remember to always set HANDWHEEL back to zero when you are finished to disengage the handwheel. Use the following formula to calculate the AUXENCODER setting and/or the HANDWHEEL setting for each axis using one click of the Handwheel to represent.001 on a 400 count per rev handwheel, where there are 100 clicks per handwheel rev. Formula=(400/.001)/100 Formula=(counts per handwheel rev/distance to move)/clicks in 1 rev Since the RATIO parameter still contains the true number of counts each axis requires to move one inch, millimeter, degree or revolution, the only calculation needed is to determine how many counts the handwheel uses. NOTE: Also check into the TACH and OK2STOP parameters under the HANDWHEEL command. Refer to the section titled “Handwheel Setup, Calculations and Modes of Operation” in the CamSoft Installation Guide for a more in-depth explanation of programming a handwheel. You can also use the “Search for Solutions” feature located on the CNCSETUP window and do a keyword search on handwheel.

Q199 How do you figure what value to enter into RAPIDSPEED?

Answer

Rapid speed settings for each axis can be found by multiplying the number of encoder counts per 1 in/mm/degree of travel by the top speed you want that axis to move and divide the result by 60. Example: 4000 = Encoder counts per 1 inch/mm/degree 750 Inches per minute (This is how fast you want the machine to move.) (4000 x 750)/60 = 50000 counts per second squared You would enter this value 50000 for the particular axis you solved for into the RAPIDSPEED settings in the CNCSETUP window. To reverse this formula to find out what the IPM is for a given Rapid Speed setting already set, use the formula below: (50000 x 60)/4000 = 750 IPM

Q200 How do you figure Constant surface footage?

Answer

We will take two different diameters of one inch and five inches and set S= 100. At one inch the R.P.M. will actually be 31.83 and at five inches the R.P.M. will be 6.366. If the same thing was done with S=1000 at a one inch diameter, the R.P.M. would be 318.3 and at five inches the R.P.M. would be 63.661. The formula is based on R.P.M.=(S/((Diameter/2) * Pi)). You can use the MAXSPEED logic command to cap the highest R.P.M for spindle speed.

Q201 How do we figure acceleration and deceleration values in encoder counts or steps to enter into the ACCEL and DECEL parameters?

Answer

These values are in encoder counts per second squared and are steps per second squared for stepper motors. This means that for every one second of time that goes by, the value you entered will move the motor that many counts and for every second after that, the figure will be calculated by its square. The only way to approach this is to start with conservative values and make repeated tests each time slightly increasing or decreasing the values until you feel that the settings reflect adequate acceleration and deceleration for the motor size, table weight, load, gearing and inertia that your machine can handle.

Q202 How do we figure max axis travel distance that can be used for jogging or handwheel logic based on my RATIO settings?

Answer

The goal here is to calculate a number so large that the axis can never reach this destination. The jog action should continue to happen until the user stops jogging or an over travel limit switch or soft limit has been reached. Example: MACHGO 10000 in CNC Lite/Pro or POSITION 1;10000 in CNC Pro.

Q203 How fast can my table travel with a certain ball screw pitch?

Answer

It can't be calculated with only the ball screw pitch value alone. There are many factors, which involve the motor torque rating, velocity mode versus current mode amps, load weight and motor type such as stepper or AC or DC servos. Consult a professional retrofitter. The only alternative in doing this yourself is to enter our diagnostics screens and perform repeated tests using the SELECT AXIS FOR MOTION TEST buttons. These tests will let you know if the various settings that you have entered will work with the mechanics of your system under the TOLERANCE you set. You will be able to view the "servo lag" or better known as "following error" for each axis in boxes lined up at the top of the diagnostic window. The numbers shown represent the difference between the commanded position and the actual position for each axis in real time.

Q204 How do we figure the minimal allowable positioning tolerance for our machine?

Answer

The acceptable tolerance for any machine is based on many factors, which involve the motor torque rating, velocity mode versus current mode amps, load weight and motor type such as stepper or AC or DC servos. Consult a professional retrofitter. You may try entering our diagnostics screens to perform repeated test using the SELECT AXIS FOR MOTION TEST buttons. These tests will let you know if the various settings that you have entered will work with the mechanics of your system under the TOLERANCE you set. You will be able to view the "servo lag" or better known as "following error" for each axis in boxes lined up at the top of the diagnostic window. The numbers shown represent the difference between the commanded position and the actual position for each axis in real time.

Q205 How do we change the keyboard arrow key jog direction and readouts?

Answer

First, make sure that when you command a position in a G code job file that the commanded direction and the encoder readouts are what is required for correct positioning on your machine. Adjust the GEAR and FINETUNE settings for this. GEAR (positive or negative) will reverse the motion of the axis direction whereas FINETUNE (positive or negative) will reverse the readouts. Next, we will use the JOG.FIL file to temporarily change the jogging configuration. In the STARTUP.FIL file: \988=0 ‘set a variable that will act as a flag to tell us if we are entering jog ‘mode or if we are exiting jog mode. In the JOG.FIL file: IF \988=0 THEN \988=1:GEAR 1;-1:FINETUNE 1;-1:EXIT 'set the gear and fine-tune to jog in the required direction only while entering ‘jog mode. IF \988=1 THEN \988=0:GEAR 1;1:FINETUNE 1;1:EXIT 'set the gear and fine-tune to the normal commanded position directions when ‘exiting jog mode. Note: The jog file executes automatically when you hit the Jog icon. When you hit the Jog icon again to get out of jogging or the system naturally aborts jog mode, everything is reset back to normal.

Q206 How do I get my turret to take the shortest route when using encoder feedback?

Answer

We are assuming that this tool change turret motor has the ability to reverse direction and there is a spare or extra encoder connection. The motor type can be a non-servo AC or DC brush or brushless. If the motor type is servo, stop here. A servo driven tool changer routine will always take the shortest route anyway. There can be a brake or clutch that holds the motor into position along with a locking pin or tapered tab. A cone shaped locking pin or tapered tab will precisely locate the tool position, as long as the turret stops roughly near the correct tool position, and then a brake or clutch will hold it in place. The key to setting up the tool counting would be to enter the value in the AUXENCODER parameter that represents the number of encoder counts or steps that takes the turret to revolve only one full turn. In this method we will create a list of all possible tool positions. This way you can add more tools to the list or take away tools from the list and account for the tools not being equally spaced. The idea here to is to have every tool position be reported back by the encoder fall between 0 and 1. If there were 14 tools in the tool changer and the encoder reported back.5, then the turret rotated only half way around meaning that it must be at tool #7. Below the lower case t holds the value of the tool number in your program. For example, when given T7 M06, the lower case t equals 7. To calculate what each tool position should be, divide the tool number by the total number of tools. Notice in the example that we have given a.1 fudge factor tolerance to test if the tool is approaching the correct position. It has to have some tolerance since it may never exactly hit on the position and also we always need time to allow the clutch to stop and coast. The example below is for a turret that can only rotate in one direction. This type of motor cannot take the shortest route but is a less complex example of the same routine. #49=0 'Open turret clutch brake. #50=0 'Pull out locking pin #51=1 'Turn on turret motor:SPIN AUXENCODER3 \55 'Read aux encoder position:LOOP IF \55>1 THEN \55={\55-1}:GOTO:LOOP \56={\55-.1} 'Within tolerance of +.1 \55={\55+.1} 'Within tolerance of -.1 IF t=1 THEN IF \55=>.071 THEN IF \56=<.071 THEN GOTO:MADEIT IF t=2 THEN IF \55=>.142 THEN IF \56=<.142 THEN GOTO:MADEIT IF t=3 THEN IF \55=>.214 THEN IF \56=<.214 THEN GOTO:MADEIT IF t=4 THEN IF \55=>.285 THEN IF \56=<.285 THEN GOTO:MADEIT IF t=5 THEN IF \55=>.357 THEN IF \56=<.357 THEN GOTO:MADEIT IF t=6 THEN IF \55=>.428 THEN IF \56=<.428 THEN GOTO:MADEIT IF t=7 THEN IF \55=>.500 THEN IF \56=<.500 THEN GOTO:MADEIT IF t=8 THEN IF \55=>.571 THEN IF \56=<.571 THEN GOTO:MADEIT IF t=9 THEN IF \55=>.642 THEN IF \56=<.642 THEN GOTO:MADEIT IF t=10 THEN IF \55=>.714 THEN IF \56=<.714 THEN GOTO:MADEIT IF t=11 THEN IF \55=>.785 THEN IF \56=<.785 THEN GOTO:MADEIT IF t=12 THEN IF \55=>.857 THEN IF \56=<.857 THEN GOTO:MADEIT IF t=13 THEN IF \55=>.928 THEN IF \56=<.928 THEN GOTO:MADEIT IF t=14 THEN IF \55=>1.00 THEN IF \56=<1.00 THEN GOTO:MADEIT GOTO:SPIN 'Keep spinning:MADEIT #51=0 'Turn off turret motor #50=1 'Push in locking pin #49=1 'Apply brake of turret clutch The example below is for a turret that can rotate in both directions. #49=0 'Open turret clutch brake #50=0 'Pull out locking pin \54={t-\44} 'Calculate which direction to rotate turret IF\54<0THEN\54={\54+14} IF t<7 THEN #51=1 'Turn on turret motor forward IF t=>7 THEN #52=1 'Turn on turret motor Reverse:SPIN AUXENCODER3 \55 'Read aux encoder position:LOOP IF \55<0 THEN \55={\55+1}:GOTO:LOOP IF \55>1 THEN \55={\55-1}:GOTO:LOOP \56={\55-.1} 'Within tolerance of +.1 \55={\55+.1} 'Within tolerance of -.1 IF t=1 THEN IF \55=>.071 THEN IF \56=<.071 THEN GOTO:MADEIT IF t=2 THEN IF \55=>.142 THEN IF \56=<.142 THEN GOTO:MADEIT IF t=3 THEN IF \55=>.214 THEN IF \56=<.214 THEN GOTO:MADEIT IF t=4 THEN IF \55=>.285 THEN IF \56=<.285 THEN GOTO:MADEIT IF t=5 THEN IF \55=>.357 THEN IF \56=<.357 THEN GOTO:MADEIT IF t=6 THEN IF \55=>.428 THEN IF \56=<.428 THEN GOTO:MADEIT IF t=7 THEN IF \55=>.500 THEN IF \56=<.500 THEN GOTO:MADEIT IF t=8 THEN IF \55=>.571 THEN IF \56=<.571 THEN GOTO:MADEIT IF t=9 THEN IF \55=>.642 THEN IF \56=<.642 THEN GOTO:MADEIT IF t=10 THEN IF \55=>.714 THEN IF \56=<.714 THEN GOTO:MADEIT IF t=11 THEN IF \55=>.785 THEN IF \56=<.785 THEN GOTO:MADEIT IF t=12 THEN IF \55=>.857 THEN IF \56=<.857 THEN GOTO:MADEIT IF t=13 THEN IF \55=>.928 THEN IF \56=<.928 THEN GOTO:MADEIT IF t=14 THEN IF \55=>1.00 THEN IF \56=<1.00 THEN GOTO:MADEIT GOTO:SPIN 'Keep spinning:MADEIT #51=0 'Turn off turret motor forward #52=0 'Turn off turret motor reverse #50=1 'Push in locking pin #49=1 'Apply brake of turret clutch \44=t 'Remember the last tool number

Q207 How do we use Fadal style fixture offsets, height offsets and tool size offsets?

Answer

First you would place this command in the STARTUP.FIL file to suppress the T parameter from processing the tool offsets. TOOLPARAM OFF Next, in the G codes you wish to process these offsets, add the logic below as needed. Fixture Offsets are normally the letter E followed by an offset value. ISTHERE E;\40;\41 IF \40>0 THEN OFFSET \41 Tool Size Offsets would be added like this: ISTHERE D;\40;\41 IF \40>0 THEN TOOLSIZE\41 \42;USEREAD Tool Height Offsets would be added like this: ISTHERE H;\40;\41 IF \40>0 THEN TOOLHEIGHT\41 \42;USEREAD

Q208 What do I do if I get a message that the key is not found?

Answer

For Parallel Port of Printer Port 1 Hardware Keys, follow the instructions below: Some Printer brands and Parallel Port cards (LPT ports) need to have certain pins grounded on the parallel port cable. Simply turn the printer on. If you do not have a printer, then attach a printer cable to the end of the key anyway even if it is not connected to a printer. Advanced Power Management is enabled on your computer. Advanced Power Management does not recognize the key as a device that requires power and disables power to the parallel port. Disable Advanced Power Management through Windows. Unique printer drivers may be installed on your computer that take complete control of the printer port and do not allow access to the key. The Hewlett Packard LaserJet 5L family of printers is known to have this problem. Please see the Hewlett Packard LaserJet 5L Support Page for instructions on how to correct this problem. The brand name: "PaperPort Software" takes over the printer port and does not allow access to the key. Some applications such as Bounds Checker, Bolts plus Nuts and some debug software packages such as IceSoft may be running as background processes. These type of programs are interpreted as an attempt to "Crack" the protection. Therefore, the protected program will not find the Authorization Key. Go to the Windows Control Panel and select Printers and Faxes. Right mouse click on the printer you use and select Properties. Here each manufacturer has their own unique settings page or drop down boxes. Find the choice that allows LPT1 to be ECP type. Also, "Power Saving" features can turn off the LPT port to save power. If possible, disable "Power Saving" features that affect the printer port while you are making these changes. Settings in the BIOS are configured wrong for your parallel port card. In the computer's system BIOS change the setting for the computer parallel printer port mode. On newer computers there can be several different settings including NORMAL, STD, EPP, ECP, etc. Consult your computer’s motherboard manual on BIOS settings and making changes. Each motherboard has it own method to allow users to enter and change the BIOS settings. Try each setting one by one. If possible, it is recommended that a printer cable be attached and that the printer be turned on until you find the correct setting for your parallel port card. Also, "Power Saving" features can turn off the LPT port to save power. If possible, disable "Power Saving" features that affect the printer port in the computer BIOS while you are making these changes. **Warning** Incorrect settings in the computer’s BIOS can render the computer inoperable. If you are not comfortable with making modifications to the computer’s BIOS, we recommend that you get assistance from a computer technician. For USB Port Hardware Keys, follow the instructions below: IMPORTANT: You MUST install the CamSoft software first before you insert your Hardware Key into your USB port. Windows will automatically notify you that new hardware has been found and the Windows Hardware Wizard will automatically locate and set up the USB key. (1) Insert the USB port key into a different USB port. If the key is found, the LED on the USB port key will blink. Once the key is set up, the LED light will remain solid. (2) Use the Windows “Add Hardware” feature through the Windows “Control Panel” and allow Windows to automatically search and locate the USB port key. (3) Use the Windows “Add Hardware” feature or “Device Manager” to find the USB port key under “Universal Serial Ports” and remove (delete) the existing USB key. Reboot the computer and then re-insert the USB port key.

Q209 How do we call and loop subroutines in the G code program?

Answer

We use the industry standard method. Anyone familiar with G code programming should be able to explain this better. You can look in the Buyers Guide in the back of your CamSoft manual on what book we recommend to learn CNC programming. An M98 call will call a subroutine and an M99 will return back to the line after the M98 when finished. M98 has two parameters – P and L. P calls the block number or program number to jump to and L specifies the number of times to repeat or loop the subroutine. In CNC Professional M98 is user definable. The P parameter can either call a block number that starts with N or a program number that starts with O. In CNC Plus the letter O is the default. In CNC Professional the letter N is the default, but can be changed. Each subroutine should be capable of standing alone and run on its own. Subroutines cannot be called from CNC Lite. Below are some examples: (Call a simple subroutine and repeat the subroutine 3 times.) N1 G0 X0 Y0 Z0 N2 M98 P1234 L3 N3 M30 O1234 N4 G1 Z-.5 F25 N5 G0 Z.1 N6 M99 (Use a subroutine to loop the entire program 100 times.) N1 M98 P1234 L100 N2 M30 O1234 N4 G0 X0 Y0 Z0 N5 G1 Z-.5 F25 N6 G0 Z.1 N7 M99 (Nested subroutines, only available in CNC Professional.) N1 G0 X0 Y0 Z0 N2 M98 P1234 L1 N3 M30 O1234 N4 G0 X1 Y1 Z1 N5 M98 P5678 L1 N6 M99 O5678 N7 G1 Z-.5 F25 N8 G0 Z.1 N9 M99

Q210 Using a touch screen for jogging, how do you know when a button is being pressed down or let up?

Answer

There is a command called BUTTONSTATE that lets you know if a certain on- screen button is being pressed down with a mouse or finger or when your finger or mouse lets up off the button. For example, to jog the X axis with a touch-screen button, the logic below begins the axis traveling to a location that it cannot possibly reach. As soon as your finger hits the button, the logic runs jogging the X axis with the POSITION command. As long as your finger is holding the button down, the button state is 1. As soon as you let go of the button, the state changes to 0 thus allowing the logic to execute the STOP command. POSITION 1;999:LOOP BUTTONSTATE 11;\55 IF \55<>0 THEN GOTO:LOOP STOP

Q211 How can we watch the value of variables change?

Answer

You may watch variables in real time – "live" – as they change in the watch window, but this method may require that you click in the green box on the variable boxes on the Watch window for an updated value. The values will be displayed without clicking on them, but you may not be able to correspond which logic file really changed the value since all logic from all files run in a multitasking mode simultaneously. There are two other ways to watch variables. One is to add the command DISPVARB to your logic whenever you want the value printed to the display as it is being changed in the exact place in logic where you issued the DISPVARB command. Also, you can expand on this report by being In Diagnostics at the same time. You will see the actual variable values "live" inter-mixed with the logic in the LOGFILE.FIL file whenever you use DISPVARB while in Diagnostics.

Q212 How do you suggest we enter tool wear on a Lathe for each axis individually?

Answer

For tool wear on a lathe the best thing to do for Z is to put the wear into the TOOLHORZ box for that tool on the Tool Parameter screen. The offset will get applied automatically when the program reads a T command for that tool number or you can issue a TOOLHORZ with the USE parameter. Do the same thing for X but use the TOOLVERT command instead. This way the TOOLOFFSET values used in other places of the program will still be in effect and not touched in any way. The TOOLOFFSET offsets along with the Fixture and Home offsets will all be in effect on top of the TOOLVERT and TOOLHORZ for tool wear. Issue a T0 in G code or a t=0 in logic to disable the tool wear offsets.

Q213 How do we set the following error?

Answer

A user does not set the following error he wants. Following error is what happens at any given time period between the commanded and actual position. TOLERANCE can be set but its goal is to check that the system is in position tolerance before the next move is issued. The system will automatically strive for 0 following error, plus or minus 1 encoder count every 62 millionth of a second, no matter what the TOLERANCE or POSERROR is set to. The POSERROR would tell the control to go into an Emergency Stop if the axis position exceeds the value in counts entered over a 60-millisecond period of time.

Q214 What if we find out we have resolvers rather than encoders?

Answer

Resolvers are common in really old equipment and for the most part are obsolete and outdated analog feedback devices, for that matter any analog feedback device including Ferand Scales. Ask Ferand, they do offer a conversion box. There are also other companies listed in our Buyer’s Guide that provide these converters.

To help identify the difference between an encoder and resolver it is best to have the schematics or identifying plates mounted on the device. Next best is to ask for professional advice from a CNC repairman or ask the company that originally sold the machine what is on there. However, if none of these things are available, then take a look at the unit. Resolvers are about the size of a large orange juice can or small coffee can whereas encoders are about the size of a spool of thread unless they are mounted directly on the back of the motor in which then they are the same diameter housing as the motor. Resolvers have only 4-6 wires whereas encoders have 7-9 wires. Don't confuse a tachometer on the butt end of a motor with either of these. You have two choices: (1) Even if you have resolvers, strongly consider replacing them with modern digital encoders rather than using the old analog resolvers for feedback. Encoders are almost always smaller in size than resolvers so they should fit in the same place. Even cheap encoders have at least 1000 ppr. The motion board will quadruple this to 4000 counts per rev. Resolvers are almost always only 200 ppr across all brands and models. You will get a big advantage in performance for acceleration, deceleration and accuracy since the faster the sampling frequency is the better response will be from the motion board. With encoders you will have up to 12 million pulses per second. There are also off-the-shelf mounting solutions that will grab the encoder and mount it to anything round or flat. Encoder costs start at $66 for lab- use type to the mid $200 range for industrial. (2) You can get black box devices that convert analog signals to digital signals. We can point you to places that offer resolver-to-encoder converters. Keep in mind that these boxes start at about $350 per axis and you have the same 200 ppr feedback. The machine performance will stay the same as it is now. You can see that encoders are cheaper than converter boxes and will improve the performance of the machine by replacing them. On the other hand, connecting up a half dozen skinny wires to a converter box is a much easier chore than mounting new encoders.

Q215 What advice do you have for spindle or servo tuning problems?

Answer

If you are having trouble servo tuning and you have Velocity mode servo drives, refer to QUESTION 321. Here is what we feel is the best advice we can offer to solve this situation remotely. If the following advice does not start to help you soon, then we recommend a service call for a tech to come over hopefully while the drive amp manufacturer reps are there. The drive manufacturer’s knowledge is a key factor here for offering the proper advice and know-how to tune or set the pots on the drive amps be it a spindle drive or servo drive. Tuning the drive amps properly is what needs to be done first before you connect the motion card. When the motion card is connected, it is possible for the motion card to vary voltage output in the milli-volt range. This is normal and so small that it will not cause the axis or spindle to vary RPM at all. The spindle should not vary RPM if the drive amps are set properly when issuing a constant command voltage. There are settings on the amps that refer to such items as dead band, balance, gain, voltage offset, accel and/or current limit. There are only two possible things that could be wrong from what we can tell. The settings are either too sensitive or the command signal range is too narrow. The goal is to allow a full +/- 10 volt command signal range to vary RPM. Zero should be stopped. No drifting. Minus voltage should make the motor go in reverse and +10 vdc should make it go full speed forward. The test is to see if this is the case. For example, if you find that the motor won't even start spinning until you issue 2 volts and then 3 volts makes it spin full speed, then the settings need to be adjusted. Some drive amps have digital settings you set with buttons on the amp face and others have screw driver pots to turn. These settings or pots are there to tune the amps with the motors directly to counter such items as gravity and drift. The software PID loop tuning is different. Its purpose is to monitor, stabilize and verify position during a move and at a stand still. It doesn't do any good to try to use software tuning to adjust amp settings out. The drive amps must be tuned first before the motion card or computer is turned on or the end result is that they will constantly fight each other, which explains the RPM variations when giving a constant fixed voltage command. Another reason for the varying or non-stable RPM is that the amp may simply be in velocity mode. Velocity mode compensates for RPM by monitoring a tach feed and then overriding the voltage command that was issued. If set too sensitive, then you get an effect that over compensates in one direction then reverses and compensates in the other. Hence, the effect is a non-stable motor speed even when the command signal is constant. To avoid this situation we recommend that the drive amp be set in torque mode, which is also known as current mode. There are two things you can do now to test this. Before the motion card is connected or the computer powers up, see if the motors drift or run away. To make this test, power must be on to the drive amp and motors, plus the amp enable or inhibit terminal connection must be jumped or grounded to complete a satisfied circuit. Amp enable or inhibit circuit are much like on/off switches so the amp must be on first to see if it will move. The next test is to start the computer so the motion card has power. To find out if your pot settings are adjusted correctly, go into diagnostics and get ready to hit E-stop then enter: (1) POSERROR OFF (2) MOTOR OFF If any of the motors start to drift, you will need to adjust the pots on the amp drives. You may be able to stop the drift by entering: (1) MOTOR ON (2) POSERROR ON If not, hit E-stop or turn off power. If this doesn't help you, then we can contact a person with special software that can come in and assist you in tuning the amps. For further information refer to QUESTION 317.

Q216 Why would we occasionally get weird occurrences with the I/O?

Answer

You first want to rule out something being wrong with the logic or order of events in the INPUTIO.FIL file. To do this it would help if you knew what logic was running and why or what loop it was stuck in. If you knew this, it would lead you directly to the I/O number causing the problem. To find this out all you need is a LOGFILE.FIL file. To get a log file you have to enter Diagnostics. You may close all the diagnostics windows except the Digital I/O Panel showing the I/O numbers. It's okay to minimize the Digital I/O Panel. Teach the end user how to do this. A DIAGNOSTIC command can be put in the STARTUP.FIL file to automatically invoke DIAGNOSTICS mode for testing purposes until this is solved. Whenever the problem happens the next time, immediately hit ESC and exit. Don't wait too long or too much history will be written to the LOGFILE.FIL file. Next, copy the LOGFILE.FIL file to a folder of your choice and e-mail it to CamSoft or your installer. Using a cheap battery back with a noise filter (UPS) is the best idea for this type of problem. The first place you would look for this problem would be a low-voltage interruption or noise that supplies power to the I/O. See QUESTION 385. This same advice applies as well if you are getting false encoder signals. However, change to a differential encoder type, which has A+, A-, B+, B- connections to self correct this in most cases. The most common causes are simply from common sense wiring design approaches such as running high-voltage wires away from low-voltage wires. The best prevention is to separate or isolate the power source for the low- voltage I/O relays and boards from everything else. Remember an exposed wire can act like an antenna. If the voltage source for the I/O is supplied directly from the computer and the computer uses a UPS, then if the power goes dim or oscillates, rather than just going off completely like a black out it may trigger low-voltage relays to switch on and off by themselves. In the on-line manual there are a few places that will explain this better. Simply click on Q&A HELP and do a keyword search on UPS. If you are plugging the amps into a battery back-up, the amps & motors may be on the verge of not getting enough watts. This situation also holds true if the computer and other devices plugged into the battery back-up drain more power than the battery back-ups are rated for wattage wise. We have even seen computers re-boot at random for no reason. Although the computer should use a separate battery back-up, the amps/motors could be on the verge of fluctuating voltage in a very small amount — not enough to affect the motors but enough to vary the low- voltage, more sensitive signals to the I/O. Only by plugging the amps directly into the wall with a surge protector was this problem eliminated. Mini voltage fluctuations caused by insufficient or noisy power could disturb the sensitive, low-voltage side of the I/O but not be enough to affect the computer, touch screen or motor’s functions. There are two possible solutions to correct this situation: (1) Get a separate larger battery back-up for the amps that is big enough to run the motors at full speed or (2) Plug the amps directly into the wall plug without any battery back-up. Just use a power strip that has surge protection. If either of these suggestions do not help, then a line conditioner and surge protector without a battery back-up should be enough. See the Buyers Guide in the CamSoft Installation Guide for suppliers of EM/RF Filters and Line Conditioners. We have also tried the Optima series card. While it is true that the Optima series card did seem to solve the problem, we think this is not the answer or solution at this time. IMPORTANT: Plug the UPS into an outlet that does not share a circuit with a heavy electrical load and check to be sure that the wattage rating of the UPS is powerful enough to drive all of the devices that are plugged into it.

Q217 How do we implement a G31 probe routine?

Answer

This macro approaches the part fairly rapidly, stops immediately when tripped, backs off the part and advances at a very slow feed rate until tripped again and then records the position. Example when using: a Digital style touch probe of any brand a G31 Fanuc style skip stop cycle an Aux digital I/O card for fastest digital signal is connected to the first aux input #32 a high DECEL value to stop fast a high feedrate or F word in program a 3-axis vertical milling machine Call this macro from G31 in the GCODE.FIL file. [Probe Digital Teach] 'Example digital style touch probe of any brand 'G31 Fanuc style skip stop cycle 'Set high DECEL value to stop fast \57=f 'Save current feedrate \31=0 'Reset probe hit flag GO x;y;z '3-axis example WAITUNTIL STOP IF\31=0THEN EXIT 'Probe not hit \31=0 READOUT3 \55 'Location of Z when probe hit DECELSTOP RAPID;;{\55+.05} 'Back away in Z.050 WAITUNTIL STOP FEEDRATE 25 'Set feedrate very slow GO;;{\55-.05} 'Come back to touch part again WAITUNTIL STOP TEACH FEEDRATE \57 'Reset feedrate back to what it was Add the following line of logic to your INPUTIO.FIL file: IF#32=0THENSTOP:\31=1

Q218 Where does CamSoft translate 5-axis positions?

Answer

There are a few ways CamSoft can calculate 5-axis toolpaths or vectors into 5-axis positions. Through these methods CamSoft can either: (a) Configure the post processor in AS3000 to pre-calculate the normalized 3D vectors into angular degrees for all 5-axis toolpaths and then output the proper G code necessary for the CNC control to understand. Configuring the post processor is better because the 3D vectors are pre-calculated before the G code file is loaded. If this were done on the fly in the GCODE.FIL file, it means that the CNC controller would need to use CPU time and resources to calculate the angles each time there is a 5-axis move on the current G-code line. Therefore, this method is best for execution speed. (b) CamSoft can configure the GCODE.FIL file in the CNC controller to calculate the 3D vectors on the fly. To understand this better the vector coefficients are passed by the letters a, b, c in the post then changed over to angular degrees for the 4th and 5th axes on the fly. This method converts vectors to angles in degrees for either rotary tables or swinging heads. This method is best if you want to use CamSoft's Patent Pending 5- axis tool comp directly at the controller without the need to write a new G code program if tool changes are made. This method is also good if you have more than one machine type that requires a different translation for the 4th and 5th axes or different kinematics. The 5-axis moves of the program would be portable between different machine types. (c) Convert graphics on CamSoft's CAD/CAM screen directly into 5-axis motion without post processors or G code. This method offers the same benefits as (b) but also offers the added convenience of not having to deal with long G code programs or post processors. More Information: If you are using your own post processor from your own CAD/CAM system, then either method (a) angles or method (b) vectors will be accepted by CNC Professional, but not method (c). CNC Lite/Plus must be given angles in the G code program. Only method (a) is acceptable. In almost every case your CamSoft installer will have to enter in the formula or algorithm to calculate the kinematics or mechanical mathematics into the post or GCODE.FIL file for you. Kinematics calculates each machine's unique head pivot points, pivot distances and offsets. The mathematical calculations and logic are extremely advanced to do this. CamSoft must set up your WAS57.INI file to ask you which machine you wish to have the transllator done. Each machine may require a different translator for A and B axes. There are no good examples to illustrate kinematics. Any pre-written or existing example we may have that creates kinematics for a particular machine would be so unique that 99 percent of the time the example would not apply. You would have to enlist the help of a person with an advanced mathematical degree to create the formula and who also knows CamSoft's logic commands. Only methods (b) vectors and (c) graphics to motion can make use of CamSoft's Patent Pending 5-axis tool compensation in the CNC Professional system. Here the machine operator can simply adjust the tool length in the tool parameter screen without creating a new G code file.

Q219 How do we best identify programming standards that can be considered easily supportable?

Answer

Most brand name controls have the same things in common to watch out for except for the ISO standard G code controllers, which would be the safest bet. (1) Macros: There are so many flavors and versions of these across brands. Case in point, even Fanuc 15M macro language can't be used on the other models of Fanuc controls made by the same company. (2) Proprietary original manufacturer commands, such as for math, variables and hardware device oriented commands. (3) M codes: These can be assigned per machine manufacturer to mean anything they want or devise them to do. (4) NURBS have similar meaning throughout the CAD/CAM and controller world but each manufacturer has slightly different algorithms, curvatures, formats and smoothness. (5) Canned Cycles vary widely for pocketing, roughing, drilling and turning operations. Many canned cycles offered on some controls are not even offered on others and when they are, they are almost always different in scope. The bottom line is that there is no universal standard. Even the world’s most popular model, the Fanuc 6M, has slight nuances between the OEMs who have placed these controls on various types of machinery. Enough so that CamSoft has 32 individual post processors for that model. Almost all programs that use codes for G and M can be modified by the end user using CNC Professional’s definable table. Keep in mind that most people, when given a choice, would rather have their new controller use modern G and M code standards than keep the old G code styles. The best approach is to ask for a program example prior to quoting. We can help you here thus giving you a good idea what you should be quoting. We are always able and willing to assist you to get the job done.

Q220 What's the best approach for a power button to turn on the machine, computer and other devices?

Answer

You will find many opinions on this subject using special high priced power devices. We believe the best idea is to keep this simple. This is more of a machine design question rather than software, so check with your installer first. Since accessibility to the computer switch and monitor is hard to get to if they are mounted in an enclosure, our opinion is to have a single button or turn key that cannot be pressed by accident. This button or key will turn on the power to the computer, monitor and other devices all at once and is easily accessible to the operator. Clearly label this button or key once you consult your installer. As far as the computer goes, we use a simple Master Surge protector such as the ones you see under monitors on desktop computers with several switches to turn on various devices like printers, monitors and the computer. Keep the computer switch on all the time and turn off the power to all the devices with one flip of a master switch. There are industrial looking Master Switches, but you can find them at the regular computer store too. As long as you exit Windows gracefully, it will not waste time going through a disk scan on boot up next time. The computer will think you turned on its power switch. One piece of advice you will hear is to use a UPS or battery backup unit on the computer. We highly recommend this to protect the digital I/O from low voltage fluctuations and filter out electrical noise from the power source. See

Q221 How do you control multiple spindles?

Answer

The following explanation describes how to setup multiple spindles on a machine tool. The system can have only one true spindle as defined by the CNCSETUP program under GENERAL SETTINGS and the other extra spindles would need to be controlled manually via analog voltage by commands. The normal spindle uses defined commands for actions like spin forward, spin reverse and spin stop that automatically govern the amount of voltage going to the spindle for the given RPM value. The other extra spindles do not have these automatic commands so the user needs to write code to convert any given RPM value into voltage to be sent out to the other analog controlled spindles. This is pretty easy as it only requires a small bit of basic math for the conversion of RPM to voltage and then direct that voltage to the appropriate motor axis (spindle) output. Make sure to connect any extra (analog controlled) spindles to a motor axis just like you did with the other servo axis and the normal spindle. Note: This explanation is intended for multiple analog/servo controlled (±10v) spindles. Note: This explanation applies to all machine types including lathes, routers, mills and any other machine that may have multiple spindles. Example: Let’s say you have 3 variable drive spindles that accept ±10 volts. Each spindle runs at the same max and min RPM values. 0 volts = 0 RPM 10 volts = 4000 RPM(max RPM, can be higher, but for this example our spindle has a max RPM of 4000) Motor/Axis Connections All spindles would need to be connected to an analog output connection (MOCMD terminal). The analog outputs are just any of the axis connections on the motion card’s terminal strip. The first spindle drive will be connected to the last unused axis connection. On a 3-axis machine with a 6-axis motion card the first spindle will be connected to the 4th motor axis connection, the second spindle connects to the 5th motor axis connection and the third spindle connects to the 6th motor axis connection. Remember, this will be considered a 6-axis configuration. The first three axes are for X, Y and Z and the next three axes are for spindle 1, 2 and 3. Special note for Lathes: The axis setup is slightly different than above as lathes have coordinated ZX axes for the first two motors and the normal spindle is assumed to be the 3rdmotor. Your extra spindles would then connect to the next available axis connection, which would be the 4thand 5th motor connections, etc. You can have other non-coordinated axes connected to any of the next available axis connections as well. None of the extra spindles or non-coordinated axes have to be in any certain order, just remember what axis number they are connected to so when you set them up via commands, you use the correct axis parameters. Main Spindle Setup In the CNCSETUP program you can define the first spindle in the SPINDLE parameter box under GENERAL SETTINGS and the SPEED POT parameter under the ANALOG CONTROLS section (only if using a potentiometer to vary the spindle RPM) and the SPEED VARIABLE as follows: SPINDLE = 4 SPEED POT = 4 or -4 SPEED (variable) = 74 Refer to the documentation in the ANALOG CONTROLS section for further details on SPEED POT and SPEED (variable). Extra Spindles Setup The other two spindles need to be defined in the STARTUP.FIL file with the SETUP command as follows. (Refer to the SETUP command for a full description.) SETUP 5;0;4000;0;0;0;0;N 'setup 2nd spindle on 5th motor connection SETUP 6;0;4000;0;0;0;0;N 'setup 3rd spindle on 6th motor connection The above logic in the STARTUP.FIL file sets up both spindles with zero servo tuning parameters so they will be free spinning and not under servo control like the first three axes are. If at any time you need to servo one of the spindles for things like Rigid tapping, position command or Orientation, you would re-issue the SETUP command with an M Code of your choice with servo tuning parameters to place the spindle under servo control. When you are finished with it being under servo control, just re-issue the SETUP command with zero servo tuning parameters again and the spindle will act like a regular free turning spindle again. For more information on placing a spindle under servo control, refer to the following macro: [Spindle Orientate by Encoder] Main Spindle Software Commands and M Codes Now that all of the spindles have been setup, we need to be able to control them from within the NC program. Below are M Codes, two for each spindle. The first M Code M3is the standard default for most machines with one spindle. This will control the first spindle that was defined in the CNCSETUP program, which is connected to the 4thmotor axis connection. When the program issues an M3 S4000, the control will issue the SPINFORWARD command to turn the spindle at 4000 RPM. The next M Code M4is used to reverse the first spindle by issuing the SPINREVERSEcommand. The next M Code M5is used to stop the first spindle by issuing the SPINSTOP command. This is all that needs to be done for the first (main) spindle unless you need to change spindle gears or trigger or detect any I/O, then this would need to be coded in to facilitate those actions. SPINFORWARD —–M3 SPINREVERSE —–M4 SPINSTOP —–M5 Extra Spindles Software Commands and M-codes For the 2nd and 3rd spindles we need to issue them voltages directly because they are not automatically setup by the software as the main spindle is to interpret what voltage the S Code means. There are many ways to handle this but only one way will be explained because every machine’s spindles are going to be different due to different manufacturer types. They may or may not need things like Gear Changes and/or Digital I/O to be set or detected for things like Spin forward and Spin reverse before we can issue a voltage. However, after reading this and all other spindle information from within the manual, you should be able to get your extra spindles to work. Below are the two M Codes needed for each spindle. Note: You can use any M Code you want, these are just examples. You will notice that at the beginning of the logic we check to see if there is an S Code on the current line. A typical line in the NC program would be as follows: N56 M13 S2500, which would tell the control to issue 2500 RPM to the 2nd spindle. Next you may or may not need to issue an output # to enable your spindle drive and/or your output # may be different. If your spindle needs to change gears, then this would need to be coded in as well. Refer to QUESTION 122 and the [SPINDLE GEARS] macro process for spindle gear changes if needed. Convert RPM to Voltage Next, which is most important here to explain, is how to Scale the voltage based on the given RPM value. It is really quite simple. However, because we already know what the spindle motors rated RPM value is (for this example anyway), which is 4000 RPM, we just scale the given RPM by 400 (which is a constant value)to obtain the voltage that we need to output to the spindle. If your spindles max RPM is 6000, then 600 would be your constant. Figure your constant value: 4000 RPM / 10 VOLTS = 400 (This is our constant value) Example: If we issue M13 S2500, then this is converted as follows: 2500 / 400 = 6.25 volts So we would issue 6.25 volts to the spindle drive with the ANALOG command. Extra Spindle M Codes and Logic:'Turn 2nd spindle on forward directionISTHERE S;\130;\131 'Read and store the S-code from current line #78=1 'Turn on spindle drive output \120={\131/400} 'Scale voltage (\120) to convert RPM to voltsANALOG5 \120;OUT 'Send spindle voltage —–M13 'Turn 2nd spindle off#78=0 'Turn off spindle drive outputANALOG5 0;OUT 'Send spindle zero volts—–M14 'Turn 3rd spindle on forward direction ISTHERE S;\130;\131 'Read and store the S-code from current line#78=1 'Turn on spindle drive output \120={\131/400} 'Scale voltage (\120) to convert RPM to voltsANALOG6 \120;OUT 'Send spindle voltage—–M15 'Turn 3rd spindle off#78=0 'Turn off spindle drive outputANALOG6 0;OUT 'Send spindle zero volts—–M16 Further Spindle/Axis information For complete information on spindles, click on the “Search for Solutions” button in the CNCSETUP program and do a keyword search on spindle and read every instance that it brings you to about spindles. Common Questions and Answers Refer to the following questions for more information on spindle speed logic and control.

Q222 We have noticed the virtual lights on the digital I/O panel do not always respond in real-time.

Answer

When you click on a digital output, the light should always turn on or off. There is something wrong if it doesn't. There could be many factors, but one of the more common factors is that, although you would most likely notice this, the click could be a double click resulting in a quick change of state back to the original state. The other most common reason would be that you are running Windows 2000, XP, Vista or Windows 7, 8 & 10. The windows screens are refreshed only when Windows is not busy. Windows decides when and if to refresh the screen. While the action will still take place and the event will be logged in the LOGFILE.FIL file, the virtual light itself may not, but a real light bulb would switch on or off. This matter should be looked into further. There are a few things to do to improve the Windows performance such as: Remove all other running programs in the computer. There is another question in this manual that refers to PERFORMANCE. Use this as the keyword to search on. A 64-bit CPU with as many Cores as possible, such as Dual Core, Quad Core, etc., have a faster CPU cycle time than all other processors. The clock cycle for Windows 2000, XP, Vista and Windows 7, 8 & 10 running on these CPUs are only 15ms whereas others are 60ms. Switch to Windows XP as your last option. In any case, the LOGFILE.FIL file should be correct and the I/O action does take place.

Q223 How can we get a complex tool change routine to perform the next tool change while the G code program is cutting?

Answer

First, the special advice below is unnecessary if: (1) Your tool change routine used a regular M06 code and the tool change took place while the G code was not cutting a contour. (2) Your tool change routine used servos or stepper motors to position with while cutting a contour. (3) The tool change was performed by an indexer while cutting a contour. (4) The tool change was performed by a hydraulic motor using a proportional valve while cutting a contour. (5) Your tool change routine used a limited number of quickly processed digital I/O events while cutting a contour. (6) You programmed your tool change in a Macro and used the BACKGROUND logic command. (7) You placed your logic in the TIMER.FIL file and set the TIMER ON;0 parameter to zero. What this advice does pertain to are large, complex tool change routines with stand-by or look-ahead tool change operations to be performed while the G code program is executing a part contour. A large tool changer with lots of tools takes time to index to the next tool. Therefore, you may want to get the next tool into the ready position sooner by issuing the next tool number in the G code program while the CNC control is cutting the part. There are four approaches to accomplish task as identified below. Break down the TOOL CHANGE logic into smaller separate sections whenever it's waiting for something such as an I/O state to change. Download the tool change routine in native motion board commands directly to the motion board and run it like an external PLC. Ask your dealer to contact CamSoft to ask for a quote to customize the software to give your routine top priority in the logic loop internally. By placing your logic in the TIMER.FIL file and setting the TIMER ON;0 parameter to zero, the logic in the timer file will run continuously. Methods (B) and (C) have unique explanations based on the tool routines themselves. Therefore, a dealer would have to be contacted to provide the solution. Method (D) requires no further techniques except that no other unrelated logic needs to run at a specific time interval and that you avoid WAITUNTIL in favor of IF THEN logic. See Method (D) below. To do Method (A) use the TIMER.FIL file set to a short time interval. In the TIMER.FIL file check if the next event in the tool change logic needs to be run. If not, then exit. The TIMER.FIL file runs logic totally independent of the G code program and can execute the tool change events at its own pace while you are cutting. Only use method (A) if you must run the TIMER.FIL file at a specific interval because you have some other routines, such as Oil Lube, that have to use a certain millisecond fixed time interval. Otherwise it's best to use method (D). For example, issue T3 M66 to begin the next tool change and get the tool in position ready to be changed. M66 would be special in the sense that it would turn the TIMER ON, set a variable flag for the TIMER.FIL file and release the M code logic in order to continue on with the G code program cutting. The TIMER.FIL file runs at a regular given time interval, which will automatically exit out if the next event on the tool changer isn't ready. This gives up CPU time slices to other processes and logic. This will not interfere or inhibit other I/O or normal functions of the CNC control from triggering. The idea is to use the TIMER.FIL file to run logic totally independent of the G code program’s execution. If you have any WAITUNTIL commands in your tool change, you will need to replace them with IF THEN logic statements. The following is provided as an example only of the flow of logic in the TIMER.FIL file. Each tool changer would be a bit different but the principles are the same. Example: This will set the timer file to run every 60 milliseconds plus set the \777 variable flag to begin the tool change in the TIMER.FIL file. In the MCODE.FIL file for M66 write: TIMER ON;60 \777=1 Below is an example that you can run and watch in the Diagnostics windows to see how the flow works. IF \777=1 THEN GOTO:TC1 IF \777=2 THEN GOTO:TC2 IF \777=3 THEN GOTO:TC3 IF \777=4 THEN GOTO:TC4 EXIT:TC1 IF #24=0 THEN EXIT 'Only process the following logic if I/O state was what ‘you are looking for \777={\777+1} LIGHT 1;ON 'You would replace the LIGHT command with your ‘specific tool logic. EXIT:TC2 IF #25=0 THEN EXIT 'Only process the following logic if I/O state was what ‘you are looking for \777={\777+1} LIGHT 2;ON 'You would replace the LIGHT command with your ‘specific tool logic. EXIT:TC3 IF #26=0 THEN EXIT 'Only process the following logic if I/O state was what ‘you are looking for \777={\777+1} LIGHT 3;ON 'You would replace the LIGHT command with your ‘specific tool logic. EXIT:TC4 'Finished reset of variable to zero \777=0 TIMER OFF LIGHT 1;OFF:LIGHT 2;OFF:LIGHT 3;OFF #24=0:#25=0:#26=0 EXIT Each time a:TC# completes its portion of the routine, it increments the \777 variable by adding 1. The trick is that when waiting on an I/O, you don't increment \777 to the next increment unless the I/O is the state you are looking for so that the TIMER.FIL file sends the GOTO back to the same:TC# until it’s done. The lower case t in T3 M66 holds the tool number to change to. The M06 code still does the actual tool change. M66 just gets the next tool in the turret in position ready to be changed. This will continue until the timer file logic finishes and all I/O has changed states. Once complete, \777 will equal 4 and the TIMER.FIL file will turn itself off for this example only. You use as many GOTO:TC# as needed by your routine. Method (D) Example: This will set the timer file to run at 0 milliseconds. In the MCODE.FIL file for M66 write: TIMER ON;0 Below is an example that you can run and watch in the Diagnostics windows to see how the flow works.:LOOP1 IF #24=0 THEN GOTO:LOOP1 'Only process the following logic if I/O state ‘was what you are looking for LIGHT 1;ON 'You would replace the LIGHT command ‘with your specific tool logic.:LOOP2 IF #25=0 THEN GOTO:LOOP2 'Only process the following logic if I/O state ‘was what you are looking for LIGHT 2;ON 'You would replace the LIGHT command ‘with your specific tool logic.:LOOP3 IF #26=0 THEN GOTO:LOOP3 'Only process the following logic if I/O state ‘was what you are looking for LIGHT 3;ON 'You would replace the LIGHT command ‘with your specific tool logic. 'Finished reset of variable to zero TIMER OFF LIGHT 1;OFF:LIGHT 2;OFF:LIGHT 3;OFF #24=0:#25=0:#26=0 This will continue until the timer file logic finishes and all I/O has changed states. Once complete, the TIMER.FIL file will turn itself off for this example only.

Q224 My stepper motors are stalling and losing steps.

Answer

How do we decel at the end of each move? Under the right conditions you should get a very smooth, continuous, uninterrupted cut at a constant velocity. However, the effects you describe are not surprising when either it is not set up properly or the physical motors are under sized for the weight, load, gearing and inertia that the table can handle. First, the explanation. The better the problems are understood, the better you can decide upon one of these solutions. When stepper motors do not have enough torque (power) or are geared incorrectly for the application, they are notorious for losing torque during acceleration while taking off from a dead stop, decelerating too fast to a stop, traveling at the upper reaches of the RPM range for that motor or making an abrupt change in travel direction. When this happens, the motors may kick out, stall, ignore steps or freeze up. You may be losing steps by accelerating too fast or rapiding too fast. The faster a stepper motor moves, the wimpier the stepper motors become thus losing torque although they have good torque at slow speeds. The drawback to an open loop system is that you will never know this unless you can humanly visually notice it. The key solutions are presented in order of consideration for effectiveness, difficulty and cost. (1) Change to closed looped servo motors. (2) Possibly keep the stepper drives but change the stepper motors to a larger size. (3) Use gear reducers. There are many types to select from. In-line ones that attach to the face of the motor or side-mounted gearboxes are most common. Each time you reduce the gearing ratio by a factor of 2 you will increase the torque the motor has thus doubling its power. The trade off is that each time you do this you also reduce the RPM and travel speed by half. It is common practice for companies to use 1.5:1, 2:1, 5:1 pitches on their ball screws or install gear reducers in factors 2, 5, 10 or 20 to 1 for example. (4) Use SmartPath to make automatic on-the-fly intelligent decisions about when to decel and when not to and then only apply the amount required per cutting scenario, material type, physical mechanics and upcoming look-ahead geometry in the cut path. (5) Set the SLOWDOWN and NEXTMOVE parameters to automatically calculate the correct distance to commence a reduced feedrate before reaching each target position on the basis of percentage and distance of the original feedrate. SmartPath does this same thing but with much more intelligence and versatility. (6) Keeping in mind that steppers have the most torque at their low RPM ranges, some solutions in this area are: Use lower feedrates on G01, G02 and G03. Open the position error allowance using POSERROR, which keeps the motors from kicking out so easy. Lower the maximum rapid speed using RAPIDSPEED to keep from running the stepper in the high RPM ranges. Open the TOLERANCE setting up slightly. This will allow each target position reached to be satisfied more quickly and move onto the next. Don't worry about position accuracy, this system will always strive to make position and always output the exact number of steps. TOLERANCE only confirms you are in position by doing a check within the user-defined tolerance range. If in-position tolerance must be confirmed on each move within a certain small value, then an alternative exists by using the logic command BLEND. Set a minus BLEND factor. This setting is in milliseconds. When the value is negative, it will have a similar effect as opening tolerance, except that the units are time based not distance based. Insert DECELSTOP commands in your GCODE.FIL file or use G11 codes in your G code program only where necessary to automatically ramp up and down. Lower the acceleration rate and deceleration rate using ACCEL and DECEL settings to make softer starts and stops or ramp ups and ramp downs. Keep in mind that the focus of what you are trying to accomplish is to reduce the factors that make stepper motors lose torque. The only way to approach this is to start with conservative values and make repeated tests each time slightly increasing or decreasing the values until you feel that the settings reflect adequate acceleration and deceleration for the motor size, table weight, load, gearing and inertia that your machine can handle.

Q225 While tapping we need to get a perfect Z-axis feedrate using G84, but our gearing for the Z axis is different than X or Y.

Answer

How do we adjust for this? Enter this one line in your GCODE.FIL file at the top of G84. [RATIO FIX] Then merge in this macro by importing it from the file MACRO.MAC using EDIT OTHER MOTION CONTROL FILES on the CNCSETUP.EXE screen. There are some notes inside this macro so be sure to read them to set up the ratios and gearing to your application.

Q226 How do we display lower case characters for messages and also use them in the QUESTION command?

Answer

When lower case letters are assigned to a variable, they are interrupted and replaced with their corresponding values from the ones entered into the G code program in upper case. When using the QUESTION command, you can enter both upper and lower case letters in the QUESTION command directly. QUESTION Hello Ralph;\123 If you must keep lower case letters in a variable, use the HEXCHAR command to store the lower case letter in a temporary variable and then add these all together to display a string of upper and lower case text. Example for storing the word Hey and using it with the QUESTION command: HEXCHAR 65;\101 HEXCHAR 79;\102 \100=H\101\102 QUESTION \100;\55 Otherwise, this would work better: QUESTION Hey;\55

Q227 At random, why does our computer suddenly just shut off?

Answer

The most common reason for this is that the Battery Back Up (UPS) unit that the computer is plugged into is failing or doesn't supply enough watts to power all of the items plugged into it. IMPORTANT: Plug the UPS into an outlet that does not share a circuit with a heavy electrical load and check to be sure that the wattage rating of the UPS is powerful enough to drive all of the devices that are plugged into it.

Q228 Are there other ways to jog the machine beside the keyboard?

Answer

Yes there are. You'll notice the on-screen jog box for keyboard jogging is the default method. This only jogs one axis at a time. To change which axis to jog, type the letter of that axis and you'll notice the red axis display changes. The valid letters to use are the ones displayed in the position readouts. This simple jog box using the keyboard is really the default, poor man’s jog feature, but there are plenty of other choices you'll find in the Macro.FIL and Macro.MAC files as well as in a few other CBK files that use physical jogging sticks, physical jog buttons or touch screen jog buttons. Others use spinning handwheels and multi-direction industrial joysticks.

Q229 What does the Mouse Jog feature do?

Answer

The mouse jog feature is application specific for standard 3-axes XYZ tables or 2-axes lathes to jog the machine in 2D by clicking in the graphics viewport with the mouse to get the machine to move to the cursor position at any angle. If you checked the box to use Mouse Jog in Design Operator Interface/Miscellaneous/ Mouse Jog Option, then once you enter jog mode a new button will appear in the jog box at the bottom saying Mouse Jog. Click it and it gives a warning to raise the Z first or confirm an unobstructed travel path for Lathes. Click in the viewport on the part and the axes will move to the mouse position.

Q230 We have a high-speed machine and we want the smoothest, jerk-free motion possible.

Answer

What advice do you have? There are many choices to accomplish this to varying degrees of automaticness. Keep in mind that there are two separate topics here. The first thing to do is follow the "Initial Set Up Procedure" (explained further below) for default settings under normal circumstances. Then, if you still have a problem, determine if your symptoms are more like condition (A) or (B) below. It is possible that you could have both symptoms. Condition (A) Would be cutting many very short moves smoothly that are strung together in a row, such as when cutting splines, and seeing a jerky stop-and-go ratchet effect at high speeds. You would notice a slight delay or pause in between each move when this happens. Condition (B) is related to look ahead on the contour geometry to decide when and how much to speed up or slow down (decelerate) to prevent the machine from stopping too hard or slamming, such as when the inertia of the table makes a sudden abrupt change in travel direction. If set up properly, the cutting feedrates using a high-speed motion card model can be up to 3,000 IPM (76,000 mmpm). Rapid speeds can be up to 120,000 IPM (3,000,000 mmpm) but your motors cannot spin this fast anyways. PCI model boards are much faster than external Ethernet model boxes. The maximum cutting speed on any model depends on how many consecutive short quick moves there are being strung together, such as when cutting splines or molds. Regular cutting of lines, arcs, circles, drilled holes, pockets, slots, etc. will almost always be able to reach the top cutting speed range. There are numerous further suggestions and advice on these two topics. Do a keyword search using SEARCH FOR SOLUTIONS on: BLEND G8/G9 G11 G64/G61 SMOOTH FASTMODE SMARTPATH Also see QUESTION 104, 160, 171, 274 & 282. Initial Set Up Procedure Start by using the Diagnostic screen to servo tune your motors, tightly. NOTE: Motors driven by step (pulse) and direction signals cannot be tuned. There are two easy parameter settings in CNC SETUP that under normal circumstances are all that is needed to work on any standard part even most splines. They are BLEND and TOLERANCE. You should first decide on your TOLERANCE. Set this to what you feel your part tolerances need to hold plus also consider the mechanical design and the position feedback accuracy of your encoders/scales. Keep in mind that the controller will always strive to move to the accuracy of +/- 1 encoder count despite your entered tolerance value. See an explanation of what TOLERANCE does in (B) below before you set BLEND. A tight TOLERANCE increases the need for BLEND. For default examples, a flame cutter or wood router may have a TOLERANCE of.015" (.4mm) and a milling machine will be between.001" (.025mm) to.005" (.12mm). Under normal circumstances use: For PCI model motion cards set BLEND to 0 first and try it. You may not need to use the BLEND setting. For Ethernet model motion boxes you can set BLEND to 0 if your TOLERANCE is open. Typically, if your TOLERANCE is tight, start with BLEND -50 and adjust up to -250. BLEND values are always negative. Refer to the other advice below before you increase BLEND further. Condition (A) To understand this condition the machine is moving faster than the short line segments can be fed to the machine. If your program does not contain many short consecutive moves in a row, then move on to condition (B) below. (A1) If the reason for what you are seeing is condition (A), then, as a test, use a BLEND of -250 and also drastically lower your feedrate to see if the problem gets better. If so, make adjustments to the BLEND parameters in (A2) then you should be able to increase your feedrate higher and higher until such a point that to improve it any further the solutions in (A3), (A4) and (A5) need to be explored. (A2) Start with BLEND -50 then try it and, if need be, keep doubling the value until you reach -500. Stop at the BLEND that works best. If this still does not work, go on to (A3). (A3) Use the SMOOTH feature or use G8 and G9 in your G code program. The CNC Professional version also offers an even faster optimized smoothing method G64 or G61. Here is an example: G0 X# Y# Z# G8 G1 X# Y# Z# F100 X# Y# Z# X# Y# Z# X# Y# Z# G9 Keep in mind that G0 will cancel smoothing. Only put G8 and G9 in between G1, G2 and G3 moves. In CNC Professional you may replace G8 with G64 and G9 with G61. (A4) A number of CAD/CAM software packages have automatic features built in that optimize the feedrates within the G code program that they output. Some CAD/CAM brands offer a CamSoft post processor. We also offer our own CAD/CAM software for our controller with user- configurable post processors that will use the G8/G9 or G64/G61 smoothing features. If you are not using CamSoft’s CAD/CAM software and your existing CAD/CAM software does not have this feature, then we do offer an optional feature that will give you this ability called SmartPath. SmartPath is an option to the CNC Professional version that can intelligently choose the best feedrates and allow the user to select from extra actions, such as a variety of deceleration methods based on the geometry of the part shape, that will optimize the running of G code program internally to obtain the fastest & smoothest cutting speeds. (A5) Ask about a faster motion card model. There are a few models to select from. Some will meet or exceed the performance of the most expensive, highest end systems on the market. Condition (B) To understand why a machine may stop hard or slam on each move, you need to know what has to happen for it not to stop, but rather execute the next move immediately. For this to happen the current move must arrive at its target position within your entered tolerance or else the system will automatically take corrective action to fix it. This could be an under or over shot of the target position. The hard stop "slam" is the act of trying to "fix or get" the machine to arrive in-position within tolerance. If the default parameters are used as explained in the "Initial Set Up Procedure" and the machine still slams, then the root of the problem can be a combination of one or more of these factors, all the way from poor servo tuning, a slow or busy computer CPU, EM or RF noise around Ethernet communications, motor torque is under sized and/or machine design with regards to weight, load, inertia, mechanical mountings, screws, rigidity and sturdiness. The advice below shows you how to fix this or at least compensate or ignore the problem. (B1) First open your TOLERANCE value up for testing purposes. Remember that the controller will always strive to move to the accuracy of +/- 1 encoder count despite your entered tolerance value. TOLERANCE simply tells the system to "make sure" the machine is within tolerance on each move or else take any corrective position actions necessary to satisfy tolerance before allowing the next move to be made. Do not make your TOLERANCE tighter than it needs to be or you will be sacrificing performance. (B2) To see if you also have Condition (A), make this test. Set BLEND to 0. Run the machine at a feedrate that makes the machine slam. Then slow down the feedrate to about 25% of the original feedrate using a BLEND value of -250. If you notice improvement, then also employ the advice given in Condition (A) above in this order (A1), (A2), (A3) before moving on to (B3). (B3) If you have the CNC Professional version, set the NEXTMOVE and SLOWDOWN parameters in CNC SETUP starting at a SLOWDOWN rate of 75% and a NEXTMOVE distance at 1 inch (25mm). This will slow the feedrate automatically for example to 75% of the programmed speed when the tool is within reach of the target position of 1 inch in order to absorb the shock. If the motion still stops too hard, you can change the SLOWDOWN to 50% or else go on to (B4). (B4) Enter the logic command DECELSTOP in the GCODE.FIL file for G1,G2 & G3 then set a very high DECEL rate in CNC SETUP that is at least 100 times the average of all the RATIO count values you are using for each axis. For example, if your RATIO values average about 10000, then make your DECEL value 1000000. There is no right or wrong value here. The goal is to decel very quickly at the end of each move so that in combination with the BLEND factor the current move will bleed smoothly into the next move while absorbing the shock from the inertia. (B5) To ensure the machine is cutting the contour at the optimum feedrate for each unique machine design we offer an optional automatic feature called SmartPath for the CNC Professional version that can intelligently choose the best feedrates and best circumstances for decelerating. This not only looks ahead in the part geometry to decide this but also considers material type, material thickness and dozens of other user-selected preferences. (B6) Check to see if your amp drives can operate in Pulse and Direction mode rather than analog. If the root problem is that spongy servo tuning is causing over shooting or makes the motors bounce into position (which may not be humanly noticeable), then this avoids the problem by not trying to take any corrective accuracy actions to satisfy tolerance. To set up pulse and direction mode set the SERVO-STEP box in CNC SETUP to 2 and the ENCODER SETTINGS to ENCODER type -1. If your amp drives do not support this mode, go on to (B7). (B7) Re-tune your servo motors tighter. Some manufacturers offer servo tuning software, which can be downloaded from their websites, and would be worth using if you have reached this step. (B8) Ask about a faster motion card model. See (A5) above.

Q231 How do I cut parts by turning manual handles but still see my position in the readouts?

Answer

This is actually quite common for knee mills and small lathes. Follow the advice below to move the machine manually with the original handles that are not under servo power and still use the encoder feedback to see where you are, much like a digital readout. All that you need to do is make a button on the operator screen that on the first press changes the button’s caption to Manual Mode and issues the command MOTOR OFF. On the second press, using a different M Code, change the caption on the button back to Servo Mode and issue MOTOR ON. MOTOR OFF 'Releases the motors from servo mode to allow them to spin freely but still reads and displays the encoder feedback as a DRO would. MOTOR ON 'Re-energizes the servo motors back to normal. In either case the machine’s offsets and home position are intact and accurate in either mode to permit quick and easy switching between manual and servo mode.

Q232 How do you use the Crash Barriers or Soft Limits?

Answer

Keep in mind that the SOFTLIMITS position settings in CNCSETUP are relative to the machine’s home not tool or job home. However, these positions can be changed on the fly with the SOFTLIMITS logic command or the G Codes G170, G171 and G172. Think of the SOFT LIMITS as a virtual over-travel limit switch in the computer. For example, these may be used as crash barriers to prevent the tool from hitting the chuck, fixture or clamp. What actions will occur when a crash barrier or SOFTLIMITS is crossed can be customized by the end user in detail inside the SOFTLIMITS.FIL file. There are four choices: (1) Enter in the tool size or length into the CUSTOM1 or CUSTOM2 box on the TOOL PARAMETER screen for each tool number. At each new tool change, perhaps in the logic for the M06 code, you can setup the new crash barrier positions for each new tool. Use the lower case t value to determine the current tool number. Example: TOOLCUS1STt \123 SOFTLIMITS BACKWARD {-10+\123};0;0 This will retrieve the value stored in the CUSTOM1 box on the TOOL PARAMETER SCREEN for current tool number and store it in variable \123. Next, reset the SOFTLIMITS for the BACKWARD limit of the first axis to -10 where it originally was plus the tool size or length stored in variable \123. If the physical chuck was at -10 away from machine home in Z (in this case axis number 1 on a lathe) and the lathe tool length stored in CUSTOM1 box was added to the original chuck location, then the number 1 axis could not pass this coordinate without causing the SOFTLIMITS event to execute. This would also work for 3D mills or other machine types despite additional offsets for the fixture, job home or other user-defined added offsets because the internal position register compares the actual axis location minus any offsets in a separate register and it is this value that is compared to the SOFTLIMITS position. All we are doing here is adding the tool size or length to SOFTLIMITS. When the tool enters the crash barrier limits, the logic in the SOFTLIMITS.FIL file automatically will run. Here you display messages to the operator, stop the machine or even automatically back away slowly. (2) Enter logic directly in the GCODE.FIL file table that specifies what happens, what messages get displayed and what action occurs before the GO command to move the machine takes place. In the example below, if the X-axis position in the G code program is ever less than or equal to the value 1.234, then the machine stops and displays a message and exits out before it moves there. The -1.234 may be the distance from the face of the part Z0 to the chuck jaws. For example: IF x<=-1.234 THEN ESTOP:MESSAGE CRASH BARRIER HIT:EXIT The big advantage here is that you are working with numbers in the G code program that are already the tip of the tool. No offsets to worry about in your calculation. The lowercase x value is the tip of the tool. All tools, despite their length, get setup and touched off the part face at Z0 on a Lathe or Z0 on the top of the part on a mill/router. This way the tool number does not matter and neither does the offsets. If the tip of the tool is commanded in the G code program to cross a certain fixed coordinate that is the chuck or fixture, then this will catch it. Besides, this way the move is never actually made so the crash is caught before the tool even gets near the chuck. (3) For CNC Professional there are G codes to setup new crash barriers from within the G Code program — G171 & G172. G code G170 resets them back to the defaults. This way the positions that are given for this particular part would be saved right inside the G code file for the next time it is run. (4) In the standard version of CNC Professional (Level 1), watch the solid modeled simulation on the screen in SUSPEND PREVIEW mode before you press Cycle Start. If you have CNC Professional Level 5 or higher, you can preview a full solid modeled verification of the G code program. Although you cannot always count on this method unless you humanly notice something, but again it is a high probability that you will notice well before the machine operator has even had a chance to press Cycle Start.

Q233 What advice can you give us on servo tuning?

Answer

If you are having trouble servo tuning and you have Velocity mode servo drives, refer to QUESTION 321. Below is an outline of the steps we recommend you follow. We do confirm the CamSoft software is well suited for the positioning and servo tuning tasks. First, try to use the automatic self-tuning feature on the diagnostic screen. It is very easy when compared to all other alternatives. It is servo tuning for dummies, so to say. All you need to do is select an axis, follow the prompts and wait about 20 minutes and the system will self tune itself and then ask if it is okay to save the settings automatically. Done… If step 2 gives a message saying it can't recommend servo tuning values, it should also suggest that you click on the Amp Tuning button right there on the diagnostic screen next to the servo tuning button to tune the Amplifiers (servo drives) and then repeat step 2. Read exception section below. This will guide you through tuning the physical pots on the amps with a screwdriver either clockwise or counterclockwise to ensure the amp is not the culprit causing the automatic servo-tuning program to fail. Once power to the amps is applied, if the gain pots on the amp are not matched with the servo motor, they will cause the servo to vibrate, oscillate, drift or run away even if the motion card is not yet installed. The rule of thumb is to purchase the amps and the motors from the same vendor so that these pots will be factory preset as close as possible. If the amps come from a different manufacturer than the motor, the pots will most likely need to be set first. The automatic Amp Tuning feature will help you do this. It will guide you through steps displaying interactive messages while you are turning the pots with the screwdriver, for example "Getting Worse," "Getting Better" or "Just Right." If after repeating steps 2 and 3 it still does not work, then we recommend using a second computer. Remove the motion board and install it in the second computer and load the Windows Servo Design Kit option for servo motor tuning. The terminal program alone will not help you tune, so we recommend you contact your dealer for the Windows Servo Design Kit. The goal here is to write down the servo tuning values the WSDK reports. These will begin with the letter K such as Kp,Ki,Kd — one set for each motor. When this is done, just plug the motion card back in the CamSoft PC and enter the K values in the boxes labeled ProPor for Kp, Integ for Ki and Deriv for Kd in CNCSETUP under SERVO TUNING SETTINGS. Both systems use the exact same values. Avoid DOS and loading any Galil software in the same CamSoft PC unless you have someone there that knows how to use both products such as a certified CamSoft installer. The issue here is the Windows registry. Both packages want control of the same card. There is a way to clean the registry and the drivers if you have to load both programs on the same computer, but it takes more steps than the advice above does. If you get to this step and need to reset your system back to factory defaults, we have a simple one-page e-mail that outlines the steps to set things back to normal. Exceptions: Skip this section if: (1) If you are using Stepper motors. (2) If you are using Servo motors but the servo loop is closed on the amp, whereas the CNC controller runs in open loop. (3) Your encoders are mounted on the back of the motors. (4) If your encoders are mounted on the ball screws and there is a way to disconnect the couplings so the physical table will not move but the encoders will still rotate. The suggestions above still apply, except for the Amp Tuning Test, which you may or may not need to perform. We do recommend that you decouple the motors from the load (physical table) during tuning for safety reasons. If tuning was grossly off or the wiring was incorrect, then the motor may spin rapidly and cause the axis to run away. If you have read this far, then we assume that you cannot decouple the physical load in your case. If you feel that you have the wiring installed okay or you at least have seen the table move under CamSoft control even if it does not hold position or is accurate, then we would say it is a small risk that you need to decide upon that it would run away. Just be sure your Emergency Stop is hooked up to turn off power to the amps/motor just in case. Stand close by during the test. The amp-tuning test is different because it will try to spin the motors rapidly. If there were a way to disconnect the couplings so the physical table would not move but the encoders would still rotate, then it would be safe to do amp tuning. Traditionally amp tuning is not done automatically by software. Rather these amp pots (gain settings) are a matter of using either the factory settings or an experienced installer that has knowledge to tune amps, which is usually done manually with a screwdriver. As far as we know, we are the only company that offers automatic amp tuning. A qualified installer would be able to perform amp tuning without the need for this test. For further information refer to QUESTION 317.

Q234 Are the AMP ENABLE connections important?

Answer

Yes, but they can be optional in rare cases. There is also no requirement to use digital outputs to turn on or off the amps (drives). On the Galil ICM module, these connection labels should be labeled (silk screened) AMPENX through AMPENF. Think of them as motor power on or off switches. The ON or OFF states are completely and automatically controlled by the Galil board. It will decide if the motor parameters are setup properly to enable the amps (motors) or not. It will also switch them on or off in cases of emergency stop and motor reset. In most recent Galil manuals there is a section about amps (generally in Chapter 3). This will talk about different voltage requirements that are found on common amp/drive brands and proper connection choices each drive type may offer. In summary there is nothing you need to do in the logic, I/O or variables in the CamSoft system. The need to even use amp on/off signals is determined by your amplifier manufacturer. Ask them "Do these amps need to be told to turn on or are they always on?" In rare cases there could be a jumper on the amp forcing them always on. If they say they do not need to be told, then the AMPENX through AMPENF are optional. However, keep in mind that we do highly recommend using these connections because of safety issues even if they are optional. If you choose to not connect them, you will be giving up the feature to have the amps turn off in an emergency. Depending on your choice of SETESTOP settings the servo signal will still be cut but may come right back on again.

Q235 How do I make a manual tool change?

Answer

The correct usage is the same as an automatic tool change. For example, to change tool number 1 is T1M6. The macro routine shown below would be used when you don't have a tool changer and just want to be prompted to change the tool manually. In M6 of the MCODE.FIL file you want to call out the [Tool Change Manual] macro. MESSAGE MANUALLY CHANGE TOOL NOW MESSAGE PRESS CYCLE START WHEN READY CYCLESTART This will hold up and wait here until you press CYCLE START. All of the tool offsets entered into the TOOL PARAMETER screen for tool number 1 will automatically be set.

Q236 Should we replace the amps and motors or use the existing ones?

Answer

We agree with the premise that you should connect up the existing drive/amps as Plan A and then run our diagnostics to check on and provide reports for the motor/amp performance. There are also both automatic servo self-tuning functions and amp tuning functions that will allow you to reuse these motors/amps "as is". You will know after this if you should consider replacing the amp or the motor or both. Most installers will tell you that if the existing motors/amps are still good, keep them because it will save you thousands of dollars not to replace either the amp or the motor and a great deal of labor dismounting and mounting new ones. By using your existing motors/amps, the entire process would only be the time it takes to re-direct 2-4 skinny signal wires per amp to our terminal and allowing diagnostics to automatically tune them. The most important factor is if there is documentation, labeling or a CNC electrician around that can help find the motor and amp wires. Usually most installers propose that you do consider replacing the motors or drives if there is no documentation. Some may suggest making an effort to contact the motor manufacturer for information. Some really experienced installers own a hand-held servo battery pack to test for the command signal and ground by touching terminals on the amp they recognize. The bottom line is if the documentation is there, we always say to keep the motors and drives. Keep in mind that if you simply decide to just replace only the amp or the motor, there will be a servo tuning issue. Installers will always tell you to buy the amp and motor from the same vendor because the factory usually pre-sets the various pot settings on the amp to default values for gain, dead band, offset, current limit, response, etc. to get you going. If the drive or motor come from different manufacturers, then these pots will have to be set by someone. Our automatic amp tuning function in diagnostics will interactively guide you through turning the pots by saying "Getting Better", Getting Worse" or "Just Right". This task is doable, but it is an effort. Also, if you have what are called Velocity or Tach drives, these will be difficult unless you can disconnect the tachs or switch the amps by moving jumpers, dipswitches or buttons to what is called Current, Torque or Voltage mode. In summary, the choices weigh upon if the documentation is there or not. If not, then use Plan B and decide to replace the amp or motor or both. For further information refer to QUESTION 317.

Q237 How can we ask the user a question so that the answer can be used in a G code program?

Answer

There are several methods. You can prompt the user with the QUESTION command, give them a TEXT BOX to enter values into or even create logic to read and apply the value after an unused letter in the G code program, such as P or Q. (1) To make use of and pass on data in an internal logic variable you can, for example, use a Text Box on the screen to ask for length, width or anything. Since a Text Box already has an internal logic variable that collects the data entered into it, you can assign a named variable to an internal logic variable. For example: {SIZE=\55}. A G code program can only see or change the named variable types. The internal logic variables are protected from the user. (2) You can use this variable in the G code program and do math on it too. For Example: G00 X{SIZE+.123} (3) Also see Question 49. Important: Named user variables are reset when a new job is loaded.

Q238 How can we specify feedrate in time rather than in inches?

Answer

Use the command INVERSE ON. This command tells the system to get there in the given amount of time rather than in units such as inches, mm or degrees. This is called Inverse Time. For example, instead of F2.5 meaning 2.5 IPM it means make this move in 2.5 minutes. Caution needs to be taken because every feedrate or velocity command given within logic or a G code program will be treated in either inverse time, IPM or IPR until the next INVERSE command changes the mode.

Q239 How do you round off a number to 3 places?

Answer

Rounding off numbers is a very simple calculation. The reason to do this may vary from simply being able to display a value in a readout where the number is so long that it passes the borders of the box it has to fit inside, to a more critical issue to where voltage readings fluctuate so minutely that checking a voltage to equal a known value is impossible because the voltage varies each time it's read only slightly in the 4th, 5th or 6th decimal position. The example below shows how to round off to three places after the decimal. To round off 1 place use the value 10, for 2 places use the value 100 and so on… \1=1.234567 \1={INT(\1*1000)/1000} The variable \1 should now equal 1.234

Q240 What's the quickest way to test motion or find a problem?

Answer

In summary, there are four basic tools and features that you can access yourself that will help you find the problem, explain it or solve it. (1) To get the fastest answers, use the “Search for Solutions” button on the CNCSETUP.exe or SETUP.exe screen. Here you can search for answers like a web browser. Enter in an exact phrase or several random keywords to electronically and quickly search for the solution. (2) There is a complete set of diagnostic screens provided to individually test each axis plus test for coordinated movement with error checking. The diagnostic screens also provide automatic spindle testing and tuning, basic automatic servo tuning and a complete watch window for variables, feeds, speeds, digital I/O states, analog voltages and true encoder positions. (3) On the Diagnostic window use the “SELECT AXIS FOR MOTION TEST” axis buttons. These tests will let you know if the various settings that you have entered will work with the mechanics of your system under the TOLERANCE you set. Be sure you review some of the settings boxes for Feedrate or Rapid and Distance to move for each test on the Diagnostic screen before you begin the test. For the first motion test DO NOT check the box entitled “Coordinated Move / Error Checking.” Then Save/Make a Logfile.fil file. Next, do the same test but this time check the box entitled “Coordinated Move / Error Checking” and Save/Make a Logfile.fil file under a different name. Send both of these Logfiles to your dealer/installer. A window will show you the result simultaneously. Any words appearing in red will mean that the test failed and the report displayed will need attention. (4) If you have a problem that you need help with, you can you send us a LOGFILE.FIL file and also a bitmap image of the message on the screen (if any). To get a LOGFILE.FIL file, you have to enter Diagnostics. You may close all the diagnostic windows except the Digital I/O Panel showing the I/O numbers. It's also okay to minimize the Digital I/O Panel. Whenever the problem happens the next time, immediately hit ESC and exit. Don't wait too long or too much history will be written to the LOGFILE.FIL file. Next, hit the button on the Diagnostic screen titled "Create a History/Logfile on:" A file named LOGFILE.FIL will be saved to a folder of your choice so it can be e- mailed to CamSoft or your installer. To save a bitmap image of a screen, refer to the steps in Question No. 177 for CNC Professional, Question No. 152 for CNC Lite/CNC Plus and Question No. 126 for Graphical OI. There is also a free CamSoft Utility on the CamSoft Installation CD called SAVESCREEN that will automatically save a bitmap.

Q241 The motion card we have sometimes just stops working, why?

Answer

We have noticed that the low-voltage power side of the Stepper box/Ethernet card is sensitive to having a constant uninterrupted power voltage, which in turn supplies the steps/pulses/motion and digital I/O. Even if a brief interruption occurs, this can stop motion or freeze the I/O relays. The Stepper box/Ethernet card must be turned off and on again to recover. The power these cards use is designed to normally come from the computer’s power supply. Since the voltage requirements are so small (12vdc), any momentary voltage drop, even if not humanly noticeable, can cause this effect. This is why we normally recommend a Battery Backup (UPS) from the computer store to protect the computer but also filter noise and maintain an even power flow. See QUESTION 385. If it doesn't seem to help, then perhaps a separate 12vdc uninterrupted power supply could be connected to the stepper box instead of the computer. Most Ethernet card users are supplied with an external power supply and cable. The only other notes we have are related to heat above 115 degrees Fahrenheit if enclosed in a metal cabinet without a fan. IMPORTANT: Plug the UPS into an outlet that does not share a circuit with a heavy electrical load and check to be sure that the wattage rating of the UPS is powerful enough to drive all of the devices that are plugged into it.

Q242 Can a CamSoft controller act like a CMM (coordinate measuring machine)?

Answer

Yes, CNC Professional can. In generic terms, a CMM is controlled much like a 3-axis mill. The differences are in the probe routines that capture and display messages regarding the 3D locations and measurements. We have several pre-written probe routines that are made for both analog and digital probe types, which are user customizable to fit any application. We even offer high-speed laser digitizing and probing. A CMM can be broken down into two specific application styles: (1) To message and find positions such as hole locations, pocket depths, part lengths, draft angles, slot sizes, etc. Here we can offer logic routines that you can have that were originally made to use with a probe on a mill. In essence, these turn your mill into a CMM. You would decide which routines to use and then place buttons on the screen describing the various features that you feel are required per application and also what to display when a location or measurement is found. (2) To compare a 3D model of 3D points to the part on the CMM. Here a G code program is made using a G31 FANUC style probe code to travel over the part in a zig-zag fashion or to key locations as programmed by the operator to hit the part and record the discrepancy between the original CAD model and actual part to a file.

Q243 Why did I get a tilted 3D arc rather than the helix/spiral arc I wanted?

Answer

The CNC Professional system can make 3D arcs as well as helical arcs in any tilted plane not just XY, YZ or XZ. All the system needs is a G2 or G3 with a 3D ending point and 3D arc center that is on the same tilted plane as the 3D starting point to make the arc. If the plane on which the 3D starting point and 3D arc center point are the same but the 3D ending point is either lower or higher but still the same radius, then a helix is made to the ending point. If the plane of all 3D points — starting, ending and center — are the same or within tolerance, then the arc will be tilted instead. In this particular case the math worked out just right for the beginning and ending radius to be within user-defined tolerance, therefore, no error. Due to the fact that the tolerance was wide open, a tilted 3D arc could also fit because the 3D starting point and 3D arc center point were within the tolerance of the same plane as the 3D ending point. However, a tighter tolerance only leaves the helix option. In either case if the math doesn't work out within tolerance where the radius from the 3D arc center point to the beginning of where the arc starts is not the same radius as from the 3D arc center point to end point, then an error message is displayed.

Q244 How do we prevent the user from entering Jog mode while still doing other things?

Answer

The solution is quite simple and can be used for many other purposes as well in order to prevent the user from switching from one mode to another. The basic principle is called a Flag. A Flag is nothing more than a 1 or 0 state of a variable. Select a variable that you're not using and set it to a 1 at the top of your logic routine. This variable will be global or public throughout the whole system and can be seen by all logic routines. This way when you invoke another routine, button, macro or one of the many logic files, you can check on the state of this Flag and then decide what to do. You can simply EXIT or display a warning message, change a mode automatically or change the course of other events. Whenever your original routine finishes or exits, then set the Flag back to 0. For an example in your jog routine logic, check for the state of the Flag. IF \777=1 THEN MESSAGE Jog is an Invalid Choice:EXIT

Q245 Do the Limit and Home switches use 5V or 24V and how do you reverse the logic?

Answer

Using 5V, 12V or 24V is your choice. There is a page in the CamSoft Installation Guide Reference and User Manual that talks about 24vdc wiring to the ICM terminal strip. The actions that will take place when a Limit or Home switch opens or closes are handled by the logic the user enters in the LIMITS.FIL file. For example, you can enter: IF #1=0 THEN STOP 'Stop if switch is opened or for reverse logic: IF #1=1 THEN STOP 'Stop if switch is closed If you have a Galil motion card and the computer fails, the card itself will abort motion if a limit switch is hit. You can also select to stop motion when the limit is opened or closed. In the STARTUP.FIL file you can reverse the action the card takes by either entering the native motion card command: CONFIGLIMITS Y -or- CONFIGLIMITS N

Q246 How do I calculate the feedrate of a rotary axis in revolutions rather than degrees?

Answer

If you entered how many encoder or stepper counts it takes to move the rotary axis one degree into the RATIO setting for that axis, you commanded the system in degrees per minute. However, if you entered the number of counts into RATIO that it takes to rotate one full revolution, then you commanded the system in degrees per revolution. When commanding an axis defined as a rotary axis to do movement like jogging, keep in mind the feedrate you issue is usually in degrees per minute. You can convert the degrees per minute into revs per minute by multiplying the feedrate by 360. If you want to convert degrees per minute into inches per minute or even mmpm, multiply the feedrate by 114.5915 times the diameter of the part on the rotary table. On a 4-inch diameter part given F100 what is the IPM around the circumference? Where F=100, D=4, L=Arc length in distance around circumference L=F/114.5915 IPM=D*L

Q247 Is there a way to find the shortest travel distance of a rotary table?

Answer

Below is the logic to move your rotary axis the shortest distance within 0-360 degrees. For the example below, the rotary axis is called A and the axis is number 4. ' looking for the letter A in the program ISTHERE A;\400;\401 ' get the 4th axis position READOUT4 \402 ' Check to see if there is a need to calculate the shortest distance ' Compare the current position to the commanded position IF{ABS(\402-\401)}>0THENIF{ABS(\402-\401)}<180THEN GOTO:MOVE ' Go Shortest Distance Clockwise IF{\402-\401}=>180 THEN a={\401+360}:GOTO:MOVE ' Go Shortest Distance Counter Clockwise IF{\402-\401}<0 THEN a={\401-360}:GOTO:MOVE:MOVE FEEDRATE 100 MACHGO;;;a

Q248 Why do our stepper motors stall if we spin the Handwheel too fast?

Answer

Some steppers motors have trouble acceling too fast and also lose torque at higher RPMs, which cause the stall. At CamSoft we have a desktop stepper milling machine and our motors are pretty small, but the weight of the table and the ball screw pitch is so reduced that ours will move quickly when we use the handwheel at almost any speed. It gets right up to speed and goes pretty quick. When we are in TACH mode, the table moves as fast as we spin the handwheel, but when we are not in TACH mode, we can get it to stall if RAPIDSPEED is set too high. In non-TACH mode each click of the handwheel is a pre-determined distance as set by the second parameter of the HANDWHEEL command for scale. If you spin the handwheel fast or slow, it will always move at the RAPIDSPEED rate to the precise position distance each click represents. If you spin it too slow, each click may be a fraction of a step and since the system rounds off fractional values to the nearest whole number step value, it may take several clicks of the handwheel to get it to move at all depending on the scale factor. If your RAPIDSPEED is set too high for the torque/gearing of that axis, then after so many steps it cannot accel to speed as quick as you are spinning. Keep in mind that the axis motion is trying to keep up with how fast you are spinning the handwheel in order to be as responsive as possible to the user. The solutions are: (1) Set the HANDWHEEL command’s second parameter scale factor to high values so that each click of the handwheel moves the axis a shorter distance to avoid sudden leaps in travel distance. (2) Use the ACCEL command before the HANDWHEEL command to set the ACCEL rate low or slower. (3) Use the RAPIDSPEED command before the HANDWHEEL command to set the RAPIDSPEED for that axis slower so that when it does move, it will do so more gracefully avoiding sudden changes in speed. Make this a really low value if need be. It can always be reset to normal when you turn off HANDWHEEL mode. If steps 1-3 didn't help, then: (4) Use the DECELSTOP parameter for the HANDWHEEL command to force it to decel at the end of each move, which then automatically forces an accel when the handwheel is spun again. (CNC Pro only) (5) Switch to TACH mode parameter for the HANDWHEEL command. In this mode the speed the axis moves is directly related to how fast you spin the handwheel. (6) If TACH mode and/or steps 1-4 didn't work, the only other choice is to get bigger motors or gear them down further to gain more torque.

Q249 How do we write out notes and messages to a file for keeping track of user events?

Answer

In CNC Professional you also have the ability to use LOGOPEN and LOGWRITE to insert user notes and messages directly into the LOGFILE.FIL file to make these files more readable and complete. The best way to show you is by example. Suppose you wanted words or characters printed out in a unique file name that were combined with variables and/or numeric data where the end result was written to a file named PLASMALOG.TXT in the C:\AS3000\WORK folder. Example of end result desired: DATE= 2/21/05 9:48:03 PM TIME MACHINE WAS ON FOR= 272.9623 NUMBER OF PARTS MADE =120 Example of logic: ' Open the file. Notice the ! replaces the colon and a / replaces a backlash. FILEOPEN APPEND;C!/AS3000/WORK/PLASMALOG.TXT ' Get the current date and time TIME DATE;\91 ' Congregate the word DATE, equal sign with the value in variable \91 \55=DATE=\91 ' Write variable \55 out to the opened file FILEWRITE \55 ' Get the amount of time the machine was on TIME ON;\91 ' Congregate the words with the value in variable \91 \55=TIME MACHINE WAS ON FOR=\91 ' Write variable \55 out to the opened file FILEWRITE \55 ' Get the number of cycles machine went through CYCLES \91 ' Congregate the words with the value in variable \91 \55=NUMBER OF PARTS MADE=\91 ' Write variable \55 out to the opened file FILEWRITE \55 ' Close the file and stop writing to it FILECLOSE WRITE

Q250 Are G0 and G1 moves entered into the MDI Window differently than a G code program?

Answer

The G0 and G1 in a G code program runs the same as a G0 or G1 entered from the MDI Window. What makes the difference is if you have backlash in the physical machine itself and also what direction the backlash is in when you start the move. G0 and G1 are similar, but G0 decels to a stop at the end of the move where G1 chains all the moves together so that the beginning of the next move is traveling at the same speed as the ending velocity of the last move. G0 rapids to position and G1 uses the user- programmed feedrate. Therefore, unless it was a stepper motor that lost steps during accel or decel, both G0 and G1 will travel to the exact same locations every time. For instance, this move may show travel to 1 inch and back again to 0 ending at exactly at the same spot, but other times, depending on what direction the backlash is in, the same program would pass 0 when returning. G0 X1 G0 X0 The best way is a test to make sure the backlash is removed in the X positive direction before returning to X0. G0 X-1 G0 X0 Zero out the machine so that the Watch Window shows X at 0, not just a G92 X0 or job home. G0 X1 G0 X0 This forces X to travel in a positive direction from wherever the machine table was at before the test. A machine zero at this point should be done with a button or G&M code that uses the MACHZERO command. Upon return at X0, if there is any discrepancy in location, then you may have physical machine backlash. This works with any axis. Another tell-tale sign is when you cut a full circle and there are flats that show up which directly oppose each other at the 3 and 9 o'clock positions or at the 12 and 6 o'clock positions. Refer to the following diagram: HAS BACKLASH First Move: G0 X1 Return Move: G0 X0 First Move: G0 X1 Return Move: G0 X0 NO BACKLASH

Q251 SOFTLIMITS is not warning us when running our G code.

Answer

Can you see why? We'll use the example command: SOFTLIMITS BACKWARD 0;-9.4;0 (1) Look to see what is entered into the SOFTLIMITS.FIL file. Any logic or typing inside this file will alter the default actions SOFTLIMITS take. Even a file with only a blank space or carriage return could indirectly come into play. (2) Perhaps the GEAR setting or some other setting is reversing the Y-axis direction so it is really the value positive 9.4 that would trip the soft limit. (3) Remember that the value -9.4 is relative to the machine’s home or zero reference and values in the G code program or commands such as GO or RAPID could include several offsets that are not really relative to the machine’s position at Y -9.4 (4) You can try directly entering SOFTLIMITS BACKWARD 0;-9.4;0 in the Diagnostic window and then say FEEDRATE 100:MACHGO 0;-10 to see what it said. Use MACHGO instead of RAPID or GO because these commands include offsets and MACHGO does not.

Q252 How do you rotate, scale or mirror?

Answer

All of these functions are already present in the system using the internal MATRIX command. The MATRIX command is the key to creating customized operator interfaces with buttons, knobs, pop-up prompts, entry boxes or G codes specifically for rotating, scaling or mirroring. The rotation can even be in 3D using vectors. A more basic method uses the G codes: G140 3D part rotation and plane tilting. G140 U# V# W# R# G141 Mirror/Scale for X only. Negative value mirrors G141 L# G142 Mirror/Scale for Y only. Negative value mirrors G142 L# G143 Mirror/Scale for Z only. Negative value mirrors G143 L# These G codes can be customized by the user to shortcut various programming styles. See the GCODE.FIL file in the DEFAULT.CBK file and take a look at how they were created and perhaps change them to fit your own needs. Maybe even make up your own new G codes. Example: Rotate at 45 degrees (U0V0W0 states 2D rotation. Not needed unless UVW was set other than 0). G140 U0 V0 W0 R45 Example: To mirror in X use L-1, which reverses the X axis at the scale of 1 to 1. G141 L-1 Example: To scale in X use L.5, which scales the X axis by 1/2 G141 L.5 Once these G codes are read, then all moves following them will be affected.

Q253 Can you explain EM, RF Interference or noise? What is electromagnetic interference?

Answer

Electromagnetic interference, EMI, is any undesirable electromagnetic emission or any electrical or electronic disturbance, man-made or natural, which causes an undesirable response, malfunctioning or degradation in the performance of electrical equipment.

What is radio frequency interference? Radio frequency interference, RFI, is any undesirable electrical energy with content within the frequency range dedicated to radio frequency transmission. Conducted RFI is most often found in the low frequency range. Radiated RFI is most often found in the higher frequency range.

How does interference propagate? EMI or RFI propagate through conduction over signal and power lines and through radiation in free space.

See QUESTION 385. What is an EMI filter? An EMI filter is a passive electronic device used to suppress conducted interference present on any power or signal line. It may be used to suppress the interference generated by the device itself as well as to suppress the interference generated by other equipment to improve the immunity of a device to the EMI signals present within its electromagnetic environment. Most EMI filters include components to suppress both common and differential mode interference. Filters can also be designed with added devices to provide transient voltage and surge protection as well as battery backup.

How does an EMI filter work? An EMI filter has a high reactive component to its impedance. That means the filter looks like a much higher resistance to higher frequency signals. This high impedance attenuates or reduces the strength of these signals so they will have less of an effect on other devices.

Q254 When I hit ESTOP, not everything stops.

Answer

What is going on? Refer to the section titled ***ESTOP.FIL*** in the “Logic Control Files” section in this manual for further information. But in essence you may have logic in your TIMER.FIL file or you have one or more macros running in the background that are stuck in an endless loop or simply not finished such as custom routines that squirt oil on intervals or move an axis to a safe position, canned cycles, pallet changes or tool changes. Depending on what is best for you, you may want to include a SUSPEND MACROS command plus a TIMER OFF command to the ESTOP.FIL file to optionally stop the timer logic or halt any macros also running in the background. Also, use the SETESTOP command to toggle the effect E-STOP has on the axes decel rates during stopping and if the motors should re-servo again or go limp after ESTOP.

Q255 What is the difference between Brush versus Brushless Servos?

Answer

Basically, brushless motors are generally lighter, offer higher RPMs, have better heat dissipation and no brushes to replace 5-15 years from now. Brush motors have better torque ripple performance (better steady and even torque output), which is why they can avoid cogging at slow cutting speeds. It is said that Brushless motors can also accel from a dead stop a fraction of a second faster than brush types, but when a mass of weight is to be moved, the ramp-up time is not humanly noticeable.

Q256 Can you explain the steps to set up non-servo multiple-pass lathe threading?

Answer

This solution provides the necessary steps to set up a non-servo spindle motor with encoder feedback. If you have a spindle motor capable of closed looped position feedback, then stop here and refer to QUESTIONS 111, 113 and 144. If you have a spindle motor without encoder feedback or have a non-variable (fixed) gear driven spindle not capable of variable RPM control, then stop here and consult your dealer for a pre-existing modified version of the lathe threading macro or one that can be customized for your specific machine design. (1) Step one – Set the RATIO counts for the spindle axis in CNCSETUP to equal the number of encoder counts it takes to equal 1 revolution of the spindle. (2) Step two – It is necessary to have precise spindle RPM before a thread can be made. Follow the steps in QUESTION 122 to accomplish this task. (3) Step three – It is necessary to establish the correct pitch of a single pass thread prior to implementing a multiple-pass canned cycle. There are several pre-written G codes and user-customizable macros in the standard default Lathe CBK, Macro.FIL and Macro.MAC files to accomplish this task. See G33, [Lathe Threading non servo] and [Lathe Threading non servo using GALIL]. Also, explore future additions to the CBK files and MACRO.MAC files. It is suggested that you review each pre-written macro to see which one fits your machine design best and to copy/paste that macro into G33 in the GCODE.FIL file. Review the various optional settings to fit your style of threading such as: C=Threads per inch S=Optional Forced Spindle Speed versus calculate speed Q=Optional tolerance to find top of thread Optionally, adjust provided variable for scale factor to compensate for inaccurate thread pitch Optionally, back off OD and set X-axis direction for back off Optionally, return to start of thread Optionally, default back IPM mode Optionally, re-enable speed pot override Optionally, re-enable feed pot override Optionally, restore original feedrate Begin your first single pass test part in the air first, away from the chuck, with a low RPM such as 60. Then set the G code parameters to a depth of cut to very lightly scribe the surface of a physical test part. (4) Step four – Once the pitch of a G33 single pass thread can be accurately made, then we suggest to apply the settings that worked best for single pass threading to G113, G114, [Lathe Threading Non Servo Multiple Pass] and/or other macros of your choice to multiple pass lathe threading canned cycles with these additional user-settable parameters through G code. MAJOR THREAD DIAMETER LENGTH OF THREAD MINOR THREAD DIAMETER Z START POSITION NUMBER OF THREADS PER INCH DEPTH OF FIRST PASS X START POSITION NUMBER OF FINISH PASSES OPTIONAL Q VALUE TOLERANCE TO FIND TOP OF THREAD (5) Step five – Begin a multiple pass test part in the air first, away from the chuck, with a low RPM such as 60. Then set the G code parameters to a depth of cut to very lightly scribe the surface of a physical test part in order to verify that each pass is following the same thread pitch as the previous pass. If not, then tighten the Q value to increase the accuracy of each thread’s starting point. The Q value is the tolerance, which sets a virtual index marker internally in order to establish the same top of thread (beginning of thread) for each pass in the same place for each rotation of the spindle. The best value will be the one that actually pauses the Z-axis motion for approximately 1 second at the beginning of each thread pass. This keeps the starting accel rates consistent between passes. For best results, keep re-adjusting Q until no more or no less than a 1-second pause occurs between passes. DO NOT try to re-cut the same thread after you have stopped the spindle, jogged away or exited or paused the G code program. (6) Step six – Now make your final polishes to the parameters as you increase the RPM on each test part. Increasing RPM may mean you have to increase the Q value also, but only increase Q to a point the threads still follow the same pitch on each pass. Repeat this step as you increase RPM to find the optimum RPM and pitch your machine is capable of. The lower the RPM in conjunction with the smallest Q value produces the best chances that each thread pass starts at the same place at each revolution. The average value of Q is.1 to.01 but can be set as low as.00001. The settings depend on the number of counts available in each revolution as set in RATIO and holding the steadiest RPM as best as the spindle drive is capable of. (7) Step seven – If your routine is working at this point, then save your CBK file and stop, you're done. However, if not, then there are many reasons for the cause and effect of inaccurate threading. Multiple-pass lathe threading canned cycles using a non-servo spindle motor is one of the more complicated setups that an installer faces on a Lathe. If this advice does not meet your needs, then it may be necessary to ask for help from your dealer or installer to trace the source of the problem and then modify the routine "as needed" to accommodate this specific application and go over your options after an on-site survey and service call is requested. Short of switching to a closed loop servo drive for the spindle motor to solve the problem, here are the other settings that have an effect on non-servo multiple-pass canned cycle threading. Setting the ACCEL and DECEL parameters as high as possible in the beginning of the routine and then resetting them back to original values when the routine concludes is another way to assure that the start of thread is up to speed before the thread starts cutting. There are pre-made options remarked out in the threading macros to enable IPM mode cutting while threading and then options to switch them back to IPR. The IPM mode helps in cases where the spindle drive is having trouble holding the spindle RPM steady. In IPM mode the feedrate does not vary. In IPR the feedrate is re-calculated every 10-60 milliseconds to maintain the best pitch. However, the calculation is based on monitoring the live RPM. If the spindle drive cannot hold the RPM steady, the feedrate will vary causing a variable thread pitch. Applying the settings in the STARTUP.FIL file, as suggested by the TEST SPINDLE feature in Diagnostics, reduces the variance in commanded RPM versus REAL RPM. This variance can be viewed in real time on the Diagnostic Watch Window. Keep in mind that while in Diagnostics the system’s performance can be reduced by as much as 800% due to the many monitoring routines and display updates Diagnostic performs. A LOGFILE SILENT command may replace live Diagnostic display windows when you are setting up only. Then remember to disable SILENT and/or Diagnostic mode to restore system performance. Switch to the macro that uses an on-board motion routine to locate the physical index marker of the encoder to establish the beginning (top of thread). There is one such macro pre-written and provided in the default Lathe CBK file, but would need professional assistance to apply such as [Lathe Threading non servo using GALIL]. It would also benefit to add a physical limit switch on the spindle and monitor a digital input for precise position at the top of the thread rather than relying on a virtual index marker and tolerance setup with the Q parameter.

Q257 How do we display a list of items on the screen and have the user select them with a mouse?

Answer

There are a few basic approaches depending on what you want. For example, let’s say you have 12 items displayed that the user can pick from. Use the command LISTPICK. It can be displayed in a scrollable, pop-up list box window of its own and then disappear. If you need to display 12 pieces of related information on the screen at certain times, pop up and/or disappear when not needed, then consider a LABEL. The label caption can be updated by command on-the-fly with new info anytime. You can also use HEXCHAR to insert a Carriage Return in the label caption to list each of the 12 items separately on new lines. If you need to display many graphic images to pick with a mouse, then consider using the PICTURE command. This has an option to detect where in the bitmap (pixel-wise from top left corner) the mouse is clicked so that you can tell which of the 12 items the user pointed to. There is only one bitmap displayed at a time so you need to paste all 12 or more images into a single bitmap. Any of these commands will allow you to update the information any time in real time.

Q258 How do we display multiple lines of formatted text and numbers on the screen?

Answer

Use the LABEL boxes. The main purpose of LABELs is to allow you to go beyond the fixed display font of the DISPLAY box. You can place multiple lines of text and numbers in the format of your choice using the HEXCHAR command by adding carriage returns and spaces into variables that can be toggled as needed, either displayed or hidden. HEXCHAR 0D;\4 'The <CR> character. \101=SPEED s \4 'Format the speed. \102=FEED f \4 'Format the feed on new line. \100=\101 \102 'add together. Use Spaces and CR to format. LABEL1 \100;10;TRUE 'Display Text and Numbers in the size, ‘color and font you want. Also see: 1. The LABEL logic command and DESIGN OPERATOR INTERFACE to size, change color, select font or hide LABEL boxes 2. The HEXCHAR logic command to add carriage returns, tabs, line feeds, mouse clicks, ESC characters or CTRL key emulations. 3. QUESTION 226 to format text and numbers when prompting the user with QUESTIONs.

Q259 How do I pause or re-start a program mid-way through?

Answer

There are several methods to either Pause the program, Feed hold, Back up in reverse, Re-start by G code line number, MDI line, Do a visual Mid- Program re-start, Graphically mouse click at re-start location, Stop & Inspect then Resume. 1) CYCLESTART can be used as a program pause function. Motion will stop at the end of the current move. Press CYCLESTART again to resume. See the CYCLESTART logic command for more details. 2) FEEDHOLD will pause the program’s cutting motion immediately by internally setting the feed rate to zero. CYCLESTART must be used to restore the feedrate and re-start. See the FEEDHOLD logic command for more details. 3) Pressing the Escape Key during motion will give you three choices: to continue on the path, backup on the path or cancel the move. If you choose to backup on the path, you must press CYCLESTART or Single Step to resume your program. See the ESCKEY logic command for more details. 4) You can re-start the program after aborting it or re-loading it at any G code line number using the MIDPROGRAM logic command. You may jog away and press the Mid Program start button, which will allow you to begin at the place in your program where you left off. The Mid Program start feature will read all your tool numbers, speeds, feeds and offsets up to that place in the program and then stop and wait for CYCLESTART to be pressed. See the MIDPROGRAM logic command for more details. 5) The MDI window will allow you to point and click on a G code line with the mouse to re-start again anywhere in the program even after you have jogged away. MDI will offer you a choice to read all your tool numbers, speeds, feeds and offsets up to that place in the program. 6) The MIDPROGRAM logic command has a MOUSEPICK feature, which allows the user to go to the mid-program start window and graphically pick a position with their mouse or touch screen as to where they want to start midway through the program, even in the middle of an angled cut or on the circumference of an arc. It will find the mathematical intersection of the mouse and tool path geometry – midway. See the MIDPROGRAM logic command for more details. 7) There is a user-customizable feature called INSPECT. This command combined with the use of the [INSPECT SAVE] and [INSPECT RESUME] macros will allow the interruption of a part program in progress and then allow the user to jog away. See the INSPECT logic command and these two macros for more details. 8) During a Visual / MOUSEPICK MIDPROGRAM it will execute the M codes that turn on any laser power, water flow or torch so these will be on and ready to cut. If there was concern that there may not be a clear path to the start point, you may use LOADING to ignore any actions only while in a MIDPROGRAM restart mode. LOADING \55:IF \55=6 THEN EXIT 'only skip while doing a ‘MIDPROGRAM restart. 9) Two important notes: a. Check if the FANUCARC setting matches the style of IJ or R in the JOB file. b. If you elect not to do a full Visual MIDPROGRAM restart and instead decide to enter a line number or add extra data to the program before restarting, keep in mind that the start point of the arc position will be missing if you restart on a G2 or G3. The user needs to be aware of what he/she is doing when starting on a certain line number that does not have enough information to fully prep the machine to restart. This goes for other M codes and I/O that a machine might require as well. In this case you will need to either: (a) Start at a line that has a linear move, (b) Enter in the arc starting point in the question box, (c) Write custom logic in M199 that moves the machine to the last X,Y,Z coordinates, lower case x;y,z and other axis letters per machine setup prior to restarting in M199, or (d) Get the coordinates from the Purple box on the MIDPROGRAM window. These are the exact same coordinates that you pointed to with the mouse, which automatically represent the starting point. These coordinates are automatically plugged into the QUESTION box when you choose to enter extra information when MIDPROGRAM prompts you to make a choice between just starting or enter extra information. The starting location of these coordinates will appear in the question box as the default answer. You may use these coordinates to start at or else edit them, for example, by adding a different Z starting point, adding a G1 F100 to them or adding M199 to customize your own restart routine.

Q260 Tell us more about PWM signal types.

Answer

Basically there are two types of PWM signal choices — Inverter and Sign Magnitude. Not all motion cards have these choices. A decision will need to be made as to which type is proper for your drive amps. To set up PWM, refer to the “Pin-Out Description” section in the Appendix of your Galil manual. Look at the description for PWM/STEP OUT. Specifically, the part that would apply to PWM is: "The PWM output is available in two formats: Inverter and Sign Magnitude. In the Inverter mode, the PWM signal is.2% duty cycle for full negative voltage or basically off, 50% for 0 voltage and 99.8% for full positive voltage or basically on. In the Sign Magnitude Mode (Jumper SM), the PWM signal is 0% for 0 voltage, 99.6% for full voltage. The direction (SIGN) of the motor command is available at the SIGN output." When using the CS-18×60 model card, there is no need for the SM Jumper. Only the other models have the SM jumper. Using the button SERVO-STEP under General Settings in CNCSETUP, select motor choice number 3. (PWM) What this means is that you connect to the terminals labeled PWM for either Inverter or Sign Magnitude mode. You will always select the motor type as choice 3. Then, depending on the type of signal (Inverter or Sign Magnitude), you may or may not need to jumper the SM jumpers on the motion card if you choose Sign Magnitude mode plus also use the terminal labeled SIGN.

Q261 What should we do when we get I/O card errors?

Answer

1) See QUESTION 172: Installing a Digital I/O PCI Board Using All Windows Versions 2) Double check the board address entered into AUX ADDR1 on the I/O Setting screen. If the address is in hex, enter it "as is" from the first shown address that the Windows Control Panel gives you. a) When using ISA boards, the bit patterns get messed up when not at Hex 300. For ISA cards this is set by dip switches or jumpers on the board itself. b) When using PCI boards, the address value Windows assigned to the PCI card needs to be entered into AUX ADDR1 on the I/O Setting screen. c) For PCI cards the address can be found in the Control Panel as outlined in QUESTION 172. d) If you have an INF file that came with the board, it certainly makes it easier. An INF file will register the card for you. Search your entire hard disk for the IOLIB.DLL and IOLIB.SYS files. Erase all occurrences of these files and re-install from the CamSoft CD. This will update and re-register these files. If the board does not get an error but instead shows a random mixed state of I/O turning on/off, it is a text book case of memory addressing. We see this all the time. The address entered needs to match exactly or else bits representing on/off states get mixed up.

Q262 Why does an RS232 serial cable work when a USB extension cable doesn't?

Answer

When using a USB extension cable, the maximum length should be 16 feet. If you need to go longer than 16 feet, then you will need a USB amplifier, which is basically a USB Hub that you can buy at Wal-Mart or Radio Shack for about $20. For every 16 feet of USB cable we recommend a USB hub to amplify the signal.

Q263 How do I set up different units for each axis such as inch, millimeter and degrees?

Answer

In the CNCSETUP program, click on the MOTION SETTING button. Here you will see settings for RATIO, GEAR and TOOL/DEGREE. The system internally thinks in counts per second, but these settings allow you to select the units you want to work in. These settings represent the number of steps, encoder counts or pulses it takes to move one unit. The units can be Inches, Millimeters, Degrees, Tool Position, Rotational, Custom, etc. Each axis can be set up separately and may be configured for different counts or units. For example: Enter 4000 counts into RATIO if it takes this many counts to move one inch or mm of travel. Also set TOOL/DEGREE to 0 for inches or mm units. Values greater than zero are to express units in Tool Numbers, Degrees, Micro Minutes, Full Rotations or Custom Ratios. Valid values are 0-7 where 1=Tool Numbers, 2=Degrees, 3=Minutes, 4=Full Rotations, 5=Custom Ratio, 6=Degrees between (-360 to 360} and 7 =Degrees between (0 to 360). For instance, a value of 1 is used to express encoder or stepper units entered into the RATIO parameter representing how many encoder counts it takes to move to the next tool number in a tool change. This could be used in a tool changer routine whereas the value entered into RATIO is the number of encoder counts it takes to move the tool changer carousel one tool NOT one inch. Setting the value to 2, 3, 6 or 7 may be used to express the number of encoder counts it takes to move the axis one degree rather than one inch. If you wish to redefine an axis’ units in logic on the fly, use the SETUP command as follows: SETUP 3;0;11.1111;0;1;0;40;Y This redefines the RATIO units in degrees to represent "How Many Counts in 1 Degree". For example: If the spindle took 4000 counts per revolution, then the value to enter to represent 1 degree would be 11.1111 = 4000 / 360 degrees. This way when you write G code or issue a logic command such as RAPID or GO, the value you provide is in degrees. Example: RAPID;;10 for 10 degrees or else G1 A10

Q264 Can I convert the TIME CYCLE and the RUN TIME minutes into hour:minute:second?

Answer

The values reported by these two commands are in minutes. Therefore, it is necessary to use the MESSAGE or LABEL commands to display the following formula. The example below shows how to use TIME CYCLE reporting in minutes: TIME CYCLE;\55 \56={\55/60} 'how many hours. \55 is in minutes format \57={INT(\56)} 'round to hours drop minutes \56={\56-\57} 'subtract hours. \56 is now in hours format \59={\56*60} 'how many minutes and seconds \58={INT(\59)} 'round to minutes drop seconds \59={\59-\58} 'subtract minutes. \59 is still in minutes format \59={\59*60} 'convert to seconds \60=\57 HOURS \58 MINUTES \59 SECONDS LABEL1 \60 The example below shows how to convert milliseconds to seconds, seconds to minutes and minutes to hours. Variable \55 will contain the original data in milliseconds: \56={\55*.001} 'Convert milliseconds to seconds \57={\56/60} 'Convert seconds to minutes \58={\57/60} 'Convert minutes to hours

Q265 Do you have advice on hand wheel troubleshooting?

Answer

A hand wheel is also known as an MPG or pulse wheel generator. 1. Make sure you have the 25-pin aux encoder cable plugged into the motion card and ICM. 2. Check to see if the AUX ENCODER positions display changes in the Diagnostics "Watch Window" when you turn the hand wheel. This will let you know that it is connected correctly. 3. When using the CamSoft Hand Held controller unit, you must press the AUX1 button to enable hand wheel mode to move an axis. Press the AUX1 button a second time to disable it. 4. For complete instructions on the hand unit and hand wheel setup, refer to the CamSoft Installation Guide – Section 5 titled "Handheld Controllers".

Q266 How do I use IF THEN & I/O in a G code program?

Answer

In the MCODE.FIL file for M91-M96 add this logic to test for =,<>,>,=>,<,=< IF TRUE THEN will call subroutine P# to execute the list of G code lines there. M91 is for IF THEN = M92 <> M93 > M94 => M95 < M96 =< Example: M91 E.5 Q.5 P1234 This means IF E is equal to Q, then jump to P1234. If E not does equal Q, then nothing happens and the next G code line below runs. P1234 is a subroutine that comes after the M02 or M30 in a G code program. For example — The operator might want to run this code in P1234: P1234 G0 Z1.0 M99 For example — in the MCODE.FIL file write this above M91: IF q=e THEN GOSUB Pp Example of a G code program to test IF E=Q (-2) THEN run G code listed after P1234: G0 X-2. Y2. M91 E-2 Q-2 P1234 M02 P1234 G0 X0 Y0 M99 Replace this section for M91 thru M96 in the MCODE.FIL file. 'In MCODE.FIL file for M91-M96 add this logic to test for =,<>,>,=>,<,=< then IF TRUE will call GOSUB to P# to execute the code here. 'M91 is for IF THEN = 'Example: M91 Q.5 E.5 P1234 IF e=q THEN GOSUB Pp;1 —–M91 'M92 <> IF e<>q THEN GOSUB Pp;1 —–M92 'M93 > IF e>q THEN GOSUB Pp;1 —–M93 'M94 => IF e=>q THEN GOSUB Pp;1 —–M94 'M95 < IF e<q THEN GOSUB Pp;1 —–M95 'M96 =< IF e<=q THEN GOSUB Pp;1 —–M96 Using Digital I/O in G Code You may assign easy to remember named variables to I/O relays. For example — {AIR SOLENOID} could represent I/O relay #147. To set a digital output use an M code. Example: M3 In the MCODE.FIL file write to turn on output #3: #3=1 To read an I/O on/off state you can assign a real name to help you remember a variable in the INPUTIO.FIL file. Example: IF #3=0 THEN {BIG SOLENOID=0} IF #3=1 THEN {BIG SOLENOID=1} -or else you can write less code this way- \55=#24:{BIG SOLENOID=\55} For example — to read a digital input I/O you would need to write in G code: M91 E{BIG SOLENOID} Q1 P1234 which means if the BIG SOLENOID equals 1 (ON), then run the list of G codes in subroutine P1234 or instead you can directly write within logic IF #3=1 THEN do something…. M90 G0 X0 Y0 Z0 M91 E{BIG SOLENOID} Q1 P1234 M02 P1234 G0 Z1 M99 IMPORTANT NOTE ABOUT NAMED VARIABLES All named variables are reset to blank or 0 upon each CYCLE START. Therefore, to ensure that all named variables get initialized after CYCLESTART you must either trigger a digital input I/O or else add an MCODE at the top of the G code Program. For example — add this logic to M90 to initialize all the named I/O variables you are using: ' Initialize named I/O variables \55=#24:{BIG SOLENOID=\55} \55=#25:{AIR SOLENOID=\55} \55=#26:{SAFETY DOOR=\55} —–M90

Q267 Is there any way of getting more user buttons?

Answer

There are a few smart ways to get more button functions. Make use of Toggle Switches that can replace ON/OFF button functions. Use real physical buttons triggered by digital I/O. Buttons can have multiple functions by replacing the captions with new words so that the same button can have different modes and execute different functions with different bitmaps. This can be done with the BUTTON logic command itself. More elaborate groups of buttons can be SAVED and RESTORED all at once using the MANAGE and ORGANIZE logic commands. For examples see how the DEFAULT-3 AXES.CBK file works. Some users have made a button with as many as 124 separate functions. In the MCODE.FIL file use a variable to flag which mode this button is in. Then have a look-up table that jumps (GOTO) to a routine further down in the MCODE.FIL file or else call a Macro instead to set the button’s caption, bitmap and/or color. See the BUTTON logic command for many ways to change the buttons look and feel. For example, in the MCODE.FIL file write a look-up table: IF \777=1 THEN GOTO:AIR IF \777=2 THEN GOTO:COOLANT IF \777=3 THEN GOTO:JOG EXIT:AIR ' BUTTON1 IN;CAPTION;COLOR NUMBER;FILENAME BUTTON1 IN;AIR ON;10;AIR-BITMAP.BMP ' Then do logic here to actuate this button’s commands EXIT NOTE: The act of saving a user control object, such as a LIGHT bulb or an ICON's visible property, while the screen is still invisible is what causes the RESTORE function to restore an invisible object such as issuing a MANAGE command with the SAVE parameter while in the STARUP.FIL file before the screen displays. Since all of the properties including the visible parameter are saved with the CBK file, several different screen displays can be made in advance and saved under different screen numbers (one of the choices of the MANAGE command) before the customer is given the CBK file. Then once a CBK file is given to a customer, the screen of their choice can be RESTOREd using a menu, button, list box, toggle switch, etc., as a mode selection.

Q268 How do I get rid of the digital font in the axis readouts?

Answer

Erase the DIGITAL.TTF file in the Windows\Font folder and the font automatically will change to a bold clear Windows standard numerical font.

Q269 Is there a way to use feedrate override for Rapid moves as well?

Answer

You would need to change the logic for G0 in the GCODE.FIL file from: DECELSTOP RAPID x;y;z to: \888=f 'save last feedrate FEEDRATE 99999 'any value larger than RAPIDSPEED, ‘since max speed is capped by RAPIDSPEED DECELSTOP GO x;y;z f=\888 'put back original feed rate

Q270 How can we tell what our serial number is?

Answer

For systems that use the USB key, there is a tag attached to the key with the Serial Number printed on the tag. For systems that use the Printer Port hardware key, there is a white label affixed to the key itself with the Serial Number written on the label. There are five other ways to find the Serial Number for systems using a License Code (password). (1) If you can get into the program, the Serial Number will show up in the Title Bar. (2) The WINMOVE.EXE program located in either the C:\AS3000\RAM or C: \GALILOI folder has a button called “Check Security”, which pops up a box showing the Serial Number. (3) In any BACKUPs of your CBK file there will be a line SERIAL= (4) In any LOGFILE.FIL files there will be a line Serial Num (5) Using the UNLOCK.EXE program located in either the C:\AS3000\RAM or C:\GALILOI folder you can choose the menu choice “Write History File”, which you can then send to us because it will have the Serial Number embedded inside it.

Q271 How do I set the system up so that when the computer is turned on, my motor drives are not enabled?

Answer

The state of the motor upon power-up may be selected with the placement of a hardware jumper on the controller board. With a jumper installed at the MO location, the controller will be powered up in the “motor off” state. The CamSoft command MOTOR ON can be used to enable the motor. With no jumper installed, the controller will immediately enable the motor upon power up. The CamSoft command MOTOR OFF can be used to turn the motor off. The MO jumper is always located on the same block of jumpers as the stepper motor jumpers (SM). This feature is only available to newer revision controllers (Rev. F and later for DMC-1740, Rev. D and later for DMC-1780, Rev. C and later for DMC-1840 and firmware 1.0e and higher for DMC-18×2, all DMC-18×6 and DMC-4000). Reference the motion card manufacturer’s manuals for a description of the location of these jumpers.

Q272 At random I get a "Time Out" Error.

Answer

What is causing this error and how can I eliminate it? A “Time Out” message is caused by an interruption in communication to the motion control card. (1) Check to see if any any other software has been loaded/installed in this PC that is running in the background. Use Windows TASK manager to check to see what Services or Applications that might be interrupting the CPU or making the PC busy, such as Internet, Vision Cameras, Screen savers, Battery power saving, Hard disk hibernate features, Networks, Virus checking, Schedule reminders, third-party programs, etc. (2) Have you installed any Galil software such as Galil Servo Tuning WSDK or Galil Tools? If so and you are done tuning, you should delete these drivers. Sometimes these drivers hijack settings in the Windows registry and point to different versions than we use. The CamSoft CD contains all of the Galil drivers we use. The proper drivers for the chosen version of Windows will automatically install during the installation from the CamSoft CD.

Disable or turn off all automatic Windows power-disabling features, screen savers, hard drive hibernate features, networking and virus checking as well as third-party software. If this doesn't work, call the motion card manufacturer directly for their advice for increasing the value of the Data Record Cache Depth setting to higher than 115. Although the Delay Thread is the choice that always works for time out errors, it is slow to start the CNC but once started performs okay. The motion card itself is generating the random messages. Usually it's a result of a TIME OUT error, which is related to a drop in communication between the motion card and PC usually on Ethernet style boards. The two most common solutions are rooted in "updating and replacing all of the motion card drivers with the ones from the CamSoft CD" and/or "Windows management of other Programs or Windows Services that may be dogging down the CPU time". Both of these solutions should be looked at first to eliminate the source of the problem at its root, but if the source cannot be found, there is a way to set Windows communication to devote more CPU time to the CNC program. The following explanation is worded for the Ethernet type boards, but follow the exact same procedure for PCI card types. At the top of your STARTUP.FIL file, enter only one of the following commands based on what type of motion card you have. If you have a: PCI card with 4 axes or less, enter INTERVAL 50 PCI card with 5 axes or more, enter INTERVAL 75 Ethernet card with 4 axes or less, enter INTERVAL 100 Ethernet card with 4 axes or more, enter INTERVAL 125 How to Configure Driver Communication Modes It may sometimes be required to adjust the communication mode that the drivers are using to accommodate computer or Operating System types. If you receive a communication error or are advised by a CamSoft applications engineer to adjust these settings, follow this procedure: 1. Run the NETWIZ.EXE program located in the C:\AS3000\CNC directory. Click on Next to continue. 2. Select the "Edit Motion Card Registry” utility. Click on Next to continue. 3. Select your motion controller. Click on the Properties button to continue. 4. Select the Communication Method Tab. Select "Delay Thread". Click OK. 5. Click on the Close button and close the Edit Registry Dialog box. 6. Click on the Cancel button to get out of the NETWIZ program.

Q273 How do we set a time out to exit a routine when waiting on an I/O to trigger?

Answer

The routine below will set a time limit in Milliseconds to elapse out of the routine if the I/O does not match the desired on/off state. We are using an IF THEN check rather than WAITUNTIL to check for I/O state. Very Important! Make sure to include the LOADING command at the beginning of your routine to exit out if you are loading a program into memory so the loading process does not get stuck in these loops. LOADING \55:IF \55=0 THEN EXIT 'Set wait time limit in varb \75 in milliseconds \75=100 TIME RESETMS;\55:LOOP 'Detect if input has made its state IF #16=1 THEN GOTO:COMPLETE TIME MS;\55 IF \55<\75 THEN GOTO:LOOP MESSAGE WAIT PERIOD HAS EXPIRED SOMETHING WRONG WITH I/O # ESTOP EXIT 'If the switch has been made, then we can move on to the next section.:COMPLETE MESSAGE EVERYTHING IS OK Be sure to change the input number for each switch you use this loop on. Also, you can run this loop in DEMO mode to test it by pasting it into an empty M-code and then using the MDI screen to run that M-code and watch it run with diagnostics open. You can also monitor variables \55 and \75 and watch them in action. Use the digital I/O watch panel and click on #16 before the time expires to see the “everything is OK” message. If you do not click on the input during testing, the expired message will show up and everything will abort.

Q274 My Ethernet motion card seems to be running slow.

Answer

How can I fix this? The Ethernet card is on average 800% slower than the PCI CS-18×20 model and 2000% slower than the CS-18×60 PCI model. This depends on: the number of axes, how busy Windows is, what else the CNC is doing and Ethernet communication quality (noise) or cable distance. The variance will be different between PC CPUs and model or brand of NIC card also. To reduce how busy Windows is, you can always reduce the number of SERVICES or APPLICATIONS running in the Windows TASK MANAGER to prevent unneeded programs and/or services from running in the background taking valuable CPU time slices away from the CNC. If your problem is related to slow Ethernet communication in general, it may be EM or RF noise (see QUESTION 385). There is a logic command called INTERVAL, which has two parameters — I/O time and Encoder time — which range from 1 to 60 ms. This command is not documented. We only suggest using this command upon recommendation by a CamSoft technician when the circumstances are right for the PC and the application it's used in. This command forces the controller to fetch a response from the motion board at a fixed time interval. If Windows or the CNC is too busy or the CPU is too slow, then this approach will actually further slow the system down making it busier. Caution: Time Out Errors or unnoticed I/O events would be missed using an INTERVAL level lower than your application and PC can handle. It only works when the PC is fast enough and Windows or the CNC is not too busy and the main problem is that the Ethernet communication is too slow due to the quality or brand of NIC card being used, not because the Ethernet cable is too long or it is picking up noise so that it drops communications packets causing it to resend the same packets over again many times thus wasting time. If you have explored these suggestions and still feel it is too slow, then the only other options is to use a faster PC or change to a PCI model motion board.

Q275 How do we switch between spindle RPM and C axis on a Lathe?

Answer

The first task is to use the DESIGN OPERATOR INTERFACE button on the main CNC SETUP screen to assign the 3rd axis READOUT to become VISIBLE as the letter "C" axis. Then set the RATIO parameter value when using the SETUP command in the STARTUP.FIL file to represent (number of encoder counts in 1 degree) instead of (counts per rev) for spindle RPM. To set up the spindle in RPM mode use the SETUP command with the N as the last parameter and give the RATIO value in (counts per revolution) to control it as a spindle. Otherwise, to servo the spindle as the C axis you can use the SETUP command with a Y and give the RATIO value in (number of encoder counts in 1 degree) to swap or switch the spindle to become a positionable C axis. Use the SETUP command behind an on-screen button or M code to switch between spindle RPM or C axis modes. You will find this same technique used in some Lathe Threading Macros to flip into servo mode to do threading and then reset the spindle back to RPM mode just before exiting the Lathe Threading Macro. The second task is to confirm in the original machine’s documentation that the spindle motor is a real servo motor rather than a plain DC Induction electric motor as most spindles are. Check with the Lathe manufacturer or acquire the documentation for your spindle motor. If the spindle motor is not a servo, then it may still be positioned to using degrees. If the spindle can be servoed, then everything will work much snappier and more accurately with less set up work. This way you can very accurately position within G code using C, for example G0 X0 Z0 C90 positions the spindle to 90 degrees. Once you do set the motor up as a servo, go into the Diagnostic Window because you will need to servo tune it before you can move it. If it cannot be tuned, then this is a clue it may not be a servo. After you can tune it, then run MOTION TEST with and also without the box checked that says "Coordinated Motion/With Error Checking" to see the accuracy results in the white box. You will know right away. To position the spindle as an axis, it would be best if this was a servo that we could set up as a C axis and give C90 C180 C270 C360 commands in G code. This would be the easiest to set up. However, the spindle can still be positioned using degree angles without it being a servo, but an encoder would be necessary. Positioning would not be snappy like a servo. See the following question for Macro choices.

Q276 Is a DC induction motor with encoder feedback and amp drive the same as a servo?

Answer

No, not at all. The internal windings are completely different on a DC induction motor than a permanent magnet brushed servo or (commutation poles on brushless motors) but you can still position a DC induction motor using one of our Macros and encoder feedback through an analog output. However, you can still position these spindles using degree angles. It is just not as snappy and accurate as a servo. In the MACRO.MAC file you will find these user-customizable macros for positioning analog controller devices (spindles included) using an encoder for position feedback to move the spindle to an exact location within tolerance without needing a servo motor. However, these motors will be positioned in a non-coordinated motion. [[Position Analog]] [[ANALOG POSITIONING]] [[ACTUATOR]]

Q277 How do we digitize a part or teach a robot?

Answer

(1) On the Tool Parameter screen enter a file name to save the digitized positions. The default file names are Teach.XYZ or Teach.Job. You may enter any valid file name you wish without a folder name. The file will automatically be saved to the current WORK folder. (2) For digitizing a complete duplicate copy of a part there are a few methods, but they are only available for CNC Professional. For Graphical OI, CNC Lite and CNC Plus only the macro routines that can record a position or measure a distance, depth or size are available. (2A) There are pre-written user-customizable Renishaw Series SP2, OMP and M Series model probes & non-contact Laser probe drivers with digitizing routines provided in the MACRO.MAC file. (2B) Pick and choose your method and style of probing first and apply the routines listed below that best fit. You can make up your own if necessary. Decide between probe model or laser probe and also decide what software would best be used to read in the digitized 2- to 8-axes coordinates and create a tool path. If you want to play back the exact same path you digitized, then only the [TEACH ON], [TEACH OFF] and maybe the [TEACH POSITION] macros would be enough to save a file that contains G code to reproduce the part. However, if you want a sculptured smooth surface and own AS3000 Level-20 or own your own favorite CAD/CAM software, then the TEACH.XYZ file can be imported in as a 3D Point Cloud. The end result would be a post processed 3D G code program to run in the controller as any G code program would run. (2C) The macros provided are given in open source code logic so that you can change them on an as-needed basis per each application. Look for more information using Search for Solutions or the printed manuals on these topics below: Laser Scanning Routine (Optional Feature — See Your CamSoft Dealer) How do we implement a G31 probe routine? Can a CamSoft controller act like a CMM (coordinate measuring machine)? [TEACH ON] 'Customizes the start up of TEACH or Digitize mode. [TEACH OFF] 'Turns TEACH off and closes the teach file. [Teach Position] 'How to use a physical button to record a position or 'insert an optional M code. [Probe Digital Teach] 'Example digital style touch probe of any brand. [Probe SP2 Center Circle] 'Probe circle center using analog feedback. [Probe Digital Center Circle] 'Probe circle center using digital feedback. [Probe SP2 V-Block] 'Probe V-block using analog feedback. [Probe Digital V-Block] 'Probe V-block using digital feedback. [Probe SP2 Zig Zag] 'Probe Zig-Zag scan example. [Probe Set Tool] 'Use probe to set tool height. [Probe 2 points to align part rotation] 'Reset any previous angles or tilt. [Auto Align Start Probe] 'Rotates part program based on 2 points to 'align part to fixture. [Auto Align Finish Probe] (3) To record positions for a multiple axes robot or pick and place machine, the features below are available for all current versions. (3A) Optional: Import the [Teach On], [Teach Off] and [Teach Position] macros from the Macro.MAC file into your CBK file and save. Customize them as needed. (3B) Optional: Make a button that calls the [Teach On] macro or enter it directly on the Diagnostics screen. This enters start up coding such as feedrates, rapid mode, speeds, M codes, etc. (3C) Make axes moves or jog to positions and press the Digitize button on your Operator Pendant or enter the TEACH command directly on the Diagnostics screen to record these locations. The number of axes that will be recorded are set by the AXIS parameter under General Settings in CNC SETUP for CNC Professional and SETUP in Graphical OI, CNC Lite and CNC Plus. (3D) Optional: Make a button that calls the [Teach Position] macro or enter it directly on the Diagnostics screen in order to insert certain M codes at the current location where issued directly into the teach file that may optionally set feedrates, spindle speeds, power settings, rapid mode, M codes or turn devices on or off such as a torch, laser, open jaw fingers, etc. Any alphanumeric data other than the parameter OFF will print the entered literal data after TEACH to the Teach file in order for the user to customize their own codes, commands or notes into the Teach file. (3E) Optional: Make a button that calls the [Teach Off] macro or enter it directly on the Diagnostics screen. This closes the file and inserts M codes to end the teach file. The OFF parameter will close the teach file named in the tool parameter screen and save all the recorded points. The OFF parameter permits you to close one teach file and then open another. TEACH all by itself simply records the position. (3F) Now you can use the File Cabinet ICON to load the Teach file as you would any G code program from the current WORK directory. If the Teach file name ends with.JOB, it will automatically appear in the list. If not, then open *.* All Files to find the teach file name. (3G) Optional: You can edit the Teach file after you have loaded it using the MDI screen. The file format will be a series of positions for all axes written on a single line ending with a carriage return. This file can then be read by the controller as any other G code program and edited in the MDI editor to include M codes, speeds and feeds to reproduce the job motion. (3H) Press Cycle Start.

Q278 Why are my G code files, Graphics and Motion on my Lathe off by half the diameter?

Answer

In the mid 70s, GE FANUC introduced us to diameter programming. The original American Lathes were programmed in radius mode rather than diameter mode. To understand the difference, the issue is related to the physical amount moved versus what the readouts and G codes show. In diameter mode, which is now regarded as a worldwide industry standard, a physical move of the X axis to.5 would result in the readout showing X1 because it is showing the actual diameter of the part that would be cut. (1) The RATIO and GEAR combination should be set so that when a physical move of X.5" is made, the readouts show X1". (2) When you read the G code program file code that the post process wrote as X1, the physical move of the X axis on the lathe should be X.5". Keep in mind that we are only referring to the X axis. (3) The Z axis will move and show the dimension that it cuts and cut what it shows. The Z0 is usually the face of the part so any positive Z move is away from the part and any Z- move is cutting into the part where X0 is centerline of the spindle. There are exceptions but generally by default there are never any X- moves. All X moves are positive moves 0 or greater. Homing switches are generally in the upper right corner of the machine where both Z and X move in a positive direction to get to them. At the home switches the machine zero is set using MACHZERO inside the homing routine. A ritual involving each tool being used is touched off the face of the part in Z to set Z0 home and the X is set by touching off a round piece of stock with a known diameter such as 1". These numbers are plugged in the TOOL PARAMETER screen offsets by various automatic and manual methods depending on the installer that set up your operator interface. The end result is that any tool of any size would move to the face of the part at centerline if commanded X0 Z0. (4) If you are using AS3000, then double check to see if it is set to LATHE mode. The 4th ICON on the AS3000 main ICON bar should show a Lathe. If not, use the LOCK ICON to change the MACHINE TYPE. Otherwise CNC Lite has MACHINE TYPE box under GENERAL SETTINGS and CNC Pro has a logic command called MACHTYPE to be placed in the STARTUP.FIL file. (5) When the machine code (G code program) is imported into AS3000 using Reverse Post Processor, the X should be written in the file as X1 (physical X axis move.5) and the graphics on the AS3000 screen should show.5 or half the distance written in the G code program. You can confirm this by hovering your mouse over the X-axis geometry and the axis coordinates shown on the bottom of the main ICON window in AS3000 will show X1 or double the distance of the geometry that is drawn. (6) When you post process this same file, the geometry that was drawn at X.5 showing X1 at the bottom of the main ICON bar will end up post processing a file that is written as X1. (7) Hence, when the CNC reads X1, it moves only half X.5 so it can cut a 1" diameter part. If and when this file is read back into AS3000 again by the Reverse REV post, then all of this is considered and all is normal. This is the only way to get arcs to work while in Lathe mode. Otherwise, if it was not for arc radii, we could go back to radius mode.

Q279 What choices are there for feedrate override and display?

Answer

Some choices below depend on your motion card model and software version. Your card may or may not have analog inputs to read voltage. (1) Here are the references to feedrate override features built into the software. There are analog pots, slider bars, increase/decrease buttons etc.

Q280 How do we tune our Spindle Drive?

Answer

The better you understand how this works, the better the results will be. On the diagnostic screen is a TEST SPINDLE button. This is a one-stop feature that interactively will go through several tests with you in order to automatically recommend values for the four basic tuning parameters. These settings are “Key” to spindle speed accuracy and will be explained in full below and are called: RAPIDSPEED MINSPEED MAXSPEED SPINADJUST There are also 4 user-programmable logic commands that control spindle speed: SPINFORWARD SPINREVERSE SPINSTOP TRUERPM Some others are: SPINDLERPM reads spindle speed. For Lathes see the IPR and IPM logic commands. More information will follow later, but further information can also be found in your CNC Professional or CNC Lite/CNC Plus Reference and User Manual under the command names. There are also more related topics that get into further details under Search For Solutions: How does the S code in my program get converted to spindle speed? How do I setup a lathe to do threading? Why does my spindle not run at the correct speed or RPM? How do I use a rotary switch to control the spindle speed? I want to tap but I don’t have a programmable spindle or an encoder on the spindle. What advice do you have for spindle or servo tuning problems? How do you control multiple spindles? Can you explain the steps to set up non-servo multiple-pass lathe threading? First you must decide on a few things: (A) If your spindle will be controlled by a Servo motor, Spindle drive with an encoder or without an encoder. Having a servo motor as the spindle will give you the most control. Place a SETUP command usually in the STARTUP.FIL file to describe the servo characteristics, such as encoder counts per rev, tuning parameters, etc. See the SETUP logic command for more information. For servos set the last parameter in SETUP as a Y. When you are ready to switch the spindle out of servo mode, set the last parameter in SETUP as an N. Perhaps you may want to use the spindle as a C axis for exact angular positioning in degrees for a while then afterwards in RPM mode. Then use SETUP again with the N as the last parameter to put the spindle back into RPM mode. If you have an AC or DC Induction spindle motor, read on. If you have a servo, you would control the spindle as any positionable axis with a feedrate so you can stop reading further since the tuning parameters are solely set up using the SETUP command. No TEST SPINDLE or adjusting other software parameters is necessary. (B) How to vary the speed spindle RPM. There is the S code, Slider bar, Increase/Decrease buttons or you may turn a knob such as Pot. If you do not want to use an S code RPM value, you can have a variable knob or slider bar change speed based on a percentage method ranging from zero to full speed. For more help click the help button in CNC SETUP in CNC Professional or SETUP in CNC Lite/CNC Plus under ANALOG CONTROLS next to box #1, # 2 and #3. After the tuning is done you may get different results from these two methods. The most notable is that the variable slider bar or pot method may have a lower accessible RPM range than what the MINSPEED recommends. The reason is that once the spindle starts to rotate and has momentum spinning it can easily slow down. Whereas you may find when programming a low RPM the spindle drive itself does not have enough power or torque to start it spinning from a dead stop. You could always remember to start with a higher S code to get the spindle spinning and then reduce the speed. Either way it is a limitation of the torque the spindle drive allows. There are further explanations of how to overcome this below. Often the case is that gearing and/or a non-linear voltage curve comes into play, which means that voltage is not linear. What linear means is that under ideal conditions the spindle would be rotating as fast as it can spin at 10V, but be at half speed at 5V and be able to achieve 1 RPM at near 0 volts. The 2 main factors why it is not linear are not related to the software but rather due to gearing and gain settings such as DEADBAND and (CL) Current Limit on the spindle drive itself. IMPORTANT: All following advice is based on the confirmed premise that you have already established that the encoder does report back 1 rev per the RATIO count value entered while in any and allgear ranges at the chuck or tool holder itself. You can use the WATCH WINDOW to spin the spindle slowly to see if the revolutions are being counted accurately. Do not go any further until the rev count is accurate while in any gear range. Also, double check to see if the TOOL/DEGREE parameter for the spindle axis number under MOTION SETTINGS in the CNC SETUP.EXE or SETUP.EXE is set to “4” meaning “Full Rotations” instead of “2” for Degrees, then save and do a BACKUP. Mark a visible place on the tool holder or chuck to indicate a full rev. Open Diagnostics and view the Watch Window while turning the spindle by hand (even if you have to dis-couple it to freely turn it) and see what the MAIN blue box shows as you rotate the chuck or tool each rev. The mark you made should be exactly at the same place each time the Watch Window counts 1 rev. Try this in other gear ranges just to be sure the encoder reading is not affected by gear range. IMPORTANT: IN CNC SETUP or SETUP under the ANALOG CONTROLS there is a SPEED VARIABLE. This variable will override all of the S codes, SPINFORWARD and SPINREVERSE RPMs issued by the percentage value assigned to this variable. Typically this variable in most CBK files is number \74 but can be any variable number entered into this box. This will confuse the results and complicate test reports because it scales the commanded RPM issued by the percentage. It is best to set this box’s value to 0 to disable this function while testing. Remember to reset the SPEED Variable upon completion of your test or else your slider bar or spindle speed override knob will not work. IMPORTANT: Some spindles require digital I/O outputs to enable the spindle as on or off plus either forward or reverse while other spindle drives simply use 0 volts for stop, positive voltage for forward and negative voltage for reverse. If your spindle requires digital I/O signals to start, stop or set forward and reverse, be sure you always include these IO#s in the logic for M3, M4 or M5 or while testing you first issue them manually using the long green box in Diagnostics. IMPORTANT: The closer your spindle is to linear voltage the more accurate the RPM will be at Low, Middle and High speeds. Before you run the TEST SPINDLE feature remember that the better you can initially set your spindle drive settings such as DEADBAND, CURRENT LIMIT, GAIN, OFFSET, BIAS, etc. to good linear values, then the better the parameters that the TEST SPINDLE feature recommends will be as close as possible to accurate dead-on spindle speeds. Understand the 4 Software Settings: RAPIDSPEED MINSPEED MAXSPEED SPINADJUST Understanding the RAPIDSPEED Setting: Setting the RAPIDSPEED higher will stretch out the scale of what 10 volts does. Re-adjusting the RAPIDSPEED value as explained below is your best option to accurately self tune in the RPM. But always start with the recommended setting values of all parameters before you begin to change RAPIDSPEED. Lowering MINSPEED allows a minimum RPM to be recognized and used. However, by making RAPIDSPEED higher will also allow a lower RPM starting point because it stretches out the voltage to RPM scale. Understanding TRUERPM: If you have an encoder, you ultimately will need to use TRUERPM to compensate for the voltage curve. It automatically will close the feedback loop with the spindle drive and encoder to internally self adjust RPM but first you have to get the programmed speed to real RPM relatively close or it will surge and hunt. If the settings are too far off, TRUERPM will surge or hunt wildly while trying to maintain the RPM. You must first do your best to tune the spindle drive itself and set the software parameters as close as possible prior to using TRUERPM. Understanding Spindle Drive Settings: A common question is why the drop off in RPM at the lower speed range. This is due to 2 factors: There may be a Deadband area at the low end of voltage. This setting is on the spindle drive itself rather than in the software. This setting is to allow the spindle drive to ignore changes in voltage that are very small. Starting at 0 volts a spindle drive should start spinning as soon as the voltage is greater than zero. The Deadband is set to ignore low-voltage signals. This is the reason why the TEST SPINDLE reports MINSPEED at the value it does. The reason for this is because it is the lowest stable RPM that is steady. The bigger the Deadband the bigger the range of voltage it ignores. We will use the settings in the software to get the most range as possible and to try to stabilize the low end RPM range. This is where the setting SPINADJUST comes in as explained below: The second reason is gearing. Even if we reset DEADBAND back to zero, the gearing would still cause the initial lowest RPM to be much greater than 1 RPM. For example, with.900 volts you may still be at 0 RPM while at 1 volt this may result in 1000 RPM. Ideally we would be able to start with 1 RPM and increase from there as voltage increases. We also have settings in the software that handle different gear ranges to offset for gearing the low end RPM range. Only begin to use low and high RPM range parameters under the SPINADJUST command once all other parameters have been first set and your programmed spindle speed verses real spindle is as close as possible. The results you get from changing Deadband are different than changing gearing. The SPINADJUST parameter allows for different groups of gear ranges. Entering the ranges for low and high gears is described along with the SPINADJUST logic command. The goal here is that after every other settings is in place and you still have a problem where low RPM commands are ignored and adjusting Deadband on the spindle drive has already been set, then adjusting the 2ndand 3rdoptional parameters of SPINADJUST will slowly little by little start to show better accuracy in the low and/or high RPM ranges. SPINADJUST will not allow you to overcome Deadband and reach lower RPM speeds but it will make the commanded RPMs closer to real RPMs for speeds at or above MINSPEED. For example, if the real RPM is too low verses the commanded RPM, then keep increasing the 2ndparameter until it’s within tolerance. Add or subtract as needed. Keep in mind that the high and low speeds are limited by the MINSPEED & MAXSPEED settings. EXAMPLE: SPINADJUST 23.5;150;12 The SPINADJUST setting is the main factor allowing us control over the voltage curve. It is a math calculation or formula that creates an internal bend on the voltage issued, which more accurately bends back the voltage curve. Its purpose is to straighten out the voltage curve to make it become more linear. The other spindle drive setting that is related to gearing on the high RPM speed is called (CL) Current Limit on the spindle drive itself. There are some other settings as well, which differ widely by name between spindle drive manufacturers, called GAIN, BIAS & OFFSET, which also have to be considered. These setting are there to provide for a more robust use of a typical spindle drive. Other names and uses for spindle drives are known as Inverters or (VFD) Variable Frequency Drives, which have a wide range of uses such as conveyor belts, cranes and positioners. Hence, the need for these extra settings is to counter the effects of gravity or resistance. The important point to all of these settings despite the brand or the name of the setting is to be sure that while the drive is not given any voltage signals that the spindle will always remain still and does not drift or spin at all. If it does, then you must find a way to adjust these settings so that no motion occurs prior to reading on any further or performing the TEST SPINDLE feature. It is the (CL) or Current Limit setting that limits the voltage signal command to 10 volts or under. All voltage commands sent to the spindle drive that are above the CL limit will be ignored thus limiting full RPM speed. However, Deadband is the opposite. It limits the low-voltage signals so that any commanded RPM issued below the Deadband is ignored. Understanding the TEST SPINDLE Feature: Start by running the SPINDLE TEST program. Repeat the SPINDLE TEST until it reports similar test results at least 2 times. Next, enter those values into the STARTUP.FIL file and also the RAPIDSPEED box for the correct spindle axis number and then restart the CNC and repeat steps (1) and (2) below. If you see that the real vs. programmed speeds are close, then continue on with this next information. The fastest way to see the effects of the changes on the real RPM is to enter Diagnostic with the Watch Window opened and position the Diagnostic window to have easy typing access to the long green bar. Re-adjusting the RAPIDSPEED Values: (1) We are going to start testing with your Mid Range RPM, which is calculated by adding MAXSPEED and MINSPEED that were recommended by the SPINDLE TEST program together then dividing the result by 2. Start by entering the Mid Range speed. For example: SPINFORWARD 1500 (2) Next, enter a slightly different RAPIDSPEED. Plus take notice to replace the 3 in the example for the axis your spindle is on. Determining which way to change RAPIDSPEED (up or down) is based on if the real RPM is lower than the programmed value or higher. For example, if the real RPM is lower than 1500, then make RAPIDSPEED lower. In other words when RAPIDSPEED increases, real RPM decreases and vice versa. If you notice that the real RPM shows 1400, then the next thing you enter would be to lower the RAPIDSPEED from 3000 to 2900: RAPIDSPEED 3;2900 If this moves the real RPM in the right direction but you are still not there yet, keep going like this: RAPIDSPEED 3;2800 If you overshoot, then start to increase RAPIDSPEED rather than decreasing it. Once this RAPIDSPEED is set good for Mid Range RPM, we then want to see what real RPM now reports if we enter SPINFORWARD using your MINSPEED (example 100) and then your MAXSPEED (example 3000). The SPINADJUST value is important because it holds the calculation to the voltage curve for this MINSPEED and MAXSPEED. For example here is what you want to enter to see how good the low end and high end reports. Enter these 2 commands one at a time, pausing a moment between them and write down the reported real RPM: Enter the RPM of your MINSPEED (example 100) SPINFORWARD 100 Pause a moment and write down real RPM. Enter the RPM of your MAXSPEED (example 3000). SPINFORWARD 3000 Pause a moment and write down real RPM. Now you can start adjusting the low and high range values. For example if the real RPM is too low verses the commanded RPM, then keep increasing the 2nd parameter of SPINADJUST until it’s within tolerance. Add or subtract as needed. Keep in mind that the high and low speeds are limited by the MINSPEED & MAXSPEED settings. For example enter: SPINADJUST 23.5;50;0 The 1stparameter of SPINADJUST is a fixed value given to you by the TEST SPINDLE feature. Enter the value it gave you. The 2ndparameter of SPINADJUST is to adjust the RPM for the low MINSPEED range accurately. The 3rdparameter of SPINADJUST is to adjust the RPM for the low MAXSPEED range accurately. You ultimately will need to use TRUERPM to compensate for the voltage curve. It automatically will close the feedback loop with the spindle drive and encoder to internally self adjust RPM but first you have to get the programmed speed to real RPM relatively close or it will surge and hunt. Now be sure you enter the best RAPIDSPEED value and also the best SPINADJUST values you got into the STARTUP.FIL file, restart the CNC and repeat steps (1) and (2) above. After this go ahead and use TRUERPM. If this gets good results, you may now start to adjust both MINSPEED lower and/or MAXSPEED higher in the STARTUP.FIL file to see how high and low you can go without TRUERPM hunting. You may disagree with the MINSPEED or MAXSPEED values suggested by TEST SPINDLE. Your spindle may very well be able to spin slower or faster than the recommended values suggested but there was a reason why the TEST SPINDLE program recommended these values for MINSPEED and MAXSPEED. The reason is that during testing it found RPMs lower than the suggested MINSPEED to be unstable meaning that these RPMs are either not steady or they did not respond accurately to commanded voltage changes. The same is true for MAXSPEED. This may be due to gearing, non-linear voltage curve due to spindle drive pot settings or just load on the spindle that prevents voltage from being translated into torque resulting in power loss. During the spindle testing if the TEST SPINDLE finds that the same voltage signals did not result in the same RPM or else they could not be repeated, then it will only recommend MINSPEED and MAXSPEED values that can be repeated accurately when given the same RPM command. In the End: If all else fails in that the spindle drive could not be adjusted and adjusting the parameter settings proves too complicated or time consuming: As a last resort there are only two further options: We or you can create a look-up table of analog voltage output to RPM values based on the programmed S code or else you could ask for a service call to get an installer on-site to work with you.

Q281 How to upgrade a CNC Lite/CNC Plus CBK file to CNC Professional.

Answer

Use the CamSoft CNC Editor — this installs separately from the CNC Professional software and is contained on a separate CD. The CD is labeled "CamSoft Study Guide/CNC Editor". Once the editor is installed, follow the steps below to upgrade your CBK file. 1.) From the menu bar select "Tools" – "Convert CBK" – "Upgrade to Pro". This brings up the CNC Pro Conversion Wizard. 2) From the CNC Pro Conversion Wizard window click on "Select File" and select your CNC Lite/CNC Plus CBK file. 3.) Next, click on "Upgrade File" to start the automatic conversion. The conversion should only take about 1 to 2 seconds. Your new upgraded CNC Pro CBK file will be located in the same directory as your original file with the words "Upgraded" appended to the file name. Your original CNC Lite/CNC Plus CBK file will remain the same. Example: File to upgrade: CNCLITE.CBK File upgraded: Upgraded_CNCLITE.CBK NOTE:The upgrade will get the file set up for the basics of a CNC Professional file but will still need to be looked over for completeness and tested. You will still need to add any new specific logic routines and any screen elements you want.

Q282 How do we do optimize cutting performance?

Answer

Here are several more tips on optimizing cutting performance beyond the advice given in QUESTION Nos. 9 and 160 referring to: the AS3000 Installation & Training Manual for increasing your computer's speed and performance, TOLERANCE, BLEND, G8, G9, G61, G64, FASTMODE, BUFFER size and setting the Graphics Viewport to invisible or wireframe mode. These tips are presented in two phases. Steps 1 through 4 will help us determine what your system may be capable of whereas Steps 5 through 12 will be steps you can immediately take yourself. 1. Tell us your Motion card model. 2. Tell us your CPU's model name and GHz clock speed. 3. Run the CPUspeed.exe program in the C:\AS3000\CNC folder and send us a bitmap of the "whole" screen when you close the CPU speed window AFTER the message box pops up. 4. Load your part program and then open the Diagnostic windows for a test cut. Remember when cutting non-test parts to always close all Diagnostic windows because it will slow down the cutting by up to 800%. We only need a small piece of the cut. End or stop the machine using the Escape key as soon as it starts to ratchet or stutter then press the COPY FILE button on the Diagnostic window and e-mail us the LOGFILE.FIL file. 5. Clean out Windows of all unused services and applications shown in the Windows Task Manger including SVCHOST or other Network and Internet services not being used. 6. Remove all the logic except the GO command from the G1 GCODE.FIL file. 7. Re-examine or re-do the Servo Tuning Setting and if need be, purchase the manufacturer’s servo tuning program. 8. Temporarily disable as many nonessential features as you can such as Backlash and Lead Screw (ADJUST.FIL) comp, Remark out any DISPLAY, GAUGE, BAR, LABEL, MESSAGE, LOGWRITE and FILEWRITE logic commands and turn off the TIMER OFF if you can. 9. The most important factors are: a. First, in all cases the biggest improvements come from allowing the tool path to "catch a breather" meaning to make a long move every once in a while. b. Second, the number of characters on a G1 line for 3-5 axes data can bottle neck the system and degrade the performance. Have your post processor omit all axes letter moves that repeat the same location from a G1 move to the next G1. c. Last, when a G1 moves length of travel distance at the given feedrate are cut/sent faster than the millisecond response time of the PC, then a delay is introduced that waits for a confirmation "move completed" before the next line is cut. It is impossible to calculate what move length works best at what feedrate because there are too many variables. The best measure of what distance the G1 move lengths have to be so it does not bottleneck is to try a few different G1 programs with different move lengths. However, as soon as the feedrate changes to a faster rate, new tests will need to be made. 10.Optimizing Windows performance For faster operation and machine safety. Windows Vista and Windows 7, 8 & 10 Under Power Options: *Disable hibernation mode. *Disable any power management option. *Make sure that the computer does not turn off the hard drive after so many minutes of operation. *Make sure that the computer does not go into System Standby after so many minutes of operation. Under Personalization: *Disable any screen savers. *Set the Theme to "Windows Classic" mode Under Performance Options: *Set Windows to "Adjust for best performance" Windows XP Under Display Properties: *Disable hibernation mode. *Disable any power management option. *Disable any screen savers. *Make sure that the computer does not turn off the hard drive after so many minutes of operation. *Make sure that the computer does not go into System Standby after so many minutes of operation. *Set the Theme to "Windows Classic" mode

Under Performance Options: *Set Windows to "Adjust for best performance" 11. Use Windows Defrag on the hard disk and, if need be, use BACKUP to save the CBK file settings. Then make a backup of your C:\AS3000 folder or simply rename it to save your setting and jobs in the WORK, CNC and BMPWAV folders. Next, delete the original AS3000 folder and re-install fresh. Last, copy back the WORK folder contents after installation and use RESTORE to load in the CBK file you saved. 12.You may have recently installed other software on this PC that is running services or applications in the background. These programs affect the speed in two ways. a. Most programs or services set aside memory, which forces Windows to run the CNC or AS3000 database in virtual memory. Since the CNC or AS3000 database takes up a lot of memory, when memory runs lows, Windows will use the hard disk drive as memory for the CNC or AS3000. This is called Virtual Memory and there are settings in the Windows Device Manager to control its size. However, the fact that it is using Virtual Memory rather than Real Memory makes the system run dog slow while writing or reading to the hard disk. You can see this happen when running the CNC or AS3000. When the hard disk LED light on your PC flashes or stays lit solid, even though you may not be loading or saving a file at the time, then you know Virtual Memory is being used. The only solution is to add more memory to the PC or delete the other programs and services that use it. b. Some programs use valuable CPU time. When you open the Windows TASK MANAGER and view the Application Tab or Processes Tab you may see many other programs or services running. These programs all consume some CPU time. At certain times they can vary how much CPU time. Since this time is random, the only solution is to shut down any unneeded services and applications each day after startup or else delete/uninstall them.

Q283 What if we don't have a counter balance on our Z axis head?

Answer

We do have some ideas that I will explain below that will help, but if the amp drive itself faults, only a counter balance will help. The machine probably was originally designed this way. This is very uncommon because it is generally accepted that a machine design should be counter balanced if there is a head that can fall under gravity, especially if the power goes off or the amp drive faults. (1) Add this logic command to the STARTUP.FIL file: SETESTOP NORELEASE Refer to the “Logic Language Reference Guide” section in this manual for the particulars on the SETESTOP command. (2) The brake’s purpose is to engage if the power is cut. Most brakes clamp hard when there is no power — usually only 24v. When 24v is supplied, the brake opens. The problem is that by default the brake’s wiring connects to the amp and if the amp faults, it should also cut power to the brake. However, it may not be doing this. You could try to figure out why or you can use a 24v relay and control the on/off power to the brake in the ESTOP.FIL file. (3) The motion card manufacturer uses the amp enable signal to turn the amp on/off in various emergency conditions. If the amp gets turned off, the head will fall if not counter balanced, but the brake should apply automatically. Again it is best if you could figure out why but your only recourse from the hardware point of view is to remove the amp enable wire so the motion card can't turn it off. You may or may not have to jumper or supply a 5v signal to the amp drive's enable terminal to keep it on depending on what it wants. Some amp drives don't care if there is a signal there or not. For further information refer to QUESTION 317.

Q284 How far can the I/O wires travel?

Answer

Generally I/O signals can travel up to 150 feet on average. Sometimes less if there is RF and/or EM noise or longer, up to 300 feet, if well protected in grounded shielded metal conduit pipe. An important design task is to keep the conduit of low-voltage signal wires separate from any high-voltage wires. Using standard 22-gauge copper shielded wire from the hardware store will allow an I/O signal to travel 150 feet from the point of where the furthest terminal strip can reach. Signal ground or signal common is not the same as earth ground and must always be kept completely separate. Grounding noise issues are the number one most common problem affecting false I/O and encoder signals. The metal conduit pipe needs to be grounded to the machine itself whereas the signal common/ground should be connected separately to the special place marked on the terminal strip. If distance or noise is suspected, one of the first things you want to do early on is to use the Diagnostic I/O windows to test for I/O signal reliability. See

Q285 How can we display our tool path or show a solid material in the viewport?

Answer

Open the TOOL PARAMETER screen and check the "Solids vs. Wireframe” checkbox. Also, uncheck the WireTrace checkbox. If you are not seeing the entire part, you may need to zoom out. In wireframe mode you can click inside the viewport and use the function keys to Zoom or Tumble the part graphics. There was a small keyboard sticker that came in the package to stick onto your keyboard to remind you of what each Function Key does. For example, to display solid model billets for a Lathe, you can enter the STOCKDEFINE command in any file, including G & M codes and the STARTUP.FIL file or you can make custom Macros to display certain part sizes. This does get into using the logic commands in an advanced method but a couple of simple approaches would be: 1. Open the Diagnostic window. Refer to the “Logic Language Reference Guide” section in your CNC Professional manual and go to the STOCKDEFINE command. Locate the Lathe Machine example at the end of the STOCKDEFINE command description. In the Diagnostic window, enter this example into the long green text box and press SEND. Try different values to see what happens in the viewport. Click in the viewport and press F4 to see a side view or F5 to auto zoom to full view. 2. For example, you can make M101, M102, M103, etc. codes in the MCODE.FIL file. Each M code could be different views or part sizes. You can make up parameters in each M code to pass part diameter, length, etc. For example, you may use an M code such as: M101 L4 D2 where D may mean diameter and L length. When the MCODE.FIL file sees this, it executes M101 and passes the parameters in the G code program as lower case letters. d=2 and l=4 Above M101 in the MCODE.FIL file enter: STOCKDEFINE 0;0;0;l;d;1

Q286 Can you list all the things that affect the boxes labeled Machine Offsets on the Tool Parameter screen?

Answer

While there are many types of offsets to set, the section of the tool parameter screen labeled "Machine Offsets" are exclusively set with the MACHZERO logic command. Also, when you use the SETUP command, it will zero out the machine offset for only the axis you are redefining. Therefore, to find all possible reasons that any G or M code, button, macro, homing routine, etc., may be causing a change to these offsets, search for the commands MACHZERO or SETUP. The other scenario is that you have SAVE POSITION set to TRUE under MACHINE START SETTINGS in CNC SETUP. When you click on the Blue Question Mark Icon on the Tool Parameter screen, you will see a brief description of the MACHINE OFFSETS.

Q287 Why are my motors kicking off when only very little force is applied?

Answer

(1) If these same motors moved the machine tight, fast and accurate with the PID settings in the Motion Card Manufacturer’s Servo program, then the exact same PID settings will do the same in the CamSoft controller. Understandable the first thought is that you need to do better software PID servo tuning, which is a key factor and should be done, but it is not the only factor. Keep reading. For example, if you say: "I get motors that will fault out with little more than 6.8 lbs. of force being pushed against them. I attribute that to the fact that with CamSoft in control and operating, I now have position tracking enabled. So, I'm thinking I have some work to do to fine tune PIDs as well as position error tolerance." This is correct, but there is more to it that you should know. (2A) The reason it kicks out is that the CamSoft controller is constantly checking the "position error" also known as "following error or servo lag" — in layman terms: the difference between the commanded position of where it is told to go versus the actual real position as reported by the encoders at any given point in time. If the difference is greater than the TOLERANCE value you have entered for more than 60ms, it will kick out and go into E-stop. In this event you can control if the motors will kick off or just stop and turn back on & re-servo themselves, decel to a stop or go immediately limp by issuing a SETESTOP command in the STARTUP.FIL file. (2B) Do not use native motion card commands such as COMMAND ER or OE. Not only do these commands have several rules to obey under certain circumstances, but they will also conflict with what the CamSoft controller is doing and oppose each other. (2C) As a test only to see how this affects your system, you may enter the "POSERROR OFF". This will keep the motors plowing through the resistance and will not kick the motors off despite how far out of tolerance the position error is with only a couple of exceptions: The amp drive faults and/or goes into distress or overheats, thus sending a signal to us where we go into an automatic ESTOP and then the motors would kick off depending on the SETESTOP parameter settings. If this happens, then ultimately the problem is in the gain settings on the amp drive itself. The primary clue that this may be happening is that the table motion seems obviously spongy, vibrating, oscillating, drifting or sends a fault signal when the resistance on the motor is too great, especially if you notice any of this after issuing the MOTOR OFF logic command. In this case the servo loop is opened and the motion card is not trying to control the axes positions anymore. Therefore, if you notice any of these effects, it must be the amp drive gain settings causing them. We have an AMP TUNE feature on the Diagnostic window next to the SERVO TUNE button which walks you through a procedure that interactively assists you in setting the gain settings on the AMP DRIVE so it won't fault. Depending on the manufacturer, sometimes these settings are simple screw driver turn pots and sometimes they are either push buttons directly on the amp drive read through an LCD or else they must be plugged into a cable connected to a PC to set them. Keep in mind that the Software PID servo tuning settings are separate from the Servo tuning settings on the amp drive. They do work hand in hand and both need to be set as accurately as possible to be efficient. To run the system safely, you must not use the POSERROR OFF command. However, you may enter values after POSERROR that dictate how much tolerance will be allowed before it goes into ESTOP. This is different than the TOLERANCE settings which you can open up bigger if the machine simply hangs up and waits or does not make position rather than kicking out into ESTOP. Making the TOLERANCE larger will satisfy the in-position checking to allow the next move to execute faster and prevent a delay, pause or complete hang. (3) If you still have a problem that you need help with, you can you send us a LOGFILE.FIL file and also a bitmap image of any messages on the screen (if any). To get a log file you have to enter Diagnostics. You may close all the diagnostics windows except the Digital I/O Panel showing the I/O numbers. It is also okay to minimize the Digital I/O Panel. The next time the problem happens, immediately hit ESC and exit. Don't wait too long or too much history will be written to the LOGFILE.FIL file. Next, hit the button on the Diagnostic screen titled "Create a History/Logfile on:". A file named LOGFILE.FIL will be saved to a folder of your choice so it can be e-mailed to CamSoft or your installer. To save a bitmap image of a screen, follow the steps below: When the error pops up: (1) Press the PRINT SCREEN button on your keyboard. (2) Open Microsoft PAINT by clicking on the START button and selecting PROGRAMS, then ACCESSORIES and then PAINT. (3) In PAINT, click on the EDIT menu and select PASTE. (4) In PAINT, click on the FILE menu and select SAVE AS. (5) Before you send the bitmap image to your dealer, it would be appreciated if you could zip or compress the file since a bitmap file can be quite large. For further information refer to QUESTION 317.

Q288 What type of Spindle can I control?

Answer

You can control a standard on/off spindle for fixed RPMs, a VFD or Inverter style that can vary the RPMs or a digital PWM spindle drive. The first thing to do is to identify what type of inverters you have and double check the volt and amp ratings the spindle drive wants on these invertors, then we can proceed with method (1), (2) or (3). (1) ON/ OFF Spindles This style only offers fixed RPMs. There still may be several speeds to select from such as high, medium or low, plus there may be a manual pot or knob on or near the spindle head, which the operator can turn to vary RPMs in-between the fixed speeds as well. This style uses one or more digital relays to switch to the proper speed. (Remember, the motion card’s terminal strip can only send out up to 24V at 25mA.) Therefore, if the spindle drive needs above 24V to switch on the spindle drive, then there may be an existing relay already on the machine. If you can’t find the existing relay, relays are available from suppliers found in the “Buyer’s Guide” section in the back of the CamSoft Installation Guide. One such supplier is OPTO 22. They make standalone relays for use one at a time and also standalone relay racks in groups of 4 or 16 that connect to the ICM 2900 I/O. Look in the CBK file we provided. Typically it uses a standard M3 for spindle on and M5 for spindle off. You may assign any unused digital I/O output labeled OUT 1-8 on the ICM or extra relay rack for spindle on=1 and 0=off. For example, you would write in the MCODE.FIL file: Above M3 write #33=1 'spindle on Then above M5 write #33=0 'spindle off If you have more than one spindle head, you may connect one or more spindle drives to the same terminal connection to share the signal. (2) VFD or Inverter Style Spindle These drives can vary the RPMs. Inverters, A.K.A VFD (variable frequency drives), want a variable analog signal at 10 volts only in milliamp range for a signal. Most use a minus voltage up to -10v for reverse, +10v for spindle forward and 0 volts for stop. Some only accept 0-10v and a relay to tell the spindle to turn forward or reverse. In this case, for example, you would use M3 for forward and enter the digital IO relay number in the M3 code as explained above in Method (1) — M4 for reverse and M5 for stop. Otherwise, the logic commands SPINFORWARD, SPINREVERSE and SPINSTOP would go into M3, M4 & M5 and send a +/-10 volt variable analog signal. The actual RPM speed is governed by the spindle drive model and gain settings itself. In summary terms, 0 is stopped and 10v is full speed. The RPMs it can achieve at full speed is set on the spindle drive itself. To adjust these settings on older spindle drives they will have screw driver turn pots that you can turn for setting the gains, CL current limit, speed ref, balance to control drift, a dead band pot which ignores low voltage signals, etc. Newer drives will have these same adjustments but they use a simple keypad and LCD display directly on the spindle drive unit itself. Some models only offer a serial, RS232 or USB cable connection where you make the setting adjustment while plugged into a PC. You can purchase our Technicians Helper device or use an electrician’s high- end multi-meter or sometimes a simple 9V battery to test the wiring for spindle RPM. The key here is to start very slowly and increase. Remember, some spindles also need relay on/off or forward/ reverse signals to work. As an example of connecting the spindle to the 4th axis on the terminal strip, the connections on the ICM 2900 are labeled MOCMDW & GRN. This would supply the analog variable voltage to vary the RPM. The spindle would automatically turn on or off using this method when powering up if you connected to the AMPENW terminal on the ICM 2900. This is known as the Amp Enable signal. In addition to the Amp Enable signal you may also use an output on the ICM, as described above, to give the operator the ability to turn the spindle on or off with M3, M5; create a user-defined button on the screen or pendant; use the ESTOP.FIL file; program logic for special conditions; etc. (3) Digital PWM Spindle Drive This is much like the VFD or Inverter in almost everyway but two. a. These are digital pulses rather than variable analog. b. There is no reverse. You must use a digital output to control forward, reverse & stop. There are two types of PWM signals to choose from — Inverter and Sign Magnitude Mode. In the Inverter Mode the PWM signal is.2% duty cycle for full negative voltage, 50% for 0 voltage and 99.8% for full positive voltage. In the Sign Magnitude Mode (with the SM Jumper installed) the PWM signal is 0% for 0 voltage and 99.6% for full voltage. The terminal connections are to the PWM terminal and the CW or CCW direction (sign) of the motor is connected to the SIGN terminal connection. You will also need a third wire to connect to Grn (ground). For further information refer to QUESTION 317.

Q289 Can you direct me on how to create my own Conversational routines and Canned Cycles?

Answer

Since each routine would be unique, a uniform step-by-step outline approach would not apply. However, for a general approach to get you started, refer to item Nos. 1, 2 and 3 below. We find that it is best if we just show you in a one-on-one training session and coach you through an example. One day would be more than enough with a trainer. This way, while you are here, you will get trained plus get some routines made up that you can take back with you. There are plenty of canned cycles and conversational routines to review such as how to prompt the user questions, pick from a pull down list, pick from bitmap images, do math, move axes, react to IO events, display messages and make up new G codes to by-pass the prompting. You create G codes or custom canned cycles that equal the same questions that are being prompted so the answers can be saved to the G code file to repeat later. This is an advanced topic and training should be scheduled but the best place to start is: (1) The CamSoft Utilities CDROM – The Study Guide file on this CD provides an overview of how to use, create and setup buttons using the DESIGN OPERATOR SCREEN and explains the concept of how to create your own operator screen. (2) The CNC Professional Reference and User Manual – Review Chapter 2 "How to program a User Interface" & Chapter 11 "What is a Process" (Conversational routine). (3) Look in the MACRO.FIL and MACRO.MAC files for conversation examples. Access these files using the EDIT OTHER MOTION CONTROL FILES on the main CNCSETUP window. These macro files show you the meaning of each routine, will manage what the user sees and allows you to edit and assign passwords. You can also scroll through these two files with any text editor.

Q290 How do we vary the rapid traverse speed?

Answer

There is a setting called RAPIDSPEED that sets the fastest travel speed that an axis can travel. This goes for all G0, G1, G2, G3 & canned cycle moves. By default the G0 will use a RAPID logic command. The RAPID command will travel at the fastest speed of the slowest axis issued in the RAPID line or a G0 line. To change this you can do a rapid speed override as is done with a feedrate override using G1, G2 or G3. Enter the code below just above G0 in the GCODE.FIL file: \777=f FEEDRATE 99999 DECELSTOP GO x;y;z f=777 What we are doing is storing the original programmed feedrate in \777and then after the rapid move is done we restore it. We are setting the FEEDRATE to any very high travel speed that it could normally never reach. Since the RAPIDSPEED setting caps or puts a lid on the top travel speed the real maximum speed will be that of what is entered in RAPIDSPEED. The reason we replaced RAPID with GO is that GO is influenced by the feedrate override slider bar or a knob. It can also be varied by a percentage value of 0-100% using the FEED variable, which is defaulted to \73. This variable can be changed. This gives you a few methods to override the rapid traverse speed.

Q291 How do you store/record a dimension to a variable to be used in a G code program?

Answer

As you know, the post would normally insert Z dimensions for safe clearance height and cutting depth. These would be values you would enter in. However, since you are wanting to move to these Z dimensions in order to store/record them, you would use named variables in the G code program in place of hard Z dimensions. See Example of macro variables used in G code program. Page No. 8-59in the CNC Professional manual Page No. 8-27in the CNC Lite/CNC Plus manual This will show you that it is easy to use a variable in place of a Z. You would need two variables. For example see the named variables we used in the example {ZROUT} and {ZCLEARANCE}.

Q292 What do I do when I get a VERSION.

Answer

ID, VERSION CONFLICT or VIRUS ATTACK message? The VERSION CONFLICT or VIRUS ATTACK message occurs because there are conflicting files on this PC. Basically, one or more of the controller EXE files, hardware drivers and/or Windows drivers are not matching the Version.ID file log, which is like a watchdog library of file names and version numbers. Sometimes we see this when people say they did nothing to the PC, but later find out that Windows automatically updated itself or some other software was installed that hi-jacked the Windows registry or overwrote a Windows DLL with a later one. In this case, the VERSION.ID message results when it detects a file that is not compatible. This is only because an older version of a software driver is trying to pass information to a Windows or Hardware function call and one of the parameters is expecting more or less parameters or the values are in the wrong format. Therefore, the VERSION.ID message is protecting you from the dreaded Windows pop up error message box, at least giving you a warning of what is wrong. The solution is simple. Install the current CamSoft version. It contains the latest Windows and Hardware drivers and will automatically update your PC during installation if needed. We have a team of programmers that keep up with updating the drivers and function calls from all of the hardware manufacturers and Microsoft as they make changes. This may be difficult, however, but the only other solution would be to make sure that the software version (vintage or release date) on the CamSoft installation CD that you have matches the Windows Service Pac (Windows drivers) of the same vintage (release date) along with any backup of hardware drivers. If you get all the files to match, the Version.ID error will go away. If you have kept a backup of the system, then try copying it over the existing files that are there now.

Q293 Is there a way to print out a Road Map of the variables, logic, IOs and settings of my system for troubleshooting?

Answer

1. On the I/O SETTING window press the button PRINT ALL IO DESCRIPTIONS. 2. On the main CNCSETUP window click on the "Variable Descriptions" button and then press “Print All Variables.” This lists all of the used (blue) and not used (black) variables available in the system. Most users will get a CBK file provided to them from CamSoft or their dealer that was a cleaned up set of files from a similar machine. The CamSoft technicians will clean up the interface by replacing any bitmaps and company logos with generic bitmaps and then will set all of the max rapid speed settings, acceleration values, deceleration values, gearing ratios and most other settings with more conservative values. We do keep everything that still applies, such as the Homing Routines, Over Travel Limits, Turret / Tool Change Routine plus all of the typical Axes Readouts, Motor Setups, Cycle Start, Feed Hold, E-Stop, G Code Display, Jogging, etc. The page showing the Variable Descriptions are optional fill-in-the-blanks to enter comments to help remind you later what each one does. Every machine is different so the previous commented entries were cleaned out especially if your CBK file contained portions from a few other CBK files merged together. Keep in mind that the blue variables you see are being used somewhere, but most likely as temporary variables that store something for a math calculation. These can be re-used again later elsewhere. When in doubt, always use one of the never assigned black variables or else do a "Variable Search" on the main CNCSETUP window to find where a particular variable is used. Do not be confused that it is used more than once for unrelated storage such as \55 has come to be. For example, \55 is used to grab some data, display it and then is not needed until somewhere else it is temporarily re-used again to display or hold something else. It is best to make your own I/O map and Variable list. Consider all these as opened and configurable for you to change or map as needed. It is optional to enter in comments or descriptions. 3. One by one, whichever logic file is important to you can be printed out under EDIT OTHER MOTION CONTROL FILES editor and the PRINT button at the top of the screen. 4. You can print out the actual CBK file using any plain text editor. 5. The LOGFILE.FIL file will also list a summary of your system settings which can be printed using any plain text editor. 6. When you need a quick but detailed answer, the best way to find answers is to electronically search using the Search for Solutions button on the main CNCSETUP window. You can search for answers using keywords like a web browser or else click on the Help-Index Search button on the Search for Solution windows to have access to most (not all) of the documentation in the printed manuals. The Search for Solutions window actually contains much more documentation than the printed manuals do, but on the other hand the printed manuals show many more charts and diagrams than the on-line search does. So in essence, you need both to have access to all of the documentation. You can search for All words, Any of the words or an Exact Phrase. After each page displays look at the titled bar for instructions to get to the next page. Hit F3. 7. Under DESIGN OPERATOR INTERFACE on the main CNCSETUP window, press the button “List or Print out a Report.”

Q294 We are running multi threads.

Answer

If we call the time function, will it continue counting or will it reset each time it is called? It globally resets the time in all modules. If you want to keep track of different elapsing times in many different routines, then it would be best to only do RESETMS once. Then in each routine where you would normally issue a RESETMS, you would instead issue only MS to save the start time and then subtract the current MS time from the starting MS time to get the elapsed time.

Q295 What does the "TOLERANCE is set too tight " message mean?

Answer

The reason it displays the warning is because the RATIO count values that are being entered can not achieve the accuracy set by TOLERANCE. The defaults may be in inches. The default tolerance of.001 and RATIO of 4000 counts are accepted because the resolution of each count is 1/4000=.0002. However, for example, a scale or encoder that gets 500 counts per mm will give you 1/500 =.002. This means that.002 is the smallest TOLERANCE the scales can achieve thus the warning messages you see if your TOLERANCE was set to a value smaller than.002 such as.001. While in INCH mode.002 seems like a loose tolerance for such high-end accurate scales. In metric mode.002 of a mm is in the micron accuracy range. If you are set in INCH mode, you will see a warning that the TOLERANCE is too tight for a RATIO of 500. Try a TOLERANCE of.025 or.05 for metric systems at first. The system needs to know that you are in mm mode plus have a TOLERANCE entered that the scales are capable of handling. (1) Under the LOCK ICON in AS3000 use the menu to switch to Metric mode. (2) For mm programming the TOLERANCE should be changed to be entered in millimeters — at least 25.4 times greater than what the default was. Try a TOLERANCE of.05 at first and then only tighten it up after tuning. (3) The value to enter would be "how many counts move one unit" where a unit could be in mm, inches, degrees, tool numbers, RPM, etc. For example, G0 X10 means move X 10 mm, inches, degrees, tools, RPM, etc. (4) If the machine is at a foreign destination, then enter how many counts equal one mm into the RATIO boxes. No need to times by 25.4. Some manufacturers may or may not have already figured in 4 times for quadrature style scales or encoders since this is now a standard. Therefore, a simple test of G0 X0 to G0 X1 should have moved.039 of an inch which is the same as 1mm. (5) There is a feature called "Calculate the Correct RATIOs" button under MOTION SETTINGS in the CNCSETUP program.

Q296 Is there a Grinder machine type?

Answer

The MACHTYPE command will accept the 2DGRINDER machine type. However, if yours is really 3 axes or more, then there are other choices. Grinders have many mechanical configurations that could range from style movements for jig grinders, boring grinders and stone tipped tools that should use MACHTYPE MILL3D, custom styles that should use MACHTYPE CUSTOM to CYLINDRICAL, OD or ID grinder styles that should use MACHTYPE LATHE. Use the 2DGRINDER MACHTYPE for Surface grinders or general flat wheel style machines.

Q297 We have an Ethernet card and it fails to remember its IP address.

Answer

How do we permanently save it? In the Installation Guide, follow the Ethernet card installation procedure again from the beginning so that you get to the point where you run the DMCNET.EXE program. It should find the unassigned card and register the card. If necessary to get around the Burn failed message, do the following when you are at that point: 1. Get out of the DMCNET.EXE program. 2. Set the CARD type to GALIL in the CNC Setup program. 3. Launch the CNC software. 4. Click on the DIAGNOSE icon to bring up the DIAGNOSE Window. 5. In the SEND COMMAND TO MOTION CARD green box type and send the following command: COMMAND BN The above procedure should permanently burn the IP address into the firmware on the card so you do not have to set it again. If you have the master reset jumper installed on the card, remove it before powering up the motion card again.

Q298 What functions do the Slider Bars perform?

Answer

The Analog Slider Bars can be assigned to have four functions definable in the Design Operator Interface program. 1. The variable assigned to the slider bar will automatically contain the percentage the slider is at in real time. 2. If the assigned variable matches that of the FEED variable under ANALOG CONTROLS, then the slider bar will become a Feed Rate override control. 3. If the assigned variable matches that of the SPEED variable under ANALOG CONTROLS, then the slider bar will become a Spindle Speed override control. 4. If the assigned variable matches that of the ANALOG 1, 2 or 3 variable under ANALOG CONTROLS, then the slider bar will output a 0 to 10 voltage directly out the axis number given in the ANALOG 1, 2 or 3.

Q299 How do we set up the SOFT LIMITS?

Answer

There are settings in the CNC SETUP program under MACHINE TRAVEL SOFT LIMITS that allow you to control when, at what locations and which axes have soft limit barriers or not. Much like a physical over travel limit switch would do, except with numeric values relative from machine home that if crossed, would cause either an ESTOP or else a user-defined set of actions to take place. Instead, just stop motion without doing an ESTOP. You can even prevent it from stopping so that it takes only the action listed in the SOFTLIMITS.FIL file using the CONFIGLIMITS D command (not valid on some motion card models). If any of the Soft Limit boxes are not given a value and left set at 0, then no soft limit actions will occur for that axis. There is a SOFTLIMITS.FIL file so that the end user can define the actions and messages that will occur when the soft limits are crossed in lieu of executing an ESTOP. Otherwise, if there are no instructions given inside the SOFTLIMITS.FIL file and the file is blank, then an ESTOP will occur. The purpose of this is to allow Soft Limits to act as a Crash Barrier to guard against jogging or traveling into part fixtures, clamps and/or spinning chucks, etc. During loading of the G code program Soft Limits only presents a warning message that if the movements in this job file were allowed to run, then the line of G code that would have crossed the Soft Limits barrier would display a warning only. This is before Cycle Start is pressed. During execution of the G code program after Cycle Start is pressed a message will display, the machine will stop and the program will abort before the move gets made that would have eventually ended up crossing a Soft Limit. Normally this would never get this far or happen at this stage because the warning message that this could have been a possibility would have popped up earlier before Cycle Start was pressed during the loading of the G code program. This trap is there because if any of the offsets change after the part gets going after Cycle Start was pressed, the system needs this secondary check to prevent a crash. A SOFTLIMITS logic command is provided to allow the user to temporarily turn Soft Limits ON or OFF and/or also refine the parameters and barrier locations.

Q300 What is causing the cursor on my touch screen to drift or center itself?

Answer

(1) Try plugging the LCD screen into a different PC, using a different video card and a different location. This will eliminate two things: 1. That it is not the video card causing this effect and/or 2. It is not the EM/RF noise in the surroundings or from the power source. (2) See QUESTION 385. (3) Another cause is usually just simple static electricity. It could also be any magnet or magnetic field including electrical fields or electric noise in the shop. We had one gentleman find out that it was the static electricity from a sweater he was wearing. Grounding the screen itself is a good idea but may not be the only source. When dealing with PCB circuit boards, we use wrist bands that ground us (the person). If we do not, you can actually see a blue arc when our finger touches the circuit board. The static charge is so strong when we rub our feet on the carpet that it will damage the chips. (4) Air Compressors, Arc welders or any large electrical unit in the vicinity (even a cordless phone or some cell phone reception in the building) can make the screen flicker, go wavy and/or jump around. (5) It has also been found that sometimes the metal frame of the controller unit where the LCD is mounted against is applying pressure to the LCD. IMPORTANT: Plug the UPS into an outlet that does not share a circuit with a heavy electrical load and check to be sure that the wattage rating of the UPS is powerful enough to drive all of the devices that are plugged into it.

Q301 How do we customize the TOOL PARAMETER Screen?

Answer

You may customize the parameters and titles in the CNCTOOL.INI file located in the C:\AS3000\INI folder as needed. Here are some sample settings. NOTE 1: Any setting left blank uses the default for the particular machine type you are in. NOTE 2: Spacing is significant in the title bars to correctly position the captions. (The example below does not depict the correct spacing because it cannot be accurately conveyed in a printed format.) [FORM] TOP= 330 LEFT= 270 HEIGHT= 5280 WIDTH= 10215 PHOTO= C:\AS3000\BMPWAV\FLY.BMP AXIS1=X AXIS2=Y AXIS3=Z AXISTITLE=Tool Parameters Size Horz Vert Height Wear Custom1 Custom2 OFFSETS= Machine Offsets X Y Z 4 5 6 7 8 TOOLDEF= Tool Definitions (Solid Mode Only) Corner Bottom Side Length Type radius angle angle

Q302 Why are there two Z homes?

Answer

This is a common topic originating from the early days of CNC and there are standards to go by. The confusion is typically always for the same reason, which is that there are really two separate Z0 homes. The physical Z axis home switch is typically all the way up, where at this point the Z axis machine home is 0. The Z axis machine home never changes and it is this Z0 machine home where all internal references for axis position are made from when using tool setting blocks, tool changers, probe lengths, etc. The top of the part’s surface is also the Z axis job home as Z0. The job home changes from part to part and floats as necessary along with the other user- defined offsets. All G code Z coordinates are referenced from this Z axis job home. Each tool length is commonly set from this Z0 point so that as tools vary in length and/or the part changes size, the job home is a constant at Z0. The end result is that you always know that if a G code program calls out a Z-, that it is cut into the part and that all Z+ moves are above the part. Hence if a Z-.123 is issued for any tool number of any length, the end result is that the depth would be -.123 into the part.

Q303 Can you explain the proper usage and differences in G43 and G44 offsets?

Answer

While G43, G44 and G49 have been around for a many years, it is an advanced function for some people to grasp and harder to keep track of since a few companies use these G codes with some variations. The industry standard is G43 Z# H# (example G43 Z1.123 H7). This example adds 1.123 to the current tool length offset number from the value entered in tool 7 on the Tool Parameter screen. Meaning if you are using tool number 1, now you can effectively add the tool length offset from tool 7 as well (same as offset # 7). The standard G43 or G44 does not move the machine in Z on this line. No movement. Rather, it just adds an extra offset the next time that a line commands an axis move by this amount to the Z. G49 cancels G43 and G44 offsets. If you want our advice to make this simpler, delete the G43, G44 and G49 line from the posted G code program. It just adds another offset on top of the existing offset which is optional. Instead, directly enter the tool length offset desired right on the Tool Parameter screen for each tool number in the Height box. Hence, when a T code is seen in the G code program, the tool parameters will automatically load all the offsets for that T# including the tool length offset. No need for doubling up on offsets.

Q304 How can we get more display boxes or buttons?

Answer

As an alternative to display boxes some people use a LABEL to create a large box to display a list of data using Carriage Returns to separate the lines. This allows rows or a large list of data to be displayed. There are centering, left and right justified parameters that are available with the LABEL command. For both DISPLAYs and BUTTONs, the ORGANIZE command allows you to set up fonts, colors, captions, bitmap images, change box sizes or relocate them. The MANAGE command allows you to reuse groups of BUTTONs and/or DISPLAY boxes for different purposes based on what mode you are in. For a more advanced method you can create a new screen using VB or C++. There is a CamSoft.DLL (API) that lets a programmer send commands to the controller or get data from the controller from a custom user interface.

Q305 Where do Softlimits locations come from?

Answer

You can treat Forward softlimits as positive travel direction moves and Back softlimits as negative. On a mill XYZ+ positive moves are tripped by the Forward softlimit and XYZ- negative moves are tripped by the Back softlimit. On a Lathe Z+ travel direction is tripped by the Forward softlimit, Z- travel direction is tripped by the Back softlimit and the extent of the furthest X travel traps the Forward softlimit. X0 or spindle centerline is the Back softlimit. Note: When defining the Back softlimit on a Lathe, do not use 0 exactly. Perhaps enter -.25 because X0 is a legal and often used dimension to travel to. Softlimits are purposely called Forward & Back to keep the terms generic between machine types. Besides, if a negative GEAR value is used or the wiring polarity to the motors is backwards, then Forward & Back softlimits would be reversed as an exception. On a Mill you may select any corner of the table to home to — the top/right, the bottom/ left, etc. Wherever the home switches are mounted is good. Just keep in mind that the dimensions you enter in are from the MACHZERO location. The Softlimit positions you are entering are always in inch/mm from the Machine Home coordinate system rather than the part or job home. Part or job home on a mill floats with the vise or material whereas part or job home on a Lathe is usually Z0 at the part face and X0 on the spindle’s centerline. On a Lathe where the turret is homed at 0,0 in the top/right corner, use the Forward 1st (Z) softlimit and 2nd (X) softlimit to set up the softlimits behind the turret. You may also setup softlimits at or on the turret home or else even in- between the turret home and spindle as long as you enter a larger value for the Forward softlimit and a more negative value for the Back softlimit. Meaning the Forward softlimit is tripped at the rightmost travel location and the Back softlimit is tripped at the leftmost location (closest to the spindle). However the turret on a lathe is not always homed in the top/right corner. Or there may be 2 turrets – one coming from underneath or above or at an angle. These are cases of other exceptions. If the spindle (chuck) is not on the left side of the machine, then this is an exception as well. As a general rule where a single turret lathe is homed in the top right corner and the spindle (chuck) is on the left side, then the Forward softlimits trip on too much positive travel and the Back softlimits trip on travel too far in the negative direction. If there are any exceptions as listed above, these may reverse the Forward and Back rules. There are G codes for moving the machine to safe clearance locations or tool changes. The typical G code call is G50. However, by some standards G50 is also used for setting the maximum spindle RPM. How G50 works on your machine is determined by which routine you enable. Remember G50 codes are always optional. See MACRO.MAC [[G50 LATHE MAXSPEED]] and [[G50 LATHE OFFSETS]]

Q306 What causes random unwanted motion, incorrect shape cutting and/or inaccurate positioning?

Answer

The explanation below covers all related problems for any of these symptoms: Cutting a bad or incorrect shape or profile, Shape not cutting as programmed, Unwanted motion and Run-away or inaccurate positioning. If you have already ruled out servo tuning, loose tolerance settings, programming errors, tool run out, tool deflection and wiring problems including grounding crossover or shorts, then there are only two other possible reasons. Before you proceed with any test below, cut the same part at a very slow federate to rule out something as simple as the cutter (possible flutes) pulling on the material so the part is bending under pulling and tool pressure. If your machine design uses belts/gears as linkage, then start at (1). If your problem gets worse at higher cutting speeds, then start at (1). If you are using encoder feedback and the encoders are mounted on the back on the motors, then start at (1). If you are using encoder feedback and the encoders are mounted on the ends of the lead screws, then jump to (2). If your problem is random, then jump to (2). (1) The encoder feedback sees (thinks) the shape is being correctly cut. When the motors spin, the encoders spin with it. The unwanted motion and inaccurate shape must be because there is some mechanical slippage in a belt or gear happening afterthe motor linkage or directly at either the motor or encoder shaft couplings. This makes the most sense when the problem gets worse at greater speeds. Or else it could be: (2) Electrical Noise and Servo motors. A typical symptom of this problem is that the motion card received false, missed or intermittent counts, resulting in random unwanted motion and/or inaccurate positioning – where random is the keyword here, which in turn eliminates most reasons due to improper settings set in software. The controller board closes the servo and position loop tightly every 62 millionth of a second. By doing so the control will not allow the axis to travel outside the tolerance. The control automatically corrects for position error or else stops the machine and displays an error message. This tells us that the control thinks the axis is correctly cutting the shape and positions to the location it was commanded to move to within tolerance. Example (A): An encoder may have a long cable that acts as an antenna, which picks up noise from its surroundings. Example (B): Noisy power directly supplied to the encoders. Example (C): For amp drives that send simulated encoder signals, check the power source for EM noise that originates in the power supplying the amp drives. Solutions: We suggest that you contact us to go over and rule out other possibilities first. If necessary, we will send you a PDF file to look at entitled: "Encoder-Optical- Isolator_Module.pdf". This module has been used by other customers of ours to isolate, clean up and boost the encoder signals. Others have mentioned this same problem and used these modules on their machines because of huge noise issues generated with their power supply. They only cost about $100 each. You will need one module for each encoder. Noise is hard to track down. See QUESTION 385.

Q307 How do we automatically repeat a program a fixed number of times?

Answer

There are two ways and each way requires programming techniques rather than a setting to enter. The two techniques are: (1) Add a variable counter in the MCODE.FIL file in M2 or M30 so that if the counter is less than your "number of times to repeat" value, then issue a REWIND command followed by an EOP. (2) Place the entire G code program you want to repeat in a subroutine and make a new Main G code program to call it. Example showing a main program calling subprogram N100 entered as P100 for 3 times entered as L3: * M98 P100 L3 M2 N100 G0 X0 Y0 X1 Y1 X0 Y0 M99 IMPORTANT NOTE:When using CNC Lite or CNC Plus, replace the N100 in the G code program with the Letter O and block number such as O100. This is the letter O not the number 0. Refer to M98 and M99 for details on usage. For CNC Professional users the codes used to call a subprogram and repeat it X number of times are user configurable to any letter. Even the technique can be customized to fit your needs and style.

Q308 Why isn't my feedrate changing?

Answer

The F code in the JOB file will change the feedrate. The slider bar does allow the commanded feedrate by F code to vary as high as 150% to 200% faster or down to 0% or stopped. One of the reasons could be that the RAPIDSPEED settings are holding the F code feedrate back. There are RAPIDSPEED settings for each axis. The RAPIDSPEED is the maximum travel speed (feedrate) allowed for that axis. When moving the axis in a coordinate move (X,Y,Z) together, the travel speed will be limited to the slowest axis (lowest RAPIDSPEED value). Set the RAPIDSPEED values higher. One of the other reasons the feedrates may not be the same is that there could be either different RATIOs or RAPIDSPEED values entered differently. Also set the ACCEL and DECEL rates higher. When the feedrate is increased by the F code, the rate of change in how quick the new feedrate gets to full speed (accelerates) is governed by the ACCEL Value. The same applies to slowing down to a new F code that is lower. The DECEL rate governs how quick the machine slows down (decels).

Q309 I can't get my button to show my new bitmapped image.

Answer

The most common reasons are: (1) You must not have the Controller’s Operator’s Screen running at the time you set and saved the new image. The image is only read when the controller starts up. (2) The height and width of the image does matter. The image you select can not be too much larger than the button size. (3) You should use the DESIGN OPERATOR INTERFACE button on the main CNCSETUP window and then select USER DEFINED BUTTONS. Next, select a specific Button Number and enter the filename in the long green box provided. Do not include a folder name. Only enter the bitmap image filename. Copy your bitmap image into the BMPWAV folder so the controller can find it. (4) The button you're assigning the new image to may have a BUTTON command parameter that wipes out or overwrites your bitmap image filename. For example, if you are using button number 1, then there may be a command in the CBK file called BUTTON1. Look for this using a plain text editor like Windows NOTEPAD (not Microsoft Word). If you find the BUTTON1 command being used, see the 4th parameter. The 4th parameter after the BUTTON command is the new filename of the bitmap image. It may have another file name writing over the one that you gave in DESIGN OPERATOR INTERFACE or else it may be blank, which erases your filename. You should enter the filename of your bitmap image in the 4th parameter.

Q310 Can you briefly explain the Offset and Homing buttons on my screen?

Answer

Keep in mind that your operator screen may be slightly different than what we are explaining here because we often copy or plagiarize settings, files and screens from previously made similar machines that were designed by some of our dealers that are a better fit than the default operator screen. When you change out of DEMO mode into the real machine mode for your motion card model type, the first thing to do is to open the Diagnostic screens to tune the motors. If you have stepper motors or even servos that use pulse & direction signals, there is no need for servo tuning. After tuning, do a TEST MOTION on each axis with the checkbox titled "Coordinated Move / Error Checking" unchecked. Then after each test passes, do the same TEST MOTION with the box checked for error checking. In the white box next to the TEST MOTION buttons you will see a report of what is happening. You will be all set unless there are any red error messages showing up. If there are errors, you may be able to figure out what happened yourself by what it reports but if not, you can e-mail CamSoft or your dealer the LOGFILE.FIL file that automatically will be made. The "Preset X", "Preset Y" and "Preset Z" buttons give you the ability to individually set the axis readouts position for each axis to the value entered in the green PRESET VALUE box. The most common value is 0 to zero out the readout. There is no Y axis on a Lathe or there may be more PRESET buttons if you have more axes. The PRESET buttons are not fixture offsets. These are additional axis offsets that get added onto fixture offsets G54-G59. Fixture offsets are entered on the Tool Parameter Screen. To use fixture offsets in your G code program enter G54 thru G59 into the G code program when you want to use them or a G53 to turn them off. The F11 button "Set Home" is different because it sets all 3 axes at the same time to all zeroes instead of individually. F12 button "Home Axis" causes the machine to go seek out the physical home switches and set them to home zero. Some call this their referenced position. Homing the machine to the referenced position is normally first done when you start up the CNC before anything else. Some people skip this step each morning because they float a part around the table. They place the part anywhere they feel like. Then they either use an edge finder, dial indicator or eye ball a portion of the part they would like to call zero "referenced position" and press the F11 button "Set Home" to call this location the home. Review the [[HOME MASTER]] macro in the MACRO.FIL file. This is the default homing routine. However, you will find many more homing routines of every type for different machine types in the MACRO.MAC file that you can select. There are easy to understand settings at the top of the homing macro with notes that allow you to enter travel directions, homing speeds, which axis to home or not and optional homing techniques for finding index markers on encoders or scales and/or to hit the home switch once or twice. Options for 3-axis machines may be that you may want to enable the 3rd axis Z for automatically homing rather than using the PRESET button to jog to and call home. Also, optionally you can replace this macro with one made for Gantries found in the MACRO.MAC file if you have a Gantry style machine that uses 2 motors, one for the left and one for the right side of the gantry. Also, to set tool lengths or tool heights for each tool number for non-lathe machines, enter the tool number in the green box TOOL SET NUM and jog down in Z to the top of the part and then press the F5 "Set Tool" button. This will automatically plug the tool length into the Height box on the tool parameter screen for each tool you do. This way the top of the part will be Z0 despite the tool number used or tool length. A Z- move is always into the part and a Z+ move is always above the part. There is other advice found in this manual for setting Lathe tools.

Q311 What homing choices are there for Gantry style machines?

Answer

If you have a Gantry style machine that uses 2 motors, one for the left and one for the right side of the gantry, then continue reading. If your gantry only has one motor that connects the left and right side physically together with a drive shaft, belt or screw, then there is no need for the advice below. Optionally you can replace the default [[HOME MASTER]] macro with one made for Gantries found in the MACRO.MAC file. If you leave the default [[HOME MASTER]] as your homing routine, then when you press the F12 button "Home Axis" button, it will move the master and slave axes together and home the gantry to the master's axis home switch. The alternative would be to replace this with a macro named [[Home Gantry 3 axis]]. There are also other gantry homing macros with other names in the MACRO.MAC file for 2, 4 and 5 axis machines. All of the Gantry homing routines are different because they disengage the master from the slave axis on the last step at the end of the homing routine to separately home the slave axis by itself. You may want to do this to get better accuracy and re-alignment of the slaved axis to its own home switch. You may not want to do this because it may not be necessary if your gantry is already tight and aligned good now. Moving the slave axis alone where only one side of the gantry moves and not the other side could make the gantry alignment skewed too much and cause it to bind. Generally, unless you have problems with the gantry becoming misaligned, it is best to use the default homing routine that keeps the master and slave axes moving together at all times. These routines are user configurable so they can be changed as needed. There are 2 motors on a machine with a Gantry. They are called the Master and the Slave – one for the left size and one for the right size of the gantry. When it comes to the Slaved Gantry axis, you have a choice to either tune the slave motor or not in cases where the slave motor is the same brand and size of the Master. If they are the same, you may enter the same servo tuning values you got for the master axis into the SETUP command parameters for the Slaved axis. You will see a macro called [[Gantry Mode On]] in the MACRO.FIL file. The SETUP command will be in there. Tuning of the slave motor is required if the master and slave motors are not of the same brand or size. If you choose to tune the gantry motor separately just because it may be a good idea anyways, then enter the logic command SLAVE 0;0;0 into the long green box on the Diagnostic screen. This is the window where you will find the servo tuning buttons. This will disable the master slave union so that the master and slave motor will move independently. You may want to un-slave the gantry when you tune the master axis as well the first time, even decouple the motors from the load until you are sure that it will not run away.

Q312 What speed and accuracy could I realistically achieve using a Stepper motor?

Answer

Provided by example shown below. Example: The theoretical accuracy would be.0005 resolution. Where:.0005 is based on 400 steps per rev using a 5:1 screw pitch meaning that it takes 2000 steps to travel 1 inch. You can calculate the resolution of each axis by dividing by the number 1 (.0005 =1/2000). The theoretical speed would be 3,000 IPM where an external box running separately and independently of the Windows CPU using its own DSP processor to generate the pulses (steps) and direction signals, which is key to its success, could send 100,000 pulses per second or 600,000 pulses per minute. So theoretically 3,000 IPM=(600,000/2000). In reality a stepper motor must take off from a dead stop and ramp up to speed (accel) and do the same thing when stopping (decel) or else the stepper drive ignores the steps under stress and drops them thus causing accuracy mistakes. The same applies to a stepper (not servo) when the rpm of the stepper increases. In all stepper motor (RPM vs. Torque) charts the motor’s torque (power) drops off like a water fall. The faster you travel the greater the risk of accuracy mistakes and having the motor stall out completely. Realistically you could hold.0005 accuracy (under ideal mechanical conditions) if you keep the speed between 60 to 600 IPM. The range is so wide because the real speed 60 or 600 depends on how well the motor is sized to move the amount of weight / load / inertia the application has. All stepper motor torque charts rate Torque in Oz/In, Lb/In or Nm of HOLDING torque. Holding torque is when the motor is not moving or else how well it holds position. As soon as the motor spins, the torque drops. If the move meets any mechanical resistance such as weight/load/inertia, then this also dampens the ability to move. The end result is if you over size the torque of the stepper motor and say to yourself: “I realize I will have to be gentle on acceleration and deceleration moves and that higher travel speeds will be limited to (rapids) non-cutting, positionable moves and then I will get the benefit of the higher 600 IPM speed.” There is also another speed consideration that is not motor related and that is if the software and hardware you pick can crank through the G and M code fast enough to keep up with the programs you are running. This only shows up on programs that have hundreds of very short, small moves like splines.

Q313 Can you explain how ARCFACTOR, TOLERANCE, PLANE and MATRIX affect G2 / G3 arcs?

Answer

1. The only internal command necessary to make a G2 arc for a 3 axes mill/router is: CW x;y;z;i;j;k Use CCW for G3. Either G2 or G3 can add up to 8 axes of coordinated motion while swinging the arc. Add as many axis call out letters you choose up to 8. The 4th thru 8th axes can be linear or rotary motion and will coordinate with the arc being swung but only the first 3 axes will swing an arc. CW x;y;z;i;j;k;a;b;c;u;v The i;j;k being the arc's pivoting center. All 3 i;j;k values are required to make a 3D arc. Lathes typically use a different format. See the LATHE-PC.CBK default file. 2. A single CW or CCW command alone is enough to cut a standard 3D arc, arc on a canted titled plane, helix or spiral based on the mathematical values entered. The "G17" PLANEXY, “G18” PLANEXZ or “G19” PLANEYZ commands automatically flip the arc on edge. The MATRIX command will also tug, pull, twist, stretch and tilt the arc. 3. The CW and CCW commands are also influenced by how many encoder counts or steps were defined in one unit (inch or mm or degree). 4. The ARCFACTOR setting plays a role in the fineness of the sine/cosine algorithm. The bigger the value, the finer the arc smoothness. However, at some point where the internal sine/cosine formula generates numbers smaller than one whole encoder count or step move, it will have no affect on accuracy but can greatly affect the feedrate and smoothness on how the arc cuts since the extra code being sent to the motion card will bog it down. Increasing the ARCFACTOR will not produce math errors, does not have an accuracy benefit and may even slow down the cutting speed or produce a stop & go, rough jittery cutting surface finish if the motion card can't process the extra data as fast as you are cutting. Today's computers are able to mathematically calculate high ARCFACTORs very fast depending on the Windows version, CPU speed and how busy the PC is doing other things somewhere on average between a setting of 100 to 1000 (where the default value of 300 creates a 0.0002 scallop height and 1000 is less than a 1/4 micron). When the accuracy of the ARCFACTOR value exceeds the distance by one whole encoder count or step that can be achieved based on the quality of the position feed back hardware you are using, then no extra accuracy benefit is seen. Rather a degradation of cut quality and cutting feedrate will outweigh the benefit. 5. If the TOLERANCE is set larger than the amount greater than the depth of each helix or spiraled depth cut, then the values being passed may not create a spiral but may instead create an arc on an ever so slight tilt on a canted plane in minutes or seconds of a degree, which could build up if repeated.

Q314 Can I save different bitmap images in different folders to change the look of my operator interface?

Answer

Yes you may if the new folder is a subfolder off of the BMPWAV folder. For example, when entering in a bitmap image name to replace the default bitmap, add the subfolder name to the front of the bitmap filename in upper case text like this: \MINE\BUTTON.BMP You can use this method in the optional bitmap fill-in-the-blank boxes on the DESIGN OPERATOR INTERFACE screen or enter a new bitmap image file name plus folder when hard coding logic commands. IMPORTANT: When entering the folder and filename on the DESIGN OPERATOR INTERFACE screen, use the \ character for the path separator but when hard coding the folder and filename into logic commands, use the / character so the system can tell the difference between a variable and a folder name.

Q315 Is there a way to display 100 variables on the screen?

Answer

Create a tall LABEL. Take one variable and keep adding more variables strung together with Carriage Returns in-between them. Use the HEXCHAR logic command to save a Carriage Return. You then use this one variable to display all of them in the LABEL. Here's an example of 5: \401=DATA 1 \402=DATA 2 \403=DATA 3 \404=DATA 4 \405=DATA 5 HEXCHAR 0D;\499 \400=\401\499\402\499\403\499\404\499\405 LABEL1 \400;10;TRUE

Q316 How can we show a flow chart of our process on the screen and have the user interact with it?

Answer

Four methods are explained below: 1. If you want to make an attractive "full screen" filled with images of fluid tanks, pipes connecting them with images of pumps, valves with handles, etc, you could fill up the whole screen with a giant background bitmap image using DESIGN OPERATOR INTERFACE on the CNC SETUP window under "Main Screen Background" in the box titled "Filename for a bitmap graphic picture". IMPORTANT: You can follow a few self-guided exercises titled "Design Operator’s Screen Exercise" located in the "DESIGN OPERATOR INTERFACE" section in the CNC Professional manual. 2. If you only want to have a portion of the screen for the user to interact with, use the PICTURE command. The PICTURE command allows you to locate a bitmap image of any size where you want to display it. By using the optional 4th and 5thparameters of the PICTURE COMMAND, which are the X,Y coordinates of where the user is touching the screen with their finger or the mouse is clicked, your logic can tell where the user clicked or touched within the picture. For example, you could make a group of buttons, which are really just collections of bitmap images, within one giant picture. When the user touches or clicks on the PICTURE, the variables in the 4th and 5th parameters recognize and report the X,Y location. If you had rows and columns of button images shown, you would then run down a "look up table list" that mapped the location of each button on the image using IF THEN commands. When there is a match of X,Y coordinates within the Rectangular or Square region of the button as reported in the variables of the 4th and 5th parameters, then you would take action or jump to a macro after the IF THEN command. 3. You could place regular buttons on the screen pasted over the bitmapped background image and when a regular button is pressed, it would jump to an M code that uses the QUESTION logic command to gather user dimensions or data info into variables. Perhaps the button would be titled "Enter Length Bend Rotation Spring Offset" and with the QUESTION logic command prompt the user enters one offset at a time. The previous offset entered for that offset number could be automatically displayed as the default answer. This way he can skip past the questions that don't change. 4. The most flexible method, but also the most advanced method, is to create a VB,.NET or C++ sub screen off to the side to list and show all the buttons or boxes at once. Use the CamSoft.DLL to communicate from your exe program to CamSoft to pass data, numbers and/or execute any CamSoft logic command directly from your exe program.

Q317 How do we adjust the gain settings on our drives?

Answer

The advice below generically applies to Servo drives, Spindle drives (VFDs or Inverters) or all types of amplifiers since most brand name models are different. This usually does not apply to stepper motors or the servo tuning done in software on the Diagnostics screen. To adjust gain settings on the drive itself you first need to find out which of the three methods your drive uses. On some models of drives sometimes these are pots you turn with a screw driver, other models use an LCD display with buttons and arrow keys that show a menu or on other models the gains must be set on a remote laptop PC connected to the drive via an RS232 / Serial port. The gains settings are adjustable trim pots that set: (1) COMMAND SIGNAL (also known as REFERENCE SIGNAL) sets the acceptable voltage range for the input signal. The best range is a full 10 volts, any less than 10 volts will limit or ignore any commands from the controller given above this range. (2) BALANCE (also sometimes called OFFSET) which stops the motor from drifting or creeping in one direction or the other. One use is to counter gravity on a Z heavy head that is not counter balanced with a weight. (3) DEAD BAND is the voltage range that ignores low-voltage command signals. For example, you would set the Dead Band to ignore any small voltage under.001 so the motor will stay steady to prevent oscillation, vibrating or shaking. (4) CURRENT LIMIT (also known as CL, Max signal command limit or Torque limit) will set a voltage cap on the input signal to prevent any voltage signal that is given over a certain value from being used, thus ignoring that voltage above this to limit the torque of the motor. (5) POWER GAIN or Amplitude Gain also limits voltage, but instead of limiting the input command signal, it limits the high-voltage current output to the motor itself. We have an AMP TUNE feature on the Diagnostic window next to the SERVO TUNE button which walks you through a procedure that interactively assists you in setting the gain settings on the AMP DRIVE so it won't fault. Depending on the manufacturer, sometimes these settings are simple screw driver turn pots and sometimes they are either push buttons directly on the amp drive read through an LCD or else they must be plugged into a cable connected to a PC to set them. This amp tuning feature on the diagnostics screen will step you through what gain settings to change higher or lower. You will have to pay close attention to the terms used. Some foreign manufacturers have different "words" for the terms dead band, balance, offset, gain and bias. What we are saying is that because the "words / terms" may or may not be different, you will need help from the spindle drive manufacturer to interpret their wording. Before you begin ask the manufacturer if they can email you the manual on setting these spindle settings. If need be, ask if there is a factory rep in your area that would come over and help you.

Q318 What do we do with the Z axis Brake on the motor?

Answer

There may be nothing extra you need to do. How the brake is wired now should be left "as is". Normal operation of a brake is that when power is applied to the amp drive, it is also applied to the brake. The brake automatically closes when there is no power. When the machine is on and not in E-stop, there is power and the brake opens to allow the motor to spin but if something bad happens or when the machine is turned off, the brake is automatically applied so the Z doesn't fall under gravity. Otherwise, when the machine is on, it is the servoing "closed servo loop" that holds the motor in place and moves it as an axis. As an alternative, you can always use a relay (usually 24V for a brake) to physically open/close the motor's brake with an #I/O output command in the STARTUP.FIL, SHUTDOWN.FIL and ESTOP.FIL files.

Q319 What are my Amp Enable signal choices upon Start Up?

Answer

There is no right or wrong way to jumper the AMP ENABLE pins from the motion board’s point of view because the motion box / card does not care. Use the jumper setting based on what the amp drive wants. Each Amp Drive brand and motion card / box model is a little different. There are several Amp Enable Jumpers / Command possibilities. The goal is to match the amp drive with the settings on the motion box / card. To do this you must have the manual on the amp drive and find out what it wants voltage wise and also if the amp turns on when the signal is either high or low. Then refer to the motion card manufacturer’s documentation on the CD in a PDF file for the setting choices so they can be matched. Normally settings are a simple choice of choosing between adding or removing jumpers so that the Amp Enable signal will be either normally high or low upon start up. The other choices are voltage related or if the amp sinks or source its voltage signal. In any case the motion box / card can be set to what the amp drive wants. We would rather have you use the logic command MOTOR ON or MOTOR OFF rather than Native motion card / box commands, such as MO or SH, so the CNC knows if the motor is on or off. The MOTOR command allows you to force the AMP ENABLE signal on or off. Usually this is done in the STARTUP.FIL file so using MOTOR ON in the STARTUP.FIL file is common. If the AMP ENABLE was on, it will still be on; if it was off, it will then turn on. However, in some cases some amp drives turn on when the signal is absent and turn the drive off when it gets voltage. If the amp drive documentation is not clear, it is best to contact the amp drive manufacturer since there are some odd methods used by some companies. If you contact the motion box / card manufacturer, they will ask you how the amp drive works; therefore, it is best to first find out what the amp drive wants. Some people prefer to start the machine with the AMP ENABLE signal off and then when the machine is fully powered up, use MOTOR ON or else a digital relay I/O (if high voltage is required) to enable the amp drives. Other people believe that the amp drives should be turned on right away because when the Z axis is not counter balanced, their head would fall under gravity if there was no brake. Even if your amp drive documentation is not clear and now that you know that you have control at the motion box level using the jumpers or else using the command MOTION ON or OFF to set your preferences, you should be able to try only a few ways to see what works for you. As long as the OVERTRAVEL LIMITS are not being tripped to cancel your setting choices, you should be fine.

Q320 My Servo motors are not moving.

Answer

How can I find out why? (1) To start with make sure your Amp Enable signal connections are connected from the terminal strip or motion box to the Amp Drives. See QUESTION 319 — What are my Amp Enable signal choices upon Start Up? (2) If the Amp Enable signals are connected and working, then make three LOGFILE.FIL files as described below and review the history in them for explanations and suggestions. If you do not know how to read the History in the LOGFILE.FIL files yourself, please send them to your dealer or CamSoft. (3) Enter the DIAGNOSTIC screens. For the first LOGFILE.FIL file we will turn the motors on, set a feed rate and try to move the 1st axis using a MACHGO command. When it does not move, hit the button titled "Why Am I Not Moving" and send us this LOGFILE.FIL file. In the long green box on the DIAGNOSTIC window enter MOTOR ON:FEEDRATE 100:MACHGO 5 (4) For the second log file exit the program completely and re-enter to reset any errors. On the DIAGNOSTIC window uncheck the box "Coordinated Move / Error Checking" and then check the box "Make Test Move in Rapid Mode". Next, press the button to "Select Axis for Motion Test" for axis number 1. Explanations and suggestions will appear in the White Box next to the test. You can also send the LOGFILE.FIL file of this Motion Test to your dealer or CamSoft. (5) For the third log file exit the program and re-enter to reset any errors. Repeat the test described in item 4 above on the DIAGNOSTIC window with the only difference being that this time you check the box "Coordinated Move / Error Checking". (6) If you do not notice any physical movement on any of the motors nor see any changes in the axis readouts, stop here and re-check the wiring connections to the motors themselves and also from the terminal strip or motion box. Test the motors on a separate system to rule out servo motor, amp drive or power supply damage and then go back to step (1) to go over the choices for Amp Enable signals again. (7) There are only a few reasons for the encoders to see movement or for the motors to physically move slightly. Let's go down the list one by one. (8) Since the system is set up as a coordinated axis system, any movement on one of the motors, such as X, automatically will be stopped if one of the other motors is Out Of Position by an amount greater than the Tolerance entered. This could be caused by Servo Tuning or else one of the motors is slightly drifting, vibrating or falling under gravity. Send your dealer or CamSoft your comments below even if they seem redundant. (8A) Have all axes been successfully Servo tuned and the PID values entered into the CNCSETUP window? Your Comments: (8B) Do you notice any of the axes physically vibrating, drifting or oscillating? Your Comments: (8C) Do you ever notice that the axes readouts show changes in the axes positions even when the motors are not physically moving? Your Comments: (9) When you did the Servo Tuning on all axes, did each axis reach the end of the Servo Tuning test with success? Your Comments: (10) If any of the motors are physically vibrating, drifting or oscillating, then the problem is either servo tuning or amp drive gain settings. On the DIAGNOSTIC screen enter this command: MOTOR OFF (10A) If the motors stop vibrating, drifting or oscillating, then you should run the Amp Tuning Test on the DIAGNOSTIC screen to tune the Gain Settings on the Amp drives themselves. Your Comments: (10B) If any of the motors are still vibrating, drifting or oscillating, then you should run the Servo Auto Tune on the DIAGNOSTIC screen to tune / adjust the PID settings. Your Comments: (11) On the DIAGNOSTIC screen re-enter the command you did above in Step 3 and tell us what you see. MOTOR ON:FEEDRATE 100:MACHGO 5 (11A) How far did the 1st axis move? Your Comments: (11B) Do you see any physical motion on any of the motors? Your Comments: (11C) Did any of the axis readouts change values? Your Comments:

Q321 We are having trouble servo tuning our Velocity drive amplifiers.

Answer

How do you tune these? If you DO NOT have Velocity mode Servo drives (rather, you have Steppers or Servos amps that run in TORQUE or CURRENT mode), then skip this question. (1) The first thing to do is place the amp drive into TORQUE mode (by using dip switches, jumper or button settings on the amp drive itself) and then use the SERVO TUNING feature on the DIAGNOSTIC screen to go about servo tuning as normal and skip the rest of the advice below. (2) If you cannot switch the drive into TORQUE mode, then only use either the BASIC AUTO TUNE feature on the DIAGNOSTIC screen to tune Velocity mode amp drives or the Manufacturer’s Servo Tuning program. (3) If servo tuning still fails, then on the DIAGNOSTIC screen enter the command: MOTOR OFF If any of the axis readouts are changing values or the motors are physically vibrating, drifting or oscillating, then the problem is not the software servo tuning values. Instead, it is due to amp drive gain settings on the drive itself. You should run the Amp Tuning Test on the DIAGNOSTIC screen to tune the Gain Settings on the Amp drives themselves until the motors and axis readouts are steady. Do not go on until they are steady. (4) If after trying both the BASIC AUTO TUNE and also using the Manufacturer’s Servo Tuning program the servo tuning still fails, then the drive amplifiers still may not be in TORQUE mode. This would mean the drives are trying to be in control and compensate thus overriding the software PID signals. A way to test if the "1st axis servo drive" is still trying to compensate or else override the software PID signals is to enter the following commands in DIAGNOSTIC with the motor disconnected from the ball screws: 1. MOTOR ON 2. SETUP 1;0;1000;0;0;0;0;Y 3. ANALOG1.5;OUT Tell us what type of speed is observed. For example: 3A. Are the readouts changing? 3B. Is the 1st motor spinning at all? 3C. Is the 1st motor spinning really fast or slow to moderate RPM? 3D. Does the motor spinning and readouts seem smooth at a constant rate? (5) ANALOG1 1;OUT Tell us the same three things as 3A, 3B, 3C and 3D in Test (4) above. (6) If the motor is still not spinning after 1 volt, adjust the gain settings on the amp drive. Each manufacturer calls the setting names a little differently but the normal gain settings names are: 6A. DEADBAND — This allows small voltage signals or electrical noise to be ignored under a certain voltage. For example, ignore voltage commands under 1 volt. Keep decreasing the Dead Band gain and repeat Tests (3 & 4). 6B. C/L or Current Limit — This is the voltage range to work within. For example, accept signals at a certain volt range. Turn this gain pot to increase the C/L limit and repeat Tests (3 & 4). The desired range would be a full -10 to +10 volts or else 0 to 10V for some motors. (7) ANALOG1 2;OUT Set the voltage output to 2 volts and tell us the same three things as 3A, 3B, 3C and 3D in Test (4) above (8) If after 2 volts in Test (7) is given and the motor is still not spinning, keep increasing the ANALOG command voltage to 3, 4, 5, etc. and let us know how much voltage it takes to make the motor spin. For further information refer to QUESTION 317.

Q322 Our glass scales have distance coded marks.

Answer

Can we use these to home to? The term "reference mark” or “distance coded marks" usually means markers that send INDEX signals (sometimes labeled Z+, Z- or C+,C- or Index +/- on an encoder or scale) every 20mm or so. The motion card will see these and home to them, but you will still need physical home switches as well because the motion card will travel to the nearest 20mm mark when told to go home. So what everyone does is travel to a physical home switch first then once the switch is hit, command the system to FINDINDEX either forward, reverse or nearest. This way the machine will be very accurate and always find the exact same Index Mark each day.

Q323 What advice is there when a motor runs away?

Answer

We first have to say that you should take this very seriously and you really want to at least diagnose the problem before doing anything else with the machine. There may be a simple explanation or else this is one of those topics that can be hard to diagnose. One important fact when diagnosing these run away situations is to keep in mind that the system has built-in safeguards at board level separate from Windows that will automatically shut down the system making the motors go limp plus disable the amp drives if any of the axes / tables / slides / rams / arms move outside their set tolerances of where they are commanded to be. The very first thing that should be done is check if the unwanted motion is really a run away or else if the axis was somehow commanded to make the move in a logic routine due to an unexpected event, jogged or was given a location in the G code program with consideration taken to hidden offset positions. Creating a LOGFILE.FIL file and sending it to your dealer / CamSoft will reveal if this was the case or not. If not, then there is something mechanically or electrically wrong. If an axis moves outside the given tolerance of where it is commanded to move, the system will instantly go into E-STOP at the motion card level and stop moving. There are ways to open the tolerance and set the threshold value for E- STOP before it takes these actions but all in all, as long as the command POSERROR is not used in your logic and your TOLERANCE is reasonable set, then the focus below is going to rule out the other possibilities. Which Best Describes Your Problem Do you also notice any of these other problems such as drifting, being unstable, making a buzzing sound, oscillating, not staying in-position, becoming jerky, producing a following error and/or inaccurate positioning? If this is true, see (A), (N), (J) below in this order. Just one axis is running away – not more than one at the same time: If you answered just one of the axes, see (A), (B), (C), (D), (E), (F), (G), (H), (I), (N), (J), (K) below in this order. Repeatable — Happens at the same place: If this is true, see (A), (B), (N) below in this order. Using stepper motors rather than servos: If you answered stepper motors, see (A), (B), (D), (E), (F), (G), (H), (I), (J), (K) below in this order. Runs away at machine start up: If this is true, see (L), (M), (A), (C), (D), (E), (F), (G), (H), (J), (N), (K) below in this order. Nth number of parts cut okay and then randomly runs away: If this is true, see (A), (B), (F), (G), (H), (J), (N) below in this order. Solutions and Causes NOTE: If you do not feel comfortable doing the things mentioned below, please contact your installer / dealer and ask them to come in. They will check everything from the programming, logic and electrical & mechanical side as well. (A) Search the CBK file for the POSERROR OFF command and remark it out or delete it and then test the system again. (B) To trap for logic, G code programming or offsets causing the undesired motion you can make a LOGFILE.FIL file of every part until the run away happens again and then send the LOGFILE.FIL file to your dealer or CamSoft. Wait until you here back before you proceed. (C) Double check for reversed polarity wiring on encoder connections A+, A-, B+, B-. If the wiring checks as good, continue to the next solution. (D) Use a volt meter to check for over or under voltage reaching encoders, amp drives or being sent out of the power supply. If the voltage checks as good, continue to the next solution. (E) Inspect the wiring for poor connections, poor wire shielding, ground shield and/or ground short. (F) Remove all possible causes of electrical noise. What we are saying here is simply good practice that should be followed as far as industry standards go. See QUESTION 385. (G) Temperature too hot or too cold. The most common temperature-related problems are due to the electronics heating up. It gets much hotter in an enclosure than you may think, even if it is cool outside in the shop. Open the enclosure doors and place a fan pointing in and place the computer on a table outside the cabinet. Make these changes under the opposite temperature condition and then test the system again before proceeding. (H) Check for moisture, coolant, water or heavy mist in the air being sucked in the vents of the electrical cabinet. The solutions are the same as step (G) above and then test the system again before proceeding. (I) Swap the "amp drive only" of the axis with the problem with one of the others that is working. By only swapping the drive, the encoder and motion command signals for this axis that are coming from the controller will be the same. You will need to re-wire (swap) the motor, encoder and signal wires/cable with another good drive on the same machine. This means that if the problem shifts to the other axis, then the motor, encoder and controller are all good. The problem is with the amp drive. (J) Send the motion card in for us to check here. We can get it repaired if we find it happens on our motors here. If not, then proceed to step (K) below. (K) Replace the encoder and amp drive themselves along with all new cables/wiring. (L) See question QUESTION 156 What is causing my amplifiers and motor to move or jerk when the machine turns on? (M) See question QUESTION 139 Why do my motors run away when I apply power? (N) Your servos are not tuned correctly. See questions:

Q324 What if my machine does not have home switches?

Answer

Not having home switches is okay. There are a few ways to home a machine. (1) If it had scales, you could use the index marker at the beginning of the scale. (2) There is a feature that remembers where the machine was when you gracefully shut down. Then when you start up again the next day, it plugs that location into the internal position registers and axis readouts. However, if the machine shakes when it starts or moves over night, then you will have to home by tramming in an indicating hole using a dial indicator. (3) By default there will be a SET HOME button on the screen. To ensure accuracy in locating the part each day is usually very important especially if you do not finish cutting the part one day and have to pick up again the next day. Saying you can use an edge finder is okay but we do not recommend that. Instead, like in (2) above, the only sure fire method is to have an indicating hole in the table or fixture. Then each day you would tram in this indicating hole using a dial indicator and press the SET HOME button. This ensures day-to-day accuracy without home switches.

Q325 How do I control the spindle?

Answer

Launch CNCSETUP.exe and under GENERAL SETTINGS set the SPINDLE fill- in-the-blank box to the last axis number you have available on the motion card. This will vary a 10V analog signal to the spindle drive. For example, in your G code program the letter S is the RPM speed and M3 is spindle forward: S500 M3 Here is an example of the industry standard M3, M4 & M5 codes in the MCODE.FIL file: LIGHT 4;ON BUTTON1 IN BUTTON2 OUT SAY SPINDLE ON #24=1:#25=0 'Spindle Forward. Change IO number as needed SPINFORWARD SAY SPINDLE ON —–M3 LIGHT 4;ON BUTTON1 OUT BUTTON2 IN #24=0:#25=1 'Spindle Reverse. Change IO number as needed SPINREVERSE SAY SPINDLE ON —–M4 LIGHT 4;OFF BUTTON1 OUT BUTTON2 OUT #24=0:#25=0 'Spindle STOP. Change IO number as needed SPINSTOP SAY SPINDLE OFF —–M5

Q326 How do we apply a brake on our motor?

Answer

To engage or disengage a brake on a motor is automatically done at the amp drive level if you bought the motor with a brake and amp drive as a package from the manufacturer. If the brake is an after-market add-on, then in this case you would use a standard digital relay output. Generally most after-market brakes require a 24vdc relay to open or close them by command. Axis brakes are normally always on when there is no power to the amp enable signal on the drive. They squeeze down and apply the brake either hydraulically or with mechanical springs. When the amp enable signal (Amp drive on / off) is on, this will release or open the brake. This is a function of the drive, no action or programming on your part is necessary. Basically brakes do not require an output to be turned on or off. The amp enable pin on the amp drive is the trigger. No power = Brake ON or closed Yes power = Brake OFF or opened It should be this simple with no delay and if the power is lost or gets cut, then the brake is automatically applied. Your E-STOP can be set up to either disable the amp drive or not, even disengage while stopping then re-engage after stopped to counter gravity. SEE the logic command SETESTOP for details.

Q327 How do we set up an initial Z point for a canned cycle?

Answer

There are a few methods. First we will explain the uses of G98-G99 and G54-G95 then give you a couple of other easy ways to set the initial point in Z for a canned cycle in method (3) below. (1) Using G54-G59 fixture offsets with canned cycles is the same as using fixture offsets when cutting shapes. G54-G59 adds additional offsets for up to 8 axes on top of the Tool, Job Home and Machine Offsets that are already in effect by simply shifting the whole program in one or more axis in any direction. (2) G98 sets a flag \998 in most CBK files. Check how yours is used. Sometimes it is used differently. When making a CBK file, we generally remove the logic for G98 and only set the \998 flag so G98 does not perform unwanted motion and surprises someone. Refer to the MACRO.MAC file for: [[G83Standard]] for G83 Deep Hole Drilling Cycle when the drill needs to retract completely out of the hole to remove chips. [[G83FeedDown]] for Deep Hole Drilling Cycle where rapid motion to the previous depth less clearance has been changed to be feed rate controlled. Also refer to the [[G98 RETURN]] macro below. Here is an example for the GCODE.FIL file: ' Capture initial return point in canned cycles G81-G89. ' Uses the variable flag \998=1 to set the initial Z point. ' Place this macro call [G98 RETURN] at the end of each canned cycle. ' Works in G90 or G91 modes. \998=1 MACHHOME3 \995 —–G98 \998=0 ' Cancel the initial reference point —–G99 Here is an example for the MACRO.FIL file: [[G98 RETURN]] ' See G98 macro and also G90 and G91 for \774 variable assignments. IF \998=1THEN DECELSTOP:MACHGO;;\995:EXIT ' return method of G98 mode in both G90 and G91 IF \774=1 THEN DECELSTOP:MACHGO;;{\995-r} ' return method for G99 in G91 mode IF \774=0 THEN RAPID;;r ' return method for G99 in G90 mode (3) As an easier alternative method without the need to use G98 or G99, the most common way to specify an automatic return to a Z initial reference point is to include an R value in the G81 line. The R value will be the Z initial point to return to after the hole has been completely drilled to depth. The Z value will be the final Z depth of the hole. R is also known as the Rapid Clearance Plane. As a variation on this, you can have each canned cycle use an optional 2nd rapid plane P value as the initial Z point to jump over fixtures while returning the R Rapid Clearance plane if P is used. Here is an example: [[G81]] 'G81 using an optional 2nd rapid plane P value as the initial Z point to jump over fixtures while returning the R Rapid Clearance plane. ISTHERE Z;\400;\401 IF \400>0 THEN \776=\401 ISTHERE P;\400;\401' Optional 2nd rapid plane to jump over fixture DECELSTOP IF \400=0 THEN RAPID;;r IF \400>0 THEN RAPID;;p DECELSTOP RAPID x;y GO x;y;\776 DECELSTOP RAPID x;y;r

Q328 Can we do our own Error Handling routines?

Answer

Yes, see the ERRORS.FIL Error Handler File and the ERRORS logic command which reports 4 parameters to give you the Error Number, Main Message, Title of the Message and the Routine's Name that Generated It. You decide what to show the machine operator in the language the machine was made for and then decide to either skip, fix the problem or abort the program. You can even ask the operator for a choice. You will find documentation on the ERRORS logic command in the “Logic Language Reference Guide” section in this manual. You will also find documentation on the ERRORS.FIL system file in the “Logic Control Files” section in this manual along with a numbered list of 261 possible error messages. There is also a working CBK file entitled “ERRORS Example of ERRORS.FIL.CBK” that contains two test buttons to Simulate an Error or Clear the Error. In the “ERRORS Example of ERRORS.FIL.CBK” file you can copy out the logic in the ERRORS.FIL file and paste it into your CBK file for a quick Error Handler. In essence, this would handle most errors the same way that they are being handled now if you were not using the ERRORS handler except it will display the messages using the MESSAGE command and also display them inside an on- screen LABEL rather than in pop-up boxes. You can switch between the default pop-up boxes and your own error handler logic in the ERRORS.FIL file by using the ERRORS logic command (ERRORS ON or ERRORS OFF).

Q329 Is there any way to have dual Axes Readouts at the same time?

Answer

Yes, go to CNCSETUP, click on DESIGN OPERATOR INTERFACE and choose INDIVIDUAL AXIS READOUTS. Pick any axis and you will have a chance to set up dual readouts See the Dual Readouts Example.CBK file.

Q330 When using the MID PROGRAM RE-START feature, how can I get the machine to move to the X and Y coordinates first and then to the Z?

Answer

(1) There are several ways, including an entire other way using the INVERSE command that calls user-customizable macros where you can arrange the MidProgram sequence for axis positioning and I/O the way you want. (2) Using the MidProgram Button or command with or without the Visual Mid- Program Restart option using a mouse or touch screen graphically: For machines where the Z is tool up/down you will see "The Z axis must have a non obstructed path to the re-start location. This will not move the Z axis and will first cancel all tool offsets in effect before moving." For Lathes you will see "Caution, The axes must have a non obstructed path to the re-start location and will first cancel all tool offsets in effect before moving." "Do you realize that starting at this point that there may not be enough information to start the spindle or safely position the tool!" "If any offsets were invoked after the part was drawn, not including the offsets in the G code program itself, then you may want to CANCEL and reload the part program. This will redraw the part in the new offset location." "Do you want to proceed?"+"About to make re-position move." Answering Yes will then ask "You may enter in any G,X,Y,Z,M,F,S,T codes you feel necessary here that will execute before the program begins." (3) If you are using the MidProgram restart feature in the MDI window, you could answer YES to this question: "Do you want to start the program at the current cursor position?", "Mid-Program Start Location" Then another question pops up: "Do you realize that starting at this point that there may not be enough information to start the spindle or safely position the tool!", "Caution be careful!" "You may enter in any G,X,Y,Z,F,S,T,M codes you feel necessary here that will execute before the program begins.", "Mid program start up codes"

Q331 Can we increase the number of buttons on the operator screen?

Answer

There should be more buttons available to you on the DESIGN OPERATOR INTERFACE window than we used in your CBK file. If you run out of buttons on the DESIGN OPERATOR INTERFACE, you can re-use and redefine the captions, bitmaps, locations and actions of each button on-the-fly using the BUTTON logic command. For example, give the machine operator a choice of modes 1, 2 or 3 to run in. In mode 1 you have the first 20 buttons set up one way to do certain things, but in modes 2 and 3 you redefine the buttons for different purposes, captions and images to have 40 or 60 more functions. In the CNC Professional version you have unlimited buttons, light bulbs, text boxes and multiple extra pop-up windows or user screens. SEE the CNC Professional tutorials that come with pre-written CBK files titled: EXERCISE SCREEN DESIGN #1.CBK EXERCISE SCREEN DESIGN #2.CBK EXERCISE SCREEN DESIGN #3.CBK

Q332 Can we show graphics or perform simulation on the screen?

Answer

In the Graphical OI, CNC Plus and CNC Lite versions you have these three choices below. In the CNC Professional version you have either solid modeled simulation or 3D wire-frame graphics on the operator screen as a standard feature. (1) You can use the PICTURE logic command to display a bitmap image on the operator screen using a FileName.BMP and enter the location of the image from the Top & Left corner of the screen then replace the image with a new picture to show movement. Keep showing new images when your part moves in numerous different ways such as when a button gets pressed, a MACHGO command is given or in the TIMER.FIL file at regular intervals. When you do not give a filename, the picture will disappear. NOTE: Do not give the optional parameters varb click X;varb click Y when using the PICTURE logic command or else it will wait for you to click in the image. (2) Each button can be sized to fit and display a bitmap image on the button. Since the button has two presses, the image can be changed when the button is pressed. Also, as described in (1) above, unlimited different images can be displayed using the BUTTON's logic command optional bitmap filename parameter. For example, a variable can increment by the value of 1 each time the button is pressed. Or else a separate variable that represents the mode the operator is in would run down a numbered list or use a look up table that calls the BUTTON logic command and would display a different bitmapped image or execute a different set of logic commands to take different actions. (3) Size the operator screen small enough to leave a portion of the Windows Desktop in view. Then use any Windows software that shows animated GIF files, JPEG images, BITMAP images, MPG files and/or AVI files in a window next to the operator screen.

Q333 How do I display real RPM on the screen?

Answer

If your goal is to display the actual RPM on the operator screen, you can use a DISPLAY or LABEL command called in the TIMER.FIL file every 1000 ms. In the STARTUP.FIL file enter: TIMER ON;1000 In the TIMER.FIL file enter: GETRPM 5;\55 DISPLAY5 \55 GETRPM uses the value entered into RATIO5 to determine the number of encoder counts in one RPM if you have an encoder. If you don't have an encoder, you can do the math to estimate the RPM: DISPLAY5 {s*(\74/100)} 'S code times Speed Variable percentage or else if you also have a Potentiometer and have set up the SPEEDPOT, add this extra logic: ANALOG2 \55;IN 'This gets the voltage from the SPEEDPOT 0-10v DISPLAY5 {s*(\74/100)*(\55/10)} 'S code times Speed Variable percentage times Potentiometer value NOTE: The examples above show the spindle on axis 5 so RATIO5 is shown in the example plus the DISPLAY5 box caption is using DISPLAY box 5 — change these values as needed.

Q334 After the CamSoft Logo screen and password, nothing happens.

Answer

If no error message pops up, then there is no reason for this to happen, it should go on. The STARTUP.FIL file runs next "before" the operator screen comes up. There could be some logic in the STARTUP.FIL file that is talking to some hardware and waiting for a response that does not come or it is stuck in a loop. You can try the following three things in the order shown below: (1) Launch CNCSETUP.EXE and under GENERAL SETTINGS in the box labeled CARD set the system to DEMO mode. (2) Erase all logic from the STARTUP.FIL file. (3) Rename the C:\AS3000 folder to something else for safe keeping and re- install the CamSoft software from the installation CD. See if the default logic works before you RESTORE your CBK file.

Q335 How do you modify a shortcut to run as Administrator & set Compatibility Mode in Windows 7, 8 or 10?

Answer

If you are getting Windows error messages in regards to privileges, access, permission or drivers, take the steps listed below. Windows 7 & 8 – Run as Administrator & Set Compatibility Mode IMPORTANT: Windows 8 requires elevated permission levels even if you are logged in as Administrator with Administrator rights. 1. Right click on the applicable short cut icon on the Windows Desk Top 2. Select Properties 3. Select Compatibility Tab 4. Select the box "Run this program in compatibility mode for" then select Windows XP (Service Pack 3) from the drop down list 5. On "Privilege level" enable "Run this program as an Administrator" 6. Click OK button. Windows 10 – Run as Administrator 1. Right click on the applicable short cut icon on the Windows Desk Top 2. Select Properties 3. Select Shortcut Tab 4. Click on the button labeled Advanced 5. Select the box “Run as Administrator" 6. Click OK button. Windows 10 – Set Compatibility Mode 1. Right click on the applicable short cut icon on the Windows Desk Top 2. Select Properties 3. Select Compatibility Tab 4. Select the box "Run this program in compatibility mode for" then select Windows XP (Service Pack 3) from the drop down list 5. Click OK button.

Q336 Can we use Over Travel Limit and Home Switches as regular I/O?

Answer

Yes, you may for the HOME switches on all motion card models. See the CONFIGLIMITS logic command for usage of the Over Travel Limits on some motion card models. Place this logic command in the STARTUP.FIL file: CONFIGLIMITS D When using D, the automatic E-Stop will be disabled. No alarms or motion stopping action will occur when an over travel limit switch is used unless you write logic commands to do so in the LIMITS.FIL file. This means you can use the I/O numbers as they are assigned under I/O SETTINGS in CNCSETUP.EXE as regular I/O inputs for all Home and Over Travel I/O. When the I/O changes state from on to off or off to on, this will automatically run the logic inside the LIMITS.FIL file so you can do as you please.

Q337 How do you control one axis separately from the others?

Answer

Sometimes you may want to either: (A) Move a motor separately to position an axis while other axes (example XYZ) are cutting. Perhaps for a tool change, raise or lower a material loading table, swing an arm in or out, spin a rotary table at a variable rate independently of the XYZ feed rate, etc. (B) Turn only one or more motors on or off, for example, to make the motor go limp (not servoed) so a hand crank can manually move the table. Normally to turn off the motors you can issue MOTOR OFF and then MOTOR ON when you are finished doing the task. However, now none of the axis motors can move. If, for example, the 4th axis is part of the coordinated axis group and you turn the 4th axis motor off, or anything else happens such as an error or E- STOP, which turns any one of the motors off, then none of the axes in the coordinate group can move and you will get an error message. By separating the 4th axis from XYZ (keeping XYZ in the coordinated group) then you have the power and freedom to move XYZ together and do anything you want to the 4th axis, such as turn off the 4th axis motor or else use the 4th axis motor to spin a tool turret. Whenever you decide the 4th axis should be moved in a coordinated motion with XYZ, you can always change your mind and re-issue the SETUP command for the 4th axis using the Y parameter. You would use the SETUP command to setup the 4th axis as a non-coordinated axis. (The key is to use the N parameter for No instead of Y for Yes as the last parameter for the SETUP logic command). Example of SETUP in the STARTUP.FIL file: SETUP 4;0;4000;0;10;0;64;N Change the settings to your needs. The N is the important one in your case IMPORTANT: Once you have done the above, then it is okay to only turn motor 4 off (while keeping the other motors on) using COMMAND MO D (and you won't get the error message anymore). MOTOR ON To only turn on MOTOR 1 use: COMMAND SH X To only turn on MOTOR 2 use: COMMAND SH Y To only turn on MOTOR 3 use: COMMAND SH Z To only turn on MOTOR 4 use: COMMAND SH D To only turn on MOTOR 5 use: COMMAND SH E To only turn on MOTOR 6 use: COMMAND SH F To only turn on MOTOR 7 use: COMMAND SH G To only turn on MOTOR 8 use: COMMAND SH H MOTOR OFF To only turn off MOTOR 1 use: COMMAND MO X To only turn off MOTOR 2 use: COMMAND MO Y To only turn off MOTOR 3 use: COMMAND MO Z To only turn off MOTOR 4 use: COMMAND MO D To only turn off MOTOR 5 use: COMMAND MO E To only turn off MOTOR 6 use: COMMAND MO F To only turn off MOTOR 7 use: COMMAND MO G To only turn off MOTOR 8 use: COMMAND MO H POSITION A SINGLE AXIS(For example, traveling 1 inch or mm) To only move MOTOR 1 use: POSITION 1;1 To only move MOTOR 2 use: POSITION 2;1 To only move MOTOR 3 use: POSITION 3;1 To only move MOTOR 4 use: POSITION 4;1 To only move MOTOR 5 use: POSITION 5;1 To only move MOTOR 6 use: POSITION 6;1 To only move MOTOR 7 use: POSITION 7;1 To only move MOTOR 8 use: POSITION 8;1

Q338 Our I/O is running slow and sluggish.

Answer

How do we improve the response time? If your I/O is responding slowly or not as quick as it should, you can perform the steps described below to make the INPUTIO.FIL file run faster by writing the INPUTIO.FIL file logic as efficient as possible. (A) Use more EXIT commands so that once the function is found and performed in the INPUTIO.FIL file it will EXIT thus saving time running down the remainder of a long list of other logic in the INPUTIO.FIL file. (B) Move the most important functions closer to the top of the INPUTIO.FIL file but after the E-STOP logic. (C) When a condition is found in a list at the top of your INPUTIO.FIL file, use GOTO logic commands to jump to a "GOTO" LABEL in the INPUTIO.FIL file to run what you need thus skipping (jumping over) portions that do not apply. The goal is to only have a minimal quantity of IF THEN logic lines at the top of the INPUTIO.FIL file that GOTO sections further below or else call Macros. This prevents the INPUTIO.FIL file from trying to execute loads of code that does not pertain to the I/O numbers it needs to react to. (D) For the I/O relays that are used most frequently or else need to execute quickly, use the I/O on the Auxiliary I/O boards rather than the motion card. Ethernet is the slowest communication. I/O on the PCI motion card model is faster than Ethernet. The Auxiliary I/O cards made for I/O only are the fastest by far sometimes by 1000 percent. (E) Servo instability may be causing the delay because one or more motors are still moving, drifting or unstable. Certain logic commands wait until motion is stable before they execute. Better Servo tuning or counter acting resistance and/or gravity would help. (F) Avoid commands that take too much time such as SLEEP, WAITUNTIL STOP, IF THEN and GOTO commands that cause recurring loops over and over. (G) Remember to use the LIMITS.FIL file for all I/O over travel limit switches and/or home switches. No need to place traps for over travel and home routines inside the INPUTIO.FIL file. (H) Relocate some of the I/O logic from the INPUTIO.FIL file to other logic files. For example, process I/O directly in Macros or if a button processes I/O, do this logic in its M codes

Q339 How do we reverse the Amp Enable signal, Home or Over Travel Limits?

Answer

To follow industry standards, which normally use closed switches for home and over travel, use the CONFIGLIMITS command in the STARTUP.FIL file. In the I/O SETTINGS window (accessed through CNCSETUP) there is a checkbox that flips the input I/O numbers in reverse. No need to wire anything in reverse polarity. Normally the MOTOR ON / OFF command to control Amp Enable Signals will be where MOTOR ON turns Amp Enable ON and MOTOR OFF turns the drives off. If your amp drives are reverse bias or special so when told to be on they turn off or vice versa, some motion board manufacturers offer an IC chip located at "U6" with the number 7406 to replace the default chip number 7407 to reverse the amp enable signal. For further information on reversing the Amp Enable signal, go to the “Amplifier Enable Signal” topic in Section 2 in the CamSoft Installation Guide.

Q340 How do you program Rotary and Linear Feedrates?

Answer

The concept of mixed linear and rotary axis feedrates is confusing until you look at the concept in its simplest form. The concept is a universal standard. The concept outlined below applies to all servo types in encoder counts or else steppers in steps and may be mixed or matched motors. Under MOTION SETTINGS in CNCSETUP.EXE the settings for RATIO, GEAR and TOOL/DEGREE set the UNIT, where a UNIT is either an Inch, mm, Degree, Revolution, Minute, Tools in a turret or Custom unit. The TOOL/DEGREE box sets the UNIT type. Leaving GEAR set to 1, the RATIO sets the number of counts or steps that equal 1 UNIT. The RATIO value entered should be: Inch yields IPM (Inches per minute) mm yields MMPM (mm per minute) Degrees yields DPM (Degrees per minute) Revolutions yields RPM (Revolutions per minute) The F code value for feedrate "Travel Velocity" sets UNITS per minute. For example: Using IPM G1 X1 F1 yields 1 inch per minute Using IPM G1 X100 F1 travels at 1 inch per minute for 100 inches Using MMPM G1 X1 F1 yields 1 mm per minute Using MMPM G1 X100 F1 travels at 1 mm per minute for 100 mm Using DPM G1 A1 F1 yields 1 degree per minute Using DPM G1 A360 F1 travels at 1 degree per minute for 360 degrees or 1 revolution Using RPM G1 A1 F1 yields 1 revolution per minute Keep in mind that: 1. G0 RAPID moves travel at the RAPIDSPEED feedrate or velocity, not at the F code value. 2. When doing a 3-axis 3D move, all axes start at the same time and end at the same time. The F code rate moves at the feedrate along the vector (straight line path from start point to end point). The feedrate is the vector velocity, not any particular axis. If all axes are of equal distance, the feedrate the 3D move travels at is along the hypotenuse not XY or Z. 3. When combining a linear and rotary motion on the same line, all moves will start at the same time and end at the same time. The combined linear and rotary velocity is an average of all combined axes traveling at the precise F code feedrate issued. The feedrate is in its simplest form traveling at the rate in the RATIO settings in counts or steps. 4. If there are different brand or model encoders and micro steppers used on each axis with different revolutions, then this is another topic within itself. There are several solutions to overcome the physical hardware and design challenges this poses with detailed explanation of the kinematics (mechanical mathematics) and physics explained in QUESTION 114. 5. The maximum programmable feedrate is capped by the speed of the slowest axis in the coordinated system group. The maximum travel speed for each axis is set using the RAPIDSPEED settings under SPEED SETTINGS in CNCSETUP.EXE. There is one setting for each axis. 6. In a mixed coordinated system of both linear and rotary axes the feedrate is 1 revolution per minute using F1 rather than one degree per minute. The RATIO should be set to equal "counts/steps per degree" and the TOOL/DEGREE/UNITS box should be set to degrees. Unless the rotary axis is not in the coordinated group, then the feedrate is independent of the coordinated group and will yield the feedrate as set by TOOL/DEGREE/UNITS. For example, when the rotary axis is part of the coordinated group: G01 X1 Y1 Z1 A360 F1 the XYZ axes travel 1 inch/mm and the rotary axis makes 1 full revolution where all axes start at the same time and end at the same time in 1 minute. For example, when the rotary axis is set up as an independent axis: G01 A360 F1 makes 1 full revolution and takes 360 minutes to get there.

Q341 How do you get the control functional again after pressing E-Stop?

Answer

By default nothing needs to be done. The user may just continue on, press Cycle Start, jog, set tools, etc., unless the ESTOP.FIL file or SETESTOP logic command set user-defined emergency conditions, displayed messages, turned off certain I/O, turned off the motors, implemented SUSPEND, set variables, etc. Then these special user-set conditions should be undone and reset. The most common method is to have a physical button or on-screen button titled "RESET" that undoes and resets the special conditions including issuing MOTOR ON. The RESUME command is optional and only sometimes needed. You will know if you need it or not if motion does not resume after you have undone all of the conditions you listed in the ESTOP.FIL file including issuing MOTOR ON. NOTE: If you do not need RESUME, then it is best not to use it because it resets other internal registers and flags that may be unwanted.

Q342 We get a Runtime error 380 Invalid Property Value.

Answer

Runtime errors are caused by Windows itself. They are the catchall numeric messages generated by Windows when CNC Professional’s own error-trapping routines exceed the most common reasons for such errors. If you experience a runtime error, it is only because an extraordinary, uncommon or rare error has occurred. The most common runtime error is No. 5, which is an illegal function call. (A list of the most common runtime errors is provided below.) Runtime error 380 is a Microsoft Windows error message which means a window is sized either too small or too large. The height and width of a window is user adjustable. Sometimes when using the mouse to expand or collapse the window or by entering in the width and height using the CNCSETUP.EXE program under the DESIGN OPERATOR INTERFACE button, the width and height entered into the boxes is out of range — too big or too small. If you wish, you can make a backup of the CBK file for safe keeping. Rename the AS3000 folder to something else for safe keeping and re-install from the CamSoft Installation CD again. RESTORE your CBK file and you should be okay. If this does not work, then this means the values were saved with the CBK file. If you can tell us which feature you were opening at the time of the message, we can tell you which INI file to replace since these values are kept in INI files in the INI folder. The INI file can be replaced using the default INI file by copying the default INI file from the CamSoft Installation CD. The following list identifies and explains some of the most common runtime errors: 5 Illegal function call 6 Math Overflow 7 Out of memory 9 Memory call out of range 11 Division by zero 14 Out of conventional memory 28 Out of stack space 52 Bad file name 53 File not found 54 Bad file mode 55 File already open 57 Device I/O error 58 File already exists 61 Disk full 62 Input past end of file 64 Bad file name 68 Device unavailable 70 Permission denied by Windows 71 Disk not ready 75 Path access error 76 Path not found 380 Invalid Property Value 429 Windows Registry problem 440 Registry item not found

Q343 How does the "ESTOP.

Answer

FIL" file shut down the motors?

Q344 How can we get the best tapping accuracy?

Answer

The quality of the tap threads is based on 3 things: (1) The feedrate accuracy of the Z axis. Under normal conditions the feedrates will be accurate. Feedrate accuracy depends mostly on the encoders, gearing and machine design. Accuracy is best when each axis uses the same RATIO values for all axes in the coordinated axis group. If not, there are several common solutions shown in the troubleshooting section under QUESTION 114. [RATIO FIX] is one of those solutions. The best solutions are (A), (C), (D) or (E) in

Q345 Can I use the Native Motion Card commands?

Answer

The native motion card commands are generally not recommend except for rare occasions that we will provide special instructions for. They either conflict causing a tug-of-war over who has control or else they often cause low-level on- board cryptic error messages. Besides, they usually get overridden anyways by the controller and are not effective. If you do use them, be careful mixing native motion card commands with logic commands. This takes a very advanced knowledge of both command sets to avoid conflicts. Usually we say not to use the native motion card command set. They are not required nor recommended for use with the CamSoft software.

Q346 How can I just stop or abort a G code program?

Answer

When the G code program is in cycle, you may hit CYCLESTART again to pause the program. The CYCLESTART button acts like a toggle switch placing the system in CYCLE or CYCLE pause. This way you can continue on with the G code program where you left off by pressing CYCLESTART again. If you do not want to continue, that is okay too. You may do something else such as jog, load a different program or shut down. When you press CYCLESTART while cutting, it will finish the current move. If you want to abort suddenly, either hit the ESCKEY or press E-STOP. Another method is to make either an on-screen button or physical button to issue the commands: STOP:EOP This stops motion and aborts the current G CODE program from running any further. NOTE: It may finish any M codes or macros not done yet and sometimes the on- screen buttons do not respond quickly if Windows is busy. If so, a physical button and digital input could be used to trap for an IO# in the INPUTIO.FIL file to execute logic.

Q347 How do I get faster travel speeds and smooth Accel/Decel ramping?

Answer

(1) The lower the micro step factor or Pulses per Rev (PPR) from the encoder, the more responsive the system will be. NOTE: For servo drives controlled by 10V analog voltage that use real encoders or scales, skip to (2). For servo drives controlled by 10V analog voltage that send out an "emulated or simulate encoder pulse rate", lower the PPR, Pulses per Rev, setting on the amp drive itself. For servo or stepper drives controlled by step and direction, lower the Stepper drive’s Micro-Steps per full Step or Servo drive’s PPR (Pulses be Rev) setting on the amp drive itself. Usually there are dip switches or menu settings using push buttons on a LCD display for this. (2) Consider and factor in any gearing after the motor or the ball screw pitch. High gearing factor or screw TPI results in slower travel speeds even if the RPM of the motor is fast. (3) Use a higher RAPIDSPEED for all axes. This is a cap of the maximum travel speed. (4) Use a higher FEEDRATE. Enter a large value. The actual speed will be capped off by the RAPIDSPEED settings (5) Use higher ACCEL & DECEL rates. The higher the value, the quicker the axis will reach full speed. Use lower ACCEL & DECEL rates to make smoother ramps and motion. (6) Use TEST MOTION on the Diagnostic window to make a longer test distance move to allow time for it to get up to full speed. (7) For the CS-14000 Stepper Black Box, see “Troubleshooting — High Pulse Rates, Accel and Decel” in Section 3 of the CamSoft Installation Guide under the CS-14000 Stepper Black Box chapter.

Q348 How do we correspond the I/O numbers on the terminal strip with the I/O# numbers listed in the logic?

Answer

This topic is covered in various places within the manual. The purpose of this QUESTION is to combine the various references explaining the concept. (1) The concept is simple. We assign unique I/O numbers to each Input and Output on the motion card / box or Auxiliary I/O boards (Spare or Extra I/O boards if any). The I/O numbers in the software are the I/O numbers used in logic files, where the I/O numbers printed on the physical motion card / box or Auxiliary I/O boards are terminal numbers. Since it is possible to have a motion card / box and more than one Auxiliary I/O board, we must assign a unique logic number to each input and output because each physical board has numbers printed on them that are the same and it would be confusing to have a motion box with Input #1 plus an Auxiliary I/O board with Input #1. Terminal Input number 1 on the ICM, terminal strip or motion box is assigned to the Logical Input IO# entered into the box titled IO INPUT BEG on the I/O SETTING menu. Terminal Output number 1 on the ICM, terminal strip or motion box is assigned to the Logical Output IO# entered into the box titled IO OUTPUT BEG on the I/O SETTING menu. IO INPUT BEG=16 is what Logical IO# number the uncommitted Digital Inputs begin at on the motion card. IO OUTPUT BEG=24 is what Logical IO# number the uncommitted Digital Outputs begin at on the motion card. Using CNC SETUP.EXE, click on the I/O SETTING menu button. This will bring up a window showing all inputs and outputs on the motion board itself plus the inputs and outputs on any Auxiliary I/O boards (spare or extra I/O boards if any.) For example, you may notice that inputs begin (IO INPUT BEG) with the number 16 and outputs begin (IO OUTPUT BEG) with the number 24. From this menu we deduce that Logical Input #16 is Input #1 on the ICM, terminal strip or motion box. Logical Input #17 would then translate to Input #2 on the ICM, terminal strip or motion box and so on. NOTE: If the inputs appear to be reversed or the last input is really the first, then check the box titled "Flip / Reverse the inputs where the last input becomes the first input on the ICM terminal strip" on the I/O SETTING window. Similarly for the Outputs: Upon examination of the outputs description on the I/O SETTING window you may notice that outputs may begin at #24. Therefore, Logical Output #24 translates to Output #1 on the ICM, terminal strip or motion box. Logical Output #25 translates to Output #2 on the ICM, terminal strip or motion box and so on. See Chapter 4 in the CamSoft Installation Guide to find your particular ICM terminal strip, Motion box model or Auxiliary I/O board name. In Chapter 4 there will be I/O charts listing the Terminal Input and Output numbers showing you, for example, which terminal number is Input #1, #2, #3, etc. or is Output #1, #2, #3, etc. and so on. (2) Detailed wiring information is found in the "Testing and General Troubleshooting" section of the printed or on-line CamSoft Installation Guide. (3) Using CNC SETUP.exe under the I/O SETTING menu: Click on the Button titled IOINPUTBEG for more info. (4) See QUESTION 87 How do the controller software files (INPUTIO.FIL, etc.) access each I/O? (5) See QUESTION 42 How do I correctly issue the INPUT and OUTPUT numbers to connect to the standard terminal block using the existing on-board digital I/O and any extra auxiliary I/O? (6) Example of I/O Numbering For example, your IOHOME, FLIMITS and BLIMITS may start with the number 1 and go to 15. When you hook up the home, forward and backward limit switches to the terminal strip, correspond these terminal numbers on the terminal strip by looking at the numbers printed on the terminal strip to know where to put the wires. For example, if you have 8 inputs and 8 outputs on the motion card and one 32- position auxiliary digital I/O card giving us a total of 16 auxiliary inputs and 16 auxiliary outputs, then the settings would be set as follows: IOHOMEX=1 IOHOMEY=2 IOHOMEZ=3 IOHOME4=4 IOHOME5=5 IOBLIMITX=6 IOBLIMITY=7 IOBLIMITZ=8 IOBLIMIT4=9 IOBLIMIT5=10 IOFLIMITX=11 IOFLIMITY=12 IOFLIMITZ=13 IOFLIMIT4=14 IOFLIMIT5=15 IOINPUTBEG=16 'Next IO# after last limit switch IOOUTPUTBEG=24 '24=16+8, 16 is start of IOINPUTBEG, Plus 8 AUXINPUTBEG=32 '32=24+8, 24 is start of IOOUTPUTBEG, Plus 8 AUXINPUTEND=47 '47=32+16-1, 47 is the last aux input number AUXOUTPUTBEG=48 '48=32+16 or the next IO# after 47 AUXOUTPUTEND=63 '63=48+16-1, 63 is the last aux output number NOTE: Check the box titled "Figure out I/O Numbers Automatically" on the I/O SETTING window then click in any fill-in-the-blank box and the IO numbers will be assigned automatically for you.

Q349 We have both Linear Scales and Encoders.

Answer

Can you explain the choices and if the Index Makers are required in the homing routine? The index marker pulse is optional, not required. These can be shown on wiring charts as +/-Z or +/-I or +/-C. Note that the absence of a sign is usually the positive where the symbol slash / or underscore _ is negative. Index markers are used as an extra "optional" step in the homing routine. The physical home switches set the axis home location. See the settings below in the [Home Master Routine] macro: \31=0 'On 1st axis find the index marker on the encoder '0=no 1=yes or 2=zero out where it is \32=0 'On 2nd axis find the index marker on the encoder '0=no 1=yes or 2=zero out where it is \33=0 'On 3rd axis find the index marker on the encoder '0=no 1=yes or 2=zero out where it is There are many other simple settings at the top of the homing routine to configure how your machine finds home. You may mix linear scales with rotary encoders. Use ENCODER SETTINGS in CNCSETUP.EXE. Each axis can have different motor types and encoders or scales. With steppers, encoders and scales are not required. If used, there is a closed loop stepper setting using the SERVO-STEP button under GENERAL SETTINGS in CNCSETUP.EXE. Click on the Button to the left of the white box for help. The following are suggestions if you are having trouble connecting your encoders or scales. (1) Do not connect the +/-Z index marker terminals. (2) For Linear Scales enter the value 2 in the box titled ENCODER CNC under ENCODER SETTINGS in CNCSETUP.EXE. Be sure to press the SAVE button on the face of the CNCSETUP window, exit and re-enter the CNC for this setting to take effect. (3) If value 2 does not work in the box titled ENCODER, then try the value 1 instead. The value 2 is for Linear Scales and the value 1 is for pulse encoders types. The advantage of using 1=pulse encoders is that it does not require all 4 wires A+,A- and B+,B-. It works as a simple pulse counter only using A+, B+. The disadvantage is that it is less accurate and prone to noise. Some pulses could be skipped or missed, thus less accurate. This is not recommended for axis positioning if you can help it. The positioning accuracy is at risk. Its main use is for pulse wheel counters (Hand Wheels).

Q350 Error 52 – What does it mean?

Answer

This is nothing you or the machine operator did wrong. This message comes from Windows and is being passed on. The file is there and found but something is wrong with it. If the file was missing or not found, then there are other messages that would have appeared instead. The short explanation is most likely there is a physical "media" error on the storage device, such as a bad sector "bad spot" on the hard drive or the file was not closed properly by the person that wrote the logic flow or the CNC.exe program and/or the PC was turned off abruptly without having a chance for Windows or the EXE to properly close the file first. Microsoft defines Error 52 as: An error occurred trying to access a Bad File Name or Number: This error has the following causes and solutions: 1. Trying to read from, write to a file that has not been closed properly. 2. Trying to read from a file that was opened for write. 3. Trying to write to a file that was opened for read. 4. Trying to read from, write to or open a file that is damaged. NOTE: Damage can occur when the file is corrupted due to a physical hardware issue — often saved or stored poorly on a (media other than a real hard disk) USB memory stick, flash drive hard disk, portable drive connected by a cable or over a network cable. If the problem is not related to hardware, then the most common reason a file gets damaged is not closing it before you exit the program or turn off the PC. File names must conform to operating system conventions as well as Basic file- naming conventions. In Microsoft Windows, use the following conventions for naming files and directories: The name of a file or directory can have two parts: a name and an optional extension. The two parts are separated by a period, for example, myfile.new. The name can contain up to 255 characters. The name must start with either a letter or number. It can contain any uppercase or lowercase characters (file names are not case-sensitive) except the following characters: quotation mark ("), apostrophe ('), slash (/), backslash (\), colon (:) and vertical bar (|). The following names are reserved and cannot be used for files or directories: CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN, and NUL. For example, if you try to name a file PRN in an Open statement, the default printer will become the destination for Print # and Write # statements directed to the file number specified in the Open statement.

Q351 How can we rotate, scale or tilt a part in the G Code program?

Answer

There are a few different ways to rotate, scale or tilt the G code program. The two most common methods are: G68 to rotate the part at an angle around a user-defined X,Y pivot position -or- G140 for 2D & 3D part rotation and plane tilting. See the manual and macro files for examples: G68 U0 V0 A45 G140 U0 V0 W1 R45 Also see: G141 Mirror/Scale for X only. Negative value mirrors G141 L# G142 Mirror/Scale for Y only. Negative value mirrors G142 L# G143 Mirror/Scale for Z only. Negative value mirrors G143 L# Macros: [FANUC G68]' G68 U0 V0 A45 ' U & V are the XY pivot rotation position and A is the Angle [FANUC G69]' Cancels part rotation NOTE: Normally most CBK files use a G68 canned cycle to mill out the interior of a rectangular pocket with user-defined corner radius. You can change G68 to be used for rotation instead or else call the [FANUC G68] macro from another G code number if you wish to keep the function of both features. If you want to see graphics and/or be prompted to enter the pivot point and angle, you can use the MATRIX logic command to do this conversationally. Although having the values saved and kept with the G code program would be better. See MATRIX below. Other Related Macros: [Probe 2 points to align part rotation] [Auto Align Start Probe] Refer to the MATRIX logic command: This command will rotate, scale and tilt the G code cutting motion in 3D until cancelled. You may use any or all of the parameters of the MATRIX logic command in a G code program of just a few for an exclusive action such as scaling a single axis to tilt the part up, rotate in 3D, elongate circles, shift it's center point, etc.

Q352 What advice do you have to set up closed loop stepper motors?

Answer

Click on the button titled SERVO-STOP under GENERAL SETTINGS in the CNCSETUP.EXE program and you will see advice for the settings needed to do closed loop steppers. Also, if you enter the following three keywords in "Search for Solutions", you will get other advice: closed loop stepper Basically, the main "trick" is finding the correct number of counts that the scale/encoder report as those that equal the exact same number of steps to move the same distance. They are almost always different. If either are off, the scales/encoders will report a different distance traveled as opposed to the actual distance moved. Opening your tolerance helps if there is a slight position error being reported. It is best to measure the real distance moved. Do repeated testing using a dial indicator to ensure the number of steps per inch/mm and the number of counts reported by the scales/encoders are accurate. If not, motion will stop until it satisfies that each move is within tolerance. If the number of steps per inch/mm are off a little, the scales/encoders will think that position has not been reached or has a position error and falsely try to correct position by adding or subtracting more steps to the move.

Q353 Why don't my amp enable signals come on or stay on?

Answer

First check that you do have the correct Servo and Encoder settings chosen in the CNCSETUP.EXE program. If you make changes, press the SAVE button on the CNCSETUP window. It may be that the settings are correct but the motion card kicked the motors off thus dropping the AMPENX signal due to a slight Position error. The most common reasons for kicking off the motors are they went into E-STOP, they need better Servo tuning and/or a tight TOLERANCE. The way to tell is if the motors are servoing (holding position and the motor shaft steady). You can bypass the AMPENX signal by directly supplying voltage to the amp drives from your own power source to turn on (enable) the amp drives. If the motors are not servoing, then it is not because of the AMPENX signal. Rather, it is because the motion card kicked the motors off because of position error. Double check your MAIN encoder feedback on the DIAGNOSTIC's Watch Window to be sure you are getting correct encoder feedback. Check for false encoder signals or feedback, such as the Watch Window changes readings when the encoders are not spinning. See if there are jumps or spikes in feedback readings and also if the encoders are reporting "accurately", checking if the inch/mm/degree RATIO settings for distance match the real distance that is being reported by the encoders on the Watch Window. The most common reason for the motors to kick off "due to encoder feedback" is that the polarity of the A+, A-, B+, B- wires is being reported backwards. The encoder reports the motor is traveling forward when it is really moving in the opposite direction. As soon as the travel distance moves out of TOLERANCE, the motors kick off due to position error. For more detailed information, see the "Amplifier Enable Signal" topic in Section 2 of the CamSoft Installation Guide.

Q354 How does one decide what I/Os to put on the motion box’s terminal strip and what on the Auxiliary Relay Rack?

Answer

The two basic reasons for using the auxiliary relay rack over the motion box/card terminal I/Os are: (A) Speed — The relays on the relay rack can sense a change of on-off I/O state at the rate of 10,000 times in 1 second. So any relay that is going to be switched on-off fast should be on the auxiliary relay rack. Also, these drivers operate independently of the Windows drivers so they are reliable if Windows gets busy. For example, use for tool changes. I/O on the Galil terminal is good for all and any normal on-off switches such as prox switches, over travel limits, home switches, E-stop, spindle, push buttons, light bulbs, air, coolant, lube, vacuum and other sensors. (B) Use the auxiliary relay rack if you need to switch outputs or read sensors that use higher than 24V since the relays on the auxiliary relay rack can operate or read any voltage range or amperage that is either AC or DC. The Ethernet motion box and high-speed PCI motion card models handle up to 24V (some other model cards or motion boxes only offer 5V or 12V) so any device over this voltage range needs a relay. Not to say you can always put a relay of any voltage in-between the Galil motion box and your device that the machine requires instead of using the auxiliary relay rack. The auxiliary relay rack is more convenient. You can mix and match relays of any size next to each other and populate the relay rack with as few or as many as each application requires on an as-needed basis.

Q355 Can one still buy the old type plugs such as "Honda, Amphenol or Molex" used on early CNCs?

Answer

While it is possible in some cases, most people find it more convenient to keep and re-use the original connectors and simply cut the cable to expose and strip the individual wire leads as needed.

Q356 What causes a slight delay when I jog my axis with the keyboard?

Answer

The keyboard jogging has a lot of checking going on before the jog motion starts. Joysticks always start quicker. There are a few things to look at. With Ethernet model motion boxes, you should expect about a 1/4 second delay sometimes 1/2. PCI model cards are faster, almost always a 1/4 of a second or less. If there is no coding reason, such as there is too much logic in the INPUTIO.FIL file to run through before it gets to the jogging logic, then there are a few other common reasons we can look into: (A) If you notice this more after you already jogged an axis, then keep in mind that the last move has to decelerate to a complete stop first. When you lift your fingers, jogging never jams on the brake, it decels to a stop. Allow it to stop before jogging again. (B) Increase the ACCEL rate. If using a joystick, you may add separate "jogging or positioning only" ACCEL commands with axis numbers that have high accel values to the STARTUP.FIL file. Remember to use the ACCEL command with the axis numbers included — one for each axis. (C) If none of the above helped, it is most likely the combination of using a slower Ethernet model motion box and/or Servo tuning. The motion starts right away the quickest when the servo tuning is real tight. (D) If you are using physical jogging buttons or a joystick that is using I/O inputs to jog with, move those input connections over to an auxiliary I/O board or relay rack. This will react to a change of event in I/O state extremely fast.

Q357 How do I reverse direction of the arrow keys used for jogging?

Answer

Click on DESIGN OPERATOR INTERFACE in the CNC SETUP program. Then click on "Jogging Window". Use the check boxes "Reverse jog direction on these axis numbers" to select which axis you want to reverse the keyboard jog. Make sure to click SAVE in the CNC SETUP program after any changes. Also, make sure you do not have the CNC running when you are making and saving these changes. There are others ways to reverse axis travel direction using G code or motion commands such as changing the GEAR settings to a negative value under MOTION SETTING in the CNC SETUP program. You may also add custom logic to change everything from direction to jog speed, acceleration, decel, etc., used by the keyboard jog arrow keys by writing logic in the JOG.FIL file. Plus, see the MACRO.MAC file for Touch Screen jog, Physical button jog using I/O, Pendant jogging and Joy Stick examples.

Q358 Is there a command that can look ahead at the next move to see what the tangent angle would be to the next move?

Answer

Yes, this is called NEXTANGLE. See the NEXTANGLE logic command for its usage. A practical application would be to see if the angle of the next move/cut is sharper or greater than the maximum tangent angle entered. If so, then it will automatically create a decel ramp into the transition between the moves and then accel smoothly out of the move. Otherwise, if the angle is less than the tangent angle entered, it will not decel. Instead these moves will continue at the original programmed feedrate maintaining a constant velocity. It might be a good idea to set a variable in the STARTUP.FIL file that represents the maximum allowable tangent angle so the machine operator can adjust this angle without editing the logic command. This would be entered as the Tangent Angle in degrees. Example: If you were currently cutting a line and the next line coming up is in- line straight with the current line, then there is no tangent angle. This would be 0. At a right sharp corner the angle is 90. This feature works on tangencies between G1, G2 and G3 moves. If the maximum tangent angle is set to 360, then this feature will not have any effect. The rates of ACCEL and DECEL can be set by logic command or in the CNC SETUP screen. Adjust ACCEL and/or DECEL as needed. It is a simple concept. Slow down as needed. Lower values make smoother, softer moves. Higher values will cause faster, more abrupt stopping and slow down motion. Lower both, try it, then increase one at a time until you get a happy balance of speed without mechanical banging or slamming. The three settings that affect NEXTANGLE or G11 performance which are found in CNCSETUP under Speed Settings are: RAPIDSPEED sets the maximum axis travel speed. Caps how fast the axis can move. ACCEL is the rate at which axis motion ramps up to speed after a deceleration or stop. DECEL is how smooth or gradual the rate at which axis motion ramps or slows down into a corner or an abrupt change in axis direction. NOTE: The ACCEL & DECEL effects are only seen and used on lines that contain a G11 or else when the NEXTANGLE feature is enabled. Otherwise, a smooth, non-stop, continuous axis motion occurs between all G1, G2 and G3 moves in a constant velocity. There is an Alternative to NEXTANGLE for testing purposes. You can disable NEXTANGLE by remarking out the logic command in G1, G2 and G3 or else set the NEXTANGLE variable to 360 which disables it. Instead, on NEXTANGLE you may place a G11 ahead of G1, G2 and G3 line so the G11 comes first. This will create a decelerated "ramp down" on this line only as this move approaches its target position, then it will automatically accel out of the move when the next move begins. G11 does the exact same thing as NEXTANGLE except for G11 allows the user to choose which lines will decel and slow down whereas NEXTANGLE will automatically ramp up and ramp down as it sees fit based on the maximum angle entered into the first parameter. The G11 will give you choices where and when a slowdown occurs. You pick the G1, G2 and G3 line, rather than being slowed downed automatically when NEXTANGLE is enabled. Only put a G11 on lines that need to decel slowly into a corner or any move that ends with an abrupt change in cutting direction. No need for G11 on moves that connect together continuous moves known as tangent moves or splines. The moves that need to approach a corner slowly should have a G11. Both the DECEL and ACCEL rates are user settable in CNCSETUP under Speed Settings. The only reason you may not notice a change when using G11 is that the ACCEL, DECEL rates are so low they take a long time to ramp up and ramp down and the programmed feedrate is never reached. The values entered act so gradually that before a G1, G2 and G3 is started and finished it never reaches full speed. It is still in its ramp up then ramp down phase.

Q359 What would cause my motor to vibrate, oscillate and shake causing random position accuracy problems?

Answer

The advice below is related to a question that was asked using a gantry-style bridge machine but is also relevant to any machine with motors that shake causing random position accuracy problems. If you have stepper motors, only look at the mechanical reasons in the advice below. If you have servo motors that are controlled by step and direction, then contact your amp drive manufacturer to get advice on how to set the gain settings for closing the loop on the drive. It is very possible that only the gantry axis servo tuning parameters are what are needed to be changed unless there are mechanical reasons such as resistance, binding or misalignment. If you could rule out these mechanical reasons, then it would be just a matter of re-tuning. Binding, Resistance or Misalignment, which cause shaking after a move has traveled a long distance, could be that the rack/pinion or lead screw of the slaved axis does not travel at an exact 1 to 1 ratio to the master. There is a SLAVE command that sets up a master/slave relationship between two axes. The SLAVE copies the motion of the master. SLAVE has an important 3rd parameter that scales the slaved axis travel to that of the master that can be adjusted. On the other hand, if you do suspect any one of these mechanical reasons, the CNC Professional version allows you to overcome these issues "without making mechanical changes" unless it is really bound up. CNC Professional has a host of automatic compensation features such as mapping the bad spots along the axis travel, mapping bad teeth, correcting for back lash compensation and, as equally important, looking ahead to decide to either add or subtract more encoder counts to the next move to correct for position errors that cause the problems you see before they happen. In summary, try to discover if you can see if there is any mechanical resistance, binding or misalignment on the axis that is shaking. If it is too hard to correct this, try servo tuning first. If that does not help, then dual loop encoders are not the answer for this. We do not recommend dual encoder loops. These cause more problems rather than solve them. The automatic corrective features in CNC Professional are far better. For further information refer to QUESTION 317.

Q360 How do we control Spindle on/off and gradual ramping of the RPM up or down?

Answer

See the Logic Commands SPINFORWARD, SPINREVERSE, SPINSTOP. The default M codes are: M3 Spindle On Forward M4 Spindle On Reverse M5 Spindle Stop The default RPM value is the S code in the G code program. To ramp up "accel" or "decel" the spindle RPM, SEE these two pre-written macros in the Macro.Mac file: [SPINDLE ACCEL] [SPINDLE DECEL] Also, your spindle drive "VFD" probably already has a parameter for increasing or decreasing the RPM that will automatically do this. When you want the spindle to stop fast, you use the I/O terminals on the spindle to shut off the spindle rather than gradually ramping down. Most spindle drives, also known as "VFDs or Invertors", have at least 1 or 2 I/O terminals on the drive to do this. One is for spindle forward and the other is reverse. If they are both off, then this means spindle stop. Examples: #24=1:#25=0' Spindle forward #24=0:#25=1' Spindle reverse #24=0:#25=0' Spindle stop

Q361 When I load a job file, the graphics window goes blank and gets stuck.

Answer

I get a message "One moment while job is being verified". It is looping or stuck in an M code (sometimes could be a G code) executing waiting for something to happen while the program is loading. You will most likely see lines like this already in your CBK file. LOADING \55:IF \55=0 THEN EXIT You may notice we added this line to many of the default M codes that need it. Simply add this line as the first line at the top of any M codes in the MCODE.FIL file that need it then it will EXIT the M code when the program is loading rather than spend time running through the logic that does not need to execute while the program is being loaded into memory. Doing this will also make the G code program load faster.

Q362 My Spindle RPM isn't holding steady.

Answer

The RPM varies up and down. Before you proceed reading, there are several other related troubleshooting steps in this manual that explain how to set up a Spindle, find the best spindle settings that yield the most accurate RPM and diagnose spindle problems using the TEST SPINDLE feature on the DIAGNOSTIC screen.IMPORTANT: Always make sure you have the spindle parameters entered in your STARTUP.FIL file that are recommended to you after running the TEST SPINDLE feature on the DIAGNOSTIC screen before you go any further reading below. If you open diagnostics and turn on your spindle, a LOGFILE.FIL file will automatically start writing. You will also see values being shown on the far right side of the Diagnostic Watch Window that show the commanded and real RPM. For example, if the spindle RPM varies, the LOGFILE.FIL file will show lines like this: Spindle_ 0, 104, 0 These 3 numbers represent the Current Command RPM=0, Actual RPM= 104, Last Commanded RPM=0 This means there was no commanded RPM, but yet the spindle is rotating at 104 RPM, which tells us there is something externally interfering with the signal or power source such as: (A) The spindle drive gain settings need adjusting. The spindle drive itself is trying to "compensate" the voltage to maintain the RPM or hold it steady, but instead is "over compensating up/down, back & forth". The main gain settings on the drives to look for are related to disabling the Tachometer feedback or else what is known as Velocity mode. (B) High-voltage power fluctuations from the power source, power to the spindle or drive or both is fluctuating. (C) Electrical noise near or around the signal cables going from the motion card to the spindle drive, which need to be shielded / protected. (D) See QUESTION 385. For further information refer to QUESTION 317.

Q363 What choices do we have to control over travel limits?

Answer

There are two over travel error handlers. 1. If it is a physical over travel limit switch that is hit, then you must jog off in the opposite direction. Any motor movement in the Forward direction when the forward limit is hit will keep repeating. These actions are taken by the motion board itself — stopping and halting the program. The same goes for the Reverse physical limit switch. The most common reason the motion board will not allow you to jog in the opposite direction is simply that the Forward and Reverse limit switch wiring needs to be swapped. 2. If you enter the logic command below anywhere in the STARTUP.FIL file, it will disable the motion card's on-board actions to stop motion and allow you to back off. NOTE: Not all motion board models have this feature. CONFIGLIMITS D The SOFTLIMITS are numeric-based dimensions entered in the CNC SETUP screen. The on-board motion card takes separate actions if a physical switch is closed, which stops motion and halts the program. If there are no commands entered in the SOFTLIMITS.FIL file (a blank file), then motion will automatically stop and a message will be displayed telling you which soft limit was crossed. Use the SOFTLIMITS.FIL file only to enter in a custom set of events. In any case, once crossed, the SOFTLIMITS will automatically be disabled so you may jog in any direction, nothing will stop you. You will need to issue a SOFTLIMITS ON command to enable them again.

Q364 My axis travel is not accurate, my circles are egg shaped and my squares are elongated.

Answer

There are settings to make the circle rounder and square corners sharper. The RATIO settings in CNC SETUP under MOTION SETTINGS set the number of encoder counts or steps that move the X, Y, Z axis one unit (inch, mm, degree). They are not always equal due to mechanical or gearing reasons. If one of the RATIO settings is off, this will cause that axis to move further or shorter than it is suppose to travel. The most common effect is egg shaped circles and squares that are elongated. To test for this, open the Diagnostic window. On the Diagnostic screen enter a Test Move distance such as 1 inch with a slow feed rate. Do not check to make the mode in Rapid. Use the "Select axis for Motion Test" feature for both axis 1 and 2, one at a time, to make a separate LOGFILE.FIL file report on each axis.NOTE: Be sure you check the box "Coordinated move / error checking". Use a dial indicator or another method to physically verify the test move traveled "exactly" 1 inch. Do not go by the Axis Read Outs, these reflect the RATIO values entered which could be wrong, instead, always go by a physical measurement. The RATIO settings represent the number of steps, encoder counts or pulses per one inch or mm of travel for each axis. Each axis is setup separately and may be configured for different counts. You will want to adjust the number of encoder counts for the affected axes so the number of encoder counts in the ratio reflects a 1 inch or mm of travel. This parameter is necessary for correct positioning, round circles and square corners. If you get errors during the motion test, send us the LOGFILE.FIL files. Otherwise, exit the CNC then adjust the RATIO values, Press SAVE, enter the CNC again and repeat the MOTION TEST. Repeat and adjust until the physical move measures the correct distance. On CNC SETUP under MOTION SETTINGS there is a button titled "Calculate the correct RATIO to enter". See these other related topics

Q365 Can you explain Normally Open and Normally Closed to me?

Answer

Digital I/O (Inputs and Outputs) have only 2 states — Opened or Closed. Think of opened as the circuit or current flow being broken or OFF whereas closed is ON or current flowing. ON is the same as closed. To the computer this is seen as binary value of 1. OFF is the same as opened. To the computer this is seen as binary value of 0. Therefore, a normally open circuit or switch is normally the value of 0 and a normally closed switch is normally the value of 1. #16=1' Example of a closed input or output #16=0' Example of an opened input or output If you see the symbol NC, this means normally closed and the NO symbol is normally open. Typically switches such as E-STOP, Home switches, Over travel limits are normally closed basically because if anything breaks or cuts the electrical flow, this should cause an error. However, not all machines are the same and old school standards do not always apply these days. If an E-STOP switch is Normally Closed, then the machine is not in an emergency stop when the state equals a 1 such as #16=1. But when the E- STOP switch is pressed, the circuit opens and then input #16=0 and the INPUTIO.FIL file should act on this as an emergency stop. Logic Example of the code to act on an NC normally closed input in the INPUTIO.FIL file: IF #16=0 THEN ESTOP Almost all manufacturers label their switches and sensors either NC or NO. Tip: If your machine is different and you find the logic should act on the opposite 1 or 0 state, there is no need to change wiring or swap out switches. You can always just edit the logic and reverse the 0 for a 1 or the 1 for a 0.

Q366 Do you have a Comm Port or USB Port test?

Answer

There is a simple test in the AS3000 program. Follow the procedure below. 1. Launch AS3000 and click on the far left DISK ICON. 2. Select menu choice "Terminal". 3. Click on the Green Computer Card ICON titled "Test RS232 Port". This will test the Serial Comm Port as set on the Parameter Settings page (the 2nd ICON from left). 4. Follow the pop-up instructions to get "Pass or Failed". NOTE: If you are using a USB port or "Serial to USB "cable, you may need to run the CD titled "USB Adapter Driver" to install the drivers for the USB-to-Serial port cable. There are also Comm Port settings for the USB port found in Windows Device Manager.

Q367 Do I need to tune my amp drives?

Answer

You may not need to tune the amp drives. If you have stepper motors or servo motors being controlled by "step and direction" signals, you can skip this advice. There is nothing you can adjust. If you have real servos, you certainly would want to do either Basic or Advanced Servo Tuning. Your amp drives' "gain settings" should already be tuned "set" for the existing servo motors you have on the machine. The gain settings should be paired at the factory with the motors. If you are buying new motors & drives from the same company, you should be all set. Usually you only would need to change the gain settings "amp drive tuning" if you have replaced a motor or a drive with a new model or different brand name or newer model. The gain settings on older amp drives are physical screw driver pots that you turn CW or CCW. On newer model amp drives there should be an LCD display and a key pad with arrow keys or numeric buttons that will lead you through menus. You need their manual to do this. Some cheaper model amp drives must be connected to a PC using an Ethernet, Serial or USB cable. The gains settings can only be adjusted in a software program running on a PC that the drive manufacturer provides. To see if you even need to do "Amp Tuning" see if the motor drifts or runs away when not under servo control. To make this test, power must be on to the drive amp and motors, plus the amp enable or inhibit terminal connection must be jumped or grounded to complete a satisfied circuit. Amp enable or inhibit circuit are much like on/off switches so the amp must be on first to see if it will move. NOTE: You may want to disconnect the motor from the ball screw to be safe if you suspect there is a problem. One way to find out if your amp drive gain pots are adjusted correctly is to go into diagnostics and get ready to hit E-stop then enter: (1) POSERROR OFF (2) MOTOR OFF If any of the motors start to drift, you will need to adjust the pots on the amp drives. You may be able to stop the drift by entering: (1) MOTOR ON (2) POSERROR ON If not, hit E-stop or turn off power. If any of the motor axes drift, then see:

Q368 Where is the best place to mount the encoder incase I have mechanical error?

Answer

You may mount the encoders any where you wish. If there are any gears belts, pulleys, etc. involved, you can enter the ratios in the box titled GEAR under MOTION SETTINGS on the CNCSETUP window. The RATIO & GEAR boxes will compensate for any gearing or pulley ratios you have so that the end result is the number of encoder counts or steps it takes to travel 1 inch, 1 degree, 1 mm, 1 revolution or 1 tool number. The closer to the table the better. Linear scales are the best. The ends of the balls screw would be next best, but if want to mount them on any shaft stemming from a pulley, cog or pinion, that is okay. The goal is not to have too many mechanical items that may contain backlash, wear or slop in-between where the encoder is reading and the axis is moving. If there is any backlash or mechanical slop, there are BACK LASH values that can be entered for each axis separately under DESTINATION CONTROL on the CNCSETUP window. There are even axis maps of the entire X, Y or Z axis that can record and keep track of every imperfection, kink, nick, bad spot, etc., along the length of a ball screw. The axis map is an advanced topic. This feature is only available in CNC Plus and CNC Professional. Usually you need a laser interferometer to find the bad spots. In your case if there is any backlash, you can enter this yourself in the BACKLASH boxes. NOTE: The backlash setting works on stepper motors or servo. Enter steps or encoder counts. The BACK LASH compensation values can be in steps and no encoder feedrate is required. NOTE: Don't be too fussy. Every machine has some minor backlash, new or old. You can drive yourself crazy trying to get it prefect and then on a hot day it will change. The general rule of thumb is that as long as your machine cuts within the tolerance for the parts you make, you shouldn't mess with trying to create an axis map or enter backlash values. If you really need high precision, correcting the mechanical root cause is best.

Q369 How do we turn off power to our motors during an E-STOP?

Answer

The short answer is to always use the ESTOP command. This will stop all motor motion and also run the logic "if any" is entered into the ESTOP.FIL file. Physically there are hardware terminal connections called "Amp Enable terminals" and an "ABORT" pin terminal. Using the Abort pin is optional. Using the Amp Enable terminals are optional, although recommended if your amp drives have these connections. The abort pin kills power to the Amp Enable terminals if you have the terminals labeled AMPEN# (where the # refers to the axis letter) connected directly to the on/off terminals on the amp drive itself. When the Abort pin circuit is open "not connected", there will be voltage present on the Amp Enable terminals. When an E-STOP switch closes the circuit between the Abort pin and ground on the ICM terminal, the Amp Enable Signal's voltage drops to 0 volts turning off the drives/motors. There are pages in the CamSoft Installation Guide that describe using different voltages 5V to 24V for the Amp Enable terminals. IMPORTANT: The reason this is optional is because some people do not want the motors to go limp. This can cause a heavy head to fall under gravity or an axis to drift away on its own when not under servo control when the amp is turned off this way. Also in the case of a stepper motor or a servo being controlled by step/direction, you would lose position and would need to re-home the machine. NOTE 1: Even if you did not connect the Amp Enable terminal nor use the ABORT pin, the motion card will still automatically stop all motor motion by setting all axes position voltages to 0V and/or stop all pulses/steps being sent out. NOTE 2: Some motion card models do not have an ABORT pin or Amp Enable terminal, nor do some brands of amp drives have connections to wire these to. NOTE 3: See the SETESTOP logic command for different ways to keep the motor held in place so it does not drift or fall under gravity like a virtual brake. The best method is to have a physical brake on the motor and a counter balance on the head to keep it from falling under gravity.

Q370 How do I figure out what these USB or Comm Port error messages mean?

Answer

There are many messages that have a common root cause. Generally these are IRQ conflicts with hardware when using the Flat Panel Pendant, Touch Screens, Servo Magic or any of the small external black boxes, etc. The most common are Comm port already open, Comm port does not exist, Not Found Skipped, Timed Out, Black I/O box Unplugged, etc. The only setting in the software that you can change is the Comm Port number. But if you do this it may also mean some of the logic commands in the CBK file also would need to be changed. The first course of action should be to either remove/uninstall the conflicting hardware device that is causing the conflict or else change the IRQ number in the Windows Device Manager. If you are using a Serial-to-USB adapter cable, then these settings are found in Windows Device Manager under USB ports or else listed by the software driver brand name of the USB cable. The most common reason for most Comm port errors is that another installed hardware device on this computer is sharing the same IRQ interrupt or Comm port number. The Windows Device Manager should reveal under advanced properties any hardware device that might be using the same IRQ number or memory range. If so, you can change this in Device Manager. Look for two or more devices with the same IRQ numbers or memory ranges When using one of the CamSoft small black boxes, the goal would be to reassign the black box to a different Comm port number. The easiest thing to do is to use a Serial-to-USB adapter which allows you to choose a different Comm port number in the Windows Device Manager. These Serial-to-USB adapters are inexpensive and can be purchased at a local computer store if you don't have one already. Under IO SETTINGS / IO BLACK BOX button in the CNCSETUP window select a different Comm port number – one that is not being used already. Valid ports are 1 through 8. Then in the Windows Device Manager for the Serial-to-USB adapter assign the same Comm port number to match the black box. USB or Serial Comm Port Error Numbers 8000 Operation not valid while the port is opened 8001 Timeout value must be greater than zero 8002 Invalid Port Number 8003 Property available only at run time 8004 Property is read only at runtime 8005 Port already open 8006 The device identifier is invalid or unsupported 8007 The device's baud rate is unsupported 8008 The specified byte size is invalid 8009 The default parameters are in error 8010 The hardware is not available (locked by another device) 8011 The function cannot allocate the queues 8012 The device is not open 8013 The device is already open 8014 Could not enable comm notification 8015 Could not set comm state 8016 Could not set comm event mask 8018 Operation valid only when the port is open 8019 Device busy 8020 Error reading comm device

Q371 What should I do to avoid damage to my computer or motion card?

Answer

(1) Use a Battery Back Up "UPS, universal power supply" which is rated at a higher wattage rating, greater than all of the devices using it. See

Q372 What test and solutions do you have for motor drift or run away? Keeping the last good PID values intact: (1) On the DIAGNOSTIC screen enter this command: MOTOR OFF Tell us what you see: Is the motor vibrating, drifting or oscillating? Your Comments: (2) Next, on the DIAGNOSTIC screen enter this command: MOTOR ON Tell us what you see: Is the motor vibrating, drifting or oscillating?

Answer

Your Comments: (3) When the motors are turned ON using MOTOR ON and the amp drive enable circuit is complete (amp drives ON), then all of the axes should be under closed loop control. The axes should not move while under servo control. If the motor does not move: (3A) Let us know if it is stiff or else has no resistance at all. (3B) Let us know if you see the axis readouts change at all when you try to turn the motor shaft. (3C) STOP here and let us know. (4) If the motor does move: (4A) Your PID values maybe set too high. Temporarily set the PID values for all motors to 0 and repeat Step 3 above. If in this case the motors stop moving, then run the BASIC AUTO TUNE feature in Diagnostics to get good PID values. STOP here. If in this case the motors keep moving, go to Step 4B below. (4B) You can rule out the encoders by simply disconnecting the encoder signal wires. No pulses will be seen or acted on. Now, if the motors stop moving with the encoder wire disconnected, then it is either EM or RF noise. STOP here let us know. See QUESTION 385.

(4C) If the motors still move without encoder signals, then the gain settings on the amp drive need to be adjusted. STOP here let us know.

Q373 How do I stop the over travel limit switch errors and also homing errors?

Answer

(1) You can add the CONFIGLIMITS Y logic command to the STARTUP.FIL file in the case that your over travel limit switches are (Normally Closed) models. NOTE: If you ever saw any axis motion, then you do not need the CONFIGLIMITS Y parameter. No motion would have been allowed if this were the case. (2) You can add the CONFIGLIMITS D logic command to the STARTUP.FIL file to disable the over travel limit switches. NOTE: Does not work on all model motion cards. (3) If you still get the message, then double check the direction the homing routine should be moving to find the switch. If so, there are easy settings at the top of the [HOME MASTER] macro with labeled notes the user can easily change homing direction, feed rates, find index markers, axis homing order and preferences to hit the home switch once or twice. NOTE: Two other reasons homing could be backwards are if the gearing (GEAR setting in CNC SETUP) is negative or the motor wiring polarity is reversed. (4) Make sure your home switch is mounted near the end of axis travel — BEFORE the over travel limit switch would get hit. Also make sure you are not starting the "Home Axis" routine when the machine is already on a limit switch. If so, jog off in the opposite direction before homing. (5) If you keep trying to travel in the same direction that is moving further toward the over travel limit switch, it will repeat the error message. MOTION WILL ONLY BE ALLOWED to travel in the OPPOSITE DIRECTION. Use JOG in the opposite direction. If you cannot JOG in the OPPOSITE direction, you may have the Forward and Back Limit switches reversed. If so, swap the wires labeled RLS# and FLS# where the # is the axis letter X, Y, Z, etc.

Q374 Why are some of the I/O on the Digital I/O Panel Yellow?

Answer

The boxes showing in yellow on the Digital I/O Panel represent unused I/O input numbers in your CBK file that are not being monitored to save time, run more efficiently and faster. Some are shown in groups or blocks of consecutive I/O and some may be individual. Although if you click on them while in DEMO mode, they will react. By calling or referring to one of the yellow I/O numbers in the CBK file, the next time you enter the operator interface the box will not be yellow. Or else you can force all unused I/O to always be monitored anyways by launching CNC SETUP, clicking on Design Operator Interface, selecting Miscellaneous and then Force all non-used IO to be read.

Q375 Our motors are coasting to a stop during Emergency Stop.

Answer

How do we get them to stop quicker? If you have the E-STOP button wired to the "Enable Pin" on your amp drive or else wired to the "Abort" pin on the motion box, this will cause the motors to turn off and go limp. The machine is heavy and will coast to a stop or the Z head may fall under gravity. Add this logic command to the STARTUP.FIL file: SETESTOP NORELEASE and/or SETESTOP NODECEL Also refer to these other questions:

Q376 Why is there so much over travel after a home switch is hit?

Answer

As opposed to over travel limit switches, the LIMITS.FIL file uses an E-STOP command, which will seem to stop the machine instantly, whereas the Homing routine uses a STOP command. The STOP command will decelerate to a stop based on the DECEL value, which is what you want it to do, and coast to a smooth stop rather than an abrupt stop. When there is an emergency such as an over travel, then an E-STOP is best. The faster the feed rate value is in the Homing routine the longer it takes to decel to a stop. If you lower the homing feed rate, there will be less chance it will travel past the home switch. All in all, it is expected for the Homing routine to pass the home switch depending on how far it traveled from — meaning the moment and location the axis comes to a stop will vary. This is normal. This is why there are additional choices to enable in the Homing routine to automatically back off the switch and hit the home switch a second time at a known "assigned" distance and slow feed rate. This way the axis home location will be consistent. There is even another optional choice to have the Homing routine seek out an index marker on the encoder or linear scale.

Q377 What does the message mean "Too many moves made in a row with a resolution finer than the encoder accuracy"?

Answer

This is basically warning you that your machine isnot capable of making these moves because they are so small and that your encoders, linear scales or micro stepper resolution will skip them. There may be something in either your G code program or a macro that is repeating/looping an axis movement that is either at the same locations over and over or else the most common reason is that it ismaking many extremely small, short moves in a row that are so small that they are less thanthe TOLERANCE value you have set. You could increase your TOLERANCE under GENERAL SETTINGS until the message goes away. However, it would be best to find and change/remove these short moves in the G code program and/or macro or change the microstep setting to give you higher resolution "more steps per inch,mm,degree" for stepper motors or physically change the encoders to higher resolution models.

Q378 How can we get the most accurate spindle RPM?

Answer

Keep in mind that there are both software settings as well as settings on the spindle on the amp drive itself. They do work hand in hand and both need to be set as accurately as possible to be efficient. (1) On the CNC software side use the Spindle Test feature in Diagnostics which will automatically find the proper settings. (2) There are two main settings on the Spindle drive itself that will make the spindle speed accurate: On your Spindle Drive A.K.A. (VFD) or Variable Frequency Drive you will notice either physical pots that you turn with a screwdriver or else up/down arrow keys on a keypad to make these adjustments on most drive models. The adjustments are labeled differently by brand and may say GAIN, OFFSET, CURRENT LIMIT, BALANCE, DEADBAND, BIAS, etc. You will need some help here from the manufacturer or get documentation that describes these settings. IMPORTANT: The two main settings are — Voltage reference (GAIN) and CL (Current limit) — must be set to allow a full 10V analog signal to access the full speed range low to top speed. Detailed information can be found here:

Q379 How do we establish home on a part location in a vise or fixture in the center of the table?

Answer

The value you enter into PreSet when using an edge finder should be half the diameter of the edge finder itself. Example: If you use a 1/2 inch diameter edge finder to touch off on the left side of your part in X, then enter a -.25 in the PreSet Value box. If you touch off the top of your part in Y, then enter.25. This will make the true edge of the part zero. If you use a dial indicator to tram in a tooling hole rather than using an edge finder, then the preset value would be zero. NOTE: Normally you are suppose to get out of Hand Wheel mode or Jogging mode before you preset a new home location.

Q380 My real axis positions differ from what the axis readouts show.

Answer

What causes this? Make sure you have the correct number of encoder counts per inch, mm or degree entered for each axis into the RATIO boxes in the CNC SETUP program under MOTION SETTINGS. If not, then adjust these first before reading on. If your encoders have these 4 wires A+,A+,B+,B- then make the connections directly to our terminal strip and set the ENCODER setting to 0 in the CNC SETUP program. This will give the best axis accuracy and the most stable positioning. Normally all CNC machines use Encoder setting type 0 for Quadrature encoders or 2 for Linear Scales. If you are using stepper or servo motors driven by pulse "step" and direction signals, then set the Encoder type to -1 and only read the last line below starting with "There are other reasons". There is a good reason why there are 4 wires for Quadrature and only 2 wires for Pulse type encoders. When the Encoder type is set to 1=Pulse, then the motion card is only looking at 2 of the 4 wires A, B. Pulse mode is reserved for hand wheels, spindle RPM counting and other simple counting devices such as conveyor belts or part counters. In quad mode the A+,A- and B+,B- are what is known as differential signals. This ensures accuracy and redundancy. In Pulse mode power fluctuations, EM or RF noise or other factors can report false encoder counts, hence false axis positions. There should be no reason why you can't use encoder setting 0 if your encoders have A+,A+,B+,B- connections. Double check all 4 A+,A+,B+,B- connections made from the encoders directly to the terminal strip. Do this on all axes. It could just be one axis that is not wired or has a wire that is touching or shorted to ground. If the wiring checks out okay, then swap out one encoder at a time with a known good encoder. The reason why you can't use encoder setting 0 is either wiring, power, noise or a bad encoder. This is to your benefit and is the way CNC equipment should be wired according to general CNC industry standards. There are other reasons why the real axis position can be different from what the axis readouts show. Some reasons are mechanical wear, gearing play or backlash that come after / past the encoders, Amp drives may be in velocity mode and are over-correcting the axis position or you may need tighter Servo tuning or else one or more encoders are reporting false counts, which affects the axis position. This can come from power fluctuations in power supply voltage to the encoders, EM or RF noise from cables that run near electrical motors, high- voltage power supplies or other high-voltage equipment that cause the cables to act like antennas.

Q381 Our CNC or CAD/CAM system is not coming up.

Answer

In the event you only briefly see the CamSoft white LOGO screen and then this screen goes away but the operator screen does not come up, then this is a special case where you need to directly contact CamSoft or your dealer so we can do some tests. If you are getting an Error 62 or GLOBAL.FIL file error or else a message box pops up as soon as you launch the software, then press the PrtScn key on your keyboard to capture the message to the Windows clip board memory. Use the Windows PAINT program or a similar program to save the screen image to a file that can be e-mailed to CamSoft. What has happened is that one or more of the files in the AS3000 folder or files in one of the subdirectories have been damaged. This is usually caused by not shutting down Windows, the CNC or AS3000 gracefully while files were still opened, much like a USB stick gets corrupted when you pull it out without using the Safe Remove Hardware button on the bottom of the Windows Task Bar. If the files that were damaged or corrupted were confined to ones used by the CamSoft software, then you may be able to quickly get yourself going again by launching the CNC SETUP program (by clicking on the CNCSETUP Icon on your Windows Desktop) and using the RESTORE button to load the last CBK file you have for this machine. Make sure it is the latest CBK file copy. 1. If that did not help, then one or more Windows files or drivers are damaged. If you do not have a recent Windows RESTORE point that you can go back to, then rename the AS3000 folder to another folder name – "make up any name you wish". This is for safe keeping as a backup because you may or may not need one or more unique bitmaps found in the BMPWAV folder and/or any JOB files or Post Processors found in the WORK folder that are unique or custom made for your company. 2. Then do a fresh re-install from the CamSoft CD. 3. From the backup you just made, copy any part program JOB files or Bitmaps unique to your machine (such as your company LOGO or bitmaps of on-screen push buttons, light bulbs, etc.) found in the WORK and BMPWAV folders over to the newly installed WORK and BMPWAV folders. 4. Launch the CNC SETUP program (by clicking on the CNCSETUP Icon on your Windows Desktop) and use the RESTORE button on the CNC SETUP main screen to load the last CBK file you have for this machine. 5. You are all set. Open the CNC or CAD/CAM software program and see if any bitmaps are missing. If so, get them from the backup. If not, at this point make a backup copy of the entire AS3000 folder including the subdirectories plus make a Windows RESTORE point as well.

Q382 What type of potentiometer should be used for feed rate and spindle speed override?

Answer

A multiple purpose 0-10V analog 10K ohm potentiometer also called a pot or wiper. You would only need to add a resistor to limit the voltage on the +10V terminal of the pot if your power supply was greater than 10V.

Q383 Can you give me a summary on how to set the tool offsets?

Answer

Below are examples showing some industry standard methods for setting tool offsets, which are basically all the same. The main differences are the labels or captions used on the buttons since the operator screen and push button labels are user definable. In all scenarios the goal is to enter a Tool Number, then jog the tool slowly and touch off the part using a thin brass shim stock to protect the tool and part. Next, press a button that will save the tool offset directly on the Tool Parameter screen under the tool number chosen. After each tool number has been set up, you will see this location as zero despite its length meaning, for example, if a G code program issues a G0 X0, every tool would move to the exact same location barely touching the part surface, seeing this position as X0. For 3 to 5 Axis Applications Make sure you have a Tool Number selected (the label may say "Tool Number" or "Tool Length Num") Jog the Z axis to the top of the part surface Press the button labeled "Set Tool" For 3 to 5 axis Applications using the Flat Panel CNC Control Station Make sure you have a Tool Number selected Jog the Z axis to the top of the part surface Press the Soft KeyPad OFFSET button —————————————————— For Lathe Applications Make sure you have a Tool Number selected (the label may say "Tool Number" or "Tool Length Num") To Set the Z Offset Jog the Z axis over to the part face or shoulder Press the button labeled "Touch Off Z Face (Set Tool)"

To Set the X Diameter Offset The procedure for X is that first you must have a pre-sized billet of a known diameter so that you can enter the diameter into the box on the operator screen titled "Part Dia to Set X" or "Part Dia". Then jog slowly to the known diameter of a part and touch off. Press the button labeled "Touch Off X Diameter (Set Tool)". SPECIAL NOTES: Enter the tool nose radius into the tool parameter screen for each tool. Some tools will have sharp corners so the tool radius will be zero. This is a complex concept, but you must add or subtract the tool nose radius amount from the current value in the Z Axis Horz box on the Tool Parameter screen in the direction of the T.S.C "To Sharp Corner". The amount is always equal to the tool nose radius, but whether to add or subtract is relative to the T.S.C. direction for each tool. The chosen direction of offset is based on if the lathe tool is cutting on the O.D. or I.D, cutting a slot, parting off, cutting a back angle, etc. You may want to ask an experienced CNC Lathe programmer to explain this one. The adjusted value in the X Axis Vert box on the Tool Parameter screen has the same complex concept as does the Z Axis Horz box. You must add or subtract the tool nose radius amount from the current value in the X Axis Vert box on the Tool Parameter screen in the direction of the T.S.C. The amount is always equal to the tool nose radius, but whether to add or subtract is relative to the T.S.C. direction for each tool. For Lathe Applications Using the Flat Panel CNC Control Station To Set the Z Offset Make sure you have a Tool Number selected Jog the Z axis over to the part face or shoulder Press the Soft KeyPad OFFSET button To Set the X Diameter Offset Make sure you have a Tool Number selected The procedure for X is that first you must have a pre-sized billet of a known diameter so that you can enter the diameter into the box on the operator screen titled "Preset Value" or "Part Dia". Then jog slowly to the known diameter of a part and touch off. Press the Soft KeyPad OFFSET button —————————————————- Also refer to the common questions listed below contained in Section 12 "Troubleshooting and Common Questions and Answers" of the CNC Professional Reference and User Manual.

Q384 We have problems with the CNC or Windows not booting up.

Answer

What advice do you have? This is almost always the result of Windows or the CNC not being shut down gracefully. Instruct anyone using the machine never to just turn off power to the computer even if there is an error. There are also several other reasons, but these would have to do with third-party software being run on the same computer in the background that gets "stuck or hung" even when you do shut down windows. If you know about or are aware that this may be the case, then you can hit CTRL-ALT-DEL and go to Windows Task Manager pressing the button "End Task" on the Tab labeled "Applications" or "Services". Here are a few of pointers: (1) Before you re-install the software and if you had made a Windows Restore Point recently, then use the RESTORE POINT feature to revert Windows to an earlier backup. (2) Use an un-interrupted Battery Back Up power supply (UPS) unit. This will stop a brief interruption in low-voltage power that may corrupt or damage files on the hard disk or even falsely trigger I/O sensors in a power outage. A UPS battery keeps power supplied for at least 20 minutes to give the machine operator a chance to close things down, exit the CNC and shut down Windows gracefully. (3) In Windows, turn off the UAC "User Account Control" Security, set up Windows so that you boot up as the Windows Administrator, turn off Windows Automatic Updates and do not install or update any other third-party software on the computer that runs the machine. Basically, dedicate this computer to only run the machine.

Q385 Electrical RF or EM noise or power fluctuations interrupt low-voltage signal communications giving false reports.

Answer

Electrical noise comes from two types of sources. (1) RF Noise — over the air: The signal cable acts like an antenna disrupting communications when large motors, power generators, electrical welders, air compressors or any electromechanical machinery is nearby.

Solution: A. Put the cable that connects the unit (digital IO or analog black box, pendant, laser probe, height sensor, etc.) to the computer inside some plastic flexible tubing to reduce electrical noise. B. Keep signal cables mounted far away from any other high-voltage power cables, motors or high-voltage power supplies. C. Always tie off both ends of the shielded ground wire at each end of the cable, which may be a metal mesh to the earthen metal frame of the machine. Consider adding an EMI filter. An EMI filter is a small passive electronic device used to suppress interference on power or signal lines present within an electromagnetic environment. Most PC keyboards and laptops have these. It is the small round barrel on the cable itself. (2) EM Noise: Power fluctuations or noise could come from the power supply itself or else there could be a short, brief interruption of power that causes a communication error. In some cases the computer may re-boot on its own or shut off. Solution:Use a separate "isolated" and different power supply that does not plug-in or share any wall sockets or power strips with other hardware. The best protection you can get is to use a common store bought Battery Back Up called a UPS "Un-interruptible Power Supply". These filter out noise and protect against brief power fluctuations and power interruptions.NOTE: Make sure the wattage rating of the Battery Back Up is larger than all of the combined devices plugged into it. Most UPS batteries will give the operator about 20 minutes of protection and enough time to gracefully shut down the CNC and PC.

Q386 How can I tell if the motors are off or the status of Amp Enable?

Answer

There are three ways: (1) Automatically without doing anything certain messages will pop up. Currently Stopped, Motor 1 is off -or- Can Not Move, Motor is OFF -or- Can Not Jog, Motor is OFF NOTE: This only displays when a motor was on then got turned off. It will not repeat the message over and over. Open Diagnostics then either: (2) Press the button titled "Why Am I Not Moving". A report will be displayed in the provided white box. It will let you know if any motors are off. (3) In the long green box, if you have a Galil card and want to inquire on the X axis, enter: COMMAND MG_MOX:RESPONSE \123:IF \123=1 THEN MESSAGE X AMP ENABLE IF OFF

Q387 My computer is having trouble playing your video tutorials, why?

Answer

If you are having trouble playing the videos or tutorials, it is because your browser and/or Windows does not have or cannot find the "codec" to play certain video formats. There are multiple MPG, MP4 and AVI formats that change from time to time that can be updated. Windows calls these files "codec" files. Usually by downloading Windows Media Player it will download all of the latest codec files. You could also get them from the following websites: www.windows7codecs.com www.windows10codecpack.com www.mediaplayercodecpack.com As an alternative you can locate the file with Windows Explorer and play the videos in your Windows Browser. The videos from CamSoft's "Utility Programs" CD can be found after installation in the C:\Program Files folder, under CamSoft, CamSoft Video Series \ Media folder. Once there, search in each of the subdirectories and you will find an MISC folder. The CamSoft videos are in standard MPG, MP4 and AVI formats. We also provided Google Chrome links that you can click on to view the videos if you have Chrome. If not, then hold your mouse down on the video you want to view and drag and drop it into the Windows Browser that you use such as Microsoft Internet Explorer.

Q388 Why does my motor run away or run backwards?

Answer

A common solution to stop the motor running away when turned on is often the same reason the motor runs backwards. This is caused either by reversed motor wiring polarity or else the encoder polarity. On a DC Brushed servo there are only 2 power wires (a 3rd bare or green wire is ground – leave as is) which you may simply swap to make the motor spin in the opposite direction. On an AC Brushless servo there are more wires so it is better to swap the encoder wires going to the motion card's ICM terminal strip or motion box. You can reverse the polarity of the encoders by swapping the A and B channels. Encoder A+ to the MBX+ on the ICM or MB+ on the motion box Encoder A- to the MBX- on the ICM or MB- on the motion box Encoder B+ to the MAX+ on the ICM or MA+ on the motion box Encoder B- to the MAX- on the ICM or MA- on the motion box

Q389 How do I set up homing the axes of my machine and axis travel in the right directions?

Answer

If you do not have physical Home Switches, then you may refer to (Alternative Home Location) below. (1) Before you perform or set up the homing routine, first confirm the axes are traveling in the correct directions and the readouts are counting in the right positive or negative directions. On the CNC SETUP window, press the "Search for Solutions" button then click on "Programming Basics". Scroll down to see Mill and Lathe diagrams that show industry standard axis travel directions. If your axis readouts are not traveling in the same + and – directions as shown in these diagrams, then stop here and perform the task below before you home your machine. Apply the solutions below before proceeding. Wait until the axis travel directions and axis readout are counting in the right directions that match the industry standards described below for your machine type: For a non-lathe machine type: Confirm that the spindle or head or nozzle "in relation to the table surface" is traveling to the left in the X axis direction when jogging in the minus direction or commanding an X- move. The opposite should be true for X+. If X+ moves the spindle or head or nozzle to the right and X- moves the spindle or head or nozzle to the left, this is good. Don't worry about the axis readout displays at this time. We'll get to this later. For a lathe machine type: Confirm that the tool turret "in relation to the lathe bed" is traveling to the left in the Z axis direction when jogging in the minus direction or commanding a Z- move. The opposite should be true for Z+. If Z+ moves the tool turret to the right and Z- moves the tool turret to the left, this is good. Don't worry about the axis readout displays at this time. We'll get to this later. If this is not what you see, then go to (Reversing Axis Travel Direction) below. For a non-lathe machine type: Confirm that the spindle or head or nozzle "in relation to the table surface" travels toward you in the Y axis direction when jogging in the minus direction or commanding a Y- move. The opposite should be true for Y+. If Y+ moves the spindle or head or nozzle away from you and Y- moves the spindle or head or nozzle toward you, this is good. Don't worry about the axis readout displays at this time. We'll get to this later. For a lathe machine type: Confirm that the tool turret "in relation to the lathe bed" travels toward you in the X axis direction when jogging in the minus direction or commanding an X- move until you reach the centerline of the spindle. The opposite should be true for X+. If X+ moves the tool turret away from the centerline of the spindle and X- moves the tool turret toward you until you reach the centerline of the spindle, this is good. Don't worry about the axis readout displays at this time. We'll get to this later. If this is not what you see, then go to (Reversing Axis Travel Direction) below. (2) If the axis motion travel directions above are confirmed correct but the axis readout displays are counting in the opposite directions, then go to (Reversing Axis Readout Counting Directions) below. (3) To set up the physical home switch wiring, refer to the 2 PDF files found on your gray USB memory stick titled: Wiring Notes and IO Map Summary.PDF General Machine Preparation Summary of Instructions.PDF These 2 PDF files will show you the Home Switch wiring terminal numbers the physical home switches should be wired to which were pre-set up by CamSoft or your dealer in your CBK file (operator interface and logic file) from a similar machine. You can see the I/O terminal numbers that are used which are found under I/O SETTINGS on the CNC SETUP window. You can find their physical terminal connections on your motion card / box model on pages 4-41 through 4-60 in the CamSoft Installation Guide. NOTE: The home switch mounting locations do not matter. They may be on the right or left end of the table or bed or in the front or back of the table or bed. Use the HOMING button found on the CNC SETUP window to adjust all aspects and choices when homing the machine. You may choose to search for the home switches in any direction at any speed, chose preferences on either hitting the home switch once or twice or also searching for an Index marker on the encoder or linear scale. You choose how your homing routine will work. One common practice is to set the axes readouts to known fixed values after the homing routine is finished. To do this you can set the values for home per axis by entering values into the green text boxes at the bottom right corner of the Homing screen. Enter any value you want for X Y and Z to call home. Example: If the X axis home switch is on the far right end of the table, then after homing you will find that as you move to the left off of the home switch that the X readouts will count increasingly negative. This is normal. If home is on the far right end of the table which is called by default set to zero, then any movement to the left of home should count negatively. To change this, you can enter in a value into the green boxes at the bottom right corner of the homing screen to call it 40" for example. Then as you move to the left the readouts will count down 30", 20", 10", etc. (4) Floating Job home location methods after homing Keep in mind that the job home for the axis floats around the table. Job home is separate from the Machine's Home. You can use the presets or axis reset buttons and enter new values for Job Home inside green fill-in-the-blank boxes on the operator's screen to establish job home at any location on the table or bed. You can call it 0,0 or any numbers. You also have the ability in a G code program to invoke a G92 which will establish 0,0 at the beginning of your program at the current location of the table or bed or else invoke G54 through G59 for additional floating fixture offsets. (Reversing Axis Travel Direction) Before you swap the motor wiring polarity try reversing the GEAR software settings found under MOTION SETTING on the CNC SETUP window. Reverse the GEAR value to the opposite (positive or negative) value that it is now. This will reverse the motion of the axis direction. Example: If GEAR =1 make GEAR = -1 (Reversing Axis Readout Counting Directions) Before you swap the A and B terminals on the encoders try reversing the FINETUNE software settings found under ENCODER SETTINGS on the CNC SETUP window. Reverse the FINETUNE value to the opposite (positive or negative) value that it is now. This will reverse the counting of axis readout displays without reversing motion of the axis. Example: If FINETUNE =1 make FINETUNE = -1 (Alternative Home Location) Under MACHINE START SETTINGS on the CNC SETUP window, click on the button titled SAVE POSITION for help and change the white box next to this to TRUE. This will remember the current axis locations the next time the machine is turned back on after being powered down and plug the axis last location into the axis readouts automatically without ever having to home the machine to physical home switches much like an Absolute Encoder does. Although using physical home switches is the preferred method. If you do not have physical Home Switches, then you still want to perform tasks (1) and (2) above as well as read (4) Floating Job home location methods after homing.

Q390 How do I manually tune each axis?

Answer

Below are the instructions to manually tune each axis: (1) Using the CNC SETUP ICON found on your Windows Desktop, Click on "Servo Tuning Settings" Start with the PID values below by entering them under SERVO TUNING SETTING for the axis number you want to tune: PROPRO=20 INTEG=2 DERIV=200 (2) The PID adjustments for each axis can be done manually through the Maintenance/Diagnostic Icon, which shows slider bar adjustments. How to do this is explained in the CamSoft “Installation Guide” in Section 6 titled “Diagnostics and Servo Tuning” starting on Page 6-9 and then the list on Page 6-11. Page 6-10 explains the purpose of each PID setting and what happens to the motor and positioning accuracy when you Increase or Decrease the Proportional Gain, Integral Gain and Derivate Gain. (3) After you make an adjustment using the slider bars, use the "TEST MOTION" button feature on the Diagnostic windows to see if the motion test can PASS the accuracy within the TOLERANCE you are using. Once the TEST MOTION test PASSES, then STOP. You're good. Press SAVE and make a CBK BACKUP. We want to point out that the motion card manufacturer also offers an automatic Servo Tuning program that you can download. IMPORTANT — Further last minute information: You can find the latest information by accessing the on-line help while in the CNC control. If a change or improvement is made after the manual has been printed, the CNC control's on-line help will be updated to contain this change or improvement.