Skip to main content

수업 2: 컨베이어 코딩

이전에는 컨베이어와 분배기에 대해 알아보았고, 이를 통해 산업 현장에서 자재를 효율적으로 운송하는 방법을 알아보았습니다. 또한 CTE Workcell의 컨베이어가 어떻게 작동하는지에 대해서도 알아보았습니다. 이제 디스크를 운반하기 위한 컨베이어 코딩을 시작할 준비가 되었습니다.  이 수업에서는 다음 내용을 배우게 됩니다.

  • VEXcode에서 개별 컨베이어 모터를 구성하는 방법.
  • 시간 기반 이동을 사용하여 디스크를 한 컨베이어에서 다른 컨베이어로 옮기는 VEXcode 프로젝트를 만드는 방법.

이 수업을 마치면 진입 컨베이어에서 시작하여 운송 컨베이어를 거쳐 출구 컨베이어까지 디스크를 운반하는 프로젝트를 만들게 됩니다.

출구 컨베이어 끝에 녹색 디스크가 있는 CTE 작업셀 베이스 빌드의 위에서 내려다본 모습.

컨베이어 코딩 준비

CTE 작업셀에서 컨베이어에 코드를 작성하기 전에 반드시 완료해야 할 몇 가지 중요한 작업이 있습니다. VEX코드에서 각 컨베이어 모터를 개별적으로 구성해야 합니다. 또한 제어된 정지를 시작하는 블록 스택을 수정하여 모든 컨베이어 모터가 포함되도록 해야 합니다.

VEXcode에서 개별 모터 구성

CTE 워크셀의 각 컨베이어는 별도의 모터로 제어됩니다. 따라서 프로젝트를 시작하기 전에 VEXcode의 구성에 각 모터를 추가해야 합니다. 또한, 각 모터의 이름이 올바른지 확인하고 재료를 성공적으로 운반하는 데 필요한 방향으로 회전하도록 설정되어 있는지 확인해야 합니다.

진입 컨베이어 모터 구성

Brain CTE 6축 Arm Base 템플릿 프로젝트를 엽니다.

참고:VEXcode EXP에서 예제를 여는 방법에 대한 알림은 이전 단원을 참조하세요.

뇌 CTE 6축 암 베이스 템플릿 프로젝트 아이콘.

프로젝트 이름을 Unit 4 Lesson 2로 바꾸고 장치에 저장하세요.

VEXcode EXP 도구 모음에서 프로젝트 이름 필드가 빨간색 상자로 표시되고 Unit 4 Lesson 2로 이름이 변경되어 클릭하면 변경할 수 있음을 나타냅니다.

장치 창을 엽니다.

코드 뷰어와 모니터 아이콘 사이에 빨간색 상자로 장치 버튼이 표시된 VEXcode EXP 도구 모음입니다.

장치 추가를 선택하세요.

장치 창이 열려 있고 장치 추가 버튼이 강조 표시되어 있습니다.

장치 목록에서 모터 선택합니다.

장치 창의 장치 옵션에서 모터 아이콘이 빨간색으로 표시되어 있습니다.

엔트리 컨베이어 모터가 연결된 포트와 일치하도록 Brain의 포트 1을 선택합니다.

참고:엔트리 컨베이어 모터가 Brain의 포트 1에 연결되어 있는지 확인하세요.

모터에 대한 포트 1이 강조 표시된 장치 창입니다.

이 이미지에 맞게 라벨을 편집하세요. 

  • 모터의 이름을 변경하여 Entry Conveyor 모터라는 것을 명확하게 식별해야 합니다. 이름의 숫자는 연결된 포트를 나타냅니다.
  • 모터의 방향도 인바운드 , 아웃바운드으로 이름을 바꿔야 합니다. 기본 라벨인 정방향역방향은 컨베이어의 움직임을 적절하게 설명하지 못하기 때문입니다.

인바운드 진입 컨베이어가 향해 향해 회전하고 있음을 의미합니다. 아웃바운드진입 컨베이어가 운송 컨베이어에서 에서 회전하고 있음을 의미합니다.

모터 구성 화면이 표시된 장치 화면이며, 모터 이름과 모터 방향 블록이 강조 표시되어 있습니다. 모터의 이름은 Entry Conveyor 1이고, 방향은 인바운드와 아웃바운드로 명명되었습니다.

