Jefferson Lab의 인력 안전 강화 사례 - MATLAB & Simulink

기술 칼럼

입자 가속기 시설의 인력 안전 시스템 구현

작성자: Paul Metcalf, Jefferson Lab


“우리는 이 작업에 Simulink를 선택했는데, 그 이유는 그래픽 기능을 모델링하고 논리적으로 올바른 디자인을 구현하기 전에 검증해주는 성숙하고 빠르며 잘 지원되는 방법을 제공하기 때문입니다. 또한 Simulink Design Verifier를 사용하면 다른 요구사항과 함께 모든 프로그램 기능의 100% 테스트 커버리지를 달성하여 설계가 안전함을 입증할 수 있습니다."

JLab(Thomas Jefferson National Accelerator Facility)은 미국 에너지부 과학국 산하 국립 연구소입니다. 이곳에는 핵물리학의 기초 연구를 수행하는 데 사용되는 전자빔을 생성하는 CEBAF(연속 전자빔 가속기 시설)이 있습니다. 시작부터 끝까지 전자는 시설의 경주로 설계를 따라 최대 5바퀴 반을 돌며 최대 120억 전자볼트(12GeV)까지 가속됩니다.

시설에서 근무하는 직원의 위험을 ALARA("as low as (is) reasonably achievable": 합리적으로 달성 가능한) 수준으로 최소화하기 위해, JLab SSG(안전 시스템 그룹)는 엔지니어드 PSS(인력 안전 시스템)을 설계, 운영 및 유지 관리합니다. PSS는 즉발 이온화 방사선에 대한 노출 방지를 비롯한 다양한 안전 기능을 담당합니다.

PSS는 직원이 안전 위험이 있을 수 있는 구역으로의 출입을 통제하는 데 도움이 됩니다. 예를 들어, 빔이 작동하는 동안 가속기의 터널 시스템 내에는 몇 가지 심각한 안전 위험이 존재합니다. 여기에는 이온화 방사선과 비이온화 방사선, 레이저 방사선, 터널 아크 주위로 빔을 재순환시키는 데 사용되는 전자석에 노출된 고전압 전기 전도체가 포함됩니다. (그림 1) 최악의 경우, 즉발 이온화 방사선에 노출되면 몇 분 안에 치사선량에 도달할 수 있습니다. PSS는 빔 작동 전에 직원들이 가속기 터널 시스템 구역에 없는지 확인하고, 빔 작동이 완료될 때까지 직원들이 해당 구역에 물리적으로 들어갈 수 없도록 하는 데 도움이 됩니다.

CEBAF의 지하 터널 아크 중 하나를 바라본 모습. 연구에 사용되는 가속기 인프라가 보입니다.

그림 1. CEBAF의 지하 터널 아크 중 하나의 내부.

PSS는 현재 모든 소프트웨어 기능을 아예 처음부터 다시 작성하는 등 대대적인 업그레이드를 진행 중입니다. 우리는 PSS용 소프트웨어를 개발하기 위해 IEC 61131의 FBD(Function Block Diagramming)이라는 그래픽 언어를 선택했습니다.

Simulink®를 사용한 모델 기반 설계는 PSS 소프트웨어를 구축하는 데 사용하는 구현 및 검증 워크플로에서 중심적인 역할을 합니다. PSS의 모든 기능은 먼저 Simulink에서 모델링된 다음 Simulink Design Verifier™에서 생성한 테스트 케이스를 사용하여 시뮬레이션됩니다. 이 작업에 Simulink를 선택한 이유는 그래픽 기능을 모델링하는 데 필요한 성숙하고 빠르며 잘 지원되는 방식을 제공하고, 구현에 앞서 설계가 논리적으로 올바른지 검증하기 때문입니다. 또한, Simulink Design Verifier를 사용하면 프로그램 기능의 모든 100% 테스트 커버리지를 포함한 여러 요구사항을 달성하여 설계가 안전함을 입증할 수 있습니다.

