[개발 일지] Gantry API

타키탸키·2022년 6월 28일
0

개발 일지

목록 보기
7/11
post-thumbnail
  • 05.11
    • gantry_sync_220511 브랜치 생성
  • 05.13
    • 동기 구동용 스레드 함수 생성
  • 05.31
    • 기존 스레드 로직 정리
      • 주석 추가
  • 06.13
    • 동기 구동 활성화 함수 및 확인 함수 뼈대 잡기
      • EnableGantrySync
      • IsGantrySync
    • 동기 구동 설정 함수 뼈대 잡기
      • SetGantrySyncHoming
    • 동기 구동 스레드 내부 로직 갱신
      • master 축과 slave 축 중 활성화 된 축에 따라 다르게 동작하도록 조건문 설정
  • 06.14
    • 기존 코드 리팩토링
      • 스레드 함수 내에서 멤버변수 등을 사용하기 위해서는 객체에 대한 포인터로 접근해야 함
      • MFC 방식의 함수 포인터 제거
      • 람다 캡쳐([=]) 활용
      • 람다는 호출되는 스코프 범위에서 존재하는 변수들을 캡쳐할 수 있다
      • [=]: 스코프 내의 모든 변수 값 복사, 멤버 함수에서 람다 호출 시, this 포인터 함께 전달
  • 06.15
    • 기존 코드 리팩토링
      • 재사용을 위한 함수화 진행
      • 반복되는 코드를 부분으로 나누어 함수 생성
      • InitOrgPreConfig
      • ResetOrgPreConfig
      • MoveOrgOffset
  • 06.27
    • 사용자 api 임시 적용
      • 기존 코드 로직 정리
    • 내부 api 임시 적용
      • 사용자 인자를 내부 자료 구조에 저장하는 함수 정리
      • ex:) SetAxisGantryArray, GetAxisGantryArray
    • homing 설정 함수 및 확인 함수 생성
      • SetGantrySyncHomingConfig
      • GetGantrySyncHomingConfig
    • 헤더 파일 갱신
    • Gantry 전용 자료 구조(struct) 생성
    • SetGantrySyncHoming 함수 기존 코드와 유사한 형태로 갱신
  • 06.28
    • 기능에 맞춰 새로운 함수의 매개변수 재정의
    • Gantry 활성화 함수를 제외한 나머지 새로운 함수들을 기존 코드와 유사한 형태로 갱신
      • Gantry 활성화 함수는 제어기와 통신하므로 따로 진행
  • 07.04
    • 동기 구동 활성화 함수를 위한 브랜치 생성
      • 업체 요청에 따라 동기 구동 활성화 함수 우선 적용
    • 동기 구동 활성화 함수 추가
      • EnableGantrySync
      • IsGantrySync
    • 토큰 및 common_id 추가
    • 헤더, api, 마셜링 코드(CS) 추가
  • 07.05
    • 기존 homing 함수를 이용해서 homing 인자 설정하기로 결정
      • SetGantrySyncHomingConfig 함수 제거
      • SetGantrySyncHoming 함수에서 gantry 관련 설정할 것
    • rxBuf 값 변경
      • token 제외
      • 인덱스 하나씩 당김
    • GantrySync error code 추가
    • 동기 구동 활성화 테스트 완료
      • 정상 구동 확인
  • 07.08
    • SetGantrySyncHoming, GetGantrySyncHoming 검증 완료
      • 사용자 API에 등록
    • GantrySync Test Program 제작
      • Enable / Disable
        • EnableGantrySync 파라미터에 따라 동기 구동 활성/비활성
        • timer를 통해 실시간으로 활성/비활성 여부 확인 가능
      • Set Homing Mode
        • SetGantrySyncHoming 함수와 연동
      • Get Homing Config
        • GetGantrySyncHoming 함수와 연동
        • master 값은 사용자가 입력
        • slave와 mode 값을 불러온다
      • Move
        • 동기가 잘 되었는지 확인할 수 있는 기능
        • master 축과 slave 축의 동기 이송 확인 가능
      • Reset
        • Position 0으로 이송하기
        • 동기가 걸려있으면 master 설정만으로 slave도 함께 이동한다
      • Check Pos
        • GetCommandPosition 함수와 연동
        • 현재 위치를 확인할 수 있다
      • Start Homing
        • StartHomingMethod 함수와 연동
        • 동기가 걸려 있으면 GantrySyncHoming을 진행한다
        • 동기가 걸려 있지 않으면 단축 homing(mode 0)을 진행한다
  • 07.12
    • ThrGan 함수 추가
      • 기존 함수들을 최대한 재사용하고 GantrySync 로직에 맞는 동작 추가
      • slave 축에 대한 step을 thread 내부에서 정의
    • 함수화 완료
      • 기존 ThrOrg 함수의 코드를 재활용
      • 기존 homing 로직에서 벗어나 GantrySync 로직에 맞게 역할을 분리하여 함수화 진행
        • InitOrgPreConfig
        • ResetOrgPreConfig
        • RunOrgStep
        • MoveOrgOffset
    • SetGantrySyncHoming 함수에서 offset, setTime 파라미터 삭제
      • API에서 구한 offset을 내부적으로 처리함으로써 사용자가 offset을 알 필요 없다고 판단
      • GantrySync 관련 struct에 offset을 저장했다가 내부적으로 활용
    • mode에 따른 분기
      • mode가 0일 때는 StartOrgThread 함수에서 ThrOrg 분기를 탄다
      • 나머지 값일 때는 ThrGan 분기를 탄다
      • 이로써 mode에 따라 단축과 다축 homing을 나눌 수 있다
  • 07.13
    • offset 파라미터 부활
      • 회의 결과, offset은 사용자가 직접 넣어야 하는 값으로 판단
      • 따라서, SetGantrySyncHoming 함수의 인자로 다시 채택
      • setTime(homing에 필요)의 경우, 상대 이송 함수를 사용함에 따라 필요 없게 되어 제거
    • SetGantrySyncHoming 함수 분리
      • mode라는 파라미터가 동작 원리를 헷갈리게 한다는 의견 수렴
      • mode 1과 2은 마지막 보정 이송 절차의 유무 외에는 동일한 sequence를 가짐
      • 따라서, 두 mode를 함수로 분리하기로 결정
      • 다만, mode 0(단축)과 1(다축)은 구분해야 하므로 mode 파라미터는 계속 유지
      • mode 2를 설정하는 CheckGantrySyncHomeSensOffset 함수
      • 위 함수로 구한 home sensor offset을 가져오는 GetGantrySyncHomeSensOffset 함수
    • 해야할 일
      • home 센서 달린 기계에서 테스트
        • 로그 파일 생성 후, 위치 기록하기
      • master 기준으로 동기 구동 중, slave에 servo off 걸릴 시 대처 방법 찾기
      • SetCommandPosition (+ zeroShift) 함수 동기 안 되는 문제
  • 07.14
    • mode를 함수로 분리하자는 의견이 비합리적이라는 판단에 따라 다음과 같은 변경 사항 적용
    • 파라미터 변경
      • SetGantrySyncHomingGetGantrySyncHoming
        • mode가 아닌 dualUsecompensationUse
        • dualUse: 단축(기존 mode 0) / 두 축(기존 mode 1)
        • compensationUse: 보정 이송 유무(유: 기존 mode 2, 무: 기존 mode 1)
    • CheckGantrySyncHomeSensOffset 함수 제거
    • GetGantrySyncHomeSensOffset은 이름만 변경하고 유지
      • mode에 상관 없이 사용자가 homeOffset을 알 수 있도록 하기 위해 필요한 함수
  • 07.15
    • log 파일 작업 중
      • GantrySync 동작 확인을 위한 log 파일
      • SetUserLogSection의 인자에 따라 내부 동작 확인용 로그 기록
      • GantrySync Test Program에 관련 기능 추가
    • master homing 끝나고 slave homing 시작 시, 0으로 초기화하지 않는 문제 발견
      • 로그 유형을 GantrySync에서 Origin으로 바꾸면서 생기는 문제??
      • 기존 로그 파일 제거 후 구동 시, 정상 동작 >> 로그 파일 문제
  • 07.18
    • GantrySync 구동 시, Z상 적용 안 되는 문제 해결
      • 함수화 진행하면서 파라미터 값을 고정해서 생긴 문제
      • Z상 사용 여부를 결정하는 useZ 파라미터를 따로 받도록 수정
    • master homing 끝나고 slave homing 시작 시, 0으로 초기화하지 않는 문제 해결
      • 로그 파일의 문제X
      • SetCommandPosition 사이에 Sleep 코드 추가
  • 07.19
    • 동기 비활성화 후, master 현재 위치 구하기로 변경
      • master 값이 동기 설정에 영향 받지 않도록 하기 위함
    • 다축 보정 이송 시, 위치값 오류 해결
      • 설정하지 않은 값으로 이송
      • 이송 전에 SetAbsRelMode 함수를 이용해서 절대/상대 모드를 선택해야 한다
      • 이송 시간만큼 sleep 시간 추가
    • slave 단축 이송 부분에 sleep 빼고 motion done 코드 추가
      • homing 설정에 따라 소요 시간이 다르므로 sleep 대신 motion done을 통해 정지 확인
  • 07.20
    • 매뉴얼 수정
      • 새 함수 추가
      • 함수 사용법 및 절차 수정
      • API 설명 수정
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글