선택 완료.

모터와 방향의 이름이 변경된 장치 화면과 빨간색 상자에 완료 버튼이 표시되어 있습니다.

출구 컨베이어 모터 구성

출구 컨베이어 모터는 입구 컨베이어 모터와 같은 방식으로 구성할 수 있습니다.

장치 창에서 장치 목록에서 모터 선택합니다.

장치 창의 장치 옵션에서 모터 아이콘이 빨간색으로 표시되어 있습니다.

출구 컨베이어 모터가 연결된 포트와 일치하도록 포트 4를 선택하세요.

참고:출구 컨베이어 모터가 Brain의 포트 4에 연결되어 있는지 확인하세요.

모터에 대해 포트 4가 강조 표시된 장치 창입니다.

레이블을 이미지의 레이블과 일치하도록 편집합니다.

  • 모터의 이름을 Exit Conveyor 모터로 명확하게 식별되도록 변경해야 합니다. 이름의 숫자는 연결된 포트를 나타냅니다.
  • 모터 방향도 이전에 진입 컨베이어에서 했던 것처럼인바운드,아웃바운드,으로 이름을 바꿔야 합니다.

인바운드출구 컨베이어가에서수송 컨베이어를 향해 회전하고 있음을 의미합니다. 아웃바운드출구 컨베이어가 운송 컨베이어에서에서 회전하고 있음을 의미합니다.

모터 구성 화면이 표시된 장치 화면이며, 모터 이름과 모터 방향 블록이 강조 표시되어 있습니다. 모터의 이름은 Exit Conveyor 4이고, 방향은 Inbound와 Outbound로 지정되어 있습니다.

선택 완료.

모터와 방향의 이름이 변경된 장치 화면과 빨간색 상자에 완료 버튼이 표시되어 있습니다.

운송 컨베이어 모터 구성

마지막으로 운송 컨베이어 모터를 구성해야 합니다. 또한, 컨베이어가 필요한 방향으로 움직이려면 모터의 방향을 반대로 바꿔야 합니다.

장치 창에서 장치 목록에서 모터 선택합니다.

장치 창의 장치 옵션에서 모터 아이콘이 빨간색으로 표시되어 있습니다.

운송 컨베이어 모터가 연결된 포트에 맞게 포트 2를 선택하세요.

참고:운송 컨베이어 모터가 Brain의 포트 2에 연결되어 있는지 확인하세요.

모터에 대한 포트 2가 강조 표시된 장치 창입니다.

모터 이름을 TransportConveyor2.1로 변경합니다

모터 구성 화면이 표시된 장치 화면이며, 모터 이름과 모터 방향 블록이 강조 표시되어 있습니다. 모터의 이름은 Transport Conveyor 2이고, 방향은 정방향과 역방향으로 지정되었습니다.

운송 컨베이어가 재료를 올바른 방향으로 이동시키려면 토글 버튼을 선택하여 모터 방향을 일반 에서 역방향변경해야 합니다.

토글 버튼을 선택하여 정상에서 역방향으로 방향을 변경하는 장치 화면입니다.

운송 컨베이어 모터 방향

운송 컨베이어 모터를 구성하는 동안 방향을 반대로 바꿔야 했습니다. 이는 모터가 기본적으로 운송 컨베이어를 시계 방향으로 회전시키기 때문입니다. 모터의 라벨을 기준으로 모터의 기본 회전 방향을 결정할 수 있습니다. 

뱀 모양의 컨베이어에 동력을 공급하는 모터, + 화살표 아이콘이 표시되어 있습니다.

각 모터의 윗부분에는 어느 방향이 양의 방향인지를 나타내는 아이콘이 있습니다. 운송 컨베이어의 경우 화살표는 시계 방향을 가리킵니다. 이는 기본적으로 운송 컨베이어에 놓인 모든 디스크가 진입 컨베이어에서 첫 번째 분기기로 회전한다는 것을 의미합니다. 구성에서 모터를 반대로 하면 전진방향이 컨베이어를 따라 올바른 경로로 논의된 내용과 일치하는지 확인할 수 있습니다. 

제어 정지 수정

