728x90
반응형
CANOpen Slave 개발 (STM32 MCU 활용)
개요
CANOpen Slave 장치는 CANOpen 네트워크에서 마스터의 명령을 수신하고 응답하는 역할을 합니다. 본 장에서는 STM32F429 MCU와 STM32CubeIDE 및 HAL 라이브러리를 활용하여 CANOpen Slave 장치를 개발하는 방법을 설명합니다.
CANOpen Slave 개념
CANOpen Slave는 다음과 같은 주요 기능을 수행합니다.
- PDO(프로세스 데이터 객체) 전송 및 수신
- SDO(서비스 데이터 객체)를 통한 설정 변경
- NMT(네트워크 관리) 명령 처리
- Heartbeat 및 Node Guarding 기능 지원
개발 환경 구축
CANOpen Slave 개발을 위해 다음과 같은 환경이 필요합니다.
- 하드웨어: STM32F429 개발 보드, CAN 트랜시버 (MCP2551 등), CAN 분석기
- 소프트웨어: STM32CubeIDE, STM32CubeMX, CANOpenNode (오픈소스 CANOpen 스택)
STM32CubeMX 설정
CAN 주변 장치 활성화
- CAN1 또는 CAN2 활성화
- CAN 속도(baud rate) 설정 (예: 125kbps, 250kbps, 500kbps 등)
- 필터 설정 (모든 메시지 수신 또는 특정 ID만 수신 가능하도록 설정)
GPIO 설정
- CAN RX/TX 핀을 설정 (STM32F429의 경우, 기본적으로
PA11
및PA12
사용 가능)
- CAN RX/TX 핀을 설정 (STM32F429의 경우, 기본적으로
클럭 설정
- CAN을 위한 적절한 클럭 설정 (APB1 클럭 확인 필요)
코드 생성 및 프로젝트 열기
- HAL 라이브러리를 활용한 기본 코드 생성
- 프로젝트를 STM32CubeIDE에서 열고 코드 수정
CANOpenNode를 활용한 Slave 개발
CANOpenNode는 오픈소스 CANOpen 스택으로, STM32 MCU에서 실행할 수 있도록 포팅할 수 있습니다.
CANOpenNode 다운로드 및 설정
- CANOpenNode GitHub 저장소에서 코드 다운로드
device
폴더 내에 STM32 프로젝트 생성CO_driver
파일 수정하여 STM32 HAL 드라이버에 맞게 변경
Slave 기본 기능 구현
SDO 서버 설정
- SDO 서버를 통해 파라미터 읽기/쓰기 기능 추가
- 객체 사전(Object Dictionary)에 필요한 변수 정의
PDO 통신 구현
- TPDO (Transmit PDO) 및 RPDO (Receive PDO) 설정
- 자동 전송 모드 또는 이벤트 기반 전송 설정
NMT 상태 관리
- NMT 명령을 수신하여
Pre-Operational
,Operational
,Stopped
상태 전환 구현
- NMT 명령을 수신하여
Heartbeat 및 Node Guarding 설정
- Heartbeat 메시지 전송 구현
- Node Guarding 방식으로 슬레이브 상태 모니터링 기능 추가
CANOpen Slave 테스트 및 디버깅
CAN 분석기를 사용하여 메시지 확인
- 슬레이브 장치가 올바른 CANOpen 메시지를 송수신하는지 확인
- SDO 요청에 대한 응답 확인
PDO 데이터 모니터링
- TPDO 데이터가 올바르게 전송되는지 확인
- RPDO를 통한 입력 데이터 변경 테스트
NMT 및 Heartbeat 테스트
- NMT 명령에 따라 상태가 정상적으로 변경되는지 검증
- Heartbeat 메시지가 주기적으로 전송되는지 확인
마무리
본 장에서는 STM32 MCU를 활용하여 CANOpen Slave 장치를 개발하는 방법을 설명하였습니다.
728x90
반응형
'CAN > CAN Open' 카테고리의 다른 글
CANopen NMT 명령을 통한 노드 제어 (0) | 2025.08.14 |
---|---|
CANOpen Master 개발 (STM32 및 C 기반) (0) | 2025.08.12 |
CANOpen STM32F429를 이용한 모터 제어 CiA 402 프로파일 (0) | 2025.08.11 |
CANOpen 노드 구성 및 테스트(STM32F429 활용) (0) | 2025.08.10 |
CANOpen 네트워크 테스트 및 디버깅 (0) | 2025.08.09 |