시작 실행 파일이 컨트롤러 리셋 시 Real-Time(RT) 타겟에서 시작되지 않음

업데이트 됨 Dec 5, 2018

해당 제품

Hardware

  • Industrial Controller
  • CompactRIO Chassis
  • PXI Controller

Software

  • LabVIEW Real-Time Module

Operating System

  • NI Linux Real-Time
  • PharLap
  • VxWorks

문의사항

다음 문제 중 하나가 발생합니다.
  • 컨트롤러에 임베디드 된 시작 실행 파일(.exe)이 있는 Real-Time 시스템이 있습니다. 컨트롤러를 재부팅 할 때 .exe가 전혀 실행되지 않거나 잘못 실행되고 있는 것 같습니다.
  • Real-Time 실행 파일이 충돌하는 것 처럼 보입니다. Error Log File을 확인하면 다음과 같이 표시됩니다.


이 문제의 원인은 무엇입니까?

해결책

시작시 실행 파일이 실행되지 않을 수있는 여러 가지 문제가 있습니다. 시스템에 적용 가능한 설정에 대한 아래의 문제 해결 단계를 수행하십시오.
  • Real-Time 어플리케이션이 시작 응용 프로그램(Startup application)으로 설정되어 있는지 확인하십시오.
    • LabVIEW 프로젝트 내에서 어플리케이션을 오른쪽 클릭하고 아래의 그림 1과 같이 Start as startup 을 선택하십시오.
      • 실행 파일이 Run as startup으로 설정되면 지정된 빌드가 녹색 상자로 묶여 있음을 알 수 있습니다.
    • Run as startup을 선택하면, LabVIEW는 디바이스 재시작 여부를 묻습니다. 컨트롤러가 재부팅되면 어플리케이션이 시작될 때 로드됩니다.

그림 1 : LabVIEW 프로젝트에서 어플리케이션을 startup으로 설정
 
  • 제품 매뉴얼을 참조하여 NOAPP DIP 스위치가 있는지 확인하십시오. 만약 스위치가 있다면 Physical NOAPP DIP 스위치가 'OFF'로 설정되어 있는지 확인하십시오.
    • 해당하는 경우 하드웨어 DIP 스위치를 찾아 'off'위치로 변경하고 컨트롤러를 재부팅하십시오.
      • 일부 Real-Time 컨트롤러에는 일반적으로 "NOAPP"라고하는 기능을 제어하는 ​​실제 DIP 스위치가 있거나 어플리케이션 모드가 없습니다. 이 스위치가 "ON"위치에 있으면, LabVIEW Real-Time은 EXE를 자동으로 실행하지 않습니다.
  • 타겟의 시스템 설정 에서 NI MAX에서 RT 시작 앱 비활성화 가 선택되어 있지 않은지 확인하십시오.
    • 일부 디바이스는 하드웨어 DIP 스위치를 사용하는 반면, 다른 디바이스는 NI MAX의 디바이스에 대한 시스템 설정 의 구성 설정을 사용합니다. 제품 메뉴얼을 참조하여 디바이스가 사용하는 방법을 확인하십시오.
  • 디바이스의 IP 설정을 확인하십시오. 해당 디바이스가 네트워크에 연결되어 있지 않으면 DHCP 서버에서 IP 주소를 가져 오도록 설정하면 안됩니다.
    • 노트 : 이 단계는 Phar Lap ETS 및 VxWorks 컨트롤러에만 해당됩니다. (Real-Time Controllers and Real-Time Operating System Compatibility 참고)
    • 컨트롤러에 고정 IP 주소를 설정하려면 다음과 같이 하십시오.
      • NI Measurement & Automation Explorer (MAX)의 원격 시스템 에서 디바이스를 감지하십시오.
      • 시스템 셋팅을 열고 IP 장애시 중지(Halt on IP failure) 항목을 해제하십시오.
      • 네트워크 셋팅을 열고 고정 IP 주소를 할당하십시오.
    • 노트 : 컨트롤러가 DHCP 서버에서 IP 주소를 가져 오도록 설정된 경우 EXE는 컨트롤러가 유효한 IP 주소를 얻을 수 있을 때만 시작됩니다. 네트워크 연결 없이 부팅 할 때 시스템을 시작해야하는 경우 정적 IP를 설정할 수 있습니다. 네트워크 연결 가용성에 관계없이 컨트롤러를 리셋하면 시작 EXE가 시작됩니다.

 

  • 프런트패널 객체 또는 VI 프로퍼티를 참조하는 모든 프로퍼티 노드를 제거하십시오. 대부분의 경우 프런트 패널 객체와 프로퍼티(예 : 윈도우 위치)를 참조하는 프로퍼티 노드를 사용하면 Real-Time 어플리케이션 파일을 컴파일 할 때 VI의 프런트 패널이 제거되므로 Real-Time 어플리케이션이 실행되지 않습니다.
    • 일부 임베디드 UI 지원 타겟의 경우 임베디드 UI 활성화(Enable Embedded UI)를 설정하면 프런트패널 객체를 참조하는 프로퍼티 노드를 사용할 수 있습니다. (Which Real-Time Targets Support Embedded UI? 참고)
    • 프런트패널 객체를 참조하는 프로퍼티 노드를 제거할 수 없고 임베디드 UI를 활성화 할 수 없는 경우, 디버깅을 활성화하여 빌드에 프런트패널을 포함 할 수 있습니다.
      • 빌드 스펙을 여십시오.
      • Advanced 탭으로 이동하십시오.
      • 아래의 그림 2와 같이 디버깅 활성화(Enable debugging)를 선택하십시오.
      • 노트 : 이렇게하면 어플리케이션의 프런트패널을 포함하고 실행하는 데 필요한 추가 처리로 인해 Real-Time 컨트롤러의 시스템 리소스 사용률이 증가합니다.