기능 테스트, 산술 오류 검사(예: 정수 범위 위반), 커버리지 분석을 포함한 모든 필수 설계, 테스트, 안전 라이프사이클 활동을 단일 환경에서 완료할 수 있는 기능은 상당한 이점입니다.

범위와 복잡도의 과제

PSS는 안전 무결성 수준 3 위험의 두 가지 범주, 즉 접근 제어 위반과 빔 제어 위반을 감지하고 대응하도록 설계되었습니다. 이는 본질적으로 같은 동전의 양면입니다. 시작 이벤트는 다르지만 두 가지 유형의 위반 모두 사람과 빔 사이의 분리가 손실되는 결과를 낳습니다. 접근 통제 위반 시 사람들이 시설 내의 배제 구역에 들어가는 경우 모든 위험 요소는 몇 초 이내에(즉, 사람들이 터널 아래층에 도달하기 전에) 차단되어야 합니다. 빔 제어 위반 시, 빔이 접근 가능한 구역으로 잘못 조종되거나 접근 가능한 구역에 격리를 제공하는 빔 정지 장치로 조종될 수 있습니다. 빔의 전력이 매우 높기 때문에(100만 와트) 후자의 시나리오에서는 빔을 불과 몇 밀리초 내에 꺼야 합니다.

PSS를 설계하고 검증하는 과제는 시스템의 복잡성과 규모로 인해 더욱 복잡해집니다. PSS는 시설의 9개 세그먼트에 분산된 2,200개 이상의 I/O 채널(센서 및 액추에이터 포함)로 구성됩니다. 각 구역은 서로 연결된 문과 게이트로 분리되어 있습니다. 각 세그먼트의 PSS는 Siemens® 1500 Series 안전 PLC 기반의 이중 중복 안전 시스템으로 구성됩니다.

이 시스템은 모두 18개의 분산형 안전 PLC와 200개의 PLC 간 통신 채널을 포함하고 있으며, 이를 통해 데이터를 교환합니다. 매 클록 사이클마다 약 2,000개의 센서에서 수집된 데이터가 읽혀지고 이를 처리하기 위해 광섬유 케이블을 통해 주 제어 센터로 전송됩니다. 결과가 계산되면 현장으로 다시 전송되어 다양한 경고 및 종료 장치를 제어합니다. 이 전체 주기는 단 몇 밀리초 만에 완료되고 지속적으로 실행됩니다. PSS 내부의 코드 중 약 50%는 진단 및 자체 모니터링 목적(즉, 오류 감지)으로 사용됩니다.

이 규모의 제어 시스템을 구축하려면 상당한 엔지니어링 투자가 필요합니다. 그러나 동일한 기능을 구현할 때 안전 시스템은 비안전 시스템보다 3~10배 더 많은 비용이 들 수 있습니다. FBD 언어를 사용하여 Siemens 안전 PLC를 타겟팅하면 Simulink PLC Coder™를 사용하여 Simulink 모델에서 직접 IEC 61131 구조화된 텍스트를 생성할 수 없습니다. 대신 모든 기능 블록은 PLC 개발 및 배포에 사용되는 Siemens 통합 개발 환경인 TIA Portal의 기능 블록 다이어그램 언어를 사용하여 수동으로 다시 구현하기 전에 Simulink에서 먼저 설계 및 검증되었습니다. (그림 2)

그림 2. 설계는 TIA Portal(두 번째)에서 구현되기 전에 Simulink(첫 번째)에서 모델링됩니다.

기존 워크플로의 확장 및 개선

PSS의 범위와 복잡성을 고려하여 기존 개발 워크플로를 최적화하는 방법을 살펴봐야 했습니다. 기존 워크플로에서는 Simulink에서 함수 블록의 동작이 정의되면 입력 벡터(자극)와 출력 벡터(목적)를 포함하여 Simulink에서 테스트 케이스를 정의해야 합니다. 테스트 케이스는 Simulink Test™를 사용하여 실행되고, 테스트 커버리지는 Simulink Coverage™를 사용하여 측정됩니다. (그림 3, 경로 1)

