아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
아하

학문

기계공학

보통은당돌한소
보통은당돌한소

4bar equation을 풀 수 있는 vba 코드를 어떻게 만들어야 할까요?

기구학에서 배우는 4bar equation을 굴삭기 링키지에 적용해서 링키지 동작을 vba로 계산을 구현 하고 싶어요. 어떻게 만드는지 샘플이 있을까요? 해가 두가지가 나오는데 알아서 걸러서 맞는 답을 구할수 있게 하고 싶어요

55글자 더 채워주세요.
1개의 답변이 있어요!
  • 안녕하세요. 서종현 전문가입니다.

    4바 링크는 기하학적 제약으로 인해 보통 두가지 해 (Solution)가 발생합니다. 이 해들은 링크가 가능한 두가지 구성(예: 같은 연결점이지만 서로 다른 방향으로 꺾인 형태)을 나타냅니다. 굴삭기처럼 특정 동작을 하는 기계에서는 이중 하나만 물리적으로 유효합니다.

    VBA 구현의 핵심 :

    1. 좌표정의 : 각 조인트의 초기 좌표와 링크 길이를 정의합니다.

    2. 수학적 모델링 : 크랭크-로커-또는 더블-크랭크 메커니즘 등 4바 링크의 종류에 따라 기구학 방정식을 세웁니다. 코사인 법칙과 삼각 함수를 주로 활용합니다.

    3. VBA함수 사용 : Sin , Cos , Atan2함수가 필수적입니다. 특히 Atan2(y,x)는 사분면을 고려하여 정확한 각도를 반환하므로 유용합니다.

    4. 해 필터링 : 두가지 해가 나오면 if 또는 select case 문을 사용하여 올바른 해를 선택해야 합니다. 예를 들어, 굴삭기 링크가 특정 범위(예:0~180도)를 벗어날수없거나, 특정 조인트가 다른 조인트보다 항상 위에 있어야 한다는 등의 물리적 조건을 사용합니다.

    샘플 VBA 코드구조(개념) :

    Function CalculateLingkageAng(L1 as Double, L2 As double, L3 as Double , L4 As Double inputAngle As Double) As Double

    · L1 : 크랭크 , L2 : 커플러 , L3 : 로커 , L4 : 지면(프레임) 길이

    · inputAngle : 입력 크랭크 각도 (라디안)

    Dim C As Double , D As Double , E As Double

    Dim theta3_cand1 As Double, theta3_cand2 As Double ' 두가지 해

    · // 굴삭기 링키지에 맞는 기구학 방정식 유도(코사인 법칙 등)

    · // (복잡하므로 구체적인 유도식은 생략하지만, 2차 방정식 형태가 됨)

    · C = ... ' 방정식의 계수

    · D = ... ' 방정식의 계수

    · E = ... ' 방정식의 계수

    · // 2차 방정식의 해 (예:theta3_cand1, theta3_cand2)

    · theta3_cand1 = 2 Atan2((-D + Sqr(D*D- 4*C*E)) , (2*C))

    · theta3_cand2 = 2 Atan2((-D - Sqr(D*D- 4*C*E)) , (2*C))

    · // ***** 해 필터링 로직 *****

    · // 굴삭기 링크의 물리적 구조, 초기 조립 상태, 또는 동작 가능한 각도 범위를 고려합니다.

    · If(조건`1) Then ' 예 : 계산된 각도가 물리적으로 가능한 범위 내에 있는지,

    · CalculateLinkageAngle = theta3_cand1 '특정 '꺾임 '방향에 맞는지

    · Else

    · CalculateLinkageAngle = theta3_cand2

    · End If

    End Function

    이 코드는 개념적인 구조이며, 실제 굴삭기 링키지에 적용하려면 해당 기구학 방정식을 정확히 유도하여 C,D,E 및 필터링 조건을 채워야 합니다. 물리적 모델과 수학적 모델의 정확한 일치가 중요합니다.