그림 2 : EXE 빌드에 어플리케이션의 프런트패널을 포함하도록 디버깅 활성화

 

  • 아래 그림 3의 예처럼 어플리케이션의 시작 시퀀스에 30-60 초의 기다림(Wait) 함수를 포함 시켜서 시작 어플리케이션이 실행을 시도하기 전에 RT OS가 필요한 모든 서비스를 시작할 수 있는지 확인하십시오.

그림 3 : RT 코드를 실행하기 전에 기다림 시퀀스 구조 추가
 
  • 노트 : 이 동작은 실행을 시작하기 전에 여러 백그라운드 프로세스를 로드해야 하는 대규모 어플리케이션에서도 발생할 수 있습니다. 이러한 상황에서는 어플리케이션이 실행되기 전에 RT OS가 필요한 모든 서비스를 시작할 수 없으며 (일반적으로 첫 번째 부분은 Open FPGA VI 참조), 시스템이 중단되거나 충돌할 수 있습니다. 이는 일반적으로 하이브리드 모드에서 RIO를 사용할 때 발생하며 스캔 인터페이스가 로드되기 전에 FPGA가 호출될 때 종종 발생합니다. 이 상황에서 해결 방법은 어플리케이션의 시작 시퀀스에 기다림(Wait) 함수를 포함시켜 CPU에 과부하가 발생하지 않고 컨트롤러가 로드를 완료 할 수있게 하는 것입니다.
  • Linux RT 타겟을 사용하는 경우 대상에서 실행중인 요소 이름 (VI, 라이브러리, 공유 변수 등)의 모든 특수 문자를 삭제하십시오. 이것은 Linux RT가 특수 문자를 처리 할 수 ​​없기 때문입니다.
  • RT 어플리케이션에서 타입 정의를 제거하십시오.
    • LabVIEW 프로젝트에서 EXE를 오른쪽 클릭하여 Application 프로퍼티(Application Properties)를 엽니다.
    • Additional Exclusions 탭으로 이동하고 아래 그림 4와 같은 타입 정의 연결 끊기(Disconnect type definitions) 를 선택하십시오.
    • 노트 : 타입 정의는 소스 코드를 보존하는 데 사용됩니다. 그러나 실행 파일을 작성/실행할 때 타입 정의는 우선 순위가 아닙니다. 이 경우 메모리 사용을 보존하기 위해 타입 정의의 연결을 끊을 수 있습니다. LabVIEW가 다른 타입 정의간에 충돌을 감지 할 때 또한 연결 해제 옵션을 문제 해결 단계로 사용합니다.

그림 4 : Application 프로퍼티에서 EXE 빌드의 타입 정의 연결 끊기
 
  • 컴파일에서 SSE2 최적화를 사용하는 경우 타겟이 SSE2 지침을 지원하는지 하기 링크로 확인하십시오. Verifying That Targer Hardware Supports SSE2 Instructions
    • 대상이 SSE2 최적화를 지원하지 않는 경우 Application 프로퍼티에서 이 옵션을 해제하십시오 .
    • Advanced 카테고리로 이동하고 그림 5와 같이 SSE2 최적화 사용(Enable SSE2 optimization)을 선택 해제 하십시오 .
    • 노트 : LabVIEW 2017 부터는 SSE2 최적화를 더 이상 비활성화 할 수 없습니다. LabVIEW 2017 및 이후 버전에서 SSE2를 지원하지 않는 타겟에 더 이상 RT EXE를 배포 할 수 없습니다.

그림 5 : Application 프로퍼티에서 SSE2 최적화 사용 해제

이 글이 도움이 되셨습니까?

도움 안됨