설계, 구현 및 기능 단위 검증 워크플로에 대한 여러 경로를 보여주는 플로우 차트입니다.

그림 3. 기능 단위의 설계, 구현, 검증을 위한 기존(경로 1), 더 나은(경로 2a), 새로운(경로 2b) 워크플로를 보여주는 플로우 차트입니다.

이 접근 방식에는 두 가지 주요 문제가 있습니다. 첫째, 모든 기능에 대한 테스트 사례를 수동으로 생성하는 작업은 경험이 풍부한 테스트 엔지니어에게조차도 매우 시간이 많이 걸릴 수 있습니다. 둘째, 테스트가 테스트 중인 기능에 대해 100% 커버리지를 달성하지 못하는 경우, 이것이 함수 자체의 설계 오류 때문인지 아니면 더 많은 테스트를 정의하고 실행해야 하는 테스트 방법의 결함 때문인지 판단하기가 매우 어려울 수 있습니다.

이러한 문제를 해결하기 위해 Simulink Design Verifier를 사용하여 100% 커버리지를 달성하는 테스트 케이스(정형 기법 사용)를 자동으로 생성했습니다. 이렇게 하면 테스트 케이스를 수동으로 정의하는 작업이 없어집니다. 또한 테스트 중인 함수의 설계 오류를 감지하는 방법에 대한 문제도 해결합니다. Simulink Design Verifier에서 100% 커버리지를 달성할 수 없는 경우 함수 자체에서 설계 오류가 발생한 위치를 강조 표시합니다. 이 워크플로는 기존 방식(그림 3, 경로 2a)에 비해 상당히 개선되었습니다.

Simulink Design Verifier를 사용하면 상당한 이점을 얻을 수 있지만, 새로운 작업이 필요합니다. 전통적인 방법에서는 테스트 엔지니어가 일반적으로 테스트 케이스를 개발하면서 원하는 기능적 동작(목표)을 암묵적으로 설계합니다. 테스트를 통과하면 해당 함수는 정상적으로 동작한다고 합니다. 그러나 자동 테스트 케이스 생성기를 사용하는 경우, 정식 알고리즘은 올바른 논리적 동작이 무엇인지 전혀 알지 못합니다. 이러한 이유로 Simulink Design Verifier에서 생성된 테스트 사례(및 해당 결과)를 동작 정확성을 위해 검토할 필요가 있습니다. 즉, 생성된 테스트를 검토하여 기능이 의도한 대로 동작하는지 확인해야 합니다.

이는 타이밍 다이어그램을 사용하여 테스트 사례(예상 출력과 함께)를 직접 검토하거나 테스트 사례를 시뮬레이션하고 모델 자체에서 시간 기반 시뮬레이션 결과를 관찰하는 방식으로 수행할 수 있습니다. 두 옵션 모두 다소 복잡하고 오류가 발생하기 쉽습니다. 특히 함수에 입력과 출력이 많은 경우 더욱 그렇습니다. 이런 테스트를 하려면 Simulink가 설치된 환경에서 숙련된 테스트 엔지니어가 필요하며, 검토할 기능이 많은 경우 검토 맹목증이 발생할 가능성이 높습니다.

우리는 회의 스타일 환경에서 그룹이 디자인 검토를 수행하는 데 관심이 있었기 때문에 다음과 같은 개념을 개발하고 있습니다. 동작 검증 체크리스트소프트웨어 기능의 동작 정확성을 검증하기 위해. 우리는 Simulink 테스트 사례를 절차적 형식으로 변환하는 MATLAB® 스크립트를 만들어 기존 타이밍 다이어그램보다 더 빠르고 쉽게 읽고 해석할 수 있도록 해줍니다. (그림 3, 경로 2b)

동작 검증 체크리스트 자세히 살펴보기

