CanDriveHarmonica.h
Go to the documentation of this file.
1 /*
2  * Copyright 2017 Fraunhofer Institute for Manufacturing Engineering and Automation (IPA)
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 
18 #ifndef CANDRIVEHARMONICA_INCLUDEDEF_H
19 #define CANDRIVEHARMONICA_INCLUDEDEF_H
20 
21 //-----------------------------------------------
24 
27 //-----------------------------------------------
28 
34 {
35 public:
36  // ------------------------- Types
40  struct ParamType
41  {
44  double dCanTimeout;
45  };
46 
51  {
56  };
57 
62  {
63  int iTxPDO1;
64  int iTxPDO2;
65  int iRxPDO2;
66  int iTxSDO;
67  int iRxSDO;
68  };
69 
70  // ------------------------- Interface
74  void setCanItf(CanItf* pCanItf){ m_pCanCtrl = pCanItf; }
75 
80  bool init();
81 
87  bool isInitialized() { return m_bIsInitialized; }
88 
93  bool start();
94 
99  bool stop();
104  bool reset();
105 
109  bool shutdown();
110 
117  bool disableBrake(bool bDisabled);
118 
122  bool initHoming();
123 
127  bool execHoming();
128 
133  bool endHoming();
134 
138  double getTimeToLastMsg();
139 
144  bool getStatusLimitSwitch();
145 
153  bool startWatchdog(bool bStarted);
154 
160  bool evalReceivedMsg(CanMsg& msg);
161 
166  bool evalReceivedMsg() { return true; }
167 
168 
173  void setGearPosVelRadS(double dPosRad, double dVelRadS);
174 
179  void setGearVelRadS(double dVelEncRadS);
180 
184  bool setTypeMotion(int iType);
185 
189  void getGearPosVelRadS(double* pdAngleGearRad, double* pdVelGearRadS);
190 
195  void getGearDeltaPosVelRadS(double* pdDeltaAngleGearRad, double* pdVelGearRadS);
196 
200  void getGearPosRad(double* pdPosGearRad);
201 
205  void setDriveParam(DriveParam driveParam) { m_DriveParam = driveParam; }
206 
210  bool isError();
211 
215  unsigned int getError() { return 0; }
216 
217  // ------ Dummy implementations for completing the interface
218 
222  void requestPosVel();
223 
228  void requestStatus();
229 
233  void getStatus(int* piStatus, int* piTempCel) { *piStatus = 0; *piTempCel = 0; }
234 
235 
236  // ------------------------- Interface: Harmonica specific
241 
250  void getData(double* pdPosGearRad, double* pdVelGearRadS,
251  int* piTorqueCtrl, int* piStatusCtrl);
252 
261  void setCanOpenParam( int iTxPDO1, int iTxPDO2, int iRxPDO2, int iTxSDO, int iRxSDO);
262 
266  void IntprtSetInt(int iDataLen, char cCmdChar1, char cCmdChar2, int iIndex, int iData);
267 
271  void sendHeartbeat();
272 
273 
274  bool setEMStop() {
275  std::cout << "The function setEMStop() is not implemented!!!" << std::endl;
276  return false;
277  }
278 
279  bool resetEMStop() {
280  std::cout << "The function resetEMStop() is not implemented!!!" << std::endl;
281  return false;
282  }
283 
288  void setMotorTorque(double dTorqueNm);
289 
298  void requestMotorTorque();
299 
304  void getMotorTorque(double* dTorqueNm);
305 
316  int setRecorder(int iFlag, int iParam = 0, std::string sParam = "/home/MyLog_");
317 
318 
319  //--------------------------
320  //CanDriveHarmonica specific functions (not from CanDriveItf)
321  //--------------------------
325  void IntprtSetFloat(int iDataLen, char cCmdChar1, char cCmdChar2, int iIndex, float fData);
326 
330  void sendSDOUpload(int iObjIndex, int iObjSub);
331 
335  void sendSDOAbort(int iObjIndex, int iObjSubIndex, unsigned int iErrorCode);
336 
340  void sendSDODownload(int iObjIndex, int iObjSub, int iData);
341 
345  void evalSDO(CanMsg& CMsg, int* pIndex, int* pSubindex);
346 
350  int getSDODataInt32(CanMsg& CMsg);
351 
352 
353 protected:
354  // ------------------------- Parameters
359 
360  // ------------------------- Variables
363 
365 
369 
376 
380 
383 
384  double m_dOldPos;
385 
386  std::string m_sErrorMessage;
387 
390 
392 
394 
396 
398 
400 
401  double m_dMotorCurr;
402 
404 
406 
407 
408  // ------------------------- Member functions
409  double estimVel(double dPos);
410 
411  bool evalStatusRegister(int iStatus);
412  void evalMotorFailure(int iFailure);
413 
416 
417  bool isBitSet(int iVal, int iNrBit)
418  {
419  if( (iVal & (1 << iNrBit)) == 0)
420  return false;
421  else
422  return true;
423  }
424 
429  void sendSDOUploadSegmentConfirmation(bool toggleBit);
430 
439  int receivedSDODataSegment(CanMsg& msg);
440 
447 
452  void receivedSDOTransferAbort(unsigned int iErrorCode);
453 
461 
462 };
463 //-----------------------------------------------
464 #endif
CanDriveHarmonica::requestPosVel
void requestPosVel()
Definition: CanDriveHarmonica.cpp:755
CanDriveHarmonica::ParamCanOpenType::iTxPDO1
int iTxPDO1
Definition: CanDriveHarmonica.h:63
CanDriveHarmonica::m_bOutputOfFailure
bool m_bOutputOfFailure
Definition: CanDriveHarmonica.h:397
CanDriveHarmonica::getError
unsigned int getError()
Definition: CanDriveHarmonica.h:215
CanDriveHarmonica::m_iNumAttempsRecFail
int m_iNumAttempsRecFail
Definition: CanDriveHarmonica.h:395
CanDriveHarmonica::m_sErrorMessage
std::string m_sErrorMessage
Definition: CanDriveHarmonica.h:386
CanDriveHarmonica::getMotorTorque
void getMotorTorque(double *dTorqueNm)
Definition: CanDriveHarmonica.cpp:1339
CanDriveHarmonica::initHoming
bool initHoming()
Definition: CanDriveHarmonica.cpp:492
CanDriveHarmonica::ParamType::iDivForRequestStatus
int iDivForRequestStatus
Definition: CanDriveHarmonica.h:43
CanDriveHarmonica::receivedSDOTransferAbort
void receivedSDOTransferAbort(unsigned int iErrorCode)
Definition: CanDriveHarmonica.cpp:957
CanDriveHarmonica::m_VelCalcTime
TimeStamp m_VelCalcTime
Definition: CanDriveHarmonica.h:372
CanDriveHarmonica::getTimeToLastMsg
double getTimeToLastMsg()
Definition: CanDriveHarmonica.cpp:480
CanDriveHarmonica
Definition: CanDriveHarmonica.h:33
CanDriveHarmonica::ST_OPERATION_ENABLED
@ ST_OPERATION_ENABLED
Definition: CanDriveHarmonica.h:53
CanDriveHarmonica::execHoming
bool execHoming()
Definition: CanDriveHarmonica.cpp:544
CanDriveHarmonica::m_bLimSwRight
bool m_bLimSwRight
Definition: CanDriveHarmonica.h:382
CanDriveHarmonica::m_iNewMotorState
int m_iNewMotorState
Definition: CanDriveHarmonica.h:389
DriveParam
Definition: DriveParam.h:28
CanDriveHarmonica::setDriveParam
void setDriveParam(DriveParam driveParam)
Definition: CanDriveHarmonica.h:205
CanDriveHarmonica::m_StartTime
TimeStamp m_StartTime
Definition: CanDriveHarmonica.h:375
CanDriveHarmonica::m_bLimitSwitchEnabled
bool m_bLimitSwitchEnabled
Definition: CanDriveHarmonica.h:357
CanDriveHarmonica::ParamType
Definition: CanDriveHarmonica.h:40
CanDriveHarmonica::m_bWatchdogActive
bool m_bWatchdogActive
Definition: CanDriveHarmonica.h:403
segData
Definition: SDOSegmented.h:27
CanDriveHarmonica::isBitSet
bool isBitSet(int iVal, int iNrBit)
Definition: CanDriveHarmonica.h:417
CanDriveHarmonica::ParamCanOpenType::iRxPDO2
int iRxPDO2
Definition: CanDriveHarmonica.h:65
CanDriveHarmonica::setGearVelRadS
void setGearVelRadS(double dVelEncRadS)
Definition: CanDriveHarmonica.cpp:667
CanDriveHarmonica::disableBrake
bool disableBrake(bool bDisabled)
Definition: CanDriveHarmonica.cpp:474
CanDriveHarmonica::ParamCanOpenType::iRxSDO
int iRxSDO
Definition: CanDriveHarmonica.h:67
CanDriveHarmonica::m_CanMsgLast
CanMsg m_CanMsgLast
Definition: CanDriveHarmonica.h:362
CanDriveHarmonica::finishedSDOSegmentedTransfer
void finishedSDOSegmentedTransfer()
Definition: CanDriveHarmonica.cpp:1117
CanDriveHarmonica::getGearPosVelRadS
void getGearPosVelRadS(double *pdAngleGearRad, double *pdVelGearRadS)
Definition: CanDriveHarmonica.cpp:730
CanDriveHarmonica::requestStatus
void requestStatus()
Definition: CanDriveHarmonica.cpp:777
CanDriveHarmonica::ParamType::iNumRetryOfSend
int iNumRetryOfSend
Definition: CanDriveHarmonica.h:42
CanDriveHarmonica::sendSDODownload
void sendSDODownload(int iObjIndex, int iObjSub, int iData)
Definition: CanDriveHarmonica.cpp:987
CanDriveHarmonica::IntprtSetFloat
void IntprtSetFloat(int iDataLen, char cCmdChar1, char cCmdChar2, int iIndex, float fData)
Definition: CanDriveHarmonica.cpp:905
CanDriveHarmonica::m_dAngleGearRadMem
double m_dAngleGearRadMem
Definition: CanDriveHarmonica.h:377
CanDriveHarmonica::estimVel
double estimVel(double dPos)
Definition: CanDriveHarmonica.cpp:1132
CanDriveHarmonica::ST_MOTOR_FAILURE
@ ST_MOTOR_FAILURE
Definition: CanDriveHarmonica.h:55
TimeStamp.h
CanDriveHarmonica::getGearDeltaPosVelRadS
void getGearDeltaPosVelRadS(double *pdDeltaAngleGearRad, double *pdVelGearRadS)
Definition: CanDriveHarmonica.cpp:737
CanDriveHarmonica::m_dOldPos
double m_dOldPos
Definition: CanDriveHarmonica.h:384
CanDriveHarmonica::ElmoRec
ElmoRecorder * ElmoRec
Definition: CanDriveHarmonica.h:364
CanDriveHarmonica::isError
bool isError()
Definition: CanDriveHarmonica.cpp:791
CanDriveHarmonica::m_bLimSwLeft
bool m_bLimSwLeft
Definition: CanDriveHarmonica.h:381
CanDriveHarmonica::m_SendTime
TimeStamp m_SendTime
Definition: CanDriveHarmonica.h:374
CanDriveHarmonica::m_Param
ParamType m_Param
Definition: CanDriveHarmonica.h:358
TimeStamp
CanItf
CanMsg
CanDriveHarmonica::endHoming
bool endHoming()
CanDriveHarmonica::evalMotorFailure
void evalMotorFailure(int iFailure)
Definition: CanDriveHarmonica.cpp:1251
CanDriveHarmonica::CanDriveHarmonica
CanDriveHarmonica()
Definition: CanDriveHarmonica.cpp:23
CanDriveHarmonica::m_dPosGearMeasRad
double m_dPosGearMeasRad
Definition: CanDriveHarmonica.h:379
CanDriveHarmonica::setCanOpenParam
void setCanOpenParam(int iTxPDO1, int iTxPDO2, int iRxPDO2, int iTxSDO, int iRxSDO)
Definition: CanDriveHarmonica.cpp:64
CanDriveHarmonica::m_pCanCtrl
CanItf * m_pCanCtrl
Definition: CanDriveHarmonica.h:361
CanDriveHarmonica::setRecorder
int setRecorder(int iFlag, int iParam=0, std::string sParam="/home/MyLog_")
Definition: CanDriveHarmonica.cpp:1353
CanDriveHarmonica::m_ParamCanOpen
ParamCanOpenType m_ParamCanOpen
Definition: CanDriveHarmonica.h:355
CanDriveHarmonica::m_iTypeMotion
int m_iTypeMotion
Definition: CanDriveHarmonica.h:366
CanDriveHarmonica::ParamCanOpenType
Definition: CanDriveHarmonica.h:61
CanDriveHarmonica::getStatus
void getStatus(int *piStatus, int *piTempCel)
Definition: CanDriveHarmonica.h:233
CanDriveHarmonica::evalReceivedMsg
bool evalReceivedMsg()
Definition: CanDriveHarmonica.h:166
CanDriveHarmonica::sendSDOUploadSegmentConfirmation
void sendSDOUploadSegmentConfirmation(bool toggleBit)
Definition: CanDriveHarmonica.cpp:1092
CanDriveHarmonica::m_iDistSteerAxisToDriveWheelMM
int m_iDistSteerAxisToDriveWheelMM
Definition: CanDriveHarmonica.h:415
CanDriveItf.h
CanDriveHarmonica::IntprtSetInt
void IntprtSetInt(int iDataLen, char cCmdChar1, char cCmdChar2, int iIndex, int iData)
Definition: CanDriveHarmonica.cpp:883
CanDriveItf
Definition: CanDriveItf.h:31
CanDriveHarmonica::receivedSDOSegmentedInitiation
int receivedSDOSegmentedInitiation(CanMsg &msg)
Definition: CanDriveHarmonica.cpp:1031
CanDriveHarmonica::m_iTorqueCtrl
int m_iTorqueCtrl
Definition: CanDriveHarmonica.h:368
CanDriveHarmonica::m_iCountRequestDiv
int m_iCountRequestDiv
Definition: CanDriveHarmonica.h:391
CanDriveHarmonica::setGearPosVelRadS
void setGearPosVelRadS(double dPosRad, double dVelRadS)
Definition: CanDriveHarmonica.cpp:616
CanDriveHarmonica::ST_OPERATION_DISABLED
@ ST_OPERATION_DISABLED
Definition: CanDriveHarmonica.h:54
SDOSegmented.h
CanDriveHarmonica::StateHarmonica
StateHarmonica
Definition: CanDriveHarmonica.h:50
CanDriveHarmonica::m_iPartnerDriveRatio
int m_iPartnerDriveRatio
Definition: CanDriveHarmonica.h:414
ElmoRecorder
Definition: ElmoRecorder.h:33
CanDriveHarmonica::getStatusLimitSwitch
bool getStatusLimitSwitch()
Definition: CanDriveHarmonica.cpp:487
CanDriveHarmonica::getGearPosRad
void getGearPosRad(double *pdPosGearRad)
Definition: CanDriveHarmonica.cpp:724
CanDriveHarmonica::receivedSDODataSegment
int receivedSDODataSegment(CanMsg &msg)
Definition: CanDriveHarmonica.cpp:1053
CanDriveHarmonica::sendSDOUpload
void sendSDOUpload(int iObjIndex, int iObjSub)
Definition: CanDriveHarmonica.cpp:963
CanDriveHarmonica::sendSDOAbort
void sendSDOAbort(int iObjIndex, int iObjSubIndex, unsigned int iErrorCode)
Definition: CanDriveHarmonica.cpp:933
CanDriveHarmonica::ParamCanOpenType::iTxPDO2
int iTxPDO2
Definition: CanDriveHarmonica.h:64
CanDriveHarmonica::init
bool init()
Definition: CanDriveHarmonica.cpp:251
CanDriveHarmonica::setEMStop
bool setEMStop()
Definition: CanDriveHarmonica.h:274
CanDriveHarmonica::ParamType::dCanTimeout
double dCanTimeout
Definition: CanDriveHarmonica.h:44
CanDriveHarmonica::ParamCanOpenType::iTxSDO
int iTxSDO
Definition: CanDriveHarmonica.h:66
CanDriveHarmonica::shutdown
bool shutdown()
Definition: CanDriveHarmonica.cpp:411
CanDriveHarmonica::m_iMotorState
int m_iMotorState
Definition: CanDriveHarmonica.h:388
CanDriveHarmonica::m_CurrentTime
TimeStamp m_CurrentTime
Definition: CanDriveHarmonica.h:370
CanDriveHarmonica::m_WatchdogTime
TimeStamp m_WatchdogTime
Definition: CanDriveHarmonica.h:371
CanDriveHarmonica::ST_PRE_INITIALIZED
@ ST_PRE_INITIALIZED
Definition: CanDriveHarmonica.h:52
CanDriveHarmonica::isInitialized
bool isInitialized()
Definition: CanDriveHarmonica.h:87
CanDriveHarmonica::m_bCurrentLimitOn
bool m_bCurrentLimitOn
Definition: CanDriveHarmonica.h:393
CanDriveHarmonica::m_DriveParam
DriveParam m_DriveParam
Definition: CanDriveHarmonica.h:356
CanDriveHarmonica::setMotorTorque
void setMotorTorque(double dTorqueNm)
Definition: CanDriveHarmonica.cpp:1288
CanDriveHarmonica::setCanItf
void setCanItf(CanItf *pCanItf)
Definition: CanDriveHarmonica.h:74
CanDriveHarmonica::stop
bool stop()
Definition: CanDriveHarmonica.cpp:329
CanDriveHarmonica::requestMotorTorque
void requestMotorTorque()
Definition: CanDriveHarmonica.cpp:783
CanDriveHarmonica::startWatchdog
bool startWatchdog(bool bStarted)
Definition: CanDriveHarmonica.cpp:421
CanDriveHarmonica::m_dMotorCurr
double m_dMotorCurr
Definition: CanDriveHarmonica.h:401
CanDriveHarmonica::m_bIsInitialized
bool m_bIsInitialized
Definition: CanDriveHarmonica.h:399
CanDriveHarmonica::m_iStatusCtrl
int m_iStatusCtrl
Definition: CanDriveHarmonica.h:367
CanDriveHarmonica::resetEMStop
bool resetEMStop()
Definition: CanDriveHarmonica.h:279
CanDriveHarmonica::m_FailureStartTime
TimeStamp m_FailureStartTime
Definition: CanDriveHarmonica.h:373
CanDriveHarmonica::evalStatusRegister
bool evalStatusRegister(int iStatus)
Definition: CanDriveHarmonica.cpp:1149
CanDriveHarmonica::evalSDO
void evalSDO(CanMsg &CMsg, int *pIndex, int *pSubindex)
Definition: CanDriveHarmonica.cpp:1015
CanDriveHarmonica::setTypeMotion
bool setTypeMotion(int iType)
Definition: CanDriveHarmonica.cpp:815
CanDriveHarmonica::start
bool start()
Definition: CanDriveHarmonica.cpp:338
CanDriveHarmonica::getData
void getData(double *pdPosGearRad, double *pdVelGearRadS, int *piTorqueCtrl, int *piStatusCtrl)
Definition: CanDriveHarmonica.cpp:745
CanDriveHarmonica::seg_Data
segData seg_Data
Definition: CanDriveHarmonica.h:405
CanDriveHarmonica::sendHeartbeat
void sendHeartbeat()
Definition: CanDriveHarmonica.cpp:767
CanDriveHarmonica::reset
bool reset()
Definition: CanDriveHarmonica.cpp:393
CanDriveHarmonica::m_dVelGearMeasRadS
double m_dVelGearMeasRadS
Definition: CanDriveHarmonica.h:378
ElmoRecorder.h
CanDriveHarmonica::getSDODataInt32
int getSDODataInt32(CanMsg &CMsg)
Definition: CanDriveHarmonica.cpp:1022


cob_canopen_motor
Author(s): Christian Connette
autogenerated on Wed Nov 8 2023 03:47:52