팜테크(FAMTECH)
[nCode] 파이썬과 연동해서 진동, 내구, 소음, 피로 분석(Python) #2 본문
[nCode] 파이썬과 연동해서 진동, 내구, 소음, 피로 분석(Python) #2
FAMTECH 2022. 7. 1. 10:51
목차
"관련제품 문의는 로고 클릭 또는 공지사항의 연락처를 통해 하실 수 있습니다."
앞시간에 간단하게 nCode에서 파이썬의 기본 예제 "Hello World" 출력에 대해 알아보았습니다(https://famtech.tistory.com/113). 이번 실습에서는 실제 측정한 가속도(Acceleration) 값을 파이썬을 사용해서 -1배 변환 출력하는 방법에 대해 알아보겠습니다.
상세 코드 분석은 팜테크 오프라인 교육으로 진행하니 관심 있으시면 참가신청 해주시면 됩니다.
nCode 가속도 값 파이썬 변환 목적 및 전체 구조
이번 프로젝트의 목적은 아래의 방법들에 대한 습득에 있습니다.
- nCode의 입출력, 메타(meta) 정보, 특성(attribute) 정보 파이썬(Python) Script에 연결하는 방법
- 파이썬(Python) 데이터 변경 방법
아래의 예제는 하나의 채널만 파이썬으로 변경하시면 현실에서 많은 채널에 몇가지 요소만 변경해서 사용하고 싶을 때 nCode 모듈로 설정하려면 많은 모듈을 사용해서 작업해야 하지만 파이썬의 경우 Script 모듈 하나로 처리가 가능 한 것이 Script의 장점입니다.
전체 구조는 위와 같습니다.
- 왼편의 Time Series 가속도 측정값을 Script 모듈과 연결
- Script에서 파이썬 코드를 통해 파형을 변환
- 변환된 그래프와 메타/특성 정보 테이블 출력
파이썬 코드 작성을 위한 Script 모듈은 GlyphBuilder 카테고리의 Scripting 모듈에서 사용 가능 합니다.
nCode 가속도 값 변환 파이썬 코드 분석
전체 코드>>
def glyphscript(es):
# Get input time series object from first TSIn pad
tsin = es.GetInputTimeSeries(0)
# Set output time series object for first TSOut pad
tsout = es.GetOutputTimeSeries(0)
# Set multiplication factor
factor = -1
# Now multiply the input channels by the factor
doMultiply(tsin, tsout, factor)
# All done - return to GlyphWorks without any error message
return ''
def doMultiply(tsin, tsout, factor):
# Find the number of input channels
numChans = tsin.GetChannelCount()
# Initialize the output channels
tsout.SetChannelCount(numChans)
# Copy the test attributes & meta data over
# -1 arguments on chanindex indicate test attributes and metadata instead of channel-specific
tsout.CopyAttributes(tsin, -1, -1)
tsout.CopyMetaData(tsin, -1, -1)
# Access the metadata object of the output time series so we can add our own metadata later
meta = tsout.GetMetaData()
# Loop all channels
iChan = 0
while iChan < numChans:
# Copy channel attributes and metadata from input channel to output channel
tsout.CopyAttributes(tsin, iChan, iChan)
tsout.CopyMetaData(tsin, iChan, iChan)
# Find number of datapoints in this channel
numPoints = tsin.GetPointCount(iChan)
# Loop through all data points in this channel
iPoint = 0
while iPoint < numPoints:
# Get a single time point's value for this input channel
oldValue = tsin.GetValue(iChan, iPoint)
# Perform multiplication
newValue = oldValue * factor
# Write new value to output channel
tsout.PutValue(iChan, iPoint, newValue)
# move on to point
iPoint = iPoint + 1
# Now add some meta data
meta.SetItem(iChan, 'ScriptProperties', 'Function', 'string', 'Multiply by a constant')
meta.SetItem(iChan, 'ScriptProperties', 'MultiplicationFactor', 'double', factor)
# move on to next channel
iChan = iChan + 1
코드 구성은 기본 파이썬과 다릅니다. nCode에서 제공하는 파이썬 Script는 외부에서 함수에 대한 정의와 실행을 자동으로 구현 하므로 함수(Function)에 대한 정의만으로도 구현이 가능 합니다.
위 코드는 크게 glyphscript라는 함수와 doMultiply라는 두개의 함수로 구성됩니다.
- glyphscript 함수: 입출력 값 정보 처리
- doMultiply 함수: 입력 정보를 받아 배수 처리
입출력에 필요한 nCode 파이썬 내장함수(Method)들에 대한 입력값 및 정의는 아래 그림과 같이 nCode 소프트웨어 매뉴얼에서 확인 가능 합니다.
상세 코드 분석 및 사용법은 팜테크 오프라인 교육에서 진행합니다.
'팜테크 제품 리뷰(Review) > HBM nCode' 카테고리의 다른 글
[nCode]FDS란? 수식 및 실습 (Fatigue Damage Spectrum) (0) | 2022.07.05 |
---|---|
[nCode]SRS란? 구현하기(Shock Response Spectra) (0) | 2022.07.04 |
[nCode] 파이썬과 연동해서 진동, 내구, 소음, 피로 분석(Python) #1 (0) | 2022.06.30 |
[nCode]회전 기계 Order Tracking, Waterfall 분석 (0) | 2022.06.29 |
[nCode]Strain값 측정 후 EN Curve로 Fatigue 분석(변형률, 피로도, Life) (0) | 2022.06.23 |