6 #include "EcErrorSGDV.h"
9 #include <soem/ethercattype.h>
10 #include <soem/ethercatbase.h>
11 #include <soem/ethercatmain.h>
12 #include <soem/ethercatconfig.h>
13 #include <soem/ethercatdc.h>
14 #include <soem/nicdrv.h>
15 #include <soem/ethercatcoe.h>
16 #include <soem/ethercatsoe.h>
17 #include <soem/ethercatprint.h>
20 #include <boost/signals2/signal.hpp>
28 CONTROL_WORD = 0x0086,
29 TARGET_POSITION = 0x002F,
30 TARGET_VELOCITY = 0x0024,
31 TARGET_TORQUE = 0x0050,
38 ACTUAL_POSITION_1 = 0x0033,
39 ACTUAL_POSITION_2 = 0x0035,
40 ACTUAL_VELOCITY = 0x0028,
41 ACTUAL_TORQUE = 0x0054,
82 DRIVEINTERNALINTERPOLATION_CONTROL =19,
89 CW_DRIVE_ENABLE = 0x4000,
90 CW_DRIVE_DISABLE = 0x0000,
92 CW_DRIVE_OFF = 0x4000,
93 CW_DRIVE_HALT = 0xE000,
94 CW_PRIMARY_MODE = 0xC000,
95 CW_SECONDARY_MODE_1 = 0xC800,
96 CW_SECONDARY_MODE_2 = 0xC200,
97 CW_SECONDARY_MODE_3 = 0xCA00,
98 CW_SECONDARY_MODE_4 = 0xC100,
99 CW_SECONDARY_MODE_5 = 0xC900,
100 CW_SECONDARY_MODE_6 = 0xC300,
101 CW_SECONDARY_MODE_7 = 0xCB00,
135 SW_READY_FREE = 0x8000,
136 SW_READY_COMPL = 0xC000,
137 SW_CHANGE_COMMAND_STATUS = 0x20,
138 SW_OPERATION_MODE_INITIALIZED = 0x80,
139 SW_PRIMARY_MODE = 0x00,
140 SW_SECONDARY_MODE_1 = 0x0100,
141 SW_SECONDARY_MODE_2 = 0x0200,
142 SW_SECONDARY_MODE_3 = 0x0300,
143 SW_SECONDARY_MODE_4 = 0x0400,
144 SW_SECONDARY_MODE_5 = 0x0500,
145 SW_SECONDARY_MODE_6 = 0x0600,
146 SW_SECONDARY_MODE_7 = 0x0700,
154 unsigned int byteSize;
185 const std::string&
getName()
const;
230 void setDC(
bool active,
unsigned int sync0Time,
unsigned int sync0Shift)
throw(
EcErrorSGDV);
249 bool readAT (EcPDOEntry entry,
int &value);
333 void setSGDVOject(uint16_t idn, uint8_t elementflags,
int psize,
void * param);
344 void getSGDVObject(uint16_t idn, uint8_t elementflags,
int *psize,
void *param);
361 void setMDT(std::vector<int> listidn);
369 void setAT(std::vector<int> listidn);
398 void DefaultParameters();
406 boost::signals2::signal<void (int, uint16_t, int32_t, int32_t, int16_t)> slaveValues;
413 unsigned int PDOerrorsTolerance;
414 unsigned int SYNC0TIME;
416 unsigned int SHIFTMASTER;
430 bool addPDOobject(std::string PDOentry,
int value,
int subindex);
432 int controlWordEntry;
433 int targetPositionEntry;
434 int targetVelocityEntry;
435 int targetTorqueEntry;
437 int actualPositionEntry;
438 int actualVelocityEntry;
439 int actualTorqueEntry;
441 bool wControlWordCapable;
442 bool wPositionCapable;
443 bool wVelocityCapable;
445 bool rStatusWordCapable;
446 bool rPositionCapable;
447 bool rVelocityCapable;
458 std::mutex slaveInMutex;
459 std::mutex slaveOutMutex;
461 std::vector <SoEparameter> m_params;
462 std::vector <PDOobject> inputObjects;
463 std::vector <PDOobject> outputObjects;
464 std::vector <char*> bufferList;
void TelegramType(EcTelegramType type)
Set the telegram type.
Definition: EcSlaveTrack.cpp:561
bool readAT(EcPDOEntry entry, int &value)
Read on the input PDOentry.
Definition: EcSlaveTrack.cpp:213
bool writeMDT(EcPDOEntry entry, int value)
Writes on the output PDOentry.
Definition: EcSlaveTrack.cpp:195
Class EcSlave.
Definition: EcSlave.h:53
bool readVelocity(int32_t &velocity)
Read the velocity object.
Definition: EcSlaveTrack.cpp:272
EcSlaveTrack(ec_slavet *mem_loc)
Constructor.
Definition: EcSlaveTrack.cpp:18
void modeSetUp(EcMode mode, int nmode)
Set the operation mode.
Definition: EcSlaveTrack.cpp:556
std::vector< int > readIDNofIDNs(int idn, bool print)
Read the IDN that are contained in a IDN.
Definition: EcSlaveTrack.cpp:488
void stop()
Stop motors.
Definition: EcSlaveTrack.cpp:179
void setPDOBuffer(char *input, char *output)
Sets locations Buffer.
Definition: EcSlaveTrack.cpp:173
const std::string & getName() const
Gets the name.
Definition: EcSlaveTrack.cpp:83
void setDC(bool active, unsigned int sync0Time, unsigned int sync0Shift)
Set the Distributed clock.
Definition: EcSlaveTrack.cpp:187
void update()
Update the data.
Definition: EcSlaveTrack.cpp:47
void setAT(std::vector< int > listidn)
Set the IDN that will be contained in the AT.
Definition: EcSlaveTrack.cpp:537
bool writeTorque(int16_t torque)
Write on the torque object.
Definition: EcSlaveTrack.cpp:281
void setMDT(std::vector< int > listidn)
Set the IDN that will be contained in the MDT.
Definition: EcSlaveTrack.cpp:518
void start()
Start motors.
Definition: EcSlaveTrack.cpp:162
bool readTorque(int16_t &torque)
Read the torque object.
Definition: EcSlaveTrack.cpp:290
~EcSlaveTrack()
Destructor.
Definition: EcSlaveTrack.cpp:37
bool writePosition(int32_t position)
Write on the position object.
Definition: EcSlaveTrack.cpp:245
bool readPosition(int32_t &position)
Read the position object.
Definition: EcSlaveTrack.cpp:254
bool writeVelocity(int32_t velocity)
Write on the velocity object.
Definition: EcSlaveTrack.cpp:263
Class EcErrorSGDV.
Definition: EcErrorSGDV.h:11
bool writeControlWord(uint16_t controlWord)
Write on the Controlword object.
Definition: EcSlaveTrack.cpp:226
void setSGDVOject(uint16_t idn, uint8_t elementflags, int psize, void *param)
Set an SGDV object.
Definition: EcSlaveTrack.cpp:475
void getSGDVObject(uint16_t idn, uint8_t elementflags, int *psize, void *param)
Set an SGDV object.
Definition: EcSlaveTrack.cpp:482
EcSlaveTrack.
Definition: EcSlaveTrack.h:165
bool readStatusWord(uint16_t &statusWord)
Read the Statusword object.
Definition: EcSlaveTrack.cpp:235
bool configure()
Configure the SGDV servopack.
Definition: EcSlaveTrack.cpp:100
Definition: EcMaster.h:37