이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
안전성 분석 관리자 문서 분석을 위한 콜백 작성
안전성 분석 관리자에서 콜백을 사용하여 문서 상태를 분석하고 값을 재할당하거나 플래그를 추가하여 내용을 채울 수 있습니다. 콜백을 수동 또는 자동으로 실행할 수 있습니다.
콜백 생성
콜백을 생성하려면:
안전성 분석 관리자 문서를 열거나 생성합니다. 스프레드시트 작성에 대한 자세한 내용은 안전성 분석 관리자에서 스프레드시트 만들기를 참조하십시오.
분석 섹션에서 콜백 편집을 클릭합니다. 콜백 편집기 창이 열립니다.

다음 콜백 유형 중 하나 이상에 스크립트를 입력합니다.
콜백 유형 실행 시점 PreLoadFcn 스프레드시트를 불러오기 전에 PostLoadFcn 스프레드시트를 불러온 후 AnalyzeFcn 스프레드시트 분석을 클릭하거나 F5를 누를 때 PreSaveFcn 스프레드시트가 저장되기 전에 PostSaveFcn 스프레드시트가 저장된 후 CloseFcn 스프레드시트가 닫히기 전에 콜백을 저장하려면 콜백 편집기 창을 종료합니다.
콜백 편집기 창에서 수동으로 스크립트를 작성하거나, 경로상의 다른 MATLAB® 파일을 실행하는 스크립트를 작성할 수 있습니다.
AnalyzeFcn 콜백 유형에는 항상 활성화되어 있는 디폴트 콜백이 포함되어 있습니다. 활성화하거나 비활성화할 수 있는 사용자 정의 AnalyzeFcn 콜백을 추가할 수도 있습니다 (R2024a 이후). 안전성 분석 관리자 문서에 대한 사용자 지정 콜백 생성 및 선택 항목을 참조하십시오.
스프레드시트에서 외부에서 정의된 MATLAB 함수를 호출하는 도출 열을 사용하는 경우, 해당 함수를 업데이트해도 스프레드시트는 도출된 셀 값을 자동으로 새로 고치지 않습니다. 셀 값을 새로 고침한 후 AnalyzeFcn 콜백을 실행하려면 스프레드시트 분석 > 값을 새로 고치고 스프레드시트 분석를 클릭하십시오. (R2024b 이후)
키워드로 스프레드시트 수정하기
콜백을 사용하여 스프레드시트를 수정하려면, sfa_spreadsheet 키워드를 사용하여 Spreadsheet 객체를 가져옵니다. 예를 들어, 이 코드는 Spreadsheet 객체를 가져와 변수 x에 저장합니다.
x = sfa_spreadsheet;
MATLAB 파일을 작성하고 콜백에서 이를 호출하는 경우, 해당 파일들은 이 키워드를 사용할 수 없습니다.
문서에 플래그 추가하기
오류, 경고 및 체크를 시각적으로 표시하기 위해 플래그를 사용하십시오. 스프레드시트에서는 셀 (R2023b 이후)과 행 (R2024b 이후)에 여러 개의 플래그를 추가할 수 있습니다. 콜백을 사용하여 스프레드시트에 플래그를 추가할 수 있습니다.
콜백을 사용하여 스프레드시트에 플래그를 추가하려면 다음을 수행하십시오.
sfa_spreadsheet키워드를 사용하여Spreadsheet객체를 가져옵니다.getCell함수를 사용하여 셀을 가져오거나,getRow함수를 사용하여 행을 가져옵니다.getCell함수는 셀을SpreadsheetCell객체로 반환하고,getRow함수는 행을SpreadsheetRow객체로 반환합니다.객체에
addFlag함수를 사용하여 플래그를 추가합니다.
안전성 분석 관리자 스프레드시트는 다음 플래그를 지원합니다.
| 플래그 유형 | 설명 |
|---|---|
| 오류 | 오류 플래그. 오류 플래그가 설정된 셀과 행에는 오류 아이콘 이 표시됩니다. |
| 경고 | 경고 플래그. 경고 플래그가 설정된 셀과 행에는 경고 아이콘 이 표시됩니다. |
| 체크 | 체크 플래그. 체크 플래그가 설정된 셀과 행에는 체크 아이콘 이 표시됩니다. |
플래그를 추가하면 안전성 분석 관리자가 해당 플래그를 속성 창에 표시합니다. 스프레드시트 탭은 전체 스프레드시트의 셀을 표시하고, 행 탭은 선택된 행의 플래그를 표시하며, 셀 탭은 선택된 셀의 플래그를 표시합니다. 예를 들어 아래 이미지를 보면 안전성 분석 관리자 스프레드시트의 스프레드시트 탭에서 세 개의 플래그가 셀에 포함되어 있고 하나의 플래그가 행에 포함되어 있습니다.

