================================================================================ 누리로봇 BCB 시리즈 2채널 CAN 통신 매뉴얼 ================================================================================ .. contents:: 목차 :local: :depth: 3 문서 개요 --------- 본 문서는 BCB 시리즈 2채널 CAN 모터 드라이버를 CAN 버스에서 제어하기 위한 배선, CANopen SDO/PDO 프레임, 운전 절차 및 주요 오브젝트를 정리한 문서이다. .. note:: 제품의 소프트웨어 버전에 따라 기본 모터 파라미터, 제어 게인 및 통신 파라미터가 다를 수 있다. 전원을 인가하기 전에 제품 라벨과 모터 정격을 확인한다. 1. 제품 사양 ------------- .. list-table:: 주요 사양 :header-rows: 1 :widths: 32 68 :width: 80% * - 항목 - 사양 * - 입력 전압 - DC 20~48 V * - 연속 출력 전류 - 축당 10 Arms * - 피크 전류 - 축당 40 Ap * - 대응 모터 - 2축 허브 서보 모터 또는 서보 모터 * - 엔코더 - 증분형 AB상 엔코더 및 홀 센서 * - 통신 - UART + CAN(CAN 모델), CANopen SDO 및 간이 PDO 지원 * - CAN 통신 속도 - 500 kbps 또는 1 Mbps(SW1 설정 후 재부팅) * - 보호 기능 - 과전압, 저전압, 모터 과부하(I²t), 출력 단락, 드라이버 과열 * - 동작 온도/습도 - -10~40 ℃, 5~95 %RH(결로 및 동결 없음) * - 보관 온도/습도 - -10~70 ℃, 90 %RH 이하(결로 및 동결 없음) 1.1 외형 및 설치 치수 ++++++++++++++++++++++ .. image:: images/BCB_CN2/installation_dimensions.png :width: 7in :align: center :alt: BCB 시리즈 2채널 드라이버의 외형과 설치 치수 2. 인터페이스 및 배선 --------------------- 2.1 전원 및 모터 ++++++++++++++++ .. list-table:: 전원 및 모터 단자 :header-rows: 1 :widths: 12 16 16 20 36 :width: 80% * - 커넥터 - 이미지 - 핀 - 신호 - 설명 * - P1 - .. image:: images/BCB_CN2/Pasted_image_20260720113314.png :height: 0.72in :align: center :alt: P1 2핀 전원 커넥터 - 1 / 2 - DC+ / DC- - 드라이버 주 전원 입력 * - M1 - .. image:: images/BCB_CN2/Pasted_image_20260720113335.png :height: 0.72in :align: center :alt: M1 3핀 모터 커넥터 - 1 / 2 / 3 - U1 / V1 / W1 - 모터 1의 3상 전원 출력 * - M2 - .. image:: images/BCB_CN2/Pasted_image_20260720113335.png :height: 0.72in :align: center :alt: M2 3핀 모터 커넥터 - 1 / 2 / 3 - U2 / V2 / W2 - 모터 2의 3상 전원 출력 .. warning:: 전원 극성과 정격 전압을 확인한 후 전원을 인가한다. 모터선 U/V/W를 연결하거나 분리할 때에는 반드시 드라이버 전원을 차단한다. 2.2 엔코더 커넥터 ENC1/ENC2 ++++++++++++++++++++++++++++ ENC1은 모터 1, ENC2는 모터 2에 사용하며 두 커넥터의 핀 배열은 같다. .. image:: images/BCB_CN2/Pasted_image_20260720113358.png :width: 1in :align: center :alt: 엔코더 커넥터 ENC1/ENC2 .. list-table:: 엔코더 핀 배열 :header-rows: 1 :widths: 15 20 65 :width: 80% * - 핀 - 신호 - 설명 * - 1 - A+ - 증분형 엔코더 A상 * - 2 - NC - 연결하지 않음 * - 3 - B+ - 증분형 엔코더 B상 * - 4 - NC - 연결하지 않음 * - 5 / 6 - T+ / T- - 모터 온도 센서 * - 7 / 8 / 9 - V / W / U - 홀 센서 신호 * - 10 - GND - 엔코더 전원 접지 * - 11 - VCC - +5 V 출력, 최대 0.2 A 2.3 CAN 커넥터 CN5 ++++++++++++++++++ .. image:: images/BCB_CN2/Pasted_image_20260720113406.png :width: 1in :align: center :alt: CAN 커넥터 CN5 .. list-table:: CN5 핀 배열 :header-rows: 1 :widths: 15 28 57 :width: 80% * - 핀 - 신호 - 설명 * - 1 - CAN_H - CAN High * - 2 - CAN_L - CAN Low * - 3 - isoGND - 절연 통신 접지 CAN_H와 CAN_L은 트위스트 페어로 배선하고, 버스 양 끝에 각각 120 Ω 종단저항을 설치한다. 모든 노드의 통신 기준 전위가 크게 벌어지지 않도록 isoGND도 함께 연결하는 것을 권장한다. 2.4 통신 속도 설정 +++++++++++++++++++ .. image:: images/BCB_CN2/Pasted_image_20260720113426.png :width: 0.5in :align: center :alt: 통신 속도 설정 .. list-table:: SW1 설정 :header-rows: 1 :widths: 25 35 40 :width: 80% * - SW1 - CAN 속도 - 참고 * - OFF - 500 kbps - 설정 변경 후 전원 재인가 * - ON - 1 Mbps - 설정 변경 후 전원 재인가 2.5 LED 표시 ++++++++++++ * LED1: 모터 1 상태. 녹색은 동작, 적색은 알람을 의미한다. * LED2: 모터 2 상태. 녹색은 동작, 적색은 알람을 의미한다. * LED3: 통신 상태. 황색 점멸은 송신, 녹색 점멸은 수신을 의미한다. 3. 모터 및 통신 초기 설정 ------------------------- 모터를 Enable 하기 전에 통신과 모터 파라미터를 먼저 설정한다. 잘못된 엔코더 분해능, 극쌍수 또는 전류값으로 운전하면 오동작이나 모터·드라이버 손상이 발생할 수 있다. 3.1 권장 설정 순서 +++++++++++++++++++ #. 전원을 차단한 상태에서 전원, 모터, 엔코더 및 CAN 배선을 확인한다. #. SW1으로 CAN 속도를 선택한 뒤 전원을 다시 인가한다. #. 현재 Node-ID로 SDO 통신이 되는지 상태워드 ``0x6041:00`` 읽기로 확인한다. #. 제어워드 ``0x6040:00``\ 에 ``0x0006``\ 을 기록하여 출력을 Disable 한다. #. 제품에 맞는 모터 코드가 있으면 ``0x6410:01``\ 에 모터 코드를 설정한다. #. 모터 코드로 설정되지 않는 항목은 엔코더 분해능, 극쌍수, 전류 및 회전 방향을 개별 설정한다. #. 모터 파라미터(S4)와 제어 루프 파라미터(S5)를 저장한다. #. CAN ID와 통신 보호를 변경했다면 통신 파라미터(S1)를 저장한다. #. 전원을 다시 인가한 뒤 설정값, 상태워드 및 오류 코드를 다시 읽는다. #. 바퀴를 지면에서 분리하거나 무부하 상태에서 낮은 속도로 방향과 엔코더 피드백을 확인한다. 3.2 필수 모터 설정 +++++++++++++++++++ .. list-table:: 초기 구동 전 확인할 모터 파라미터 :header-rows: 1 :widths: 20 18 18 44 :width: 100% * - CAN 주소 - 형식/속성 - 단위 - 설정 내용 * - ``0x6410:01`` - 16U, RW, S4 - HEX - 모터 코드. 공급사가 제공한 제품별 값을 우선 사용 * - ``0x6410:02`` - 08U, RW, S4 - HEX - 피드백 형식 * - ``0x6410:03`` - 32U, RW, S4 - DEC - 엔코더 분해능, 원본 기본값 4096 * - ``0x6410:05`` - 08U, RW, S4 - DEC - 모터 극쌍수 * - ``0x6410:06`` - 08U, RW, S4 - DEC - 여자(Exciting) 방식 * - ``0x6410:07`` - 16S, RW, S4 - DEC - 여자 전류 * - ``0x6410:08`` - 16U, RW, S4 - ms - 여자 시간 * - ``0x6410:09`` - 16U, RW, S4 - 0.1 A - 모터 I²t 전류 * - ``0x6410:0A`` - 16U, RW, S4 - s - 모터 I²t 시간 * - ``0x6410:0B`` - 16U, RW, S4 - 0.1 A - 모터 최대 전류 * - ``0x6410:13`` - 08U, RW, S4 - DEC - 모터 회전 방향 .. warning:: 제품별 출고값 또는 공급사 설정표를 참고하여 설정한다. 3.3 통신 설정 ++++++++++++++ .. list-table:: 통신 설정 파라미터 :header-rows: 1 :widths: 20 18 18 44 :width: 100% * - CAN 주소 - 형식/속성 - 단위 - 설정 내용 * - ``0x6510:0F`` - 08U, RW, S1 - DEC - RS485/CAN ID, 원본 기본값 17 * - ``0x4100:10`` - 08U, RW, S1 - DEC - 통신 끊김 보호: 0=비활성, 1=활성 * - ``0x4100:11`` - 32U, RW, S1 - ms - 통신 끊김 판정 시간, 원본 기본값 600 ms * - ``0x4700:01`` - 08U, RW - DEC - 간이 TXPDO: 0=비활성, 1=활성 * - ``0x1800:03`` - 16U, RW - ms - 간이 TXPDO 전송 주기, 원본 기본값 10 ms .. note:: 원본은 CAN ID 오브젝트가 ``SW3=OFF``\ 일 때 적용된다고 설명하지만 외형도와 인터페이스 표에는 SW3의 위치와 설정 방법이 명확하지 않다. CAN ID를 변경하기 전에 실제 제품의 스위치 구성과 현재 ID를 확인한다. 3.4 설정 저장 ++++++++++++++ 설정값의 속성에 ``S1`` ~ ``S5``\ 가 표시되어 있으면 해당 그룹 저장 오브젝트에 ``1``\ 을 기록해야 전원 재인가 후에도 유지된다. 저장 오브젝트 전체는 `부록 A.6 파라미터 저장`_\ 을 참조한다. 4. CANopen 통신 --------------- 이 드라이버의 CAN 포트는 CANopen의 SDO 통신과 제조사 정의 간이 TXPDO를 지원한다. 4.1 오브젝트 주소 표기 ++++++++++++++++++++++ CAN 오브젝트 주소는 ``인덱스 16비트 + 서브인덱스 8비트``\로 표기한다. 예를 들어 ``0x606300``\은 인덱스 ``0x6063``\, 서브인덱스 ``0x00``\이다. SDO 프레임에서는 인덱스의 하위 바이트를 먼저 전송하므로 ``0x6063``\은 ``63 60`` 순서로 전송한다. 다바이트 데이터도 리틀 엔디언으로 전송한다. 4.2 SDO COB-ID ++++++++++++++ .. list-table:: SDO COB-ID :header-rows: 1 :widths: 35 65 :width: 80% * - 방향 - CAN Identifier * - 마스터 → 드라이버 - ``0x600 + Node-ID`` * - 드라이버 → 마스터 - ``0x580 + Node-ID`` SDO 프레임의 DLC는 8이다. 4.3 SDO 읽기 ++++++++++++ 요청 데이터 형식은 다음과 같다. .. list-table:: SDO 업로드(읽기) 요청 :header-rows: 1 :widths: 10 13 13 13 13 13 13 13 13 :width: 100% * - Byte - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 * - 값 - ``40`` - Index L - Index H - SubIndex - ``00`` - ``00`` - ``00`` - ``00`` .. list-table:: 정상 응답 명령 지정자 :header-rows: 1 :widths: 35 65 :width: 80% * - Byte 0 - 의미 * - ``0x4F`` - 1바이트 데이터 * - ``0x4B`` - 2바이트 데이터 * - ``0x43`` - 4바이트 데이터 * - ``0x80`` - SDO 처리 실패(중단 응답) **예: Node-ID 1의 실제 위치 읽기** ``Actual position`` 주소는 ``0x6063:00``\ 이다. .. code-block:: text 요청 601 40 63 60 00 00 00 00 00 응답 581 43 63 60 00 06 13 00 00 응답 데이터 ``06 13 00 00``\은 리틀 엔디언 ``0x00001306``\, 즉 4870이다. 4.4 SDO 쓰기 ++++++++++++ .. list-table:: 쓰기 요청 명령 지정자 :header-rows: 1 :widths: 35 65 :width: 80% * - Byte 0 - 의미 * - ``0x2F`` - 1바이트 쓰기 * - ``0x2B`` - 2바이트 쓰기 * - ``0x23`` - 4바이트 쓰기 정상 처리 시 응답의 Byte 0은 ``0x60``\ 이며, 실패 시 ``0x80``\ 이다. **예: Node-ID 1의 목표 속도를 150 rpm으로 설정** ``Target Velocity_DEC`` 주소는 ``0x60FF:00``\ 이며 데이터는 32비트이다. 엔코더 분해능이 4096일 때 150 rpm은 다음과 같이 변환한다. .. code-block:: text DEC = (rpm × 512 × Resolution) / 1875 = (150 × 512 × 4096) / 1875 = 167772 = 0x00028F5C .. code-block:: text 요청 601 23 FF 60 00 5C 8F 02 00 응답 581 60 FF 60 00 5C 8F 02 00 **예: 제어워드 Enable(0x000F)** .. code-block:: text 요청 601 2B 40 60 00 0F 00 00 00 응답 581 60 40 60 00 0F 00 00 00 4.5 간이 TXPDO ++++++++++++++ 간이 PDO는 별도의 표준 PDO 매핑 절차 없이 활성화할 수 있다. * 활성화: ``0x4700:01``\에 ``1`` 기록 * 비활성화: ``0x4700:01``\에 ``0`` 기록 * 송신 COB-ID: ``0x180 + Node-ID`` * DLC: 8 * Byte 0~3: ``Actual velocity_0.001rpm`` (``0x60F9:19``) * Byte 4~7: ``Actual position`` (``0x6063:00``) * 전송 주기: ``0x1800:03`` (ms), 기본값 10 ms **예: Node-ID 1에서 간이 TXPDO 활성화** .. code-block:: text 요청 601 2F 00 47 01 01 00 00 00 응답 581 60 00 47 01 01 00 00 00 실제 속도가 10 rpm이고 실제 위치가 1000이면 다음과 같이 송신한다. .. code-block:: text PDO 181 10 27 00 00 E8 03 00 00 5. 운전 모드 ------------ 5.1 공통 제어 오브젝트 ++++++++++++++++++++++ .. list-table:: 공통 제어 오브젝트 :header-rows: 1 :widths: 18 15 15 52 :width: 100% * - CAN 주소 - 형식 - 속성 - 설명 * - ``0x6060:00`` - 08S - RW, S5 - 운전 모드: 3=가감속 속도, -3=가감속 없는 속도, 4=토크, 1=위치 * - ``0x6040:00`` - 16S - RW - 제어워드: 0x0006=Disable, 0x000F=Enable, 0x0086=오류 해제 * - ``0x6061:00`` - 08S - RO - 현재 운전 모드 * - ``0x6041:00`` - 16U - RO - 상태워드: 0x0000=정상, 0x0008=오류 * - ``0x2601:00`` - 16U - RO - 상세 오류 코드 * - ``0x605A:11`` - 08U - RW - 비상정지: 1=활성, 0=해제 5.2 위치 모드 ++++++++++++++++++++++ .. image:: images/BCB_CN2/Pasted_image_20260720112426.png :width: 6in :align: center :alt: 위치 모드의 속도 및 위치 곡선 위치 모드는 절대 위치와 상대 위치를 지원한다. 절대 위치는 좌표계의 목표점으로, 상대 위치는 명령 시점의 현재 위치에서 지정한 양만큼 이동한다. .. list-table:: 위치 모드 주요 오브젝트 :header-rows: 1 :widths: 18 14 14 54 :width: 100% * - CAN 주소 - 형식 - 단위 - 설명 * - ``0x607A:00`` - 32S, RW - DEC - 절대 목표 위치 * - ``0x607B:00`` - 32S, RW - DEC - 상대 목표 위치 * - ``0x6082:00`` - 16U, RW, S5 - rpm - 위치 운전 프로파일 속도 * - ``0x6083:00`` - 32U, RW, S5 - DEC - 가속도 * - ``0x6084:00`` - 32U, RW, S5 - DEC - 감속도 * - ``0x605A:01`` - 32U, RW, S5 - DEC - 비상정지 감속도 * - ``0x6065:00`` - 32U, RW, S5 - DEC - 최대 위치 추종 오차 가감속도 변환식은 다음과 같다(기본 ``Resolution=4096``). .. code-block:: text DEC = ((rps/s) × 256 × Resolution) / 15625 **상대 위치 운전 순서** #. 필요하면 가속도, 감속도 및 프로파일 속도를 설정한다. #. ``0x6060:00``\ 에 ``1``\ 을 기록한다. #. 제어워드에 ``0x000F``\ 를 기록하여 모터를 Enable 한다. #. ``0x607B:00``\ 에 상대 이동량을 기록한다. #. 운전 중에도 상대 이동량과 프로파일 속도를 변경할 수 있다. #. 정지 후 축을 해제하려면 제어워드에 ``0x0006``\ 을 기록한다. **절대 위치 운전 순서** #. 필요하면 가속도, 감속도 및 프로파일 속도를 설정한다. #. ``0x6060:00``\ 에 ``1``\ 을 기록한다. #. ``0x607A:00``\ 에 절대 목표 위치를 기록한다. #. 제어워드에 ``0x001F``\ 를 기록하여 위치 운전을 시작한다. #. 운전 중에도 절대 목표 위치와 프로파일 속도를 변경할 수 있다. #. 정지 후 축을 해제하려면 제어워드에 ``0x0006``\ 을 기록한다. 5.3 속도 모드 ++++++++++++++++++++++ .. image:: images/BCB_CN2/Pasted_image_20260720112446.png :width: 6in :align: center :alt: 속도 모드의 속도 .. list-table:: 속도 모드 주요 오브젝트 :header-rows: 1 :widths: 18 14 14 54 :width: 100% * - CAN 주소 - 형식 - 단위 - 설명 * - ``0x2FF0:09`` - 16S, RW - rpm - 목표 속도(rpm), 모드 3/-3에서 유효 * - ``0x60FF:00`` - 32S, RW - DEC - 목표 속도(내부 단위), 모드 3/-3에서 유효 * - ``0x6083:00`` - 32U, RW, S5 - DEC - 가속도 * - ``0x6084:00`` - 32U, RW, S5 - DEC - 감속도 * - ``0x6080:00`` - 16U, RW, S5 - rpm - 모든 모드의 최대 속도 **속도 운전 순서** #. 필요하면 가속도와 감속도를 설정한다. #. ``0x6060:00``\ 에 ``3`` (가감속 사용) 또는 ``-3`` (가감속 없음)\ 을 기록한다. #. 제어워드에 ``0x000F``\ 를 기록하여 모터를 Enable 한다. #. ``0x2FF0:09`` 또는 ``0x60FF:00``\ 에 목표 속도를 기록한다. #. 운전 중 목표 속도를 변경할 수 있다. #. 축을 해제하려면 제어워드에 ``0x0006``\ 을 기록한다. 비상정지가 활성화되면 ``0x605A:01``\ 의 감속도로 정지한다. 비상정지를 해제했을 때 제어워드가 계속 Enable 상태이면 기존 목표값으로 운전을 재개할 수 있으므로, 안전이 필요한 경우 제어워드도 Disable 한다. 5.4 토크(전류) 모드 ++++++++++++++++++++ 원본 오브젝트 목록에는 운전 모드 ``4``\ 와 출력 전류 명령이 정의되어 있으나, 위치·속도 모드와 같은 상세 운전 예제는 제공되지 않는다. .. list-table:: 토크 모드 관련 오브젝트 :header-rows: 1 :widths: 20 18 18 44 :width: 100% * - CAN 주소 - 형식/속성 - 단위 - 설명 * - ``0x6060:00`` - 08S, RW, S5 - DEC - 운전 모드. 토크 모드는 4 * - ``0x60F6:08`` - 16S, RW - DEC - 토크 모드의 출력 전류 명령 * - ``0x6073:00`` - 16U, RW - DEC - 모든 운전 모드에 적용되는 출력 전류 제한 .. warning:: 원본의 전류 변환식은 드라이버 최대 출력 전류를 사용하지만 같은 PDF 안에 30 A, 33 Ap, 40 A가 혼재한다. 제품 정격을 확인하기 전에는 토크 모드를 사용하지 말고, 처음 시험할 때에는 낮은 전류 제한값부터 적용한다. 6. 주요 모니터링 오브젝트 ------------------------- .. list-table:: 측정 데이터 :header-rows: 1 :widths: 18 16 14 52 :width: 100% * - CAN 주소 - 형식/속성 - 단위 - 설명 * - ``0x6063:00`` - 32S, RO - DEC - 실제 위치 * - ``0x60F9:18`` - 16S, RO - 1 rpm - 실제 속도 * - ``0x60F9:19`` - 32S, RO - 0.001 rpm - 고해상도 실제 속도 * - ``0x60F9:1A`` - 16U, RW, S5 - ms - 실제 속도 샘플링 주기, 기본 30 ms * - ``0x606C:00`` - 32S, RO - DEC - 실제 속도 내부값(샘플링 250 µs) * - ``0x6078:00`` - 16S, RO - DEC - 실제 Iq 전류 * - ``0x60F7:12`` - 16S, RO - V - DC 버스 전압 * - ``0x60F7:0B`` - 16S, RO - ℃ - 드라이버 온도 * - ``0x60F4:00`` - 32S, RO - DEC - 실제 위치 추종 오차 7. 파라미터 저장 ---------------- ``S1``~``S5`` 속성이 붙은 파라미터는 해당 그룹의 저장 명령을 실행해야 전원을 껐다 켠 뒤에도 유지된다. .. list-table:: 저장 오브젝트 :header-rows: 1 :widths: 25 25 50 :width: 80% * - CAN 주소 - 기록값 - 저장 그룹 * - ``0x2FE5:01`` - 1 - S1 통신 파라미터 * - ``0x2FE5:02`` - 1 - S2 I/O 파라미터 * - ``0x2FE5:03`` - 1 - S3 조정 파라미터 * - ``0x2FE5:04`` - 1 - S4 모터 파라미터 * - ``0x2FE5:05`` - 1 - S5 제어 루프 파라미터 .. warning:: 저장 중에는 전원을 차단하지 않는다. 모터 코드, 엔코더 분해능 및 전류 제한과 같은 모터 파라미터는 제품 출고값을 확인한 후 변경한다. 8. 알람 및 문제 해결 (Alarm and Troubleshooting) ------------------------------------------------- 각 축의 상태 LED는 녹색 PWR과 적색 ALM으로 구성된다. ALM LED가 반복해서 점멸하는 횟수로 주요 알람을 구분할 수 있다. 여러 오류가 동시에 발생하면 서로 다른 점멸 횟수를 순서대로 반복한다. 8.1 ALM LED 점멸 진단 ++++++++++++++++++++++ .. list-table:: ALM LED 상태와 문제 해결 :header-rows: 1 :widths: 12 25 63 :width: 100% * - 상태 - 설명 - 점검 및 조치 * - 0회 - PWR 켜짐, ALM 꺼짐: 정상 - 조치 없음 * - 1회 - 통신 실패 또는 내부 오류 - 통신 끊김 보호가 활성화되어 있는지 확인하고, 마스터가 설정된 주기 안에 명령을 전송하는지 확인한다. 반복되면 공급사에 문의한다. * - 2회 - 위치 추종 오차 초과 - 기구가 걸렸는지, 부하가 과도한지, 모터 토크·드라이버 전류가 충분한지 확인한다. 목표 속도를 낮추고 고속 운전 시 전원 전압 강하를 확인한다. * - 3회 - 엔코더 또는 홀 신호 오류 - 엔코더 케이블 단선·미체결·핀 순서를 확인한다. 배선이 정상이면 엔코더와 드라이버의 피드백 형식이 일치하는지 확인한다. * - 4회 - 모터/드라이버 과부하 - 지속 부하를 낮추고 기구의 걸림, 마찰 및 회전 저항을 확인한다. * - 5회 - 드라이버 과열(약 80 ℃ 초과) - 반복 과부하, 기구 걸림, 방열 상태와 주위 온도를 확인하고 충분히 냉각한 후 다시 운전한다. * - 6회 - DC 버스 과전압 - 입력 전압을 확인한다. 감속 시간이 너무 짧으면 감속도를 낮춘다. 제동저항 적용 제품은 저항값, 배선 및 저항 손상을 확인한다. * - 7회 - DC 버스 저전압 - 입력 전압과 전원 용량을 확인하고, 운전 중 배선 및 전원에서 발생하는 전압 강하를 측정한다. * - 8회 - 드라이버 출력 단락 - 전원을 즉시 차단하고 U/V/W 상간 단락과 모터 권선 손상을 확인한다. 배선과 모터가 정상이면 드라이버 출력 소자 손상을 점검한다. * - 조합 점멸 - 여러 오류 동시 발생 - 각 점멸 횟수에 해당하는 오류를 모두 확인하고 원인을 제거한다. .. warning:: 출력 단락, 과전압 또는 과열 알람 발생 직후에는 반복해서 Enable 하지 않는다. 전원을 차단하고 원인을 제거한 다음 오류를 해제한다. 8.2 상세 오류 상태워드 +++++++++++++++++++++++ CAN에서는 ``0x2601:00``\ 의 각 비트로 상세 오류를 확인한다. .. list-table:: 상세 오류 코드 :header-rows: 1 :widths: 15 35 50 :width: 100% * - 비트 - 오류 - 우선 점검 사항 * - 0 - 내부 오류 - 전원을 재인가하고 반복되면 제조사 문의 * - 1 - 엔코더 ABZ 신호 오류 - 엔코더 배선과 커넥터 체결 확인 * - 2 - 엔코더 UVW 신호 오류 - 홀 센서 배선과 모터 엔코더 확인 * - 3 - 엔코더 카운트 오류 - 신호 노이즈, 배선 및 엔코더 상태 확인 * - 4 - 드라이버 과열 - 주위 온도, 방열 및 과부하 확인 * - 5 - DC 버스 과전압 - 입력 전압 및 감속 시 회생 전압 확인 * - 6 - DC 버스 저전압 - 전원 용량, 배선 전압 강하 확인 * - 7 - 출력 단락 - U/V/W 단락 및 모터 손상 확인 * - 8 - 제동저항 과열 - 제동 조건과 제동저항 정격 확인 * - 9 - 위치 추종 오차 초과 - 기구 걸림, 부하, 목표 속도 및 전원 확인 * - 11 - I²t 과부하 - 연속 부하와 모터/드라이버 정격 확인 * - 12 - 속도 추종 오차 초과 - 부하, 제어 게인 및 목표 속도 확인 * - 13 - 모터 과열 - 모터 부하와 온도 센서 확인 * - 14 - 모터 검색 실패 - 통신형 엔코더와 모터 설정 확인 * - 15 - 통신 끊김 - CAN 배선, 종단저항, 통신 주기 및 보호 설정 확인 8.3 오류 해제 ++++++++++++++ 오류를 해제하기 전에 원인을 제거한다. 오류 해제는 제어워드 ``0x6040:00``\ 에 ``0x0086``\ 을 기록하여 수행한다. 9. 초기 통신 점검 절차 ---------------------- #. 전원을 차단한 상태에서 DC 전원, 모터, 엔코더 및 CAN 배선을 확인한다. #. CAN 버스 양 끝의 종단저항을 측정한다. 전원이 꺼진 정상 버스는 CAN_H와 CAN_L 사이가 약 60 Ω이다. #. SW1으로 모든 노드와 마스터의 CAN 속도를 동일하게 설정하고 재부팅한다. #. Node-ID가 중복되지 않았는지 확인한다. #. ``0x60F7:12``\ 를 SDO로 읽어 DC 버스 전압 응답을 확인한다. #. ``0x6041:00``\ 과 ``0x2601:00``\ 을 읽어 정상 상태인지 확인한다. #. 모터를 무부하 또는 안전하게 들어 올린 상태에서 낮은 속도로 회전 방향을 시험한다. #. 위치·속도 명령을 단계적으로 올리면서 전류, 온도 및 추종 오차를 감시한다. 부록 A. 전체 오브젝트 목록 --------------------------- 다음 표는 원본 PDF의 Appendix 1을 CAN 주소 중심으로 정리한 것이다. * ``RW``\: 읽기/쓰기, ``RO``: 읽기 전용 * ``08U/16U/32U``\: 부호 없는 8/16/32비트 정수 * ``08S/16S/32S``\: 부호 있는 8/16/32비트 정수 * ``S1``\: 통신, ``S2``\: I/O, ``S3``\: 조정, ``S4``\: 모터, ``S5``\: 제어 루프 저장 그룹 부록 A.1 모터 파라미터 ++++++++++++++++++++++ .. list-table:: 모터 파라미터 :header-rows: 1 :widths: 18 16 18 12 36 :width: 100% * - CAN 주소 - UART/RS485 - 형식/속성 - 단위 - 설명 * - ``0x6410:16`` - ``0x7046`` - 16U, RO - HEX - 현재 모터 코드 * - ``0x6410:01`` - ``0x7031`` - 16U, RW, S4 - HEX - 모터 코드 설정 * - ``0x6410:02`` - ``0x7032`` - 08U, RW, S4 - HEX - 피드백 형식 * - ``0x6410:03`` - ``0x7033`` - 32U, RW, S4 - DEC - 엔코더 분해능, 기본 4096 * - ``0x6410:05`` - ``0x7035`` - 08U, RW, S4 - DEC - 모터 극쌍수 * - ``0x6410:06`` - ``0x7036`` - 08U, RW, S4 - DEC - 여자 방식 * - ``0x6410:07`` - ``0x7037`` - 16S, RW, S4 - DEC - 여자 전류 * - ``0x6410:08`` - ``0x7038`` - 16U, RW, S4 - ms - 여자 시간 * - ``0x6410:09`` - ``0x7039`` - 16U, RW, S4 - 0.1 A - 모터 I²t 전류 * - ``0x6410:0A`` - ``0x703A`` - 16U, RW, S4 - s - 모터 I²t 시간 * - ``0x6410:0B`` - ``0x703B`` - 16U, RW, S4 - 0.1 A - 모터 최대 전류 * - ``0x6410:13`` - ``0x7043`` - 08U, RW, S4 - DEC - 모터 회전 방향 * - ``0x6410:1A`` - ``0x704A`` - 16U, RW, S4 - rpm - 모터 정격 속도 * - ``0x6410:1B`` - ``0x704B`` - 16U, RW, S4 - W - 모터 정격 출력 * - ``0x6410:1F`` - ``0x704F`` - 16S, RW, S4 - degree - 모터 홀 각도 부록 A.2 기본 운전 및 제어 ++++++++++++++++++++++++++ .. list-table:: 기본 운전 및 제어 오브젝트 :header-rows: 1 :widths: 18 16 18 12 36 :width: 100% * - CAN 주소 - UART/RS485 - 형식/속성 - 단위 - 설명 * - ``0x6060:00`` - ``0x7017`` - 08S, RW, S5 - DEC - 운전 모드: 3, -3, 4, 1 * - ``0x6040:00`` - ``0x7019`` - 16S, RW - HEX - 제어워드: 0x06 Disable, 0x0F Enable, 0x86 오류 해제 * - ``0x6061:00`` - ``0x7018`` - 08S, RO - DEC - 현재 운전 모드 * - ``0x6041:00`` - ``0x7001`` - 16U, RO - HEX - 상태워드: 0x0000 정상, 0x0008 오류 * - ``0x2601:00`` - ``0x7011`` - 16U, RO - HEX - 상세 오류 코드 * - ``0x605A:11`` - ``0x701F`` - 08U, RW - DEC - 비상정지: 1 활성, 0 해제 * - ``0x607A:00`` - ``0x7091`` - 32S, RW - DEC - 절대 목표 위치 * - ``0x607B:00`` - ``0x709F`` - 32S, RW - DEC - 상대 목표 위치 * - ``0x6081:00`` - ``0x7098`` - 32U, RW, S5 - DEC - 프로파일 속도 내부값 * - ``0x6082:00`` - ``0x709D`` - 16U, RW, S5 - rpm - 프로파일 속도 * - ``0x6083:00`` - ``0x7099`` - 32U, RW, S5 - DEC - 가속도 * - ``0x6084:00`` - ``0x709A`` - 32U, RW, S5 - DEC - 감속도 * - ``0x605A:01`` - ``0x709B`` - 32U, RW, S5 - DEC - 비상정지 감속도 * - ``0x2FF0:09`` - ``0x70B1`` - 16S, RW - rpm - 목표 속도 * - ``0x60FF:00`` - ``0x70B2`` - 32S, RW - DEC - 목표 속도 내부값 * - ``0x60F6:08`` - ``0x70E1`` - 16S, RW - DEC - 토크 모드 출력 전류 * - ``0x6073:00`` - ``0x70E2`` - 16U, RW - DEC - 출력 전류 제한 * - ``0x6080:00`` - ``0x70B8`` - 16U, RW, S5 - rpm - 최대 속도 * - ``0x6065:00`` - ``0x7093`` - 32U, RW, S5 - DEC - 최대 위치 추종 오차 * - ``0x60FB:88`` - ``0x8088`` - 08U, RW, S5 - DEC - 모드 3 위치 보상: 0 비활성, 1 활성 * - ``0x60FB:02`` - ``0x709C`` - 16S, RW, S5 - DEC - 위치 루프 속도 피드포워드, 0~256=0~100% * - ``0x60FB:01`` - ``0x7094`` - 16S, RW, S5 - DEC - 위치 루프 비례 게인 Kpp0 * - ``0x60F9:01`` - ``0x70B3`` - 16U, RW, S5 - DEC - 속도 루프 비례 게인 Kvp0 * - ``0x60F9:02`` - ``0x70B4`` - 16U, RW, S5 - DEC - 속도 루프 적분 게인 Kvi0 * - ``0x607C:02`` - ``0x70AC`` - 08U, RW - DEC - Disable 상태에서 1 기록 시 실제 위치 초기화 * - ``0x5000:50`` - ``0x701C`` - 08U, RW, S5 - DEC - 영속도 소음 저감: 0 비활성, 1 활성 * - ``0x5000:51`` - ``0x701D`` - 16U, RW, S5 - ms - 영속도 소음 저감 지연, 기본 500 ms * - ``0x3000:15`` - ``0x7004`` - 16U, RW, S3 - ℃ - 드라이버 과열 보호 온도 부록 A.3 측정 데이터 ++++++++++++++++++++ .. list-table:: 측정 데이터 오브젝트 :header-rows: 1 :widths: 18 16 18 12 36 :width: 100% * - CAN 주소 - UART/RS485 - 형식/속성 - 단위 - 설명 * - ``0x6063:00`` - ``0x7071`` - 32S, RO - DEC - 실제 위치 * - ``0x60F9:18`` - ``0x7075`` - 16S, RO - rpm - 실제 속도, 해상도 1 rpm * - ``0x60F9:19`` - ``0x7076`` - 32S, RO - 0.001 rpm - 고해상도 실제 속도 * - ``0x60F9:1A`` - ``0x7079`` - 16U, RW, S5 - ms - 실제 속도 샘플링 주기, 기본 30 ms * - ``0x606C:00`` - ``0x7077`` - 32S, RO - DEC - 실제 속도 내부값 * - ``0x6078:00`` - ``0x7072`` - 16S, RO - DEC - 실제 Iq 전류 * - ``0x60F6:32`` - ``0x7007`` - 16U, RO - mA - 모터 실제 I²t 전류 * - ``0x60F7:12`` - ``0x5001`` - 16S, RO - V - 실제 DC 버스 전압 * - ``0x60F7:0B`` - ``0x7002`` - 16S, RO - ℃ - 드라이버 실제 온도 * - ``0x60F4:00`` - ``0x7092`` - 32S, RO - DEC - 실제 위치 추종 오차 부록 A.4 디지털 I/O +++++++++++++++++++ .. list-table:: 디지털 I/O 오브젝트 :header-rows: 1 :widths: 18 16 18 12 36 :width: 100% * - CAN 주소 - UART/RS485 - 형식/속성 - 단위 - 설명 * - ``0x2010:0A`` - ``0x5100`` - 16U, RO - BIT - 디지털 입력 하드웨어 상태, BIT[0]~BIT[7]=DIN1~DIN8 * - ``0x2010:01`` - ``0x5102`` - 16U, RO, S2 - BIT - 디지털 입력 극성, 원본 기본값 0x00FF * - ``0x2010:02`` - ``0x5101`` - 16U, RW - BIT - 디지털 입력 시뮬레이션 부록 A.5 통신 파라미터 ++++++++++++++++++++++ .. list-table:: 통신 파라미터 오브젝트 :header-rows: 1 :widths: 18 16 18 12 36 :width: 100% * - CAN 주소 - UART/RS485 - 형식/속성 - 단위 - 설명 * - ``0x2FE0:01`` - ``0x1005`` - 08U, RW, S1 - DEC - UART 속도 코드, 기본 7(115200 bps) * - ``0x6510:0F`` - ``0x100C`` - 08U, RW, S1 - DEC - RS485/CAN ID, 원본 기본값 17 * - ``0x4100:10`` - ``0x3010`` - 08U, RW, S1 - DEC - 통신 끊김 보호: 0 비활성, 1 활성 * - ``0x4100:11`` - ``0x3011`` - 32U, RW, S1 - ms - 통신 끊김 판정 시간, 기본 600 ms * - ``0x4700:01`` - - - 08U, RW - DEC - 간이 TXPDO 활성화 * - ``0x1800:03`` - - - 16U, RW - ms - 간이 TXPDO 전송 주기, 기본 10 ms 부록 A.6 파라미터 저장 ++++++++++++++++++++++ .. list-table:: 파라미터 저장 오브젝트 :header-rows: 1 :widths: 25 25 20 30 :width: 100% * - CAN 주소 - UART/RS485 - 기록값 - 설명 * - ``0x2FE5:01`` - ``0x3061`` - 1 - S1 통신 파라미터 저장 * - ``0x2FE5:02`` - ``0x3062`` - 1 - S2 I/O 파라미터 저장 * - ``0x2FE5:03`` - ``0x3063`` - 1 - S3 조정 파라미터 저장 * - ``0x2FE5:04`` - ``0x3064`` - 1 - S4 모터 파라미터 저장 * - ``0x2FE5:05`` - ``0x3065`` - 1 - S5 제어 루프 파라미터 저장 부록 A.7 드라이버 정보 ++++++++++++++++++++++ .. list-table:: 드라이버 정보 오브젝트 :header-rows: 1 :widths: 18 16 18 12 36 :width: 100% * - CAN 주소 - UART/RS485 - 형식/속성 - 단위 - 설명 * - ``0x3000:3A`` - ``0x103A`` - 32U, RO - ASCII - 제품 계열 정보 * - ``0x3000:3B`` - ``0x103B`` - 32U, RO - ASCII - 전압·전류 모델 정보 * - ``0x3000:3C`` - ``0x103C`` - 32U, RO - ASCII - 통신 모델 정보 * - ``0x3000:3D`` - ``0x103D`` - 32U, RO - ASCII - 소프트웨어 버전 정보 * - ``0x2500:F1`` - ``0x1007`` - 32U, RO - DEC - 펌웨어 날짜(YYYYMMDD) * - ``0x2500:F3`` - ``0x1009`` - 32U, RO - ASCII - 하드웨어 버전 부록 A.8 부가 기능 ++++++++++++++++++ .. list-table:: 부가 기능 오브젝트 :header-rows: 1 :widths: 18 16 18 12 36 :width: 100% * - CAN 주소 - UART/RS485 - 형식/속성 - 단위 - 설명 * - ``0x5000:20`` - ``0x802F`` - 08U, RW, S5 - DEC - Sstop: 0 비활성, 1 활성 * - ``0x5000:28`` - ``0x8028`` - 32U, RW, S5 - DEC - Sstop 전류 제한 * - ``0x5000:02`` - ``0x8002`` - 32U, RW, S5 - DEC - 감속 S-curve 시작점, 원본 기본값 5 rpm * - ``0x5000:04`` - ``0x8004`` - 16U, RW, S5 - DEC - S-curve 시간, 원본 기본값 64 .. 부록 B. 원본 자료의 확인 필요 사항 .. ----------------------------------- .. * 피크/최대 전류가 30 A, 33 Ap, 40 A로 혼재한다. .. * 2개 모터 축과 CAN Node-ID의 대응 관계가 설명되어 있지 않다. .. * CAN ID 설정에 SW3가 언급되지만 스위치 위치와 설정표가 명확하지 않다. .. * CAN은 SDO만 지원한다고 설명한 뒤 간이 TXPDO 기능도 설명한다. .. * 절대 위치 UART 예제에서 상대 위치 주소 ``0x709F``\ 를 사용한다. .. * CN5의 CAN_L이 일부 표에서 ``CNA_L``\ 로 잘못 표기되어 있다. 위 항목은 실제 제품 펌웨어와 공급사 자료를 기준으로 확인해야 한다.