차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
faq:motion:common:13_unit_speed_unit_distance [2021/06/30 20:58] kkm |
faq:motion:common:13_unit_speed_unit_distance [2024/07/08 18:23] (현재) |
||
---|---|---|---|
줄 11: | 줄 11: | ||
<callout type=" | <callout type=" | ||
===커미조아 보드의 거리, | ===커미조아 보드의 거리, | ||
+ | \\ | ||
* 커미조아 모션 컨트롤러의 이송 거리 및 이송 속도의 단위는 Pulse, Pulse/sec 입니다 | * 커미조아 모션 컨트롤러의 이송 거리 및 이송 속도의 단위는 Pulse, Pulse/sec 입니다 | ||
</ | </ | ||
줄 16: | 줄 17: | ||
<callout type=" | <callout type=" | ||
===단위속도/ | ===단위속도/ | ||
+ | \\ | ||
* 커미조아 모션보드를 사용하며 Pulse단위가 아닌 다른 단위((ex - RPM, 미터, 리드비 등))로 사용하기 위해선 출력 펄스에 대한 조절이 필요합니다. | * 커미조아 모션보드를 사용하며 Pulse단위가 아닌 다른 단위((ex - RPM, 미터, 리드비 등))로 사용하기 위해선 출력 펄스에 대한 조절이 필요합니다. | ||
+ | |||
* 이때, 보통 두 가지 방법을 통해 출력 펄스를 조절합니다 | * 이때, 보통 두 가지 방법을 통해 출력 펄스를 조절합니다 | ||
- 속도 및 이송 명령의 거리 설정시 펄스 출력을 변환하도록 변환 함수를 직접 만들어 커미조아 함수를 호출할 때 마다 사용 | - 속도 및 이송 명령의 거리 설정시 펄스 출력을 변환하도록 변환 함수를 직접 만들어 커미조아 함수를 호출할 때 마다 사용 | ||
줄 24: | 줄 27: | ||
<callout type=" | <callout type=" | ||
===단위 거리/ | ===단위 거리/ | ||
+ | \\ | ||
* A 서보 사용시 한번 모터가 돌아가기 위해 10000 Pulse가 필요하다고 가정합니다.((보통 이 값은 서보 업체에서 제공합니다)) | * A 서보 사용시 한번 모터가 돌아가기 위해 10000 Pulse가 필요하다고 가정합니다.((보통 이 값은 서보 업체에서 제공합니다)) | ||
+ | |||
* 거리 단위는 회전수, 속도 단위는 초당 회전수로 설정하고 싶다고 가정합니다. | * 거리 단위는 회전수, 속도 단위는 초당 회전수로 설정하고 싶다고 가정합니다. | ||
+ | |||
* CfgSetUnitDist() ((사용 제품군에 따라 함수명이 조금씩 다를 수 있으니 정확한 함수명에 대해서는 해당 보드의 SW 매뉴얼을 참고해주세요)) 함수의 Dist 파라미터 값을 10000으로 입력하고 CfgSetUnitSpeed() 함수의 Speed값을 10000으로 입력하면 보드의 단위 속도/ | * CfgSetUnitDist() ((사용 제품군에 따라 함수명이 조금씩 다를 수 있으니 정확한 함수명에 대해서는 해당 보드의 SW 매뉴얼을 참고해주세요)) 함수의 Dist 파라미터 값을 10000으로 입력하고 CfgSetUnitSpeed() 함수의 Speed값을 10000으로 입력하면 보드의 단위 속도/ | ||
* 단위 변경 이후에 SxMove()의 거리 파라미터에 3을 입력하게 된다면 실제 입력되는 펄스 수는 30000펄스((파라미터 값 3 * 단위거리 설정 값(한바퀴 돌아가기 위해 필요한 펄스수) 10000))이고, | * 단위 변경 이후에 SxMove()의 거리 파라미터에 3을 입력하게 된다면 실제 입력되는 펄스 수는 30000펄스((파라미터 값 3 * 단위거리 설정 값(한바퀴 돌아가기 위해 필요한 펄스수) 10000))이고, | ||
</ | </ | ||
+ | < | ||
+ | ===RPM 설정 예시=== | ||
+ | \\ | ||
+ | * PPR((모터 1 회전당 펄스 수)) / 60 | ||
+ | * 360,000 펄스에 1회전 하는 모터의 경우, UnitDistance, | ||
+ | \\ | ||
+ | <sxh csharp> | ||
+ | double unit = 6,000; // 360000 / 60 | ||
+ | ec.ecmSxCfg_SetUnitDist(netID, | ||
+ | ec.ecmSxCfg_SetUnitSpeed(netID, | ||
+ | </ | ||
+ | </ | ||
+ | |||
<callout type=" | <callout type=" | ||
===주의=== | ===주의=== | ||
+ | \\ | ||
* Unit distance 값이 무한소수((나누어 떨어지지 않음))이면 소수점 오차가 누적될 수 있습니다. 따라서 이런 경우 Unit distance를 1로 하고 사용자가 논리적 거리단위를 처리하는 것이 바람직합니다. | * Unit distance 값이 무한소수((나누어 떨어지지 않음))이면 소수점 오차가 누적될 수 있습니다. 따라서 이런 경우 Unit distance를 1로 하고 사용자가 논리적 거리단위를 처리하는 것이 바람직합니다. | ||
</ | </ |