Difference between revisions of "External Axis"

From Wiki
Line 38: Line 38:
 
Any stepper motor module will need to be configured. For known axes this is done in the factory. For custom axis this process needs to be carried out by the user for the system to function as intended.
 
Any stepper motor module will need to be configured. For known axes this is done in the factory. For custom axis this process needs to be carried out by the user for the system to function as intended.
  
#Turn on the Hardware, start the software. Wait until the green LEDs on top of all motor modules are blinking green. If the axis you are intending to work on now is not blinking green, something went wrong in the section above. Did you save the project and restart the hardware?
+
* Turn on the Hardware, start the software. Wait until the green LEDs on top of all motor modules are blinking green. If the axis you are intending to work on now is not blinking green, something went wrong in the section above. Did you save the project and restart the hardware?
#Click "Connect"
+
* Click "Connect"
#Once connected, click on "File" to get to the "backstage area"
+
* Once connected, click on "File" to get to the "backstage area"
#Click on "Get Amp Configuration" to download the firmware parameters of all motor modules. After the download is complete, there will be a pop-up message telling you where the backup file can be found on your hard disk. Make a backup of that backup by copying the file to a safe location.
+
* Click on "Get Amp Configuration" to download the firmware parameters of all motor modules. After the download is complete, there will be a pop-up message telling you where the backup file can be found on your hard disk. Make a backup of that backup by copying the file to a safe location.
#Open the file in a plain-text editor like Windows Notepad or Notepad++ (do not use Wordpad, Word or OpenOffice Writer). You will see something similar to this:
+
* Open the file in a plain-text editor like Windows Notepad or Notepad++ (do not use Wordpad, Word or OpenOffice Writer). You will see something similar to this:
  
 
<syntaxhighlight lang="python" highlight="5-7">
 
<syntaxhighlight lang="python" highlight="5-7">
Line 96: Line 96:
 
         />
 
         />
  
<Joint4 ID="88" Version="Product 0x42 FW 0x02 0x10"
+
<Joint5 ID="88" Version="Product 0x42 FW 0x02 0x10"
 
         ComTimeOut="2000" MaxCurrent="200" MaxLag="5000" EncoderErrorDetection="0" PosP="1.000" PosI="0.0000" PosD="0.000" PosAWU="30"
 
         ComTimeOut="2000" MaxCurrent="200" MaxLag="5000" EncoderErrorDetection="0" PosP="1.000" PosI="0.0000" PosD="0.000" PosAWU="30"
 
         Encoder="True" SwapEncoderDirection="False" EndSwitchRising="True" StopOnEndSwitch="False" UseIndexAsRef="False"
 
         Encoder="True" SwapEncoderDirection="False" EndSwitchRising="True" StopOnEndSwitch="False" UseIndexAsRef="False"
Line 108: Line 108:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
+
* The last parameter Block, starting (here) with <code>Joint5 ID="88"</code> is the one to be configured. Please only change the values in  quote marks, do not delete any quote marks, do not use decimal separators. This config file is case sensitive, so lower case and upper case matters.
 
+
* If the additional external axis has a motor encoder, which it normally should, enter the paramters as shown on Fig 2. [[file:ModuleCtrl_page2.png|thumb|right|200px|Fig 2. Enter the module paramters as shown on this image.]]. Initially, click "read" to download the current parameters from the module. Remember to click the set after entering the values, so that the parameters are uploaded to the firmware.
# If the additional external axis has a motor encoder, which it normally should, enter the paramters as shown on Fig 2. [[file:ModuleCtrl_page2.png|thumb|right|200px|Fig 2. Enter the module paramters as shown on this image.]]. Initially, click "read" to download the current parameters from the module. Remember to click the set after entering the values, so that the parameters are uploaded to the firmware.
 
 
# Switch to the StepperMotor Tab and initially click "read" to download the current parameters. Enter the values shown in Fig 3 and click "write". [[file:ModuleCtrl_page3.png|thumb|right|200px|Fig 3. Enter the module paramters as shown on this image.]]
 
# Switch to the StepperMotor Tab and initially click "read" to download the current parameters. Enter the values shown in Fig 3 and click "write". [[file:ModuleCtrl_page3.png|thumb|right|200px|Fig 3. Enter the module paramters as shown on this image.]]
 
# Then click "read" again to verify that the configuration has been written as intended.
 
# Then click "read" again to verify that the configuration has been written as intended.

Revision as of 14:52, 2 February 2021

This Document describes how to add an external axis. An additional Stepper Motor Module is required to control the external Axis.

Hardware Connections

Connect the external axis just like all other axes. See pinout below:

ExternalAxisSchematic.png

Configuration

The values displayed on the last image above are the correct values for the optional linear axis that the robolink DP robots can travel on.

  • Type: Leave this field blank, unless you know which xml robot configuration file you want to use for the external axis.
  • Kinematic: Select independent. - At the time of writing only independent axes are supported. "Dependent" means that the robot is connected to the external axis and moves with it. Independent allows the external axis to be moved independently of the robot.
  • CAN ID: This is the address of the stepper motor module of this axis. Normally the first external axis has the CAN ID 88, which corresponds to switch position 9 on the stepper motor module of the axis.
  • Gear scale: Defines the gear-transmission-ratio. It should be set, so that the position displayed in the software corresponds to the distance the external axis has been moved. When position 1000 (mm) is displayed in the software, the robot should have moved 1m. Negative Values can be used to invert the direction of travel. (For a rotational external axis, this value would be the degrees (°) of rotation, i.e. the when 360 (°) is displayed in the software, the axis should have completed one rotation.
  • Position min and Position max: define the joint limits to avoid collisions. A 1m external axis should be limited to a minimum of 0 (mm) or greater and a maximum of 1000 (mm) or smaller.
  • Velocity max: is the maximum velocity that the axis is allowed to move at. For a linear axis this value is in mm/s. For a rotational axis this value is in °/s.
  • Acceleration: defines the instant acceleration in mm/s² or °/s². (Initial acceleration from standstill)
  • Acceleration Inc: defines the subsequent acceleration in mm/s² or °/s². (Subsequent acceleration, once the axis is moving)

Firmware Parameters

Any stepper motor module will need to be configured. For known axes this is done in the factory. For custom axis this process needs to be carried out by the user for the system to function as intended.

  • Turn on the Hardware, start the software. Wait until the green LEDs on top of all motor modules are blinking green. If the axis you are intending to work on now is not blinking green, something went wrong in the section above. Did you save the project and restart the hardware?
  • Click "Connect"
  • Once connected, click on "File" to get to the "backstage area"
  • Click on "Get Amp Configuration" to download the firmware parameters of all motor modules. After the download is complete, there will be a pop-up message telling you where the backup file can be found on your hard disk. Make a backup of that backup by copying the file to a safe location.
  • Open the file in a plain-text editor like Windows Notepad or Notepad++ (do not use Wordpad, Word or OpenOffice Writer). You will see something similar to this:
<!-- Parameter set for Commonplace Robotics robotics control  /-->
<!-- Target Robot: igus robolink                              /-->
<!-- support@cpr-robots.com                                   /-->
<AmpParameter>
    <Configuration ModuleType="RailStepperV02" NrOfJoints="5"/>

    <Joint0 ID="16" Version="Product 0x42 FW 0x02 0x10"
         ComTimeOut="2000" MaxCurrent="200" MaxLag="5000" EncoderErrorDetection="0" PosP="1.000" PosI="0.0000" PosD="0.000" PosAWU="30"
         Encoder="True" SwapEncoderDirection="False" EndSwitchRising="True" StopOnEndSwitch="False" UseIndexAsRef="False"
         RefStraight="False" RefSinus="False" RefHalf="True" SinusRefTics="2000" SinusRefMaxCycles="6"
         Offset="0" RefSpeed="50" RefSpeedSlow="10" RefFromBothSides="True"
         SGThreshold="2" CSLoad="18" CSStart="18" CSIdle="6" CSRef="15" StartArea="200"
         MinSupplyVoltage="500" MaxTemperature="500" Microstepping="0"
        />

    <Joint1 ID="32" Version="Product 0x42 FW 0x02 0x10"
         ComTimeOut="2000" MaxCurrent="200" MaxLag="5000" EncoderErrorDetection="0" PosP="1.000" PosI="0.0000" PosD="0.000" PosAWU="30"
         Encoder="True" SwapEncoderDirection="False" EndSwitchRising="True" StopOnEndSwitch="False" UseIndexAsRef="False"
         RefStraight="False" RefSinus="False" RefHalf="True" SinusRefTics="2000" SinusRefMaxCycles="6"
         Offset="891" RefSpeed="-50" RefSpeedSlow="-10" RefFromBothSides="True"
         SGThreshold="2" CSLoad="26" CSStart="26" CSIdle="10" CSRef="20" StartArea="200"
         MinSupplyVoltage="500" MaxTemperature="500" Microstepping="0"
        />

    <Joint2 ID="48" Version="Product 0x42 FW 0x04 0x07"
         ComTimeOut="3000" MaxCurrent="0" MaxLag="5000" EncoderErrorDetection="1000" PosP="1.000" PosI="0.0000" PosD="0.000" PosAWU="0"
         Encoder="True" SwapEncoderDirection="False" EndSwitchRising="True" StopOnEndSwitch="False" UseIndexAsRef="False"
         RefStraight="True" RefSinus="False" RefHalf="False" SinusRefTics="500" SinusRefMaxCycles="6"
         Offset="-1" RefSpeed="40" RefSpeedSlow="5" RefFromBothSides="True"
         SGThreshold="2" CSLoad="10" CSStart="10" CSIdle="3" CSRef="8" StartArea="200"
         MinSupplyVoltage="500" MaxTemperature="430" Microstepping="0"
        />

    <Joint3 ID="64" Version="Product 0x42 FW 0x02 0x10"
         ComTimeOut="2000" MaxCurrent="200" MaxLag="5000" EncoderErrorDetection="0" PosP="1.000" PosI="0.0000" PosD="0.000" PosAWU="30"
         Encoder="True" SwapEncoderDirection="False" EndSwitchRising="True" StopOnEndSwitch="False" UseIndexAsRef="False"
         RefStraight="False" RefSinus="False" RefHalf="True" SinusRefTics="2000" SinusRefMaxCycles="6"
         Offset="-1711" RefSpeed="50" RefSpeedSlow="10" RefFromBothSides="True"
         SGThreshold="2" CSLoad="22" CSStart="22" CSIdle="8" CSRef="18" StartArea="200"
         MinSupplyVoltage="500" MaxTemperature="500" Microstepping="0"
        />

    <Joint4 ID="80" Version="Product 0x42 FW 0x02 0x10"
         ComTimeOut="2000" MaxCurrent="200" MaxLag="5000" EncoderErrorDetection="0" PosP="1.000" PosI="0.0000" PosD="0.000" PosAWU="30"
         Encoder="True" SwapEncoderDirection="False" EndSwitchRising="True" StopOnEndSwitch="False" UseIndexAsRef="False"
         RefStraight="False" RefSinus="False" RefHalf="True" SinusRefTics="2000" SinusRefMaxCycles="6"
         Offset="-18405" RefSpeed="50" RefSpeedSlow="10" RefFromBothSides="True"
         SGThreshold="2" CSLoad="16" CSStart="16" CSIdle="6" CSRef="12" StartArea="200"
         MinSupplyVoltage="500" MaxTemperature="500" Microstepping="0"
        />

<Joint5 ID="88" Version="Product 0x42 FW 0x02 0x10"
         ComTimeOut="2000" MaxCurrent="200" MaxLag="5000" EncoderErrorDetection="0" PosP="1.000" PosI="0.0000" PosD="0.000" PosAWU="30"
         Encoder="True" SwapEncoderDirection="False" EndSwitchRising="True" StopOnEndSwitch="False" UseIndexAsRef="False"
         RefStraight="False" RefSinus="False" RefHalf="True" SinusRefTics="2000" SinusRefMaxCycles="6"
         Offset="-18405" RefSpeed="50" RefSpeedSlow="10" RefFromBothSides="True"
         SGThreshold="2" CSLoad="16" CSStart="16" CSIdle="6" CSRef="12" StartArea="200"
         MinSupplyVoltage="500" MaxTemperature="500" Microstepping="0"
        />	
		
</AmpParameter>
  • The last parameter Block, starting (here) with Joint5 ID="88" is the one to be configured. Please only change the values in quote marks, do not delete any quote marks, do not use decimal separators. This config file is case sensitive, so lower case and upper case matters.
  • If the additional external axis has a motor encoder, which it normally should, enter the paramters as shown on Fig 2.
    Fig 2. Enter the module paramters as shown on this image.
    . Initially, click "read" to download the current parameters from the module. Remember to click the set after entering the values, so that the parameters are uploaded to the firmware.
  1. Switch to the StepperMotor Tab and initially click "read" to download the current parameters. Enter the values shown in Fig 3 and click "write".
    Fig 3. Enter the module paramters as shown on this image.
  2. Then click "read" again to verify that the configuration has been written as intended.
  3. The axis is now configured to the default parameters for an external linear axis. However, you may want to vary the parameters:
  4. If you later on notice that the referencing switch is not being found, change
    • "End Switch Rising" to invert the end-switch logic.
    • "Ref Speed" and "Ref Speed Slow", if the axis is moving at the wrong speed when referencing. Invert these parameters, if the axis is turning in the wrong direction during referencing.

Referencing

Now you are ready to reference the robot including the external axis. Start at Step 2 in the link, since the robot is already connected in software right now.