새로운 워크플로의 핵심 측면은 엔지니어가 타이밍 다이어그램을 읽거나 시뮬레이션을 실행하지 않고도 체크리스트를 사용하여 기능 블록의 동작 정확성을 검토할 수 있는 기능입니다. 이러한 방법은 시간이 많이 걸리고 오류가 발생하기 쉽습니다. 특히 I/O 수가 많을 때 그렇습니다. 이 문제를 해결하기 위해, 검토자가 가장 관심을 갖는 정보에 초점을 맞춰 간결하고 읽기 쉬운 동작 검증 체크리스트가 개발되었습니다. 엔지니어는 이러한 체크리스트를 독립적으로 또는 그룹으로 사용하여 각 기능 블록을 평가하고 Simulink 정기적으로 사용하지 않거나 설치하지 않은 경우에도 입력 자극의 변화에 ​​어떻게 반응하는지 확인할 수 있습니다. (표 1) 이를 통해 설계 검토 프로세스에 더 많은 주제 전문가가 참여할 수 있으며 테스트 엔지니어의 부담이 줄어듭니다. 결과는 여러 사람이 오프라인에서 검토하므로 논리적 오류를 발견할 가능성이 높아집니다. 체크리스트는 Simulink 테스트 케이스의 MATLAB 스크립트를 사용하여 자동으로 생성되며, 테스트 케이스는 Simulink Design Verifier를 사용하여 자동으로 생성됩니다.

단계 시간 입력값 출력값 확인
1 0
  1. TEST_INITIAL_CONDITIONS = FALSE
  2. TEST_CONFIGURED = TRUE
  3. TEST_REQUESTED = FALSE
  4. TEST_CONTINUOUS_CONDITIONS = TRUE
  5. MINIMUM_TEST_DURATION = 74
TEST_OUTPUT = FALSE  
2 400
  1. TEST_CONFIGURED = FALSE
  2. TEST_CONTINUOUS_CONDITIONS = FALSE
  3. MINIMUM_TEST_DURATION = 0
NO CHANGE  
3 600
  1. TEST_REQUESTED = TRUE
NO CHANGE  
4 800
  1. TEST_REQUESTED = FALSE
NO CHANGE  
5 1000
  1. TEST_INITIAL_CONDITIONS = TRUE
NO CHANGE  
6 1200
  1. TEST_CONFIGURED = TRUE
NO CHANGE  
7 1400
  1. TEST_REQUESTED = TRUE
  2. TEST_CONTINUOUS_CONDITIONS = TRUE
TEST_OUTPUT = TRUE  
8 1600
  1. TEST_INITIAL_CONDITIONS = FALSE
  2. TEST_CONFIGURED = FALSE
  3. TEST_REQUESTED = FALSE
  4. MINIMUM_TEST_DURATION = 2147483392
NO CHANGE  
9 2000
  1. TEST_REQUESTED = TRUE
  2. TEST_CONTINUOUS_CONDITIONS = FALSE
  3. MINIMUM_TEST_DURATION = 31
TEST_OUTPUT = FALSE  
표 1. 액추에이터 테스트에 사용되는 함수 블록에 대한 MATLAB 스크립트를 통해 생성된 절차적 체크리스트의 예입니다.

TIA Portal로 Simulink Test 케이스 가져오기

워크플로의 마지막 섹션에서는 대상 PLC 환경에서 기능 블록을 다시 구현하고 테스트합니다. 두 번째 MATLAB 스크립트를 사용하여 Simulink 테스트 케이스를 Siemens 테스트 케이스 파일(확장자가 .TAT인 텍스트 파일)로 변환합니다. (그림 4) 또한 Simulink의 기능 블록 설계를 TIA Portal로 변환합니다. 마지막으로 Siemens PLCSIM과 Test Suite Advanced를 사용하여 PLC 코드에서 변환된 테스트 케이스를 실행하여 대상에서의 동등성을 확인합니다.

TEST_CASE “TEST_OUTPUT_TEST_CASE_1”
 
PROPERTY
AUTHOR : “METCALF”
VERSION : “1.0”
COMMENT : “Test Case 1 for TEST_OUTPUT function block.”
SCOPE : “PSS_PLC”
END_PROPERTY
 
