DS402Node.h
Go to the documentation of this file.
1 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
2 
3 // -- BEGIN LICENSE BLOCK ----------------------------------------------
4 // This file is part of the SCHUNK Canopen Driver suite.
5 //
6 // This program is free software licensed under the LGPL
7 // (GNU LESSER GENERAL PUBLIC LICENSE Version 3).
8 // You can find a copy of this license in LICENSE folder in the top
9 // directory of the source code.
10 //
11 // © Copyright 2016 SCHUNK GmbH, Lauffen/Neckar Germany
12 // © Copyright 2016 FZI Forschungszentrum Informatik, Karlsruhe, Germany
13 // -- END LICENSE BLOCK ------------------------------------------------
14 
15 //----------------------------------------------------------------------
23 //----------------------------------------------------------------------
24 
25 #ifndef DS402NODE_H
26 #define DS402NODE_H
27 
28 #include "DS301Node.h"
29 
30 #include "ds402.h"
31 
32 
33 namespace icl_hardware {
34 namespace canopen_schunk {
35 
43  class DS402Node : public DS301Node
44 {
45 public:
50 
52  {
56  };
57 
58  DS402Node(const uint8_t node_id, const icl_hardware::canopen_schunk::CanDevPtr& can_device, HeartBeatMonitor::Ptr heartbeat_monitor);
59 
60  virtual void setNMTState (const NMT::eNMT_State state, const NMT::eNMT_SubState sub_state);
61 
73  virtual bool setTarget ( const float target );
74 
80  virtual void startPPMovement ();
81 
82 
87  virtual void acceptPPTargets ();
88 
95  virtual double getTargetFeedback();
96 
103  virtual void setDefaultPDOMapping (const eDefaultPDOMapping mapping);
104 
108  virtual void home();
109 
118  virtual void initDS402State( const icl_hardware::canopen_schunk::ds402::eState& requested_state );
119 
120 
123 
124 
133  virtual bool setModeOfOperation (const ds402::eModeOfOperation op_mode);
134 
143  virtual bool isModeSupported (const ds402::eModeOfOperation op_mode);
144 
151 
155  virtual void printStatus();
156 
160  virtual void quickStop();
161 
167  virtual void stopNode();
168 
173  virtual void initNode();
174 
179  virtual void querySupportedDeviceModes();
180 
187 
188 
195  double getTransmissionFactor () const { return m_transmission_factor; }
196 
203  void setTransmissionFactor (const double transmission_factor) { m_transmission_factor = transmission_factor; }
204 
210  virtual void setupHomingMode (const ds402::HomingModeConfiguration& config);
211 
218 
225 
226 
232  virtual bool resetFault ();
233 
234 
236  void setMaximumNumberOfStateTransitions (const size_t max_number_of_state_transitions) { m_max_number_of_state_transitions = max_number_of_state_transitions; }
237 
238 
244  virtual void configureInterpolationCycleTime (const uint8_t interpolation_cycle_time_ms = 8);
245 
249  virtual void configureHomingMethod ( const int8_t homing_method );
250 
256  virtual void configureHomingSpeeds (const uint32_t low_speed, const uint32_t high_speed = 0);
257 
265  virtual void enableNode (const ds402::eModeOfOperation operation_mode = ds402::MOO_RESERVED_0);
266 
271  virtual void disableNode ();
272 
277  virtual void openBrakes ();
278 
283  virtual void closeBrakes ();
284 
290  virtual bool isTargetReached();
291 
292  virtual ds402::Statusword getStatus();
293 
294 
295 protected:
299  void configureMaxAcceleration (const uint32_t acceleration);
303  void configureMaxDeceleration (const uint32_t deceleration);
304 
308  void configureProfileVelocity (const uint32_t velocity);
312  void configureProfileAcceleration (const uint32_t acceleration);
316  void configureProfileDeceleration (const uint32_t deceleration);
320  void configureQuickStopDeceleration (const uint32_t deceleration);
324  void configureMotionProfileType (const int16_t motion_type);
325 
329  void configureHomingAcceleration (const uint32_t acceleration);
330 
334  void configureSensorSelectionCode ( const int16_t sensor_selection_code );
335 
339  void configureTorqueSlope ( const uint32_t torque_slope );
343  void configureTorqueProfileType ( const int16_t torque_profile_type );
344 
355  virtual void configureInterpolationData (const uint8_t buffer_organization = 0,
356  const int16_t interpolation_type = 0,
357  const uint8_t size_of_data_record = 4);
358 
366  std::string operationModeSpecificStatus ( const ds402::Statusword& statusword );
367 
374  void doDS402StateTransition (const ds402::eStateTransission transition);
375 
380  virtual void onStatusWordUpdate ();
381 
384 
387 
390 
392 
400 };
401 
402 
403 }}// end of NS
404 #endif // DS402NODE_H
virtual void configureInterpolationData(const uint8_t buffer_organization=0, const int16_t interpolation_type=0, const uint8_t size_of_data_record=4)
Configure the buffer for the interpolated position mode.
Definition: DS402Node.cpp:952
unsigned int uint32_t
virtual void configureInterpolationCycleTime(const uint8_t interpolation_cycle_time_ms=8)
Set the interpolation cycle time in milliseconds. If no time is given the default will be used...
Definition: DS402Node.cpp:764
void setTransmissionFactor(const double transmission_factor)
The Transmission factor is used for converting radiant units into device ticks. By default it's value...
Definition: DS402Node.h:203
void configureMotionProfileType(const int16_t motion_type)
Set the device's motion profile type through an SDO (OD 0x6086)
Definition: DS402Node.cpp:904
Configuration parameters for a Profile_Position_Mode according to CiA DSP-402 V1.1 section 12...
Definition: ds402.h:169
std::string operationModeSpecificStatus(const ds402::Statusword &statusword)
This function queries the two operation mode specific bits and turns them to a human-readable string...
Definition: DS402Node.cpp:576
virtual bool isTargetReached()
Returns whether the device has reached it's recent target.
Definition: DS402Node.cpp:1159
ds402::eModeOfOperation getModeOfOperation() const
Get the current mode of operation.
Definition: DS402Node.h:122
virtual void setupProfileTorqueMode(const ds402::ProfileTorqueModeConfiguration &config)
Configure the mandatory parameters for a profile torque mode.
Definition: DS402Node.cpp:822
virtual void enableNode(const ds402::eModeOfOperation operation_mode=ds402::MOO_RESERVED_0)
Switches on the device and enters Operation Enabled mode with the given mode. If the requested mode i...
Definition: DS402Node.cpp:1049
void doDS402StateTransition(const ds402::eStateTransission transition)
Performs a state transition in the DS402 state machine.
Definition: DS402Node.cpp:974
virtual void closeBrakes()
When the device is in OperationEnabled mode, this function disable the drive motion.
Definition: DS402Node.cpp:1116
virtual void initNode()
Initializes the node. Tries to query all required data from the device.
Definition: DS402Node.cpp:639
void configureTorqueSlope(const uint32_t torque_slope)
Set the device's torque slope through an SDO (OD 0x6087)
Definition: DS402Node.cpp:946
void configureProfileAcceleration(const uint32_t acceleration)
Set the device's profile acceleration through an SDO (OD 0x6083)
Definition: DS402Node.cpp:885
virtual bool resetFault()
This function is used to recover from a fault state.
Definition: DS402Node.cpp:828
signed char int8_t
data union for access to DSP 402 6041 statusword,
Definition: ds402.h:136
config
eNMT_SubState
The NMT Substate is only used during initialization of a device. Meaning the substates are only usefu...
Definition: NMT.h:69
uint8_t m_interpolation_cycle_time_ms
Cycle time of interpolation mode.
Definition: DS402Node.h:396
Configuration parameters for a Profile_Velocity_Mode according to CiA DSP-402 V1.1 section 16...
Definition: ds402.h:246
void configureHomingAcceleration(const uint32_t acceleration)
Set the device's homing acceleration through an SDO (OD 0x609A)
Definition: DS402Node.cpp:921
virtual void querySupportedDeviceModes()
Uploads all supported modes of operation from the device. and stores them in the m_supported_modes me...
Definition: DS402Node.cpp:634
void setMaximumNumberOfStateTransitions(const size_t max_number_of_state_transitions)
Definition: DS402Node.h:236
virtual void initDS402State(const icl_hardware::canopen_schunk::ds402::eState &requested_state)
Initializes a state of the DS402 state machine. Performs all necessary state transitions until the ta...
Definition: DS402Node.cpp:302
double getTransmissionFactor() const
The Transmission factor is used for converting radiant units into device ticks. By default it's value...
Definition: DS402Node.h:195
void printSupportedModesOfOperation()
Prints out all Modes on which the device claims to be able to operate on.
Definition: DS402Node.cpp:664
void configureProfileVelocity(const uint32_t velocity)
Set the device's profile velocity through an SDO (OD 0x6081)
Definition: DS402Node.cpp:877
ds402::ProfilePositionModeConfiguration m_ppm_config
Definition: DS402Node.h:391
virtual void startPPMovement()
This sets the RPDO communication for enabling the movement after a target has been set...
Definition: DS402Node.cpp:165
void configureSensorSelectionCode(const int16_t sensor_selection_code)
Set the device's sensor selection code through an SDO (OD 0x606a)
Definition: DS402Node.cpp:934
virtual void configureHomingSpeeds(const uint32_t low_speed, const uint32_t high_speed=0)
Set the speeds for homing through SDO 6099. Typically, a high speed is used when searching for a home...
Definition: DS402Node.cpp:912
virtual void home()
Perform homing for this node.
Definition: DS402Node.cpp:502
unsigned char uint8_t
virtual void openBrakes()
When the device is in OperationEnabled mode, this function enables the drive motion.
Definition: DS402Node.cpp:1079
void configureMaxDeceleration(const uint32_t deceleration)
Set the device's maximum deceleration through an SDO (OD 0x60c6)
Definition: DS402Node.cpp:871
boost::shared_ptr< DS402Node > Ptr
Shared pointer to a DS402Node.
Definition: DS402Node.h:47
virtual bool isModeSupported(const ds402::eModeOfOperation op_mode)
Tests whether a given mode of operation is supported by the device.
Definition: DS402Node.cpp:651
DS402Node(const uint8_t node_id, const icl_hardware::canopen_schunk::CanDevPtr &can_device, HeartBeatMonitor::Ptr heartbeat_monitor)
Definition: DS402Node.cpp:35
ds402::SupportedDriveModes m_supported_modes
supported modes of operation
Definition: DS402Node.h:383
virtual void disableNode()
Puts the device into STATE_SWITCHED_ON mode. If the device was in InterpolatedPositionMode, interpolation will be stopped here, as well.
Definition: DS402Node.cpp:1069
void configureQuickStopDeceleration(const uint32_t deceleration)
Set the device&#39;s quick stop deceleration through an SDO (OD 0x6085)
Definition: DS402Node.cpp:897
virtual void setDefaultPDOMapping(const eDefaultPDOMapping mapping)
Choose one of the predefined default mappings. Please see the enum eDefaultPDOMapping for a list of a...
Definition: DS402Node.cpp:44
virtual void onStatusWordUpdate()
This will be called when a new statusword PDO comes in. If the device&#39;s state differs from the one ex...
Definition: DS402Node.cpp:1136
virtual void printStatus()
Prints a stringified version of the statusword to the logging system.
Definition: DS402Node.cpp:554
virtual void configureHomingMethod(const int8_t homing_method)
Set the device&#39;s homing method through an SDO (OD 0x6098)
Definition: DS402Node.cpp:927
size_t getMaximumNumberOfStateTransitions() const
Definition: DS402Node.h:235
virtual void stopNode()
This redefines the basic stopNode function.
Definition: DS402Node.cpp:296
Configuration parameters for a Profile_Torque_Mode according to CiA DSP-402 V1.1 section 17...
Definition: ds402.h:261
void configureTorqueProfileType(const int16_t torque_profile_type)
Set the device&#39;s torque profile type through an SDO (OD 0x6088)
Definition: DS402Node.cpp:940
virtual void acceptPPTargets()
After enabling PP movement, this enables accepting new targets again. Remember to sync all nodes and ...
Definition: DS402Node.cpp:175
signed short int16_t
virtual void setupHomingMode(const ds402::HomingModeConfiguration &config)
Configure the mandatory parameters for a homing mode.
Definition: DS402Node.cpp:811
boost::shared_ptr< const DS402Node > ConstPtr
Shared pointer to a const DS402Node.
Definition: DS402Node.h:49
void configureProfileDeceleration(const uint32_t deceleration)
Set the device&#39;s profile deceleration through an SDO (OD 0x6084)
Definition: DS402Node.cpp:892
eState
DS402 states as described in Figure 6.3 in ELMO DS402 implementation guide V1.000.
Definition: ds402.h:61
virtual void setupProfileVelocityMode(const ds402::ProfileVelocityModeConfiguration &config)
Configure the mandatory parameters for a profile velocity mode.
Definition: DS402Node.cpp:817
virtual bool setModeOfOperation(const ds402::eModeOfOperation op_mode)
Sets and initializes a mode of operation. First it will check whether the device supports the request...
Definition: DS402Node.cpp:709
virtual void quickStop()
This sends the controlword for performing a quick_stop.
Definition: DS402Node.cpp:266
ds402::eModeOfOperation m_op_mode
The mode of operation of this device.
Definition: DS402Node.h:386
virtual void setNMTState(const NMT::eNMT_State state, const NMT::eNMT_SubState sub_state)
Definition: DS402Node.cpp:261
eNMT_State
The NMT state indicates the behavior of the communication of a device, everything else is device spec...
Definition: NMT.h:60
void configureMaxAcceleration(const uint32_t acceleration)
Set the device&#39;s maximum acceleration through an SDO (OD 0x60c5)
Definition: DS402Node.cpp:864
virtual ds402::Statusword getStatus()
Definition: DS402Node.cpp:1167
data union for access to DSP 402 6041 statusword,
Definition: ds402.h:159
virtual void setupProfilePositionMode(const ds402::ProfilePositionModeConfiguration &config)
Configure the mandatory parameters for a profile position mode.
Definition: DS402Node.cpp:775
Class that holds devices according to the DS402 (drives and motion control) specification.
Definition: DS402Node.h:43
virtual double getTargetFeedback()
Depending on the mode of operation, this will return the current position, velocity or torque...
Definition: DS402Node.cpp:185
The DS301Node class Is the base class representation of canOpen devices. It is the access point to th...
Definition: DS301Node.h:67
virtual bool setTarget(const float target)
Sets the target for the motor. What that target is, depends on the selected mode of operation...
Definition: DS402Node.cpp:96
Configuration parameters for a Homing_Mode according to CiA DSP-402 V1.1 section 13.2.1.
Definition: ds402.h:229


schunk_canopen_driver
Author(s): Felix Mauch , Georg Heppner
autogenerated on Mon Jun 10 2019 15:07:49