반응형

분류 전체보기 982

CANOpen EDS (Electronic Data Sheet)

CANOpen 장치 식별 및 설정CANOpen 네트워크에서 각 장치는 고유한 식별자를 가지며, 이를 통해 네트워크 내에서 원활한 통신을 수행할 수 있습니다. 장치 식별 및 설정 과정은 네트워크 내 모든 장치가 올바르게 인식되고 동작하도록 보장하는 중요한 단계입니다. 본 장에서는 CANOpen 장치의 식별 방식과 이를 설정하는 방법에 대해 살펴보겠습니다.CANOpen 장치 식별에는 노드 ID(Node ID)와 장치 프로파일(Device Profile) 등이 중요한 요소로 작용합니다. 노드 ID는 각 장치를 고유하게 구별하며, 이를 통해 특정 장치와의 통신이 가능합니다. 또한, 장치 프로파일을 활용하여 표준화된 기능을 제공함으로써 상호운용성을 보장할 수 있습니다.장치의 설정은 SDO(서비스 데이터 객체, S..

CAN/CAN Open 2025.07.25

Python `os`, `sys`를 활용한 시스템 관리

Python os, sys를 활용한 시스템 관리Python은 강력한 표준 라이브러리를 제공하며, 이 중 os와 sys 모듈은 시스템 관리 및 운영 체제와의 상호 작용에 매우 유용합니다. 이번 포스팅에서는 os와 sys 모듈의 주요 기능을 살펴보고, 실제 활용 가능한 예제를 통해 시스템 관리 작업을 어떻게 수행할 수 있는지 알아보겠습니다.1. os 모듈: 운영 체제와 상호 작용os 모듈은 파일 및 디렉터리 관리, 환경 변수 접근, 시스템 명령 실행 등 운영 체제와의 상호 작용을 제공합니다.주요 기능 및 예제(1) 현재 작업 디렉터리 확인 및 변경import os# 현재 작업 디렉터리 확인current_dir = os.getcwd()print(f"현재 작업 디렉터리: {current_dir}")# 작업 디렉..

CANOpen SYNC & TIME 메시지의 활용

CANOpen SYNC & TIME 메시지의 활용CANOpen 네트워크에서는 다양한 메시지를 활용하여 실시간 통신을 수행합니다. 이 중에서도 SYNC 메시지와 TIME 메시지는 네트워크 내 장치 간의 동기화 및 시간 관리를 위한 중요한 역할을 합니다. 본 장에서는 SYNC 및 TIME 메시지의 구조와 활용 방법에 대해 설명합니다.SYNC 메시지의 개요SYNC 메시지는 네트워크 내의 모든 노드가 일정한 주기로 동기화할 수 있도록 지원하는 메시지입니다. 일반적으로 마스터 노드에서 주기적으로 전송되며, 슬레이브 노드는 이를 수신하여 내부 프로세스를 동기화합니다.SYNC 메시지는 고정된 COB-ID(0x080)를 사용하며, 데이터 필드는 필요에 따라 0~1바이트를 포함할 수 있습니다. 주로 분산된 장치들이 동일..

CAN/CAN Open 2025.07.24

Python collections 모듈을 이용한 데이터 구조

Python collections 모듈을 이용한 데이터 구조Python은 내장 데이터 구조인 리스트, 튜플, 딕셔너리, 세트를 제공하여 다양한 데이터를 효과적으로 처리할 수 있도록 돕습니다. 그러나 Python의 표준 라이브러리에는 collections 모듈이라는 강력한 도구가 포함되어 있어, 이러한 데이터 구조를 확장하거나 대체할 수 있는 다양한 클래스가 제공됩니다.이 글에서는 collections 모듈의 주요 클래스와 이를 활용한 실용적인 예제를 살펴보겠습니다.1. namedtuple: 이름이 있는 튜플namedtuple은 일반 튜플에 이름을 부여하여 더 읽기 쉽고 구조적인 데이터를 다룰 수 있도록 돕습니다.사용법from collections import namedtuple# namedtuple 정의..

CANOpen의 EMCY (Emergency Message)와 사용법

CANOpen의 EMCY (Emergency Message)와 사용법EMCY 개요CANOpen 프로토콜에서 EMCY(Emergency Message)는 네트워크 내 장치가 치명적인 오류 상태를 감지했을 때 이를 즉각적으로 다른 노드들에게 알리는 메시지입니다. EMCY 메시지는 빠르게 전송되어 네트워크 내 다른 장치들이 이를 인식하고 적절한 조치를 취할 수 있도록 합니다.EMCY 메시지는 특정한 이벤트가 발생할 때만 전송되며, 일반적인 데이터 통신과 달리 주기적인 전송이 이루어지지 않습니다. 이를 통해 네트워크의 부하를 최소화하면서도 중요한 장애 상황을 빠르게 공유할 수 있습니다.EMCY 메시지 구조EMCY 메시지는 표준 CAN 프레임을 사용하며, 다음과 같은 구조를 가집니다.바이트 오프셋필드명설명0~1오..

CAN/CAN Open 2025.07.23

Python `datetime`과 시간 관리

Python 고급: datetime과 시간 관리Python의 datetime 모듈은 날짜와 시간을 다루는 강력한 도구를 제공합니다. 이 글에서는 datetime 모듈의 기본 사용법부터 고급 기능까지 살펴보고, 다양한 실전 예제를 통해 시간 관리를 더욱 효율적으로 할 수 있는 방법을 소개합니다.1. datetime 모듈 소개datetime 모듈은 다음과 같은 클래스를 제공합니다:datetime.date: 날짜를 표현하는 클래스.datetime.time: 시간을 표현하는 클래스.datetime.datetime: 날짜와 시간을 함께 표현하는 클래스.datetime.timedelta: 두 날짜/시간의 차이를 나타내는 클래스.datetime.timezone: 시간대 정보를 표현하는 클래스.2. 현재 날짜와 시간 ..

CANOpen Network Management (NMT) 상태 및 전이 과정

CANOpen Network Management (NMT) 상태 및 전이 과정CANopen 네트워크에서 각 노드는 특정한 상태(State)를 가지며, 네트워크 관리(Network Management, NMT) 서비스를 통해 상태 전이가 이루어집니다. NMT는 네트워크의 정상적인 운영을 보장하고, 장치의 상태를 관리하기 위한 중요한 역할을 수행합니다. 본 장에서는 CANopen 장치의 NMT 상태와 상태 전이 과정을 자세히 살펴보겠습니다.NMT 상태 개요CANopen 장치는 다음과 같은 NMT 상태를 가집니다.Initialization: 장치가 시작될 때 진입하는 상태로, 하드웨어 및 소프트웨어 초기화가 이루어집니다.Pre-operational: 장치가 초기화를 완료하고 네트워크에 참여할 준비가 된 상태입..

CAN/CAN Open 2025.07.22

Python 다중 스레드와 병렬 처리

Python 다중 스레드와 병렬 처리Python에서 다중 스레드와 병렬 처리는 고성능 애플리케이션을 개발할 때 매우 중요한 주제입니다. 이번 포스팅에서는 다중 스레드와 병렬 처리의 개념을 살펴보고, Python에서 이를 구현하는 방법을 다양한 예제와 함께 설명하겠습니다.다중 스레드란?다중 스레드는 하나의 프로세스 내에서 여러 실행 단위를 동시에 수행하는 기술입니다. 각 스레드는 독립적으로 실행되며, 같은 메모리 공간을 공유합니다. Python에서는 threading 모듈을 사용하여 다중 스레드를 구현할 수 있습니다.다중 스레드 기본 예제import threadingimport timedef print_numbers(): for i in range(1, 6): print(f"Number:..

CANOpen Heartbeat & Node Guarding

CANOpen 통신 기법CANOpen은 CAN(Controller Area Network) 기반의 산업용 네트워크 프로토콜로, 다양한 임베디드 장치 간의 원활한 통신을 가능하게 합니다. 이 장에서는 CANOpen에서 사용되는 주요 통신 기법을 상세히 분석하여, 실제 시스템 구현 시 필요한 개념과 기법을 이해하는 데 도움을 주고자 합니다.CANOpen 통신은 기본적으로 CAN 프로토콜을 기반으로 하며, 데이터 전송을 위해 다양한 메시지 유형과 통신 객체를 활용합니다. 이를 통해 네트워크 내 여러 노드 간의 신뢰성 높은 데이터 교환이 이루어지며, 실시간 제어와 모니터링이 가능합니다.이 장에서는 CANOpen 통신에서 핵심적인 역할을 하는 서비스와 프로토콜, 메시지 프레임 구조 등을 설명하며, 실제 STM32..

CAN/CAN Open 2025.07.21

Python 예외 처리 및 예외 클래스 생성

Python 예외 처리 및 예외 클래스 생성Python에서 예외 처리(Exception Handling)는 프로그램의 오류를 예외적으로 처리하여 중단되지 않고 원활히 실행되도록 하는 중요한 기능입니다. 오늘은 Python 예외 처리의 심화 내용과 예외 클래스를 직접 생성하여 활용하는 방법을 다룹니다.1. 예외 처리 기본Python에서는 try, except, else, finally 키워드를 사용하여 예외를 처리할 수 있습니다.기본 구조try: # 예외가 발생할 가능성이 있는 코드 x = int(input("숫자를 입력하세요: ")) result = 10 / xexcept ValueError: print("유효한 숫자를 입력하세요.")except ZeroDivisionError: ..

반응형