{{ post.title }}
글 편집
글 편집 (이전 에디터)
{{ post.author.name }}
작성일
Version | {{ post.target_version }} | Product |
{{ product.name }}
|
---|---|---|---|
Tutorial/Manual | {{ post.manual_title }} | Attached File | {{ post.file.upload_filename }} |
특정 거리에서만 동작(모션)이 발생하는 모델링이 필요한 경우가 있습니다. 두 마커 사이의 거리가 100 이하일 때, Body가 아래로 떨어지는 동작을 모델링 하는 경우를 예시로 모델링 방법을 아래와 같이 설명합니다.
이와 같은 모델은 Expression의 IF() 함수를 이용하여 간단하게 구현할 수 있습니다.
본 설명은 아래 예제모델을 기준으로 설명되어 있으니, 예제모델을 다운받아 참고해 주시기 바랍니다.
▶ 예제모델 다운로드: Distance_Motion.rdyn
- 두 개의 CMotion으로 X방향 병진운동, Y방향 자유낙하 운동을 표현.
- Expression을 통해 두 박스 사이 거리가 100mm 일 때, 상단에 위치한 박스가 아래로 낙하하도록 하는 모델
먼저, 거리를 측정하는 Expression 을 생성합니다.
- [SubEntity 탭 > Expression 그룹 > Expression 아이콘]을 클릭하세요.
- DX(Body1.Marker1, Body2.Marker1, Body2.Marker1) 작성하세요.
- 예제모델 기준으로 작성된 함수입니다.
- 예제모델에서 ABS()함수가 사용된 것은 실수를 반환하기 위해서 입니다.
- DX() 함수는 하나의 Marker에 대한 x방향의 위치 혹은, 두 Marker 사이의 거리를 reference Marker의 x 방향에 대해 계산하는 함수입니다.
- Expression 함수에 대한 자세한 내용은 Expression Function Handbook 에서 확인할 수 있습니다.
다음으로, Variable Equation 생성합니다.
본 예제에서는, 최종적으로 IF() 함수에서 거리 측정 Expression을 활용하기 위하여 Variable Equation을 생성해 보도록 하겠습니다.
Variable Equation 은 하나의 Expression을 다른 Expression에서 사용하고자 할 때 활용할 수 있는 기능입니다.
- [SubEntity 탭 > Equation 그룹 > Variable Equation 아이콘]을 클릭합니다.
- Create 버튼을 클릭 후, 앞서 생성한 거리 측정 Expression을 선택하고 'OK'를 클릭합니다.
- Variable Equation VE1이 생성됩니다.
Expression에서 아래와 같이 IF함수를 작성합니다.
IF함수는 조건을 지정하고 만족 여부에 따라 지정된 함수 값을 반환하는 함수입니다. (자세한 내용: Expression Function Handbook)
IF(Varval(VE1):0,0,IF(Varval(VE1)-100:-200,-200,0))
- IF(f1:f2,f3,f4) 형식으로 사용
- Varval(VE1): 위에서 생성한 Variable Equation을 이용 (거리 측정 Expression)
- f1: 조건을 대입하는 계산식
- f2: f1이 IFT (If Tolerance)보다 작을 경우 반환되는 값(혹은 함수)
- f3: f1이 IFT와 같을때 반환되는 값(혹은 함수)
- f4: f1이 IFT보다 클 경우 반환되는 값(혹은 함수)
- *: IFT (If Tolerance)로, If문이 분기할 때, 수치적으로 정확히 0이 계산되기 어려우므로 약간의 범위를 주어 0의 조건에 대해 응답할 수 있도록 보정해주는 파라미터입니다. 관련 매뉴얼 바로가기)
마지막으로 Motion에 Expression을 정의해 줍니다.
Joint의 Motion에 위에서 생성한 IF()함수가 적용된 Expression을 적용해 주시면 됩니다. 예제 모델에서는 CMotion에 Y방항 Motion으로 정의하였습니다.
이제 해석을 수행하게 되면, 두 Body 간 거리가 100mm 일 때 아래로 떨어지는 움직임을 가지게 되는 것을 확인할 수 있습니다.
또한, IF() 함수 및 센서를 활용할 수 있는 관련 콘텐츠를 아래와 같이 안내해 드립니다. IF() 함수의 사용법 및 활용, 조건에 따른 운동을 가지는 모델링 방법을 익힐 수 있습니다.
- GoPowerUser 6탄 : Expression을 이용한 one-way clutch구현
- GoPowerUser 5탄 : Expression을 이용하여 공차를 반영한 Joint 모델링 (Joint Clearance)
- GoPowerUser 3탄 : RecurDyn Expression 활용 가이드 (IF & STEP)
- 어떤 조건을 만족한 시점으로부터 2초 후에 동작하는 모션은 어떻게 만들 수 있을까요?
- 이동하는 두 Geometry 사이의 거리를 측정하여 특정값이 되었을 때 Force를 적용하는 방법
- 임의의 운동을 하는 Body를 특정 조건 이후 자유 운동으로 변경하는 방법