Difference between revisions of "Main Page"

From Dynomotion

Jump to: navigation, search
(Introduction)
(Wiring Diagrams rotary switch)
(38 intermediate revisions by 3 users not shown)
Line 30: Line 30:
 
==Dynomotion Software Topics==
 
==Dynomotion Software Topics==
 
===Installation Topics===
 
===Installation Topics===
* Latest Production Release: [http://dynomotion.com/Software/Download.html Full release download page (includes link to signed Windows Drivers)  Note:to use signed Drivers for W7 64bit Drivers from V4.34a or later are required.  Also all Windows Updates should be performed for the chain of trust to work properly]
+
* [http://dynomotion.com/Software/Download.html Latest Stable Release] Note: For Windows 7 64bit signed Drivers to work, all Windows Updates should be performed.
 
* [[Upgrading from previous KMotion Versions]]
 
* [[Upgrading from previous KMotion Versions]]
* Latest Test Release: 05/07/2017: [http://dynomotion.com/Software/KMotion434i.exe KMotion.exe V4.34i], See the release notes for this test version here: [http://dynomotion.com/Software/KMotion%20Released%20Version%204.34i%20Changes.pdf V4.34i release notes (pdf)]
+
 
 +
Archive of Test Releases:
 +
 
 +
* Previous Test Release: 09/28/2017: [http://dynomotion.com/Software/KMotion434j.exe KMotion.exe V4.34j], See the release notes for this test version here: [http://dynomotion.com/Software/KMotion%20Released%20Version%204.34j%20Changes.pdf V4.34j release notes (pdf)]
 +
* Previous Test Release: 05/07/2017: [http://dynomotion.com/Software/KMotion434i.exe KMotion.exe V4.34i], See the release notes for this test version here: [http://dynomotion.com/Software/KMotion%20Released%20Version%204.34i%20Changes.pdf V4.34i release notes (pdf)]
 
* Previous Test Release: 12/14/2016: [http://dynomotion.com/Software/KMotion434h.exe KMotion.exe V4.34h], See the release notes for this test version here: [http://dynomotion.com/Software/KMotion%20Released%20Version%204.34h%20Changes.pdf V4.34h release notes (pdf)]
 
* Previous Test Release: 12/14/2016: [http://dynomotion.com/Software/KMotion434h.exe KMotion.exe V4.34h], See the release notes for this test version here: [http://dynomotion.com/Software/KMotion%20Released%20Version%204.34h%20Changes.pdf V4.34h release notes (pdf)]
 
* Previous Test Release: 12/13/2016: [http://dynomotion.com/Software/KMotion434g.exe KMotion.exe V4.34g], See the release notes for this test version here: [http://dynomotion.com/Software/KMotion%20Released%20Version%204.34g%20Changes.pdf V4.34g release notes (pdf)]
 
* Previous Test Release: 12/13/2016: [http://dynomotion.com/Software/KMotion434g.exe KMotion.exe V4.34g], See the release notes for this test version here: [http://dynomotion.com/Software/KMotion%20Released%20Version%204.34g%20Changes.pdf V4.34g release notes (pdf)]
Line 42: Line 46:
 
* Previous Test Release:  03/09/2016: [http://dynomotion.com/Software/KMotion434a.exe KMotion.exe V4.34a], See the release notes for this test version here: [http://dynomotion.com/Software/KMotion%20Released%20Version%204.34a%20Changes.pdf V4.34a release notes (pdf)]
 
* Previous Test Release:  03/09/2016: [http://dynomotion.com/Software/KMotion434a.exe KMotion.exe V4.34a], See the release notes for this test version here: [http://dynomotion.com/Software/KMotion%20Released%20Version%204.34a%20Changes.pdf V4.34a release notes (pdf)]
 
* [http://dynomotion.com/Help/KFLOPQuickStart/KFLOPQuickStart.htm How to install KMotion.exe and KMotionCNC]
 
* [http://dynomotion.com/Help/KFLOPQuickStart/KFLOPQuickStart.htm How to install KMotion.exe and KMotionCNC]
* [[How to install KMotion.exe and KMotion in Windows 10|Preparing Windows 10 for driver installation]]
+
* [[How to install KMotion.exe and KMotion in Windows 10|Preparing Windows 10 for driver installation]] (no longer required)
 
* [[Special Case for Windows 8.1 Industry Embedded Enterprise]]
 
* [[Special Case for Windows 8.1 Industry Embedded Enterprise]]
 
* [[Updating KFLOP Firmware|How to update KFLOP Firmware]] - whenever a new version of software is installed, the firmware within KFLOP must be updated to match the new version
 
* [[Updating KFLOP Firmware|How to update KFLOP Firmware]] - whenever a new version of software is installed, the firmware within KFLOP must be updated to match the new version
Line 84: Line 88:
  
 
[[Rigid Tapping G84 Setup and Use]]
 
[[Rigid Tapping G84 Setup and Use]]
 +
 +
[[Tool Length/Offsets G43Hn G49]]
  
 
====<span style="text-decoration: underline;">Customize KMotionCNC</span>====
 
====<span style="text-decoration: underline;">Customize KMotionCNC</span>====
Line 96: Line 102:
 
::: Troy (tmday7) created some helpful documents listed on the Yahoo Group Files Section [https://groups.yahoo.com/neo/groups/DynoMotion/files/KmotionCNC%20Screen%20Customizing/ here].
 
::: Troy (tmday7) created some helpful documents listed on the Yahoo Group Files Section [https://groups.yahoo.com/neo/groups/DynoMotion/files/KmotionCNC%20Screen%20Customizing/ here].
 
====<span style="text-decoration: underline;">KMotionCNC Screen Editor</span>====
 
====<span style="text-decoration: underline;">KMotionCNC Screen Editor</span>====
'''Table of contents:'''
+
Introduces the capability of using Screen Script files to modify the look and function of KMotionCNC.<br />[[KMotionCNC Screen Editor|More information.]]
 
+
# Introduction
+
# Control styles
+
# Control attributes
+
# Main Window attributes
+
# Bitmap types and Alpha and locations
+
 
+
====Introduction====
+
 
+
Video: [https://www.youtube.com/watch?v=l6d_AYTptVQ https://www.youtube.com/watch?v=l6d_AYTptVQ]
+
 
+
'''Features include:'''
+
 
+
* Show/Hide Controls
+
* Change Size and Position of Controls
+
* Change Label/Button Text
+
* International Character Support
+
* Change Font/Text Size
+
* Bitmap Buttons and Labels
+
* JPG, BMP, PNG Bitmaps
+
* Toggle Bitmap Labels (LEDs)
+
* Customizable Keyboard Hotkeys
+
* Customizable Button Tool Tips
+
* Programmable DRO (Digital Read Output) Labels
+
* Custom User Entry Controls
+
 
+
 
+
The 6-axes default screen is changed to a 5-axes screen by deleting the z-axis. We start by installing KMotion 4.34b or later. Note that if you don’t already have Dot Net version 4.62 or Visual Studio 2015 libraries installed, you will be prompted to load those. Create desktop icons for KMotion, KMotionCNC and KMotionCNC Screen Editor. Run KMotion and observe the default 3-axes resizable screen.
+
 
+
[[File:3axes-resizable-screen.png|none|link=|504x286px]]
+
 
+
Close the G Viewer window and change the dialog face to Default Custom Screen with no screen script specified. (Tool Setup):
+
 
+
[[File:Default-custom-screen.png|none|link=]]
+
 
+
Now run the KMotionCNC Screen Editor. It automatically syncs to KMotionCNC’s controls and they are graphically displayed.
+
 
+
This graphical representation allows you to select which controls you want to modify.
+
 
+
Notice we can select a control and immediately hide or show it over at KMotionCNC. The controls can be moved or resized. There is also unlimited undo/redo. Multiple controls can be selected by dragging the mouse over the graphical display. Click SHIFT to add more controls, or CTRL to remove from the selection.
+
 
+
'''Examples: '''
+
 
+
* Select multiple controls for hiding and moving.
+
* Change main dialog screen dimensions.
+
* Change label text. Push SET key and KMotion CNC screen updates the text.
+
* Increase the size of the controls.
+
 
+
The screen editor features international text support. Note that only certain fonts are capable of displaying international text. In our example, we selected Arial.
+
 
+
Labels can show or toggle bitmaps based on an IO bit. As an example, we first we select bitmap 1, then bitmap 2. Increase the size of the label, so the bitmap shows properly. Then assign an IO bit number that will control the bitmap displayed. Notice the bitmap turns green, because the bit is currently on. Open KMotion and look at the state of IO bit #46 and see that it is on. Toggling the bit affects the bitmap on the screen:
+
 
+
[[File:Toggle-IO-bit.png|none|link=]]
+
 
+
Users can configure push buttons for text, font, size, color, and tool tip. Select two sample labels and change them to type: button. Select both buttons and modify their fonts as well as their size. Four colors are available for text and background, each in normal and depressed button state. You can then change the name of each button individually, one to say “On” and the other“Off”. You can assign tool tips to each of the buttons, so when the operator hovers over the buttons, they will be prompted with a tool tip notification.
+
 
+
Buttons can be assigned to perform actions. Select a script that can either be a screen script or an action. We select an action type to set bit 46 to 1. Notice that this is the script that indicated that. For the other button, we select an action which sets bit 46 to 0. Now pushing the buttons will perform these actions. Save your new screen as a screen script file. Screen script is under the KMotionCNC directory and the sub-directory“Screens”. Configure KMotionCNC to use this new screen at every new startup.Notice that tool setup screen can be accessed by right-mouse clicking on the KMotionCNC title (in “Tools/Setup files”). Select the screen you just created.
+
 
+
Some more advanced features include input fields, C program actions, label DROs. Load the addition example in the screen editor. Example contains two user input controls and one DRO label control. The input edit controls are associated with KFLOP persist variables 160 and 161. The DRO label is associated with KFLOP persist variable 162. The Add button is configured for screen script action to run a C program in KFLOP. The C program is contained in the file “Add.c”. Test it by entering two values and pushing the Add button. Now open KMotion and look at the simple C code that is behind the function. (Open the file “Add.c”).
+
 
+
 
+
'''Momentary and Toggle button types in KMotion CNC Screen Editor'''
+
  
[https://www.youtube.com/watch?v=eE2mSUXxN2M https://www.youtube.com/watch?v=eE2mSUXxN2M]
+
====<span style="text-decoration: underline;">KMotionCNC Geometric Correction</span>====
 +
Information regarding the powerful [https://dynomotion.com/Help/KMotionCNC/GeoCorrection.htm Geometric Correction capability] which allows calibration and distortion correction of the XY CAD space to Machine/Actuator Space as well as flatness in Z.  Simple 4 point correction tables can apply XY Scale, Rotation, skew, offset, tilt.  Larger tables can apply more non-linear corrections.
  
Start KMotion CNC Screen Editor, and click on the “Main” tab, then on “Read Script” and choose the file named MomentaryToggle.scr
+
Note the Geometric Correction is built into the KMotion Libraries and can be utilized by Custom Programs as well as with KMotionCNC<br />[[Geometric Correction|More information and Examples.]]
 
+
You will see two buttons, a Momentary button assigned to bit46 and a Toggle button assigned to bit 47. You will also see two labels to display the status of bits 46 and 47 as LED bitmaps. We also have KMotion displaying the status of bits 46 and 47.
+
 
+
[[File:Momentary-button-2.png|none|link=]]
+
 
+
Clicking the Momentary button activates the bit; releasing it,deactivates it. Clicking the Toggle button once sets the bit; clicking it again releases it.
+
 
+
 
+
 
+
'''Instantaneous Feed Rate Display'''
+
 
+
[https://youtu.be/w-bKvqXCd0Q https://youtu.be/w-bKvqXCd0Q]
+
 
+
Normally the feed rate indication in KMotionCNC shows ''average'' feed rate over 100ms, assuming straight line motion. Here we use a C program to calculate a more instantaneous rate and display it on the KMotionCNC screen using the KMotionCNC screen editor. Here the C program samples two positions and times, computes the delta position and the delta time, formats it to a string and displays it onto DRO label 162 in KMotionCNC and it performs this action roughly every one ½ seconds. Here is the screen script for the screen shown on the left, we’ve added a type DRO label in the screen editor, edited colors and it is connected to persist variable 162. This job consist of a rapid heal explore (?) at a rate of about 6 revolutions per second. It shows the instant feed rate being more correct.
+
 
+
 
+
'''Split/Full/Hidden GViewer Display on Main Dialog Face'''
+
 
+
[https://youtu.be/VkBhYpyGpNU https://youtu.be/VkBhYpyGpNU]
+
 
+
KMotionCNC Screen Editor supports changing main screen style. New Boolean Screen Script “Main:” Options: "Caption:" "MaxBox:" "MinBox:" "ResizeFrame:" "Maximize:"
+
 
+
 
+
 
+
'''Maximized Captionless KMotionCNC Screens'''
+
 
+
[https://youtu.be/R44F0_upIoA https://youtu.be/R44F0_upIoA]
+
 
+
New option in KMotionCNC Screen Editor V4.34e allows screens to be maximized to full screen and with or without Window Frame/Title. New options in Screen Editor: turn minimum box on or off, maximum box on or off, resizing frame on or off. Caption on top can be present or absent.
+
 
+
Available viewing options (three buttons on the top-right hand side of the screen: “Split”: Split screen mode, “View”: G Code Viewer or “Code”: G Code.
+
 
+
==<span style="text-decoration: underline;">'''2. Control styles'''</span>==
+
'''<br /> '''Available style options:<br /> [[File:Style-options.png|none|link=]]
+
 
+
* '''Label''' <br /> Can be text or bitmap. The background is determined by the main dialog background.
+
* '''Button''' <br /> Buttons can have all 4 options (foreground and background colors in on- and off-state) or they can also be bitmaps. Labels can load actions/scripts when the main screen is loaded.
+
* '''MotionButton''' <br /> Motion buttons are strictly for jog button use only.
+
* '''ToggleButton''' <br /> See description above and [https://www.youtube.com/watch?v=eE2mSUXxN2M video].
+
* '''DROLabel <br /> '''('''D'''igital '''R'''ead '''O'''ut) runs a program in KFLOP, e.g. reads two edit cells in the “Add” example and passes back the result. X, Y, and Z are other examples of DRO labels.
+
* '''VertBar''' <br /> Plots a vertical graph from 0 to 100% and is read by KFLOP like DRO labels. See also the [https://youtu.be/w-bKvqXCd0Q Instant Feed Rate Display video].
+
* '''Radio''' button
+
* '''Momentary''' '''button''' <br /> See description above and video:<br /> [https://www.youtube.com/watch?v=eE2mSUXxN2M https://www.youtube.com/watch?v=eE2mSUXxN2M]
+
* '''DualButton''' <br /> See description above and video:<br /> [https://www.youtube.com/watch?v=8dAEeGnLaRg https://www.youtube.com/watch?v=8dAEeGnLaRg]
+
* '''Checkbox<br /> '''
+
* '''DualLabel<br /> '''F for feed rate and S for spindle are example of dual labels. They display the state (one or another). They are fixed and cannot be edited.
+
 
+
 
+
==<span style="text-decoration: underline;">'''3. Control ''''''attributes'''</span>==
+
'''[[File:Control-attributes.png|none|link=]]'''
+
 
+
 
+
 
+
* '''Select ID'''<br /> Defines the name of the control on the screen.
+
* '''Type'''<br /> Defines the type of control, e.g.: CONTROL, PUSHBUTTON, COMBOBOX.
+
* '''Font'''<br /> Set the font type, size and normal, bold, or italic.
+
* '''BitmapFile1, BitMapFile2<br /> '''Select a bitmap image (.bmp, .gif or .png) for your buttons. BitMapFile1 will show the selected file when the button is in normal state, BitMapFile2 when the button pressed.
+
* '''Colors''' <br /> Select two colors for on- and off-state (text).
+
* '''Highlight''' <br /> Select two colors for on- and off-state (background).
+
* '''Tool Tip''' <br /> Compose text to describe the button action. This text will be visible when the user hovers over the button. 
+
* '''HotKey''' <br /> Assigns a keyboard key to perform an action. This field is by default set to “-1”. For example, select a control like “mm” and type “CTRL M” or select “in” and type “CTRL I” and click “Set”. The “x” button next to the field will restore the value back to “-1”.
+
* '''Var<br /> '''Numeric variable attribute. Assigning a number toggles the corresponding bit in KFLOP (from 0 to 2047).
+
* '''X, Y<br /> '''Changes the horizontal and vertical position of the control.
+
* '''Width, Height'''<br /> Changes the size of the control.
+
* '''Script'''<br /> Using this field, the user has three options:<br /><br />
+
 
+
a) Selecting a screen script file from the library:
+
 
+
[[File:Script-Option-1.png|none|link=]]
+
 
+
b) Selecting an Action:<br />[[File:Script-Option-2.png|link=|none]]
+
 
+
 
+
c) Selecting a Windows Message:<br /> [[File:Script-Option-3.png|none|link=]]
+
 
+
* '''Show/Hide'''<br /> Select a control and immediately show or hide it.
+
 
+
* '''Move/Resize'''<br /> Move the position of the control or change its size.
+
* '''Undo/Redo <br /> '''An unlimited number of undoes and redoes is available.
+
* '''Copy/Paste <br /> '''The user can edit all three screens (Split, View, and Code) by clicking “Copy” after making an edit such as moving a button, then loading the next screen, clicking outside the editable area and selecting “Paste”.
+
* '''General <br /> '''When selecting multiple controls, white fields are shown when all settings are the same, and grey fields when the values are different. In the example below note that we have selected the radio buttons labeled 1 through 7. While they all share the same font type, size, width and horizontal (x) position etc., “text” and “y-position” are grayed-out, since the radio buttons’ text labels and their vertical position are unique to each field. To override this, just click into the grayed-out field(s) and start editing.<br />[[File:General.png|none|link=]]
+
 
+
==<span style="text-decoration: underline;">'''<br />4. Main Window attributes'''</span>==
+
* '''Main Dialog Screen<br /> '''Defines the look and feel as well as the size of your KMotionCNC screen. You can choose a background color, or select a bitmap file as your background. Choose the size of the window, or whether the window should be resizable or fixed and so on. <br /><br />
+
* '''Script File'''<br />Select a screen script file from the library or set an action. A screen script file defines the look of a page. You can assign an action to a button to load a screen script file.<br />[[File:Style-file.png|none|link=]]
+
 
+
 
+
 
+
==<span style="text-decoration: underline;">'''5. Bitmap types, Alpha, and locations'''</span>==
+
<br />The following bitmap types are supported: .bmp, .gif, and.png. Out of these, only the png file type supports alpha channels, i.e. background transparency.
+
 
+
 
+
Images are stored in the following “Resources” location:
+
 
+
 
+
\KMotion434i\PC VC Examples\KMotionCNC\res
+
  
 
===PC Example Applications===
 
===PC Example Applications===
Line 311: Line 160:
 
[[Media:dyn4 kanalog KE1524 V1.1.png|Basic Kanalog DAC and DMM DYN4 Drive 1 Axis]]
 
[[Media:dyn4 kanalog KE1524 V1.1.png|Basic Kanalog DAC and DMM DYN4 Drive 1 Axis]]
  
[[Media:Kanalog_with_Geckos_G210.pdf|Kanalog_with_Geckos_G210]] (Thanks to <span style="color: windowtext;">Joseph Mirocha</span>)
+
[[Media:Kanalog_with_Geckos_G210.pdf|Kanalog with Geckos G210]] (Thanks to <span style="color: windowtext;">Joseph Mirocha</span>)
 +
 
 +
[[Media:Kanalog_to_Tree_Journeyman_325_by_Rick_B.pdf|Kanalog to Tree Journeyman 325.pdf]] (Thanks to <span style="color: windowtext;">Rick_B</span>)
  
 
[[Media:KFlopSnapBrushMPG.pdf|KFLOP+SnapAmp DC Brush Motors with MPG]]
 
[[Media:KFlopSnapBrushMPG.pdf|KFLOP+SnapAmp DC Brush Motors with MPG]]
Line 322: Line 173:
  
 
[https://easyeda.com/350banshee/BreakoutBoard-93bdd16e3c3d48b98ae66c34f2436c40 User Created KFLOP JP7 Breakout/OptoIsolation Board] Schematic, Gerbers, PCBs Publicly available (thanks 350banshee)
 
[https://easyeda.com/350banshee/BreakoutBoard-93bdd16e3c3d48b98ae66c34f2436c40 User Created KFLOP JP7 Breakout/OptoIsolation Board] Schematic, Gerbers, PCBs Publicly available (thanks 350banshee)
 +
 +
[https://www.dynomotion.com/wiki/index.php?action=ajax&title=-&rs=SecureFileStore::getFile&f=/b/bb/RotarySwitchToKanalog.png Rotary Switch Connected to Kanalog Opto Inputs]
  
 
===Wiring Topics===
 
===Wiring Topics===
 
Place links to pages on wiring inputs and outputs specific to your experiences and projects.  Be descriptive with page titles and links.
 
Place links to pages on wiring inputs and outputs specific to your experiences and projects.  Be descriptive with page titles and links.
 +
 +
 +
 +
====KFLOP IDC Connectors and Cables====
 +
Cables that connect between Dynomotion boards are normally included when purchasing the boards together.  They are also very common and easy to make.  <br /><br />Use '''16-conductor or 26-conductor ribbon cable''' (0.05 inch pitch 26 AWG preferrably or 28AWG) and IDC sockets.<br /><br />
 +
 +
[[File:RibbonCable.png|none|link=]]
 +
 +
16 conductor ribbon cable 3M part number 3801/16 100 <br />https://www.digikey.com/product-detail/en/3m/3801-16-100/3M156105-100-ND/1107501<br /><br />26 conductor ribbon cable 3M part number C3801/26 100 <br />https://www.digikey.com/product-detail/en/3m/C3801-26-100/C3801-26-100-ND/1107648<br /><br />Winford also sells ribbon cable (although only the thinner 28 AWG):<br />http://www.winford.com/products/rib.php<br /><br />Note you can usually tear off wires to reduce the number of conductors.  For example from 26 down to 16.  Tear off the conductors away from the red stripe that marks pin 1.<br /><br />The '''crimp tools''' are common:<br />https://www.frys.com/product/1922804<br />[[File:RibbonCrimp.png|none|link=]]<br /><br />'''IDC Sockets 16-pin '''(pin pitch 0.1 inch)<br />https://www.digikey.com/product-detail/en/assmann-wsw-components/AWP-16-7240-T/HHKC16H-ND/5031953<br />Assman Part number AWP 16-7240-T
 +
 +
[[File:16pinIDC.png|none|link=]]
 +
 +
'''IDC Sockets 26-pin '''(pin pitch 0.1 inch)'''<br />'''
 +
 +
https://www.digikey.com/product-detail/en/assmann-wsw-components/AWP-26-7240-T/HHKC26H-ND/5011313
 +
 +
[[File:26pinIDC.png|none|link=]]
 +
 +
  
  
Line 332: Line 204:
  
 
https://groups.yahoo.com/neo/groups/DynoMotion/conversations/messages/12287
 
https://groups.yahoo.com/neo/groups/DynoMotion/conversations/messages/12287
 +
 +
[https://groups.yahoo.com/neo/groups/DynoMotion/conversations/messages/331 https://groups.yahoo.com/neo/groups/DynoMotion/conversations/messages/331]
  
 
[[File:MPG4_from_cnc4pc.jpg|none|link=|83x169px]]
 
[[File:MPG4_from_cnc4pc.jpg|none|link=|83x169px]]
  
 
==<span id="Axes_Servo_Tuning_and_Trajectory_Planner" class="mw-headline">Axes Servo Tuning and Trajectory Planner</span>==
 
==<span id="Axes_Servo_Tuning_and_Trajectory_Planner" class="mw-headline">Axes Servo Tuning and Trajectory Planner</span>==
 +
===Torque Servos vs Velocity Servos===
 +
+/-10V Analog Amplifiers usually come in one of two varieties: '''Torque''' or '''Velocity'''. Torque mode amplifiers consider the input command as a Torque Command and work to generate the commanded Motor Torque. Velocity mode amplifiers consider the input command as a Velocity Command and work to generate the commanded Velocity.  Its important to understand what type of Amplifiers you have.
 +
 +
'''Velocity Mode Amplifiers''' need some form of feedback going to the Amplifier in order for the drive to know the current velocity. This might be a digital encoder or an analog tachometer.
 +
 +
Its easy to tell if you have a Velocity Mode Amplifier by looking at a plot of a move on the Step Response Screen.  The Output (green plot with right scale) will be proportion to the motor velocity.  When moving at constant speed the output will be relatively constant.  See in the plot below the output (green) remains at a relatively constant ~1100 DAC counts while the position (red) ramps at a constant slope of the 90000 count/sec rate:
 +
 +
[[File:VelocityAmp.png|none|link=]]
 +
 +
Velocity mode amplifiers can be relatively easy to tune using only P (Proportional) Gain.  Additional Gains and filters can be used for best performance but using only P Gain will often result in reasonable performance and a stable system (unlike Torque Mode Amplifiers). 
 +
 +
As an example consider controlling the speed of a car using only Proportional Gain as it approaches a target (Stop sign).  Consider a P Gain of 0.1 where at 1000ft from the stop sign we command 1000 x 0.1 = 100MPH.  Then at 100ft we command 10MPH.  Then at 10ft we command 1MPH.  This results in a nice, smooth, exponential approach, without overshoot.
 +
 +
Contrast this with controlling the acceleration (torque) of a car using only Proportional Gain as it approaches a target (Stop sign).  At large distance we apply maximum acceleration.  Although as we approach the stop sign we reduce acceleration, we continue to accelerate and speed continues to increase until we pass the stop sign.  Torque mode servos are inherently unstable.  P only gain only works at all if there is some friction (the car is dragging a sled which slows us down with less torque).
 +
 +
 +
'''Acceleration Mode Servos''' may or may not have any feedback.  If they have feedback it is usually used only to commutate a brushless motor.  In the plots the Output (green) will have large magnitude when the Position (red) is accelerating, where the plot has curvature (changing slope).
 +
 +
Acceleration mode Servos are unlikely to work well or at all with only P Gain.  Some form of damping or lead compensation will usually be required to get a stable system.   D (derivative) Gain (or a lead compensator) should be included with the P Gain to help stabilize the system.  D Gain can be increased to make the system more stable up to a point.  After some point the additional D Gain will make the system more unstable. and should be reduced.
 +
 +
When using D Gain (or lead compensation) the quantization noise (steps) in the encoder position can cause spikes in the output.  For example a D Gain of 100 will cause a spike of 100 counts in the output whenever the input changes suddenly by 1 count.  If the spikes are very high amplitude and short duration, the Amplifier may not handle them in the expected manner.  A low pass filter can be used to widen and reduce their amplitude allowing the amplifier to handle them more effectively.  Typically a 2nd order low pass filter of 500Hz Q=1.4 is used.  The last filter is normally used so it is applied to any Feed Forward. Such as:
 +
 +
[[File:LowPass400Q1p4.png|none|link=|680x439px]]
 +
 +
 +
 +
 +
 
===<span id="Velocity.2C_Acceleration.2C_and_Jerk" class="mw-headline">Velocity, Acceleration, and Jerk</span>===
 
===<span id="Velocity.2C_Acceleration.2C_and_Jerk" class="mw-headline">Velocity, Acceleration, and Jerk</span>===
 
<div id="yui_3_16_0_1_1445622719616_3315" class="yiv2818182665class" style="color: #000000; font-size: 13.3333px; font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; background-color: transparent; font-style: normal;">The Velocity, Acceleration, and Jerk in the Step Response Screen (KFLOP parameter settings) and the Acceleration and Velocity in the KMotionCNC | Tool Setup | Trajectory Planner | Axis Parameters are both used for different things.  The two sets of parameters are independent. </div>
 
<div id="yui_3_16_0_1_1445622719616_3315" class="yiv2818182665class" style="color: #000000; font-size: 13.3333px; font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; background-color: transparent; font-style: normal;">The Velocity, Acceleration, and Jerk in the Step Response Screen (KFLOP parameter settings) and the Acceleration and Velocity in the KMotionCNC | Tool Setup | Trajectory Planner | Axis Parameters are both used for different things.  The two sets of parameters are independent. </div>
Line 445: Line 347:
  
 
So to provide some margin an Max Limit Integrator Value of 3500 might be used.
 
So to provide some margin an Max Limit Integrator Value of 3500 might be used.
 +
 +
 +
 +
===Max Limits - Error===
 +
Max limits error can be helpful to have your system respond less violently in the abnormal event where an excessively large error occurs.  Normally with a properly tuned system following errors should be small.   Setting a Max limits error can cause the servo to treat errors beyond a specified limit as if they were only the size of the limit and therefore respond less so than they would otherwise.  The max limits error is normally set to a value so it is not limiting under normal circumstances.
 +
 +
 +
The Plot below shows a situation where a small max limits error combined with a low P gain severely limits the Output.  In the plot below a large move (10000 counts) at a high speed (40000 counts/sec) is commanded.  Only P Gain (0.2) is used to provide the Output (green).  The max error limit of 200 combined with the low gain (0.2) limits the output to only 40 DAC counts.  Even as the true error increases to many thousands of counts, the servo is told to ignore the amount over 200.  So the output can never exceed 40 DAC counts.  The 40 DAC count limit means that the Axis is therefor not capable of providing the output necessary to keep up with the commanded motion.  The axis does the best it can with the limited output, and only does a fraction of the desired motion.
 +
 +
[[File:Move10000.png|none|link=|665x431px]]
 +
 +
 +
After increasing the max limits error the Output (green - right scale) now goes to a much higher value (900), and the Position (red) follows the Command (blue) to a much better degree.
 +
 +
[[File:Move10000_nolimit.png|none|link=|667x430px]]
 +
 +
 +
Increasing the P Gain to 1.6 also applies more Output sooner and the Position follows the command still better.
 +
 +
[[File:Move1000_p1.6.png|none|link=|667x432px]]
 +
 +
 +
 +
 +
 +
 +
 +
===Lead Compensator vs Derivative Gain===
 +
Derivative (D) Gain is often used to help stabilize a system.&nbsp; It helps to think in the Frequency Domain to help understand how the two forms of compensation help.&nbsp; Please read below and [http://dynomotion.com/Help/BodeScreen/BodeScreen.htm this] for more information on the Frequency Domain.&nbsp; Both Compensation methods add positive phase to help stabilize the system.&nbsp; Unfortunately both methods increase gain at higher frequencies possibly causing the system to go unstable at higher frequency.&nbsp; A Lead Compensator provides the benefit of positive phase but without as much gain increase at higher frequencies.&nbsp; This figure shows a simplified Gain Plot comparison:
 +
 +
 +
[[File:DGainvsLead.png|none|link=|593x593px]]
 +
 +
Here is a Bode Plot of a P=0.5 D=20 Compensator.   Note the KMotion.exe Bode Plot Screen has the capability of plotting the Frequency Domain Response of the PID+Filters Compensation.  Assume we desire positive phase to be added at 40Hz.  Notice the positive phase of 40 degrees at 40Hz which is good.  However the Gain increase in the 1KHz region of about 21db which is bad.
 +
 +
[[File:P.5D20Annotate.png|none|link=|621x460px]]
 +
 +
 +
Here is a Bode Plot of a P=0.5 N1=N2=25Hz D1=D2=70Hz Compensator.   Assume we desire positive phase to be added at 40Hz.  We choose N1 N2 and D1 D2 to surround the frequency where the positive phase is desired.  Moving them further apart will increase the amount of positive phase but also increase the added Gain.  Notice the positive phase of 60 degrees at 40Hz which is good.  However the Gain increase in the 1KHz region of about 12db which is bad.  However both are improvements over the D Gain compensator.
 +
 +
 +
 +
[[File:PoleZeroFilter.png|none|link=|210x319px]]
 +
 +
 +
 +
[[File:P.5D0N25D70Annotate.png|none|link=|644x478px]]
 +
 +
  
 
===Bode Plots===
 
===Bode Plots===
A Bode Plot is a powerful tool for characterizing and providing insight into a dynamic system. It can help determine closed loop stability, bandwidth/performance, resonant frequencies, and more. It is entirely based on the system being linear. Linear in the sense that if the amplitude of some input signal is changed then the output signal will change proportionally as well. Unfortunately most systems are not entirely linear. Stiction, backlash, encoder quantization, amplifier saturation, and other effects are non-linear. For example driving a system with a signal too small to overcome stiction will result in no output at all whereas a larger signal will result in some output. This is clearly non-linear behavior. It would be nice to use a technique that handles non-linear systems but basically none are known.<br /><br />A Bode Plot is made injecting a stimulus to the system and observing how the system responds. For the reasons of non-linearity it is very important to perform a Bode Plot measurement using a representative level of stimulus similar to what the system will actually have during normal operation. If the Stimulus is not adjusted properly the result is likely to be completely invalid. Additionally the system should be reasonably tuned and stable so that it is responding in a reasonable way to the stimulus. If the system is unstable or very poorly tuned the result is likely to be completely invalid.<br /><br />You might think of it somewhat like shaking a box to determine what is in it. You should shake it with enough intensity and at frequencies to get some reaction, but not so high of intensity to break or distort the object inside.<br /><br />To create a Bode Plot use the KMotion.exe Bode Plot Screen. First select Plot: Time domain - Command, Position, Output vs Time and adjust the Amplitude and cutoff Freq until there is small but significant Position (red) changes (ie 50 encoder counts), at a frequency low enough that the Position at least somewhat attempts to follow the Command (blue), and where the Output (green) is not near saturation for the Drive being used.<br /><br />After the Stimulus/Noise Injection settings are set switch to Plot: Open Loop - Magnitude and Phase vs Frequency. Set the number of Samples to average (ie 20) and perform a Measurement.  [http://dynomotion.com/Help/BodeScreen/BodeScreen.htm See here for more information].
+
A Bode Plot is a powerful tool for characterizing and providing insight into a dynamic system. It can help determine closed loop stability, bandwidth/performance, resonant frequencies, and more. It is entirely based on the system being linear. Linear in the sense that if the amplitude of some input signal is changed then the output signal will change proportionally as well. Unfortunately most systems are not entirely linear. Stiction, backlash, encoder quantization, amplifier saturation, and other effects are non-linear. For example driving a system with a signal too small to overcome stiction will result in no output at all whereas a larger signal will result in some output. This is clearly non-linear behavior. It would be nice to use a technique that handles non-linear systems but basically none are known.<br data-attributes="%20/"><br data-attributes="%20/">A Bode Plot is made injecting a stimulus to the system and observing how the system responds. For the reasons of non-linearity it is very important to perform a Bode Plot measurement using a representative level of stimulus similar to what the system will actually have during normal operation. If the Stimulus is not adjusted properly the result is likely to be completely invalid. Additionally the system should be reasonably tuned and stable so that it is responding in a reasonable way to the stimulus. If the system is unstable or very poorly tuned the result is likely to be completely invalid.<br data-attributes="%20/"><br data-attributes="%20/">You might think of it somewhat like shaking a box to determine what is in it. You should shake it with enough intensity and at frequencies to get some reaction, but not so high of intensity to break or distort the object inside.<br data-attributes="%20/"><br data-attributes="%20/">To create a Bode Plot use the KMotion.exe Bode Plot Screen. First select Plot: Time domain - Command, Position, Output vs Time and adjust the Amplitude and cutoff Freq until there is small but significant Position (red) changes (ie 50 encoder counts), at a frequency low enough that the Position at least somewhat attempts to follow the Command (blue), and where the Output (green) is not near saturation for the Drive being used.<br data-attributes="%20/"><br data-attributes="%20/">After the Stimulus/Noise Injection settings are set switch to Plot: Open Loop - Magnitude and Phase vs Frequency. Set the number of Samples to average (ie 20) and perform a Measurement.&nbsp; [http://dynomotion.com/Help/BodeScreen/BodeScreen.htm See here for more information].
 +
 
 +
===Links to other Information on Tuning and Bode Plots===
 +
[http://ctms.engin.umich.edu/CTMS/index.php?example=Introduction&section=ControlFrequency umich.edu Introduction section Control Frequency]
 +
 
 +
[http://www.motiontech.com.au/assets/pdf/Kollmorgen%20Use%20Control%20Theory%20to%20Improve%20Servo%20Performance%20230712.pdf  Kollmorgen Use Control Theory to Improve Servo Performance 230712.pdf]
  
 
==Problems and Resolutions==
 
==Problems and Resolutions==
Line 455: Line 411:
 
===Software-Specific Problems and Resolutions===
 
===Software-Specific Problems and Resolutions===
 
:* Place links to pages explaining resolutions to problems that are largely software-related here
 
:* Place links to pages explaining resolutions to problems that are largely software-related here
 +
[[KFLOP User C Programs Compiling/Launching Slowly because of Windows Defender]]
 +
 
===Hardware-Specific Problems and Resolutions===
 
===Hardware-Specific Problems and Resolutions===
 
:* Place links to pages explaining resolutions to problems that are largely hardware-related
 
:* Place links to pages explaining resolutions to problems that are largely hardware-related
====[[Step/Dir Drives loose 2 Steps for each pair of Direction Reversals]]====
+
====[[Step/Dir Drives lose 2 Steps for each pair of Direction Reversals]]====
 +
 
 
==Applications and Projects==
 
==Applications and Projects==
 
:* Place links to pages that explain how you accomplished your particular project.  Write clear explanations that provide background on what you did and how you did it.
 
:* Place links to pages that explain how you accomplished your particular project.  Write clear explanations that provide background on what you did and how you did it.
 
====[[Tool Changer - router linear 4 Tools - C Program]][[File:LINEAT+ATC.jpg|none|link=|246x178px]]====
 
====[[Tool Changer - router linear 4 Tools - C Program]][[File:LINEAT+ATC.jpg|none|link=|246x178px]]====
[[Part Zero & Tool Height Touch Plate|Part Zero & Tool Height Touch Plate]]
+
====[[Part Zero & Tool Height Touch Plate|Part Zero & Tool Height Touch Plate]]====
 +
====[[Driving Hobby Servos]]====
 +
[[File:HobbyServo.png|left|link=]]
  
  
[[Driving Hobby Servos]]
 
  
[[File:HobbyServo.png|left|link=]]
 
  
  
Line 475: Line 434:
  
  
 +
HiTec Type
  
  
Line 486: Line 446:
  
  
 +
====Electrical Discharge Machining====
 +
[https://en.wikipedia.org/wiki/Electrical_discharge_machining EDM (wikipedia)]is a method of cutting materials with high precision and detail.  Dynomotion Motion Controllers work well for EDM because of the ability for feedrate to be dynamically controlled including reversal along cutting path.
  
HiTec Type
+
{{#ev:youtube|kh5EvMAB28A}}
 +
 
 +
[[Information on BAXEDM Arc Generators used with KFLOP]]
 +
 
 +
==How to convert a milling machine to a 3D printer in 3 easy steps==
 +
[[File:CNCto3DPrinter.png|none|link=]]
 +
 
 +
More information [[How to convert a milling machine to a 3D printer in 3 easy steps|here]].
  
 
==International and other Languages==
 
==International and other Languages==

Revision as of 11:53, 15 September 2018

Contents

Dynomotion wiki

Welcome to our wiki where you can find and share knowledge on Dynomotion's systems.  To begin adding information to this wiki, simply create an account, verify your email, and start editing (click pencil icon). To make editing pages easier for everyone, we have installed a visual editor by default.  This visual editor allows you to edit a wiki page much like you would a standard word processing document.  For the seasoned wiki editors, standard MediaWiki editing may also be used.


Warning: Use at your own risk.  Information is for example purposes only and may contain errors.  It is up to the User to verify the information is correct and is safe to use. In no case will any contributor or Dynomotion be liable for incorrect information.  Dynomotion reserves the right to modify or delete any contributions.


Thanks for Contributing!

Official Dynomotion Site

Editing and Creating Wiki Pages

Unintuitively, you first create a link to the page you want to make before you can make the page.  To make a new page: while editing, right-click where you want your link to be, insert a link with a descriptive title and link text, save the page, click on the link you created, then click on "Empty Page" to begin editing your new page.

Here are a few other quick tips:

  • You can insert links or images by Right-Clicking with the mouse on the line where you want the link or image to appear.
  • For Spell Correction you can use Ctrl-Right-Click. 
  • To insert a YouTube Video use an EmbedVideo command such as  {{#ev:youtube|xxxxx}} with xxxxx changed to the Video ID.
  • Choose a descriptive page name and link text when creating a new page: e.g. Not "My Machine", but rather "Brand X Three Axis Milling Machine Retrofit"
  • Create pages in an organized manner: Describe what the page is about, create clear sections that flow

For more information:

How to create a new wiki page

How to Edit and insert Media into your wiki pages

Dynomotion Software Topics

Installation Topics

Archive of Test Releases:

KMotion.exe Executive Software Topics

KMotion.exe is the main program that is used to configure settings in KFLOP, initialize axes, and to write C programs to configure and setup KFLOP to control your system. In this program you can plot step response, test movement, view Bode plots, monitor I/O, set filter parameters, and generally set the pertinent parameters.


Configuration Topics

Channels, Channels, Channels what are they?

Read Article Here


How to Setup Backlash Compensation

Read Article Here


PWM Output Mode

Read Article Here

KMotionCNC Software Topics

KMotionCNC is Dynomotion's CNC program used as a graphical user interface to your KFLOP-enabled machine tool. KMotionCNC has all of the basic functionality you need to run a machine of up to 6 axes, in addition to spindle control.

  • Insert pages for other KMotionCNC-related general topics here


Using KMotionCNC

  • Homing discussion - page to be created
  • Insert other KMotionCNC use pages here

Internal/concave Path Tool Radius Compensation Example G41/G42

Known KMotionCNC CAD/CAM Post Processors

Invoking C Programs with Execute Only for previously Downloaded Programs

Rigid Tapping G84 Setup and Use

Tool Length/Offsets G43Hn G49

Customize KMotionCNC

KMotionCNC is written as a Windows C++ MFC (Microsoft Foundation Classes) program developed in Visual Studio.  Source code is provided and may be customized using Visual Studio.  MFC Support is a requirement. 

General Information
Compiling KMotionCNC
The KMotionCNC's Visual Studio Project Solution (\PC VC Programs\KMotionCNC\KMotionCNC.sln) is currently written for Visual Studio 2008 Standard.  This version can be used for the simplest compatibility.  Projects can be upgraded to newer version of VS with minimal effort.  Including Microsoft's Free Visual Studio 2013 Community.  More info on PC Example Applications.
Note Test Versions 4.34a and later have project solutions targeted for Visual Studio 2015 Community which is free for most Users.
KMotionCNC Customization Examples and Applications
Links to examples of projects that explain KMotionCNC customizations
Troy (tmday7) created some helpful documents listed on the Yahoo Group Files Section here.

KMotionCNC Screen Editor

Introduces the capability of using Screen Script files to modify the look and function of KMotionCNC.
More information.

KMotionCNC Geometric Correction

Information regarding the powerful Geometric Correction capability which allows calibration and distortion correction of the XY CAD space to Machine/Actuator Space as well as flatness in Z.  Simple 4 point correction tables can apply XY Scale, Rotation, skew, offset, tilt.  Larger tables can apply more non-linear corrections.

Note the Geometric Correction is built into the KMotion Libraries and can be utilized by Custom Programs as well as with KMotionCNC
More information and Examples.

PC Example Applications

A number of PC Applications using the KMotion Libraries are available in the Software download.  Visual Studio should be used to modify/compile the applications. 

Currently the projects are compatible with VS 2008 Standard but later Versions can upgrade the projects and can be used including the free Microsoft Version of VS 2013 Community.  In some cases MFC capability needs to be added as a separate download.


Note All the projects in KMotion Versions 4.34a and later have now been updated and should work out-of-the-box with VS2015.

More information.

KMotion Libraries - GCode Interpreter - Trajectory Planner - Coordinated Motion - .NET

The KMotion Libraries are a series of DLLs (Dynamic Link Libraries) that reside on the PC that contain the common core motion control, I/O, and communication functionality for KFLOP.  These libraries permit PC Applications to be built using high level control without being concerned with the underlying details of Interpreting GCode, Trajectory Planning, Coordinated Motion, Motion Buffering, USB Communication, etc.

More information.

KFLOP C Programs

C Programs provide a powerful and flexible capability to perform almost any sequence of operations within KFLOP.   In most cases after you have tested and tuned all your hardware using the KMotion.exe setup program all the settings and initialization steps required for your system can be placed into an Initialization C Program so that your system can be fully initialized simply by executing the Initialization program.

More Information


ModBus

Modbus can be connected to the PC or directly to KFLOP.  A PC connection will not be deterministically real-time but may work for basic speed control and on/off.  Here is a related Thread for interfacing KMotionCNC to Modbus using a free utility.

https://groups.yahoo.com/neo/groups/DynoMotion/conversations/topics/7941


To connect Modbus directly to KFLOP's UART see the C Examples in \C Programs\RS232\ModBus\

Dynomotion Hardware Topics

General Hardware Information

KFLOP Hardware Info

KStep Hardware Info

Kanalog Hardware Info

SnapAmp Hardware Info

Konnect Hardware Info


Wiring Diagrams

Basic Kanalog DAC and Encoder Connections 3 Axis

Basic Kanalog DAC and Encoder Connections 3 Axis #2

Basic Kanalog DAC and DMM DYN4 Drive 1 Axis

Kanalog with Geckos G210 (Thanks to Joseph Mirocha)

Kanalog to Tree Journeyman 325.pdf (Thanks to Rick_B)

KFLOP+SnapAmp DC Brush Motors with MPG

KFLOP JP5 Open Collector Step/Dir Connections to Power Step PSD5042-2P Drives

KFLOP+KStep with VFD and NPN Limit Switches for Matrika Rev1

Touch Plate Wiring to Konnect

User Created KFLOP JP7 Breakout/OptoIsolation Board Schematic, Gerbers, PCBs Publicly available (thanks 350banshee)

Rotary Switch Connected to Kanalog Opto Inputs

Wiring Topics

Place links to pages on wiring inputs and outputs specific to your experiences and projects.  Be descriptive with page titles and links.


KFLOP IDC Connectors and Cables

Cables that connect between Dynomotion boards are normally included when purchasing the boards together.  They are also very common and easy to make. 

Use 16-conductor or 26-conductor ribbon cable (0.05 inch pitch 26 AWG preferrably or 28AWG) and IDC sockets.

RibbonCable.png
16 conductor ribbon cable 3M part number 3801/16 100
https://www.digikey.com/product-detail/en/3m/3801-16-100/3M156105-100-ND/1107501

26 conductor ribbon cable 3M part number C3801/26 100
https://www.digikey.com/product-detail/en/3m/C3801-26-100/C3801-26-100-ND/1107648

Winford also sells ribbon cable (although only the thinner 28 AWG):
http://www.winford.com/products/rib.php

Note you can usually tear off wires to reduce the number of conductors.  For example from 26 down to 16.  Tear off the conductors away from the red stripe that marks pin 1.

The crimp tools are common:
https://www.frys.com/product/1922804
RibbonCrimp.png


IDC Sockets 16-pin (pin pitch 0.1 inch)
https://www.digikey.com/product-detail/en/assmann-wsw-components/AWP-16-7240-T/HHKC16H-ND/5031953
Assman Part number AWP 16-7240-T
16pinIDC.png

IDC Sockets 26-pin (pin pitch 0.1 inch)

https://www.digikey.com/product-detail/en/assmann-wsw-components/AWP-26-7240-T/HHKC26H-ND/5011313

26pinIDC.png



MPG Wiring and Interface

MPGs (Manual Pulse Generators) should be connected directly to KFLOP for guaranteed real-time response (not USB based or connected to the PC).  MPGs are handled by a C Program that monitors the MPG and creates motion based on the MPG Encoder changes and switch selections for axis, speed, and so forth.  See the MPG C Program Examples.  Here is a Discussion with other links.

https://groups.yahoo.com/neo/groups/DynoMotion/conversations/messages/12287

https://groups.yahoo.com/neo/groups/DynoMotion/conversations/messages/331

MPG4 from cnc4pc.jpg

Axes Servo Tuning and Trajectory Planner

Torque Servos vs Velocity Servos

+/-10V Analog Amplifiers usually come in one of two varieties: Torque or Velocity. Torque mode amplifiers consider the input command as a Torque Command and work to generate the commanded Motor Torque. Velocity mode amplifiers consider the input command as a Velocity Command and work to generate the commanded Velocity.  Its important to understand what type of Amplifiers you have.

Velocity Mode Amplifiers need some form of feedback going to the Amplifier in order for the drive to know the current velocity. This might be a digital encoder or an analog tachometer.

Its easy to tell if you have a Velocity Mode Amplifier by looking at a plot of a move on the Step Response Screen.  The Output (green plot with right scale) will be proportion to the motor velocity.  When moving at constant speed the output will be relatively constant.  See in the plot below the output (green) remains at a relatively constant ~1100 DAC counts while the position (red) ramps at a constant slope of the 90000 count/sec rate:

VelocityAmp.png

Velocity mode amplifiers can be relatively easy to tune using only P (Proportional) Gain.  Additional Gains and filters can be used for best performance but using only P Gain will often result in reasonable performance and a stable system (unlike Torque Mode Amplifiers). 

As an example consider controlling the speed of a car using only Proportional Gain as it approaches a target (Stop sign).  Consider a P Gain of 0.1 where at 1000ft from the stop sign we command 1000 x 0.1 = 100MPH.  Then at 100ft we command 10MPH.  Then at 10ft we command 1MPH.  This results in a nice, smooth, exponential approach, without overshoot.

Contrast this with controlling the acceleration (torque) of a car using only Proportional Gain as it approaches a target (Stop sign).  At large distance we apply maximum acceleration.  Although as we approach the stop sign we reduce acceleration, we continue to accelerate and speed continues to increase until we pass the stop sign.  Torque mode servos are inherently unstable.  P only gain only works at all if there is some friction (the car is dragging a sled which slows us down with less torque).


Acceleration Mode Servos may or may not have any feedback.  If they have feedback it is usually used only to commutate a brushless motor.  In the plots the Output (green) will have large magnitude when the Position (red) is accelerating, where the plot has curvature (changing slope).

Acceleration mode Servos are unlikely to work well or at all with only P Gain.  Some form of damping or lead compensation will usually be required to get a stable system.   D (derivative) Gain (or a lead compensator) should be included with the P Gain to help stabilize the system.  D Gain can be increased to make the system more stable up to a point.  After some point the additional D Gain will make the system more unstable. and should be reduced.

When using D Gain (or lead compensation) the quantization noise (steps) in the encoder position can cause spikes in the output.  For example a D Gain of 100 will cause a spike of 100 counts in the output whenever the input changes suddenly by 1 count.  If the spikes are very high amplitude and short duration, the Amplifier may not handle them in the expected manner.  A low pass filter can be used to widen and reduce their amplitude allowing the amplifier to handle them more effectively.  Typically a 2nd order low pass filter of 500Hz Q=1.4 is used.  The last filter is normally used so it is applied to any Feed Forward. Such as:

LowPass400Q1p4.png



Velocity, Acceleration, and Jerk

The Velocity, Acceleration, and Jerk in the Step Response Screen (KFLOP parameter settings) and the Acceleration and Velocity in the KMotionCNC | Tool Setup | Trajectory Planner | Axis Parameters are both used for different things.  The two sets of parameters are independent. 
 
The KFLOP parameters are used for 3rd order motions.   These include things like:  Jogging, Homing, and GCode Rapids (G0).  The units in KFLOP are in counts or steps.

The KMotionCNC parameters are used for 2nd order (infinite Jerk) coordinated motion paths.  These are GCode G1,G2,G3 continuous paths.  The units are in Inches (or in some cases degrees).   Note there is an Option in KMotionCNC "Rapids as Feeds" where these parameters will also be used for Rapids.  But this option should only be used for highly non-linear Kinematic Systems which can not take advantage of faster/smoother 3rd order point to point straight line Rapids.

Tests to find and verify optimal settings for both types of moves should be made using the Step Response Screen.  Optimal settings are usually determined by experimentation.  Although it might be possible to calculate the settings based on motor torque gains, back-emf, amplifier voltage/current, mass, moments of inertia, friction, encoder resolution, leadscrew pitch, required following accuracy, etc... It is often too complicated and with too many unknowns to be practical.  So experimental moves can be tested at ever increasing Velocities, Accelerations, and Jerks until the system is unable to follow the trajectory without having too much error or shock to the system.  After absolute limits of the system are determined then the settings should be backed off by some amount to provide operating margins (ie 20%).

It is usually best to first determine max possible velocity using a relatively low acceleration. Maximum power is usually required at the point of the trajectory where velocity is high and still accelerating.  Supply Voltage limitations tend to limit velocity.  Current limitations tend to limit acceleration.

MaxVelAccelPower.png

The Step Response Screen always performs 3rd order motion but 2nd order motion can be simulated by temporarily setting the Jerk to a huge value (1000X the acceleration value).  In general reducing the Jerk value will result in longer times to perform motions, but often the improved smoothness will permit higher maximum accelerations and velocities to be used resulting in overall shorter motion times.  An analogy might be how you might stop more quickly in a car, without skidding or spilling your coffee, by applying the brakes harder in a more gradual manner rather than slamming on the brakes.

Make sure when testing the size of move is long enough for full acceleration and velocity are achieved.  A common mistake is to have Acceleration or Velocity Settings set to too high for your system but when testing a short move there is no indication of a problem.  The plot mode of Velocity Output  vs Time can be helpful to verify full Velocity is being achieved.

The idea is that a motor axis has torque and speed limitations and you should determine and understand what they both are for your system. Available motor torque drops off with higher speed. At some speed the motor will not even be able to generate any torque at all. Motor torque is required to accelerate the axis. We need to make sure that no combination of velocity and acceleration will ever cause the axis to fault/stall/fail. So there is often a complex set of speeds and accelerations that will work ok that form an envelope of workable speed and acceleration. So one nice thing to know is top speed possible. It is like taking your car out on a long straight highway and gradually accelerating to find the max speed is 100MPH. You will then know that ever attempting a speed over 100MPH will always fail. Also speed should probably be limited to something like 80MPH to allow for margin and to allow reasonable acceleration up to that speed. The reason for performing the top speed test at low acceleration is to avoid a failure because of not being able to accelerate at the specified rate. So we want to set the acceleration to a low value so it will not be a limiting factor when determining top speed. However if we set the acceleration so low with a short trip distance we will never go very fast and the speed test will be meaningless. This should be avoided. Change the Plot type to Velocity, Output, vs Time to clearly see if this is the case.  You may want to turn off Measured Velocity if it obscures viewing the Commanded Velocity

For example to accelerate to 700,000 counts/sec at an acceleration rate of 700,000 counts/sec^2 would take 1 second. And then to slow back down would take 1 more second. So at least 2 seconds of motion would be required to get to full speed. A 100,000 count move (2 inches for a system with 50,000 counts/inch) takes much less time than that. Furthermore with a relatively low Jerk setting (1e6). This means the acceleration will be applied gradually over 0.7 seconds. This means an even much longer time and distance would be required to achieve top speed.

Here is the method to follow to find 2nd/3rd order motion profile limits:
(note every system is different and will vary based on resolution, motor size/type, mass, etc...)

1 - Find Max Velocity at low Acceleration and infinite Jerk

Choose a Velocity to test (ie V=100000 counts/sec)
Set a moderately low Acceleration Time of 1 second (A = V/1sec = 100000 counts/sec^2)
Set very high Jerk so Acceleration is applied almost instantaneously in 0.001 sec (J = A/0.001sec = 1e8 counst/sec^3)
Test a very long move 20 inches if possible (for resolution 50000 counts/inch, 1,000,000 counts)
Plot Velocity, Output, vs time to see if V is actually obtained
If the motion was successful repeat all above with higher V, if not try lower V

Once Max V is found reduce by some margin (ie 20-50%)

Note you may decide on lower speed for other reasons (safety, vibration, noise, wobble, shock, etc....)

2 - Find Max Acceleration for your system for the chosen Velocity

Using the V found above increase A (keeping Jerk high in the same manner) until the system fails/faults/excessive shock, etc...

Once Max A is found reduce by some margin (ie 20-50%)

These V and A Values are now known good values for your system and can be used for 2nd order motions such as KMotionCNC Trajectory Planner or Mach3 Motor tuning. Note units will need to be converted (counts to inches or mm, time from seconds to minutes depending on the App)


3 - Find optimal 3rd order Jerk limited motions.

The previous result from Step #1 and #2 used nearly infinite Jerk where Acceleration forces were applied nearly instantaneously. By reducing Jerk smoother motion should be possible.

Set Jerk so it is applied over 20ms (ie for A=200000 J = A/0.020 = 1e7

Test to see if motions are smoother. With closed loop systems the Position Error Plot can be used to see if the motion has less error and is smoother. Open loop system will require you to hear the difference.

Increase/decrease Jerk to find the optimal value. Note reducing Jerk a lot will of course make the system very smooth, but will also be much slower using less acceleration and velocity which is undesirable. So the highest Jerk possible should be found that still provides some smoothness.

Reducing Jerk only will always make the system slower with less performance (but hopefully significantly smoother). It is usually then possible to increase Acceleration and Velocity somewhat to achieve even higher performance than what was possible with infinite Jerk while being as smooth or smoother.

4 - Reduce Max Following Error Limit to small value

Now that the system is properly tuned and reasonable Acceleration, Velocity, and Jerk are set the motor Position should always follow the commanded Destinations accurately with only small errors.  By Plotting Position Errors under various conditions (Distances) you can get an idea of the worst case following errors under normal conditions.  The Max Following Error Parameter should be set to a value slightly larger than the worst case following error (ie 20~50% larger).  In this case if anything abnormal occurs: ie. The axis hits an obstacle, commanded at too high of a speed, servo goes unstable, hardware/electronics failure, a Following Error will be immediately detected and the axes disabled.

Axis Resolution - counts/inch (or counts/mm)

Its important to understand the resolution of your Axis which is the number of fundamental raw motor/driver encoder counts or motor steps per standard unit of distance (inch or mm).  Although tuning in KMotion.exe Step Response Screen and motions within KFLOP typically use units of raw counts or steps it is important to know how these translate to real-world distances, speeds, etc...  Later, applications such as KMotionCNC or Mach3 will need this information to scale motions properly.
There are usually a number of factors that combine together to determine the Axis Resolution.  These might include:
  • counts or steps per motor revolution
  • any gearing or belts and pulleys involved between motor and drive mechanisms
  • lead screw pitch, rack and pinion tooth pitch, drive belt radius, etc.


For example consider a Stepper Drive with:

3200 steps per motor rev

2:1 gear reduction from motor to lead screw

0.2 inch lead screw pitch


Axis Resolution = 3200 step/motor rev x (2 motor rev/ screw rev)  / (0.2 inch / screw rev) = 32000 steps/inch


To determine whether your assumptions and calculations are correct perform a test.  Command as large of a move as convenient and measure the actual distance moved with a ruler.   For example in the axis described above you might command a move of 320000 steps.  This should result in a motion of:

320000 steps / (32000 steps/inch) = 10 inches.


For KMotionCNC set the Axis Resolution in the Tool Setup | Trajectory Planner Screen | Axis Parameters | cnts/inch.  Note units must be in units of inches.  If your resolution is in mm units multiply by 25.4.


For Mach3 enter the Axis Resolution in the Configuration | Motor Tuning Screen.  Make sure the setup units (not GCode units) match the mode of your values.


Servo Dither/Hunting - (oscillation around zero error)

Servos have high accuracy because they are always actively trying to make corrections and drive the error to zero.  Unfortunately this can sometimes cause annoying dither or position hunting around zero when not moving.  This is a very complex non-linear effect dependent on the dynamics of the mechanics.  Because of the highly non-linear quantization effects of single "steps" in the encoder position, stiction, backlash, etc. it follows different rules and is harder to analyze than normal servo tuning/stability in the larger magnitude more linear regime.  For example attempting to apply "Damping" is unlikely to work.

Lowering gains will usually help at the expense of performance.  However in many cases more than acceptable performance can be achieved with lower gains so one should consider if the higher gains are really needed.

KFLOP has a Deadband Gain and Range feature that can basically be used to tell the servo to not attempt to correct small errors (treat the errors as zero), or to try to correct them less aggressively (with a Gain less than 1.0).  See here for more information

Unfortunately adding Deadband doesn't always help the servo "sit still" and may actually increase the size of the dither depending on the dynamics.


Note that when the servo is commanded to a non integer position ie 999999.7 encoder counts without deadband the servo will always be making corrections.  The best the servo can do is dither between encoder positions 999999.0 and 1000000.0.  With an error of either -0.7 or +0.3.  A servo with Integrator gain will guarantee the average is 999999.7

If dither is still a major problem a C Program might be used to monitor things and change settings under certain conditions to reduce dither.  See the example AntiServoDither__ALL.c which monitors for small errors for a period of time and if so reduces or turns off Integrator gain.

Noisy GCode - Trajectory Planner Smoothing

An analysis of Quantization Noise in GCode and Trajectory Planner Settings to generate smooth motion.
GCode Noisy Path.png

Arc "faceting" - Trajectory Planner - Collinear Tolerance

ArcsTrajectoryZoomXTol.0005.png

I Gain/Max Limit Integrator

I (Integrator) Gain can be used to eliminate persistent errors.  In fact any Integrator Gain at all guarantees the average error over infinite time is zero.  Without I Gain a system might have a small error that does not create enough output to overcome stiction to make a correction.  In such a case the error could persist forever.  Not so with any Integrator Gain.  Any error will be integrated and ramp the output higher and higher until eventually there will be a correction.  That assumes the Integrator or Output doesn't saturate or reach their programmed limits.  The rate the output ramps (or sums) is dependent on the size of the error and the I Gain value.  The Error x I Gain is summed every servo sample (90us).  This is why I Gain values are often small numbers (0.0001 - 0.01 typical range).  There is no guarantee that the position doesn't over shoot the target Destination.  In fact it is likely as as any error (area) under the trajectory will always be balanced by an equal area over the trajectory.  Too high of I Gain will make the system unstable.


Another case where I Gain is useful is when moving at high speed with a Velocity Amplifier.  To move at high speed a significant amount of output is required.  Without I Gain a significant amount of error could be required to provide this Output (ie Error x P Gain = Output).    With I Gain the Integrator will eventually ramp up to provide any Output necessary to move at the desired speed driving the error to zero.


Integrators have an issue often referred to as "Integrator Wind Up".  This issue usually doesn't arise under normal conditions.  However if something is preventing the servo from making a correction such as forcing the position away from the target for a sustained amount of time, or disabling the amplifier, the Integrator will integrate to a huge unlimited value.  When the force is removed or amplifier re-enabled, the Integrator will likely cause a violent motion and overshoot.  Max Limit Integrator can help to minimize this issue by limiting the amount the Integrator can ramp up to.  So the Max Limit Integrator Value should be set at the minimum value that can still allow the Integrator to function in normal circumstances.


Typically there are two cases that should be considered when determining the Max Limit Integrator. 

  1. The amount of output expected to be required to overcome any stiction, friction, or other forces (cutting, gravity, etc...).  This is often not a large value and can be estimated or can be observed from the Step Response Screen (green plot right side scale is the output) when making a move.
  2. The amount of output required to provide the output needed to move at speed.  It is important to note that D Gain provides a damping or drag effect on the Output.  So the Integrator must be able to ramp up to a sufficient level to overcome the damping or drag effect and still provide enough output to move at the commanded speed.  For example:


Assume:

  1. Commanded speed of 500,000 counts/sec
  2. D Gain of 35
  3. Output required to move at speed is 1800 DAC Counts
  4. Servo Sample Time of 90us


Damping effect = Speed x D Gain x Sample Time = 500000 x 35 x 90e-6 = 1575 counts


Required Integrator Value = 1800 + 1575 = 3375


So to provide some margin an Max Limit Integrator Value of 3500 might be used.


Max Limits - Error

Max limits error can be helpful to have your system respond less violently in the abnormal event where an excessively large error occurs.  Normally with a properly tuned system following errors should be small.   Setting a Max limits error can cause the servo to treat errors beyond a specified limit as if they were only the size of the limit and therefore respond less so than they would otherwise.  The max limits error is normally set to a value so it is not limiting under normal circumstances.


The Plot below shows a situation where a small max limits error combined with a low P gain severely limits the Output.  In the plot below a large move (10000 counts) at a high speed (40000 counts/sec) is commanded.  Only P Gain (0.2) is used to provide the Output (green).  The max error limit of 200 combined with the low gain (0.2) limits the output to only 40 DAC counts.  Even as the true error increases to many thousands of counts, the servo is told to ignore the amount over 200.  So the output can never exceed 40 DAC counts.  The 40 DAC count limit means that the Axis is therefor not capable of providing the output necessary to keep up with the commanded motion.  The axis does the best it can with the limited output, and only does a fraction of the desired motion.

Move10000.png


After increasing the max limits error the Output (green - right scale) now goes to a much higher value (900), and the Position (red) follows the Command (blue) to a much better degree.

Move10000 nolimit.png


Increasing the P Gain to 1.6 also applies more Output sooner and the Position follows the command still better.

Move1000 p1.6.png




Lead Compensator vs Derivative Gain

Derivative (D) Gain is often used to help stabilize a system.  It helps to think in the Frequency Domain to help understand how the two forms of compensation help.  Please read below and this for more information on the Frequency Domain.  Both Compensation methods add positive phase to help stabilize the system.  Unfortunately both methods increase gain at higher frequencies possibly causing the system to go unstable at higher frequency.  A Lead Compensator provides the benefit of positive phase but without as much gain increase at higher frequencies.  This figure shows a simplified Gain Plot comparison:


DGainvsLead.png

Here is a Bode Plot of a P=0.5 D=20 Compensator.   Note the KMotion.exe Bode Plot Screen has the capability of plotting the Frequency Domain Response of the PID+Filters Compensation.  Assume we desire positive phase to be added at 40Hz.  Notice the positive phase of 40 degrees at 40Hz which is good.  However the Gain increase in the 1KHz region of about 21db which is bad.

P.5D20Annotate.png


Here is a Bode Plot of a P=0.5 N1=N2=25Hz D1=D2=70Hz Compensator.   Assume we desire positive phase to be added at 40Hz.  We choose N1 N2 and D1 D2 to surround the frequency where the positive phase is desired.  Moving them further apart will increase the amount of positive phase but also increase the added Gain.  Notice the positive phase of 60 degrees at 40Hz which is good.  However the Gain increase in the 1KHz region of about 12db which is bad.  However both are improvements over the D Gain compensator.


PoleZeroFilter.png


P.5D0N25D70Annotate.png


Bode Plots

A Bode Plot is a powerful tool for characterizing and providing insight into a dynamic system. It can help determine closed loop stability, bandwidth/performance, resonant frequencies, and more. It is entirely based on the system being linear. Linear in the sense that if the amplitude of some input signal is changed then the output signal will change proportionally as well. Unfortunately most systems are not entirely linear. Stiction, backlash, encoder quantization, amplifier saturation, and other effects are non-linear. For example driving a system with a signal too small to overcome stiction will result in no output at all whereas a larger signal will result in some output. This is clearly non-linear behavior. It would be nice to use a technique that handles non-linear systems but basically none are known.

A Bode Plot is made injecting a stimulus to the system and observing how the system responds. For the reasons of non-linearity it is very important to perform a Bode Plot measurement using a representative level of stimulus similar to what the system will actually have during normal operation. If the Stimulus is not adjusted properly the result is likely to be completely invalid. Additionally the system should be reasonably tuned and stable so that it is responding in a reasonable way to the stimulus. If the system is unstable or very poorly tuned the result is likely to be completely invalid.

You might think of it somewhat like shaking a box to determine what is in it. You should shake it with enough intensity and at frequencies to get some reaction, but not so high of intensity to break or distort the object inside.

To create a Bode Plot use the KMotion.exe Bode Plot Screen. First select Plot: Time domain - Command, Position, Output vs Time and adjust the Amplitude and cutoff Freq until there is small but significant Position (red) changes (ie 50 encoder counts), at a frequency low enough that the Position at least somewhat attempts to follow the Command (blue), and where the Output (green) is not near saturation for the Drive being used.

After the Stimulus/Noise Injection settings are set switch to Plot: Open Loop - Magnitude and Phase vs Frequency. Set the number of Samples to average (ie 20) and perform a Measurement.  See here for more information.

Links to other Information on Tuning and Bode Plots

umich.edu Introduction section Control Frequency

Kollmorgen Use Control Theory to Improve Servo Performance 230712.pdf

Problems and Resolutions

General

  • Dealing with noise on inputs.  If you experience issues with inputs misreading, the issue may be noise.  This page provides examples on what might be causing noise issues and examples of how to possibly deal with noise.
  • Other

Software-Specific Problems and Resolutions

  • Place links to pages explaining resolutions to problems that are largely software-related here

KFLOP User C Programs Compiling/Launching Slowly because of Windows Defender

Hardware-Specific Problems and Resolutions

  • Place links to pages explaining resolutions to problems that are largely hardware-related

Step/Dir Drives lose 2 Steps for each pair of Direction Reversals

Applications and Projects

  • Place links to pages that explain how you accomplished your particular project.  Write clear explanations that provide background on what you did and how you did it.

Tool Changer - router linear 4 Tools - C Program
LINEAT+ATC.jpg

Part Zero & Tool Height Touch Plate

Driving Hobby Servos

HobbyServo.png






HiTec Type






Electrical Discharge Machining

EDM (wikipedia)is a method of cutting materials with high precision and detail.  Dynomotion Motion Controllers work well for EDM because of the ability for feedrate to be dynamically controlled including reversal along cutting path.

Information on BAXEDM Arc Generators used with KFLOP

How to convert a milling machine to a 3D printer in 3 easy steps

CNCto3DPrinter.png

More information here.

International and other Languages

Russian

Spanish