AnalyzeFcn 파라미터에서 콜백을 실행할 때, 안전성 분석 관리자는 스크립트 실행 전에 문서에서 플래그를 지웁니다. 콜백을 실행하지 않고 플래그를 수동으로 지우려면, 분석 섹션에서 플래그 지우기를 클릭하십시오. 스프레드시트에서 개별 플래그를 지우려면, 속성 창에서 셀, 행 또는 스프레드시트 탭의 플래그 섹션에서 플래그 설명을 선택한 후 키보드의 Delete 키를 누르십시오. 여러 플래그를 삭제하려면 플래그 유형, 포함 열 또는 포함 행을 선택한 후 키보드에서 Delete를 누르십시오.
스프레드시트 콜백 예제
이 예제는 안전성 분석 관리자 스프레드시트에서 콜백을 실행하여 셀의 내용에 따라 해당 셀을 표시합니다. FMEA_spreadsheet_example.mldatx 파일을 열어 스프레드시트를 확인하세요.
이 스프레드시트는 혼합 용기의 용량 제어 장치에서 발생 가능한 고장을 평가하는 고장 모드 및 영향 분석(FMEA)입니다. 이 용기는 입구 펌프를 통해 액체를 흡입한 후 다른 제품과 혼합하고, 새로운 용액을 출구 펌프를 통해 배출합니다. 용기는 배출하는 액체량만큼 지속적으로 액체를 유입함으로써 안정적인 혼합 용량을 유지해야 합니다.

RPN 계산 검사
FMEA는 각 고장 모드, 그 원인 및 탐지 가능성에 대한 위험 우선순위 수치(RPN)를 계산함으로써 고장의 중요성을 평가합니다. 이 숫자는 RPN라는 도출된 열에 나타납니다. 열 수식을 확인하여 코드를 보십시오. 스프레드시트에서 열 레이블을 마우스 오른쪽 버튼으로 클릭한 다음 수식 편집을 클릭합니다.
이 열 공식은 연산자를 사용하여 Severity(중요도), Failure Probability(고장 확률), Detection Rating(탐지 등급) 열 값을 확인합니다. 도출 값 정의 항목을 참조하십시오. 열 값 중 하나 이상이 비어 있으면, 도출된 열이 메시지를 출력합니다. 그렇지 않으면 해당 열은 Severity, Failure Probability, Detection Rating 열의 값을 곱하여 RPN을 계산합니다.sfa_columnValue
if isempty(sfa_columnValue("Failure Probability")) ||... isempty(sfa_columnValue("Severity")) || ... isempty(sfa_columnValue("Detection Rating")) sfa_derivedValue = "Unable to calculate"; else fp = str2double(sfa_columnValue("Failure Probability")); s = str2double(sfa_columnValue("Severity")); d = str2double(sfa_columnValue("Detection Rating")); sfa_derivedValue = fp*s*d; end
콜백 검사
스프레드시트에는 스프레드시트를 분석할 때 실행되는 AnalyzeFcn 콜백이 포함되어 있습니다. 콜백을 열어 코드를 확인하세요. 분석 섹션에서 콜백 편집을 클릭하고 AnalyzeFcn을 선택합니다. 콜백을 실행하면 다음 조건에 따라 셀과 행에 플래그가 추가됩니다.
Verified 열의 셀이 확인되지 않은 경우, 해당 셀에 경고 플래그를 추가함.
Severity, Failure Probability 또는 Detection Rating 열의 셀에 값이 없는 경우, 해당 셀에 오류 플래그를 추가함.
Verified, Severity 또는 Failure Probability 열 중 하나 이상의 셀이 비어 있는 경우, 동일한 행의 RPN 열에 있는 해당 셀에 플래그를 추가하지 않음.
RPN 열의 셀 값이
100보다 클 경우, 해당 행에 오류 플래그를 추가함.RPN 열의 셀 값이
100이하이고35보다 클 경우, 해당 행에 경고 플래그를 추가함.RPN 열의 셀 값이
35보다 작거나 같으면 해당 행에 체크 플래그를 추가함.
for rowIndex = 1:sfa_spreadsheet.Rows % Get the cells to update failurePCells = getCell(sfa_spreadsheet,rowIndex,... "Failure Probability"); severeCells = getCell(sfa_spreadsheet,rowIndex,... "Severity"); detectCells = getCell(sfa_spreadsheet,rowIndex,... "Detection Rating"); updatedCells = getCell(sfa_spreadsheet,rowIndex,... "Failure Mode");
isVerifiedCells = getCell(sfa_spreadsheet,...
rowIndex,"Verified");
rpnCells = getCell(sfa_spreadsheet,rowIndex,"RPN");
rpnRows = getRow(rpnCells);% Flag rows that are not verified or rated if isVerifiedCells.Value == 0 addFlag(isVerifiedCells,"warning",Description=... "Failure mode has not been verified.") end if isempty(severeCells.Value) addFlag(severeCells,"error",Description=... "Failure mode needs severity rating.") end if isempty(failurePCells.Value) addFlag(failurePCells,"error",Description=... "Failure mode needs probability rating.") end if isempty(detectCells.Value) addFlag(detectCells,"error",Description=... "Failure mode needs detection rating.") end
% Evaluate RPN and assign flags if isempty(severeCells.Value) || ... isempty(failurePCells.Value) || ... isempty(detectCells.Value) continue elseif str2double(rpnCells.Value) > 100 addFlag(rpnRows,"error",Description=... "Risk Priority Number exceeds allowable amount." +... "Create a mitigation strategy.") elseif str2double(rpnCells.Value) <= 100 && ... str2double(rpnRows.Value) > 35 addFlag(rpnRows,"warning",Description=... "Risk Priority Number is high." +... "Consider a mitigation strategy!") elseif str2double(rpnCells.Value) <= 35 addFlag(rpnRows,"check",Description=... "Risk Priority Number is sufficiently low.") end end
스프레드시트 분석
스프레드시트 분석을 클릭하여 콜백을 실행하십시오.

다른 플래그 출력을 보려면 셀 값을 조정하고 분석을 다시 실행하십시오.
참고 항목
앱
객체
함수
addFlag|clear|clearFlags|getFlags