이제 모든 컨베이어 모터를 구성했으므로 제어 정지를 업데이트해야 합니다. 제어된 정지가 작동하면 모든 모터가 작동을 멈춰야 CTE 워크셀 베이스를 안전하게 이동할 수 있습니다. 에 블록을 추가하여 컨베이어 모터를 멈추게 할 것.

제어된 정지 중에 필요한 컨베이어 동작을 설명하는 댓글 작성하세요.

VEX코드 EXP '모든 컨베이어 이동 중지'라는 주석 블록입니다.

기존 블록 스택에Comment 블록을 추가합니다.

VEXcode EXP는 암 10 제어가 멈췄을 때 신호탑에서 제어된 정지가 발생했음을 시각적으로 표시한다는 주석 블록을 읽는 프로젝트를 차단합니다. 다음은 두 블록을 읽어 신호탑 6을 녹색으로 설정하고 끄고, 신호탑 6을 빨간색으로 설정하고 깜박이는 것입니다. 마지막으로 '모든 컨베이어 이동을 중지하세요'라는 주석 블록이 있습니다.

정지 모터 블록을 끌어내어 진입 컨베이어를 멈추고 블록 스택에 부착합니다.

VEXcode EXP 블록 프로젝트를 계속 진행하면서, Stop entry conveyor 1이라는 문구가 적힌 Stop Motor 블록을 끝에 추가했습니다. 이제 전체 프로젝트는 '암 10 제어가 멈췄을 때'로 읽히고, '신호탑에서 제어된 정지가 발생했음을 시각적으로 나타냄'이라는 주석 블록으로 읽힙니다. 다음은 두 블록을 읽어 신호탑 6을 녹색으로 설정하고 끄고, 신호탑 6을 빨간색으로 설정하고 깜박이는 것입니다. 마지막으로 '모든 컨베이어 이동 중지'라는 주석 블록과 '컨베이어 1 진입 중지'라는 모터 정지 블록이 있습니다.

또 다른 스톱 모터 블록을 끌어내어 블록 더미의 맨 아래에 부착합니다.

화살표를 선택하여 드롭다운 메뉴를 열고 'TransportConveyor2'를 선택하여 제어된 정지 상태에서 운송 컨베이어를 멈추는 매개변수를 설정합니다.

VEXcode EXP 블록 프로젝트의 연장으로, Stop transport conveyor 2라는 문구가 적힌 Stop Motor 블록이 끝에 추가되었습니다. 이제 전체 프로젝트는 '암 10 제어가 멈췄을 때'로 읽히고, '신호탑에서 제어된 정지가 발생했음을 시각적으로 나타냄'이라는 주석 블록으로 읽힙니다. 다음은 두 블록을 읽어 신호탑 6을 녹색으로 설정하고 끄고, 신호탑 6을 빨간색으로 설정하고 깜박이는 것입니다. 그 다음에는 '컨베이어의 모든 움직임을 중지하세요'라는 주석 블록이 있습니다. 마지막으로 정지 진입 컨베이어 1과 정지 운송 컨베이어 2를 읽는 두 개의 블록이 있습니다.

스택에 세 번째 정지 모터 블록을 추가합니다. 매개변수를 'ExitConveyor4'로 변경합니다.

VEXcode EXP 블록 프로젝트를 계속 진행하며, Stop exit conveyor 4라고 적힌 Stop Motor 블록을 끝에 추가합니다. 이제 전체 프로젝트는 '암 10 제어가 멈췄을 때'로 읽히고, '신호탑에서 제어된 정지가 발생했음을 시각적으로 나타냄'이라는 주석 블록으로 읽힙니다. 다음은 두 블록을 읽어 신호탑 6을 녹색으로 설정하고 끄고, 신호탑 6을 빨간색으로 설정하고 깜박이는 것입니다. 그 다음에는 '컨베이어의 모든 움직임을 중지하세요'라는 주석 블록이 있습니다. 마지막으로 정지 진입 컨베이어 1, 정지 운송 컨베이어 2, 정지 출구 컨베이어 4를 읽는 세 개의 블록이 있습니다.

컨베이어를 사용하여 디스크를 운반하는 프로젝트 만들기

