[ EtherCAT Master Board S/W ] 토크 제어 관련 문의
2023-02-01 11:56:13
본문
안녕하세요.
토크 관련 몇 가지 문의 드립니다.
사용 환경.
Windows-10 x64
EtherCAT Master L550
ComiEcatSdk.dll : Version 2.4.0 (x86)
Servo : PANSONIC A6BF MBDLT25BF
1. ecmSxSt_GetCurTorque() 함수로 Torque 값을 읽어 오지 못합니다.
읽어오지 못하는 이유와 이 함수를 사용하기 위해서 추가적인 설정이 필요한 것인지 궁금합니다.
2. ecmSxSt_GetInPDOPtr() 함수를 사용하여 PDO 값을 읽을 경우.
TEcmInPDO_AxisType3 구조체에 해당하는 값으로 읽으려면 어떻게 해야 하나요?
현재 이 함수로 읽어서 TEcmInPDO_AxisType3 구조체에 넣으면 CmdVel 까지는 읽혀지나
FeeVel 부터는 읽혀지지 않습니다.
FeeVel과 Torque 값을 읽고 싶은데 어떻게 해야 하나요?
PDOTypeID : 3
TouchProbSts1 : 0
TouchProbSts2 : 0
SdInputSts : 0
Dir : 1
Mst : 2
Flags : 111011000000301
DI : 0x190000
CmdCnt : 26944208
FeedCnt : 26552426
CmdVel : 16777216
FeedVel : 0 <------------------------ 여기서 부터 읽혀 지지 않음.
Torque : 0
TouchProbPos1 : -1212358
TouchProbPos1_n : -1212358
TouchProbPos2 : -1212358
TouchProbPos2_n : -1212358
3. Auto Torque 기능을 사용하기 위해 메뉴얼 및 Sample code를 사용하여 진행했으나
동작되지 않습니다. 해당 기능을 사용하기 위해 추가적인 설정이 필요한가요?
코드를 아래와 같이 작성 후 가동하면 해당 위치까지 이동 후 토크가 발생하지 않고
그대로 있습니다.
// Auto Torque를 Single Mode로 설정.
ecmSxCfg_AutoTorq_SetValMode(nNetID, lAxis, ecmATRQ_VAL_SINGLE, 1, &ErrCode);
// Auto Torque를 진행할 Torque 값을 설정.
t_i32 iAutoTorqueValue = 20 * 10; // 20%
ecmSxCfg_AutoTorq_SetValue(nNetID, lAxis, iAutoTorqueValue, &ErrCode)
//AutoTorq모드를 종료조건을 설정합니다. (사용하지 않음)
ecmSxCfg_AutoTorq_SetLimit(nNetID, lAxis, 0, 0, 0, 0, &ErrCode);
//AutoTorq모드를 활성화합니다.
ecmSxCfg_AutoTorq_SetEnable(nNetID, lAxis, true, true, &ErrCode);
// PTP 이동.
ecmSxCfg_SetSpeedPatt(nNetID, lAxis, ecmSMODE_TRAPE, 0, 0, 10, 50, 50, &ErrCode); //속도 10 가감속 50
ecmSxMot_MoveToStart(nNetID, lAxis, 20, &ErrCode); // 20mm 까지 이동 함.
4. ComiIDE 에서 각 Slave 축의 ProcessData에서 SyncManager 3번 Inputs에서
PDO Assignment 값을 1번 0x1A00 값이 아닌 4번 0x1A03 선택하여 사용하고 싶을 경우
ComiIDE에서만 설정하면 바로 적용이 되는 것인지요?
아니면 각 Servo Drive에서 메뉴얼로 TxPDO Mapping 을 변경해 줘야 하는지요?
이상입니다.
토크 관련 몇 가지 문의 드립니다.
사용 환경.
Windows-10 x64
EtherCAT Master L550
ComiEcatSdk.dll : Version 2.4.0 (x86)
Servo : PANSONIC A6BF MBDLT25BF
1. ecmSxSt_GetCurTorque() 함수로 Torque 값을 읽어 오지 못합니다.
읽어오지 못하는 이유와 이 함수를 사용하기 위해서 추가적인 설정이 필요한 것인지 궁금합니다.
2. ecmSxSt_GetInPDOPtr() 함수를 사용하여 PDO 값을 읽을 경우.
TEcmInPDO_AxisType3 구조체에 해당하는 값으로 읽으려면 어떻게 해야 하나요?
현재 이 함수로 읽어서 TEcmInPDO_AxisType3 구조체에 넣으면 CmdVel 까지는 읽혀지나
FeeVel 부터는 읽혀지지 않습니다.
FeeVel과 Torque 값을 읽고 싶은데 어떻게 해야 하나요?
PDOTypeID : 3
TouchProbSts1 : 0
TouchProbSts2 : 0
SdInputSts : 0
Dir : 1
Mst : 2
Flags : 111011000000301
DI : 0x190000
CmdCnt : 26944208
FeedCnt : 26552426
CmdVel : 16777216
FeedVel : 0 <------------------------ 여기서 부터 읽혀 지지 않음.
Torque : 0
TouchProbPos1 : -1212358
TouchProbPos1_n : -1212358
TouchProbPos2 : -1212358
TouchProbPos2_n : -1212358
3. Auto Torque 기능을 사용하기 위해 메뉴얼 및 Sample code를 사용하여 진행했으나
동작되지 않습니다. 해당 기능을 사용하기 위해 추가적인 설정이 필요한가요?
코드를 아래와 같이 작성 후 가동하면 해당 위치까지 이동 후 토크가 발생하지 않고
그대로 있습니다.
// Auto Torque를 Single Mode로 설정.
ecmSxCfg_AutoTorq_SetValMode(nNetID, lAxis, ecmATRQ_VAL_SINGLE, 1, &ErrCode);
// Auto Torque를 진행할 Torque 값을 설정.
t_i32 iAutoTorqueValue = 20 * 10; // 20%
ecmSxCfg_AutoTorq_SetValue(nNetID, lAxis, iAutoTorqueValue, &ErrCode)
//AutoTorq모드를 종료조건을 설정합니다. (사용하지 않음)
ecmSxCfg_AutoTorq_SetLimit(nNetID, lAxis, 0, 0, 0, 0, &ErrCode);
//AutoTorq모드를 활성화합니다.
ecmSxCfg_AutoTorq_SetEnable(nNetID, lAxis, true, true, &ErrCode);
// PTP 이동.
ecmSxCfg_SetSpeedPatt(nNetID, lAxis, ecmSMODE_TRAPE, 0, 0, 10, 50, 50, &ErrCode); //속도 10 가감속 50
ecmSxMot_MoveToStart(nNetID, lAxis, 20, &ErrCode); // 20mm 까지 이동 함.
4. ComiIDE 에서 각 Slave 축의 ProcessData에서 SyncManager 3번 Inputs에서
PDO Assignment 값을 1번 0x1A00 값이 아닌 4번 0x1A03 선택하여 사용하고 싶을 경우
ComiIDE에서만 설정하면 바로 적용이 되는 것인지요?
아니면 각 Servo Drive에서 메뉴얼로 TxPDO Mapping 을 변경해 줘야 하는지요?
이상입니다.
답변: 안녕하세요. 커미조아 고객지원팀입니다.
2023-02-14 13:39:04
이메일로 해당 문의 답변 보내드렸습니다.
감사합니다.
감사합니다.