반응형

2025/07 61

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: ..

CANOpen PDO Mapping과 동작 방식

PDO Mapping과 동작 방식CANOpen 프로토콜에서 Process Data Object(PDO)는 실시간 데이터 교환을 위해 사용되는 주요 통신 객체입니다. PDO를 활용하면 슬레이브 장치 간의 데이터 전송을 효율적으로 수행할 수 있으며, 이를 통해 짧은 전송 지연과 높은 데이터 처리 속도를 제공합니다. 본 장에서는 PDO Mapping의 개념과 동작 방식을 상세히 분석합니다.PDO 개요PDO는 CANOpen 네트워크에서 빠른 데이터 교환을 위해 설계된 메시지이며, 일반적으로 센서 데이터, 상태 정보, 제어 명령과 같은 실시간 정보를 전송하는 데 사용됩니다. PDO는 두 가지 유형으로 구분됩니다.Transmit PDO(TPDO): 노드가 주기적으로 혹은 특정 이벤트 발생 시 데이터를 전송하는 객체..

CAN/CAN Open 2025.07.20

Python 메타클래스 이해하기

Python 메타클래스 이해하기Python 프로그래밍에서 메타클래스(metaclass)는 다소 생소한 개념이지만, 고급 Python 개발자가 알아두면 유용한 주제입니다. 메타클래스는 Python 클래스의 생성과 동작을 제어할 수 있는 강력한 도구로, 이를 잘 활용하면 더욱 강력하고 유연한 코드를 작성할 수 있습니다.1. 메타클래스란 무엇인가?간단히 말해, 메타클래스는 클래스를 생성하는 클래스입니다. Python에서 모든 객체는 클래스로부터 생성되며, 클래스 자체도 객체입니다. 클래스를 생성하는 객체가 바로 메타클래스입니다.클래스는 type에 의해 생성됩니다. 따라서 기본 메타클래스는 type입니다.메타클래스를 사용하면 클래스를 정의하거나 인스턴스화할 때 특정한 동작을 커스터마이징할 수 있습니다.예를 들어..

SDO (Service Data Object)와 PDO (Process Data Object)

SDO (Service Data Object)와 PDO (Process Data Object)SDO (Service Data Object)SDO(Service Data Object)는 CANOpen 프로토콜에서 노드 간에 설정 데이터나 진단 정보를 송수신할 때 사용되는 통신 객체입니다. SDO를 이용하면 마스터 장치는 슬레이브 장치의 Object Dictionary(OD)에 저장된 데이터를 읽거나 쓸 수 있습니다. 이는 장치의 설정값을 변경하거나 특정 상태를 조회하는 데 유용합니다.SDO 통신 방식SDO 통신은 클라이언트-서버 모델을 따르며, 클라이언트(일반적으로 마스터 장치)는 서버(슬레이브 장치)에게 특정 데이터를 요청하거나 변경하는 방식으로 동작합니다. SDO 전송은 다음 두 가지 방식으로 이루어집..

CAN/CAN Open 2025.07.19

Python 데코레이터와 제너레이터

Python 데코레이터와 제너레이터Python은 간결하고 강력한 문법으로 초보자부터 전문가까지 폭넓게 사용되는 언어입니다. 특히 Python의 고급 기능인 데코레이터와 제너레이터는 코드의 재사용성을 높이고, 효율적인 프로그램을 작성할 수 있도록 도와줍니다. 이번 포스팅에서는 데코레이터와 제너레이터의 기본 개념부터 실용적인 예제까지 살펴보겠습니다.데코레이터 (Decorator)데코레이터는 함수를 감싸서 새로운 기능을 추가하거나 동작을 수정하는 데 사용되는 고급 Python 기능입니다. 주로 코드를 더 간결하고 명확하게 만드는 데 유용합니다.데코레이터의 기본 구조데코레이터는 함수나 클래스에 적용될 수 있으며, 일반적으로 다음과 같은 구조로 작성됩니다:def decorator_function(original_..

CANOpen 데이터 타입 및 인덱스 구조

CANOpen 데이터 타입 및 인덱스 구조CANOpen 데이터 타입 개요CANOpen 프로토콜에서 데이터를 송수신할 때, 데이터의 해석과 처리는 정해진 데이터 타입에 따라 이루어집니다. CANOpen은 CiA(CAN in Automation) 표준에 따라 다양한 데이터 타입을 정의하고 있으며, Object Dictionary 내에서 이를 관리합니다.기본 데이터 타입CANOpen에서 사용되는 주요 데이터 타입은 다음과 같습니다:BOOLEAN (1비트): 참/거짓 값을 나타냅니다.INTEGER8, INTEGER16, INTEGER32, INTEGER64: 각각 8, 16, 32, 64비트의 정수형 데이터입니다.UNSIGNED8, UNSIGNED16, UNSIGNED32, UNSIGNED64: 각각 8, 16..

CAN/CAN Open 2025.07.18

PyInstaller로 실행 파일 만드는 방법

PyInstaller로 실행 파일 만드는 방법Python 스크립트를 배포 가능한 실행 파일로 만들기 위해 PyInstaller를 사용하는 방법에 대해 알아보겠습니다. PyInstaller는 Python 애플리케이션을 컴파일하여 하나의 실행 파일로 패키징할 수 있게 도와주는 유용한 도구입니다.1. PyInstaller 설치하기PyInstaller를 사용하려면 먼저 설치해야 합니다. 다음 명령어를 사용해 PyInstaller를 설치할 수 있습니다:pip install pyinstaller2. 기본적인 실행 파일 만들기다음 명령어로 Python 스크립트를 실행 파일로 만들 수 있습니다. 여기서는 example.py라는 파일을 예로 들겠습니다:pyinstaller example.py위 명령어를 실행하면 PyIn..

Python/Python 2025.07.17

CANOpen Object Dictionary 개념 및 역할

CANOpen Object Dictionary 개념 및 역할Object Dictionary란?Object Dictionary(객체 사전)는 CANOpen 프로토콜에서 중요한 데이터 구조로, 각 노드의 매개변수를 저장하고 관리하는 역할을 합니다. CANOpen 네트워크에서 모든 장치는 Object Dictionary를 통해 데이터를 주고받으며, 이를 통해 장치의 상태를 설정하고 모니터링할 수 있습니다.Object Dictionary는 각 노드마다 존재하며, 장치의 기능 및 동작 방식을 정의하는 변수, 매개변수, 및 서비스 정보를 포함하고 있습니다. 이러한 구조는 표준화된 방식으로 장치 간의 데이터 교환을 가능하게 하여 상호 운용성을 보장합니다.Object Dictionary의 역할데이터 저장 및 관리Obj..

CAN/CAN Open 2025.07.17
반응형