이제 컨베이어 모터를 구성하고 제어된 정지를 수정했으므로 컨베이어를 사용하여 디스크를 운반하는 프로젝트를 빌드할 수 있습니다. 디스크가 진입 컨베이어에서 출발하여 운송 컨베이어를 따라 출구 컨베이어로 이동하는 프로젝트를 구축하게 됩니다. 그렇게 하려면 컨베이어를 따라 디스크의 움직임을 주의 깊게 조정해야 합니다. 이러한 조정을 달성하는 한 가지 방법은 아래 영상에서 보여주는 것처럼 시간 기반의 움직임을 사용하여 프로젝트를 만드는 것입니다.

비디오 파일

시간 기반 운동

대기, 회전, 모터 정지 블록을 조합하여 사용하면 각 컨베이어가 적절한 시간에 시작 및 중지되어 디스크를 한 컨베이어에서 다음 컨베이어로 옮길 수 있는 프로젝트를 만들 수 있습니다. 컨베이어를 코딩하는 이런 방식을 시간 기반 이동을 사용한다고 합니다.

시간 기반 이동을 보여주는 VEX코드 EXP 스택의 예입니다. 스택에는 스핀 진입 컨베이어 1 인바운드, 2초간 기다린 후 진입 컨베이어 1을 중지하라는 메시지가 표시됩니다.

프로젝트 구축

여기 이미지에 표시된 것과 같이 디스크를 이동하는 데 필요한 계획 단계를 엔지니어링 노트북에 기록하세요.

엔지니어링 노트북에 기록된 계획 단계입니다. 제목은 '디스크를 입구 컨베이어에서 출구 컨베이어 시작 부분으로 옮기세요'입니다. 1단계는 디스크를 진입 컨베이어를 따라 운반 컨베이어로 옮기는 것입니다. 2번째이자 마지막 단계는 디스크를 운송 컨베이어를 따라 출구 컨베이어로 옮기는 것입니다.

계획의 각 단계에 대해 댓글 블록을 만들고, 이를 시작 시 블록에 첨부합니다.

VEXcode EXP 블록 프로젝트는 두 개의 Comment 블록으로 구성되어 있습니다. 이 프로젝트는 시작 시 디스크를 진입 컨베이어를 따라 수송 컨베이어로 옮기라는 주석 블록으로 구성됩니다. 두 번째 주석 블록에는 디스크를 운송 컨베이어를 따라 출구 컨베이어로 옮기라는 내용이 있습니다.

첫 번째 댓글아래에 스핀블록을 부착하세요.

디스크는 진입 컨베이어에서 시작하여 운송 컨베이어 방향으로 진행하므로 매개변수는 'EntryConveyor1' 및 '인바운드'로 설정된 상태로 유지됩니다.

Spin블록은 모터를 멈추라는 지시가 있을 때까지 모터를 계속 회전시킵니다.

VEXcode EXP 블록 프로젝트가 계속 진행 중이며, 두 번째 주석 블록이 Spin Motor 블록으로 교체되었습니다. 이제 프로젝트는 시작 시 디스크를 진입 컨베이어를 따라 수송 컨베이어로 옮기라는 주석 블록으로 읽힙니다. 마지막으로 한 블록은 스핀 진입 컨베이어 1이 인바운드를 읽는 것입니다.

다음으로, 대기 블록을 붙입니다. 

VEXcode EXP 블록 프로젝트의 후속으로, 이제 대기 블록이 끝에 추가되어 1초간 기다립니다. 이제 전체 프로젝트는 시작 시 디스크를 진입 컨베이어를 따라 수송 컨베이어로 옮기라는 주석 블록으로 읽힙니다. 마지막으로 스핀 진입 컨베이어 1이 인바운드로 읽히는 두 개의 블록이 있으며 1초간 기다립니다.

블록 스택의 맨 아래에 스톱 모터블록을 부착합니다. 매개변수가 'EntryConveyor1'로 설정되어 있는지 확인하세요.

프로젝트가 실행되면 어떤 일이 일어날지 예측해 보세요. 엔지니어링 노트에 기록해 두세요.

VEXcode EXP 블록 프로젝트를 계속 진행하면서 이제 Stop entry conveyor 1을 읽는 끝에 Stop Motor 블록이 추가되었습니다. 이제 전체 프로젝트는 시작 시 디스크를 진입 컨베이어를 따라 수송 컨베이어로 옮기라는 주석 블록으로 읽힙니다. 마지막으로 스핀 진입 컨베이어 1 인바운드를 읽는 3개의 블록이 있고, 1초간 기다린 후 진입 컨베이어 1을 멈춥니다.