VAR
TEST_INITIAL_CONDITIONS : TEST_OUTPUT_IDB.TEST_INITIAL_CONDITIONS := FALSE;
TEST_CONFIGURED : TEST_OUTPUT_IDB.TEST_CONFIGURED := TRUE;
TEST_REQUESTED : TEST_OUTPUT_IDB.TEST_REQUESTED := FALSE;
TEST_CONTINUOUS_CONDITIONS : TEST_OUTPUT_IDB.TEST_CONTINUOUS_CONDITIONS := TRUE;
MINIMUM_TEST_DURATION : TEST_OUTPUT_IDB.MINIMUM_TEST_DURATION := T#74ms;
TEST_OUTPUT : TEST_OUTPUT_IDB.TEST_OUTPUT;
END_VAR
 
STEP : “STEP_1”
RUN(CYCLES := 1);
ASSERT.Equal(TEST_OUTPUT,FALSE);
RUN(CYCLES := 399);
END_STEP
 
STEP : “STEP_2”
TEST_CONFIGURED := FALSE;
TEST_CONTINUOUS_CONDITIONS := FALSE;
MINIMUM_TEST_DURATION := T#0ms;
RUN(CYCLES := 1);
ASSERT.Equal(TEST_OUTPUT,FALSE);
RUN(CYCLES := 199);
END_STEP
 
STEP : “STEP_3”
TEST_REQUESTED := TRUE;
RUN(CYCLES := 1);
ASSERT.Equal(TEST_OUTPUT,FALSE);
RUN(CYCLES := 199);
END_STEP
. . . 
. . . 
. . . 
END_TEST_CASE

그림 4. Simulink 테스트 케이스를 기반으로 MATLAB 스크립트로 생성된 Siemens 테스트 케이스의 일부입니다.

다른 프로젝트로 워크플로 배포 및 적용

PSS와 같은 높은 무결성 안전 시스템은 소프트웨어 오류로 인해 안전하지 않거나 심지어 치명적인 결과가 초래될 위험을 최소화하기 위해 엄격한 개발 워크플로가 필요합니다. 중복된 처리 장치에 소프트웨어 구성 요소를 복제하면 모든 오류가 공통 원인(CC)이 되어 위험이 더욱 커집니다. 이러한 이유로 IEC 61508은 소프트웨어를 통해 안전 시스템에 체계적인 오류가 발생하는 것을 방지하는 데 큰 중점을 둡니다. 모델 기반 설계와 새로운 워크플로를 통해 우리는 다음과 같은 성과를 달성했습니다. 체계적인 능력—IEC 61608에 정의된 대로—안전하고 오류 없는 시스템을 구현했다는 매우 높은 수준의 보증을 제공합니다.

현재 우리는 업그레이드된 PSS를 남은 가속기 세그먼트에 배포하는 마지막 단계에 있으며(그림 5), 2024년 가을에 완료될 예정입니다. PSS를 완료한 후, 다음 개발 우선순위 중 하나는 기계 보호 시스템의 일부인 BLM(빔손실 모니터링) 시스템을 업그레이드하는 것입니다. 이 프로젝트에서는 PSS에 사용된 것과 매우 유사한 워크플로를 사용할 계획입니다. 하지만 BLM 시스템의 대상이 FPGA라는 점을 감안하여 HDL Coder™ 사용하여 Simulink 모델에서 직접 합성 가능한 HDL 코드를 생성하고 대상에서 수동 코딩을 거의 완전히 피할 계획입니다. 또한 HDL Verifier™ 의 Hardware-in-the-Loop 기능을 사용하여 온디바이스 검증 및 확인 워크플로를 단순화하고 가속화하고자 합니다.

CEBAF의 빔 경로를 보여주는 PSS 모니터링 디스플레이의 스크린샷입니다.

그림 5. CEBAF의 빔 경로를 보여주는 PSS 모니터링 디스플레이.

2024년 기고