Brain이 VEXcode에 연결되어 있는지 확인하고 프로젝트를 Brain에 다운로드하세요.

다운로드 아이콘이 빨간색 상자 안에 표시되어 있는 VEXcode EXP 도구 모음, 두뇌 아이콘과 실행 아이콘 사이에 있습니다.

여기에 표시된 대로 진입 컨베이어의 시작 부분에 녹색 디스크가 놓여 있는지 확인하세요. Brain에서 Check 버튼을 눌러 프로젝트를 실행하고 테스트하세요.

컨베이어의 동작을 관찰합니다. 디스크를 엔트리 컨베이어 끝까지 운반합니까? 왜 그럴까? 아니면 왜 그렇지 않을까?

진입 컨베이어 시작 부분에 녹색 디스크를 배치한 CTE 작업셀 베이스 빌드의 위에서 아래로 본 모습입니다.

컨베이어가 멈추면 Brain의 X 버튼을 눌러 프로젝트를 중지합니다. 엔지니어링 노트에 관찰 내용을 기록하세요.

빨간색 상자 안에 다이아몬드 X 버튼이 표시된 EXP 브레인.

컨베이어 타이밍

프로젝트를 실행했을 때, 엔트리 컨베이어가 디스크를 운송 컨베이어까지 완전히 옮기지 않는다는 것을 알아차렸을 것입니다. 이는 Wait 블록의 매개변수가 1초로만 설정되어 있기 때문입니다. 정지 모터블록이 작동하기 전에 진입 컨베이어가 회전하는 데 더 많은 시간이 필요합니다.

시간 기반 이동을 사용하여 프로젝트를 빌드하고 테스트할 때 올바른 타이밍을 얻으려면 Wait 블록의 매개변수를 두 번 이상 조정해야 할 수도 있습니다.

위의 VEXcode EXP 프로젝트에서 Wait 블록의 시간 매개변수가 강조 표시되어 있습니다. 이 프로젝트는 시작 시 디스크를 진입 컨베이어를 따라 수송 컨베이어로 옮기라는 주석 블록으로 구성됩니다. 마지막으로 3개의 블록이 스핀 진입 컨베이어 1을 인바운드로 읽고 1초간 기다린 후 진입 컨베이어 1을 멈춥니다.

Wait 블록의 매개변수를 7초로 조정하고, 프로젝트를 다시 다운로드하여 실행하여 테스트합니다. 

진입 컨베이어가 디스크를 끝까지 운반하여 운송 컨베이어가 디스크를 집어 올릴 수 있도록 했습니까? 그렇지 않은 경우, 매개변수를 다시 조정하여 맞춰보세요. 

참고:매개변수에 필요한 초 수는 다를 수 있습니다. CTE 워크셀 기반에 안정적으로 적용되는 숫자를 사용하세요.

 

 

위의 VEXcode EXP 프로젝트에서 대기 블록의 시간 매개변수가 강조 표시되고 1에서 7로 변경되었습니다. 이 프로젝트는 시작 시 디스크를 진입 컨베이어를 따라 수송 컨베이어로 옮기라는 주석 블록으로 구성됩니다. 마지막으로 3개의 블록이 스핀 진입 컨베이어 1이 들어오는 것을 읽고 7초간 기다린 후 진입 컨베이어 1을 멈춥니다.

디스크를 운송 컨베이어를 따라 옮기는 데 필요한 블록을 추가합니다.

이는 엔트리 컨베이어에 사용된 블록과 동일하며, 매개변수는 'TransportConveyor2' 및 'forward'로 설정되어 있습니다.

운송 컨베이어를 제어하기 위해 4개의 블록을 끝에 추가하여 VEXcode EXP 프로젝트를 계속 진행합니다. 이 프로젝트는 시작 시 디스크를 진입 컨베이어를 따라 수송 컨베이어로 옮기라는 주석 블록으로 구성됩니다. 다음은 스핀 진입 컨베이어 1이 인바운드로 들어오는 것을 읽는 3개의 블록입니다. 7초간 기다린 후 진입 컨베이어 1을 멈춥니다. 다음은 디스크를 운송 컨베이어를 따라 출구 컨베이어로 옮기라는 내용의 주석 블록입니다. 마지막으로, 스핀 컨베이어 2를 앞으로 밀고 5초간 기다린 후, 컨베이어 2를 멈추라는 내용의 블록이 3개 더 있습니다.

프로젝트를 Brain에 다운로드하고 실행해서 테스트해 보세요. 디스크가 운송 컨베이어를 따라 이동하다가 분기기에서 멈춥니까? 그렇지 않은 경우, Wait블록의 매개변수를 조정하여 조정합니다.

녹색 디스크를 출구 컨베이어 시작 부분으로 옮긴 CTE 작업셀 기반 빌드의 위에서 아래로 본 모습입니다.

귀하의 정보를 위해

물체가 컨베이어를 따라 이동하는 속도는 Set motor velocity 블록을 사용하여 수정할 수 있습니다. 블록의 매개변수를 변경하여 컨베이어가 더 빨리 또는 더 느리게 회전하도록 할 수 있습니다. 기본 컨베이어 속도는 50%이고, 최대 속도는 100%입니다. 

속도 매개변수가 강조된 두 개의 모터 속도 설정 블록을 비교한 그림입니다. 첫 번째는 '진입 컨베이어 1 속도를 50%로 설정'이라고 되어 있고, 두 번째는 '진입 컨베이어 1 속도를 100%로 설정'이라고 되어 있습니다.

설정 모터 속도 블록 매개변수는 rpm, 즉 분당 회전 수를 사용하여 설정할 수도 있습니다.

드롭다운 메뉴에서 rpm 매개변수가 강조 표시된 상태에서 모터 속도 블록을 설정합니다. 블록에는 '진입 컨베이어 1 속도를 200rpm으로 설정하세요'라고 적혀 있습니다.

 

활동

이제 시간 기반 이동을 사용하여 디스크를 입구 컨베이어에서 운반 컨베이어를 따라 출구 컨베이어로 옮기는 컨베이어를 코딩했으므로, 프로젝트를 계속 진행하여 디스크를 컨베이어 끝에서 떨어지지 않고 출구 컨베이어 끝까지 옮기는 작업을 해보겠습니다.

출구 컨베이어 끝에 녹색 디스크가 있는 CTE 작업셀 베이스 빌드의 위에서 내려다본 모습.

설정:아래와 같이 진입 컨베이어의 시작 부분에 디스크를 놓습니다. 

진입 컨베이어 시작 부분에 녹색 디스크가 있는 CTE 작업셀 베이스 빌드의 위에서 아래로 본 모습.

활동: 진입 컨베이어에서 운송 컨베이어를 따라 출구 컨베이어 끝까지 디스크를 운반하는 VEXcode 프로젝트를 만듭니다.

  1. 디스크를 출구 컨베이어 끝까지 옮기기 위해 프로젝트를 어떻게 구축할지 계획하세요.
  2. 엔지니어링 노트북에 계획을 기록하세요.
  3. 프로젝트 편집을 시작하기 전에 프로젝트 이름을 Unit 4 Lesson 2 Activity 로 바꾸고 장치에 저장하세요.
  4. 귀하의 그룹이 합의한 계획에 맞게 VEXcode에서 프로젝트를 편집하세요.
  5. 진입 컨베이어 시작 지점에 디스크를 놓고 프로젝트를 실행합니다. 컨베이어가 디스크를 떨어지지 않고 출구 컨베이어 끝까지 이동시키는가? 컨베이어의 움직임이 끝나면 프로젝트를 중단하고 엔지니어링 노트에 관찰 내용을 기록하세요. 
    1. 디스크가 출구 컨베이어 끝에서 떨어지면 디스크가 떨어지지 않고 컨베이어 끝까지 이동할 때까지 프로젝트를 편집합니다. 엔지니어링 노트북에 변경 사항을 기록하세요.

이해도 확인

다음 수업으로 넘어가기 전에 엔지니어링 노트에 있는 다음 질문에 답하여 이 수업의 개념을 이해했는지 확인하세요. 

이해도 확인 질문 > (Google Doc / .docx / .pdf)


다음 > 선택하여 중간 단위 반성으로 넘어가세요.