NI does not actively maintain this document.
This content provides support for older products and technology, so you may notice outdated links or obsolete information about operating systems or other relevant products.
이 페이지에는 리얼타임 어플리케이션 배포 (RTAD) 유틸리티의 아카이브 버전이 있습니다. 이후에 유틸리티의 이름이 복제 및 배포 (RAD, Replication and Deployment) 유틸리티로 바뀌었습니다. 이전 RTAD 및 RAD 버전의 다운로드 링크와 문서는 아래에서 확인할 수 있습니다. 새로운 설정 관리 작업을 시작하는 경우, RAD 유틸리티의 현재 버전을 사용하십시오. 복제 및 배포 (RAD) 유틸리티. 더 자세한 정보는 새로운 버전의 LabVIEW와 함께 RAD 유틸리티 사용하기 문서를 참조하십시오.
버전 2.1 – LabVIEW 2010으로 빌드됨
RTAD 어플리케이션 설치 프로그램: rtadu_2010_installer.zip
요구 사항: LabVIEW 2010 SP1 런타임 엔진, NI-RIO 드라이버
RTAD 소스 코드: rtadu_2010_source.zip
요구 사항: LabVIEW 2010 Full Development System, LabVIEW Real-Time 2010, 비동기 메시지 통신 (AMC) 참조 라이브러리
버전 1.0 – LabVIEW 2009로 빌드됨
RTAD 어플리케이션 설치 프로그램: rtadu_2009_installer.zip
요구 사항: LabVIEW 2009 SP1 런타임 엔진
RTAD 소스 코드: rtadu_2009_source.zip
요구 사항: LabVIEW 2009 Full Development System, LabVIEW Real-Time 2009, 비동기 메시지 통신 (AMC) 참조 라이브러리
참조 어플리케이션을 설치하려면 설치 프로그램 압축 파일 (Zip)을 빈 작업 디렉토리에 풀고 설치 프로그램 (setup.exe)을 실행하십시오. 설치 프로그램은 유틸리티의 컴파일된 실행 파일을 LabVIEW 프로젝트 디렉토리에 넣고 LabVIEW 환경의 도구 메뉴에서 사용할 수 있도록 해줍니다. 설치 프로그램에는 LabVIEW 런타임 엔진이나 NI-RIO 드라이버가 포함되어 있지 않습니다. 따라서 설치 프로그램에서 다운로드한 참조 어플리케이션을 올바르게 사용하려면 대응되는 LabVIEW 런타임 엔진과 NI-RIO 드라이버가 필요합니다.
소스 코드 ZIP 파일은 설치 프로그램 없이 소스 코드만 포함합니다. 시스템의 어느 폴더에나 이 코드의 압축을 풀 수 있습니다. 소스 코드를 열고 실행하려면, NI Developer Zone에서 비동기 메시지 통신 (AMC) 참조 라이브러리를 다운로드하여 설치해야 합니다.
버전 2.1의 모든 기능을 활성화하려면 NI RIO 드라이버와 CompactRIO 정보 (CRI) 참조 라이브러리도설치해야 합니다. 그러나 원하는 경우 이러한 구성요소가 필요한 기능을 소스 코드에서 비활성화할 수도 있습니다. 비트파일을 FPGA 플래시에 배포하려면 NI RIO 드라이버가 필요하고, 배포 호환성 확인에 사용되는 백플레인 정보를 수집하려면 CRI가 필요합니다. 이러한 기능은 프로젝트에서 RIO_INSTALLED와 CRI_INSTALLED 조건부 비활성화 기호를 모두 False로 설정하여 소스 코드에서 비활성화할 수 있습니다.
참고: 이 어플리케이션은 예시로 든 것일 뿐이며, 사용자 정의 배포 어플리케이션을 생성하는 데 사용됩니다.
위에 언급한 코드는 있는 그대로 제공되는 것입니다. 제품으로 사용하거나, 배포된 어플리케이션 또는 시스템에서 사용하거나, 위험한 환경에서 사용하기 위해 테스트 또는 검증한 코드는 아닙니다. 이 코드를 사용하는 경우 모든 위험을 감수하는 것으로 간주되며, 이 코드 사용에는 //ni.com/samplecodelicense의 샘플 코드 라이센스 약관이 적용됩니다.
rtadu_2109_installer.zip 또는 rtadu_2109_source.zip을 사용해 설치하는 유틸리티 버전 2.1은 1.0 버전에는 없는 다음과 같은 새로운 기능을 포함합니다.
버전 2.1은 1.0 버전을 사용하여 생성된 이미지와 호환되지 않습니다. 이러한 새로운 기능의 사용 및 구현에 대한 추가적인 정보는 이 문서의 나머지 부분에서 제공됩니다.
리얼타임 타겟의 이미지를 복제할 수 있으면 타겟과 시스템을 보다 쉽고 효율적으로 배포할 수 있게 됩니다. 시스템의 주기적인 백업 작업, 개발된 시스템에서 수많은 신규 시스템으로 배포하는 작업, 타겟에서의 이미지 업데이트 작업, 작동 중인 시스템의 복제를 위한 도구를 타인에게 제공하는 과정 등, 이미지 복제를 이처럼 다양한 모든 어플리케이션에서 수행할 수 있습니다. 리얼타임 어플리케이션 배포 유틸리티를 통해 간단하고 직관적으로 시스템을 복제할 수 있습니다.
한 타겟에서 다른 타겟으로 어플리케이션을 복제할 경우 한 RT 타겟에서 어플리케이션 이미지를 불러와 다른 타겟으로 복사됩니다. 어플리케이션 이미지는 RT 타겟의 동작을 정의하는 RT 타겟의 하드 드라이브 내용물 (모든 파일과 디렉토리)뿐 아니라 FPGA 플래시 메모리에 배포하도록 설정된 비트파일로 구성됩니다. 이 유틸리티는 똑같은 컨트롤러와 백플레인 사이에서만 이미지 전송을 지원합니다. 특정 컨트롤러에서 이미지를 받는 경우, 같은 모델 번호를 가진 컨트롤러에만 해당 이미지를 배포할 수 있습니다.
리얼타임 어플리케이션 배포 유틸리티는 이 두 요소, RT 타겟과 어플리케이션 이미지를 유틸리티의 주 UI에 있는 두 개의 테이블로 보여줍니다.
그림 1: RT 타겟 및 어플리케이션 이미지와 RT 어플리케이션 배포 유틸리티
리얼타임 타겟 테이블은 로컬 서브넷에서 사용 가능한 모든 리얼타임 타겟과 목록에 수동으로 추가된 모든 네트워크 타겟을 보여줍니다. 이들 타겟은 이미지 불러오기와 배포에 모두 사용할 수 있습니다. 어플리케이션 이미지 테이블은 로컬 하드 드라이브에 저장되어 타겟 시스템에 배포할 수 있는 모든 이미지를 보여줍니다.
리얼타임 시스템을 복제하는 첫 단계는 어플리케이션 이미지를 불러오는 것입니다. RTAD 유틸리티의 리얼타임 타겟 (Real-Time Targets) 테이블에는 네트워크상에 있는 RT 타겟 시스템 목록이 있습니다. 테이블 위의 셋팅(Settings) 버튼을 사용하면 테이블에 나타나는 RT 타겟의 유형을 선택할 수 있습니다. 리얼타임 타겟의 종류에는 CompactRIO, FieldPoint, PXI 또는 기타 시스템이 있습니다. 또한, 로컬 서브넷의 모든 타겟을 볼지, 수동으로 유틸리티에 추가된 타겟만을 볼지 선택할 수 있습니다. 이러한 옵션을 선택하기 위한 대화 상자는 아래와 같습니다.
그림 2: RT 타겟 설정 대화 상자
설정 대화 상자에서 타겟 타입을 선택하고 리얼타임 타겟 테이블 위의 새로 고침 버튼을 클릭하면, 지정된 타입의 사용 가능한 모든 타겟이 테이블에 나열됩니다.
사용자는 테이블에서 각 타겟에 대한 기본 정보를 볼 수 있습니다. 각 타겟 시스템에 대한 추가 정보는 테이블의 타겟에서 마우스 오른쪽 버튼을 클릭한 후 타겟 정보 보기(View Target Info)를 선택하여 확인할 수 있습니다.
그림 3: RT 타겟 정보 대화 상자
로컬 서브넷에 없는 타겟을 목록에 추가하려면 타겟 추가(Add Target) 버튼을 클릭하여 아래와 유사한 대화 상자를 표시합니다.
그림 4: 타겟 추가 대화 상자
그런 다음, 사용자 목록에 추가하려는 타겟의 IP 주소를 입력하고 정보 얻기(Get Info)를 클릭합니다. 테이블에 표시된 정보가 정확하면 추가(Add) 버튼을 클릭하여 이 타겟을 윈도우에 추가합니다. 어플리케이션을 닫고 다시 열어도 타겟은 이 윈도우에 추가된 상태일 것입니다. 윈도우에서 이 항목을 영구적으로 제거하려면 제거하려는 타겟에서 마우스 오른쪽 버튼을 클릭한 후 타겟 삭제(Delete Target)를 선택합니다.
RTAD 유틸리티는 또한 네트워크에 있는 타겟의 일부 네트워크 셋팅을 변경하는 기능을 제공합니다. 사용자는 타겟을 선택하고 설정(Configure) 버튼을 클릭하여 다음과 같은 대화 상자를 표시해 타겟의 네트워크 설정 셋팅을 변경할 수 있습니다.
그림 5: RT 타겟 네트워크 설정
RT 타겟에서 로컬 하드 드라이브로 어플리케이션 이미지를 복사하려면 테이블에서 적절한 타겟을 선택하고 UI 가운데에 있는 불러오기(Retrieve) 버튼을 클릭합니다.
타겟에서 어플리케이션 이미지를 불러오는 데는 세 가지 시나리오가 있습니다. 어플리케이션이 완전히 새로운 어플리케이션일 수도 있고, 현재 컨트롤러에 있는 이전 이미지의 새로운 버전 또는 디스크에 저장된 이전 이미지의 새로운 버전일 수도 있습니다.
그림 6: 이미지 프로퍼티 상속 소스 선택
현재 어플리케이션이 이전 어플리케이션의 새 버전인 경우, 이전 어플리케이션 프로퍼티를 상속하는 것이 가장 좋습니다. 어플리케이션의 이미지를 처음으로 생성하는 경우, 새 어플리케이션 이미지(New Application Image)를 선택합니다.
선택하면 사용자에게 다음 대화 상자가 나타납니다. 이 대화 상자에서 어플리케이션 이미지의 로컬 파일을 지정하고 어플리케이션 이미지와 함께 저장할 추가 정보를 지정할 수 있습니다. 이 이미지가 새 이미지가 아닌 경우, 이미지의 이전 버전 프로퍼티가 자동으로 채워집니다.
그림 7: RT 타겟 대화 상자에서 어플리케이션 이미지 불러오기
버전 필드를 사용하면 같은 어플리케이션 이미지의 다른 버전을 추적할 수 있습니다. 이 이미지가 새 이미지가 아닌 경우, 이전 이미지 버전 번호가 표시됩니다. 이 버전 번호는 새 버전 필드에서 자동으로 증가하지만, 새 버전이 이전 버전 번호보다 큰 한 가지 어떤 버전 번호로도 변경할 수 있습니다.
이 유틸리티는 RT 하드 드라이브의 이미지를 불러오고 배포하는 것 외에 비트파일을 FPGA 플래시 메모리에 배포할 수도 있습니다. 비트파일을 플래시 메모리에 저장하면 RT EXE에서 비트파일을 배포하는 것과 비교해 볼 때 몇 가지 이점이 있습니다. FPGA 배포 옵션의 장단점에 대한 더 자세한 정보는 FPGA 배포 관리하기를 참조하십시오.
어플리케이션에서 하나 이상의 비트파일을 FPGA 플래시에 배포해야 하는 경우, 이제 비트파일을 불러올 때 이미지와 함께 저장한 뒤 이미지가 배포될 때 플래시에 배포할 수 있습니다. 이 특정 이미지의 FPGA 플래시 배포 셋팅을 편집할 수 있는 FPGA 플래시 배포용 비트 파일 설정(Configure Bitfile(s) for FPGA Flash Deployment)을 클릭하면 다음 대화 상자가 나타납니다.
그림 8: FPGA 플래시 배포 셋팅 대화 상자
이제 로컬 하드 드라이브에 있는 하나 이상의 비트파일을 추가하여 불러온 이미지와 함께 저장할 수 있습니다. 이 비트파일은 FPGA 플래시에서 직접 불러올 수 없기 때문에 로컬 하드 드라이브에서 찾아야 합니다. 또한, 선택한 비트파일이 로드될 때 실행되도록 컴파일되지 않은 경우 경고가 표시됩니다. 이는 로드 시 실행이 FPGA 플래시 배포의 가장 일반적인 사용 사례이기 때문입니다. RIO 리소스(Resource) 이름이 이미지의 FPGA 리소스 이름과 일치하는지 확인하십시오. 적절한 셋팅이 지정되면 완료(Done)를 클릭합니다.
모든 셋팅과 설명을 어플리케이션 이미지 불러오기(Retrieve Application Image) 대화 상자에 입력한 후, 어플리케이션 불러오기(Retrieve Application) 버튼을 클릭하여 선택한 타겟에서 어플리케이션 이미지를 복사합니다. 불러오기 과정 중 다음 대화 상자가 나타납니다.
그림 9: 어플리케이션 이미지 불러오기 진행 상황 대화 상자
불러오기 과정 중에 에러가 발생하면, 이후에 에러 대화 상자에 표시됩니다. 에러 없이 이미지를 불러온 경우, 일부 추가 파일이 컨트롤러에 전송됩니다. 이런 파일에는 이미지 프로퍼티에 대한 추가 정보가 포함되며, 컨트롤러의 하드 드라이브의 내용이 불러온 이미지와 일치하도록 보장합니다. 또한 다음에 이미지 프로퍼티를 불러올 수 있도록 합니다.
어플리케이션 이미지를 네트워크의 RT 타겟에 배포하려면 RTAD 유틸리티를 실행하는 컴퓨터가 접근할 수 있는 폴더에 이미지를 저장해야 합니다. 이 폴더는 공유 네트워크 서버에 위치할 수 있습니다. 유틸리티의 어플리케이션 이미지(Application Image) 테이블은 지정된 폴더에서 사용 가능한 모든 어플리케이션 이미지를 보여줍니다. 어플리케이션 이미지 저장에 사용되는 폴더를 변경하려면 테이블 위의 셋팅(Settings) 버튼을 클릭하여 다음과 같은 대화 상자를 표시합니다.
그림 10: 어플리케이션 이미지 셋팅 대화 상자
이 폴더에 있는 모든 어플리케이션 이미지 (*.lvappimg)가 테이블에 표시됩니다. 테이블에서 어플리케이션 이미지의 추가 정보를 보거나 업데이트하려면, 이미지를 선택하고 테이블 아래의 설정(Configure) 버튼을 클릭합니다. 이 대화 상자를 사용하면 어플리케이션 이미지에 저장된 이름, 버전, FPGA 배포 셋팅, 설명을 업데이트할 수 있습니다.
그림 11: 어플리케이션 이미지 설정 대화 상자
어플리케이션 이미지를 하나 이상의 타겟에 배포하려면, 오른쪽 테이블에서 이미지를 선택하고 왼쪽 테이블에서 원하는 RT 타겟을 선택합니다. <Ctrl>-클릭, <Shift>-클릭 또는 모두 선택(Select All) 버튼을 클릭하여 여러 RT 타겟을 선택할 수 있습니다. 선택을 마치면 UI 가운데에 있는 배포(Deploy)를 클릭합니다. 다음 대화 상자가 표시되어 RT 타겟 선택을 확인하고 추가적인 타겟 설정 옵션을 허용합니다.
그림 12: 어플리케이션 이미지 배포 대화 상자
리얼타임 타겟(Real-Time Targets) 테이블에서 여러 타겟을 선택하면 테이블에 하나 이상의 항목이 표시됩니다.
배포 과정의 일부로 각 RT 타겟에 추가적인 설정 셋팅을 적용할 수 있습니다. 타겟의 현재 네트워크 셋팅이 설정되지 않은 경우에는 이 설정이 필수적입니다. RT 어플리케이션 배포 유틸리티를 사용하면 배포 과정 중 모든 RT 타겟에 특정 네트워크 설정을 적용할 수 있습니다.
타겟 설정 옵션(Target Configuration Options) 버튼을 클릭하면 네트워크 설정 셋팅을 설정할 수 있는 다음 대화 상자가 나타납니다.
그림 13: RT 타겟 배포 설정 대화 상자
배포하는 동안 각 타겟이 기존의 이름을 유지할 수도 있고 모든 타겟에 동일한 이름을 적용할 수도 있습니다. 또한 각 컨트롤러에 동일한 IP 주소를 할당하거나 배포 중 각 타겟에 적용되는 정적 IP 주소를 계속 증가시키는 옵션도 있습니다.
선택한 타겟을 확인하고 RT 타겟에 원하는 네트워크 설정 옵션을 설정한 후, 나열된 타겟에 어플리케이션 이미지 배포(Deploy Application Image to Listed Targets)를 클릭하여 배포 과정을 시작합니다. 어플리케이션 이미지는 한 번에 하나씩 선택한 타겟에 순차적으로 배포됩니다. 이 과정에서 다음과 같은 진행 상황 대화 상자가 나타납니다. 이 과정은 RT 타겟당 몇 분 정도 소요됩니다.
그림 14: 어플리케이션 이미지 배포 진행 상황
배포가 완료되면 배포(Deployment) 윈도우에 배포 과정의 결과가 나타납니다. 배포에서 발생한 모든 에러는 테이블에 나타납니다.
그림 15: 어플리케이션 이미지 배포 결과
결과 기록(Log Results) 버튼을 사용하면 배포 과정의 정보와 결과를 텍스트 파일로 저장할 수 있습니다. 이 탭으로 구분된 값 (TSV) 파일은 Excel에서 로드하거나 다양한 데이터베이스로 반입할 수 있습니다.
그림 16: Excel에 로드된 배포 로그 파일
이 유틸리티는 어플리케이션 이미지를 불러오고 배포하는 것 외에도 이미지 관리를 위한 도구를 제공합니다. 그와 같은 가장 큰 도구는 이 유틸리티의 이미지 비교 기능입니다. 비교 도구는 두 이미지의 각 파일을 비교하여 파일이 수정, 추가 또는 제거되었는지 사용자에게 알려줍니다.
비교를 수행하는 방법에는 두 가지가 있습니다. 로컬 디스크에 저장된 어플리케이션 이미지는 특정 컨트롤러의 파일 또는 디스크에 저장된 다른 이미지와 비교할 수 있습니다. 디스크 상의 특정 이미지에 대한 비교 옵션을 보려면, 해당 이미지에서 마우스 오른쪽 버튼을 클릭한 후 어플리케이션 이미지 비교(Compare AppImage)를 선택합니다. 그런 다음 사용자가 로컬 이미지를 컨트롤러와 비교(Compare Local Image With Controller)를 선택하면 아래와 같은 대화 상자가 나타납니다.
그림 17: 로컬 이미지를 네트워크 컨트롤러와 비교 대화 상자
그러나 사용자가 두 개의 로컬 이미지 비교(Compare Two Local Images)를 선택하면 아래와 같은 대화 상자가 대신 나타납니다.
그림 18: 두 개의 로컬 디스크 이미지 비교 대화 상자
자동으로 업데이트된 파일 무시(Ignore Automatically Updated Files) 확인란을 사용해 도구가 임시 파일뿐 아니라 타겟이 다시 부팅될 때마다 작성되는 파일을 무시할지 여부를 결정합니다. 사용자는 이 확인란을 통해 두 이미지에 있는 모든 파일을 완전히 비교하는 것과 차이가 있는 파일을 제외하고 비교하는 것 중에서 선택할 수 있습니다.
또한, 주 어플리케이션 윈도우 중간에 있는 비교(Compare) 버튼을 사용하여 비교 도구를 실행할 수 있습니다. 이 버튼을 클릭하면 자동으로 업데이트된 파일 무시 옵션이 활성화된 상태에서 선택한 컨트롤러와 어플리케이션 이미지의 비교가 자동으로 시작됩니다.
시작(Start) 또는 비교(Compare) 버튼을 클릭하면 비교 과정이 시작됩니다. 비교가 시작되면 두 이미지에 관해 각 파일의 변경 사항이 비교됩니다. 한 이미지에는 있지만 다른 이미지에서는 발견되지 않은 파일도 식별됩니다. 이 과정을 완료하는 데 몇 분 정도 소요될 수 있으며, 완료될 때까지 진행 상황 대화 상자가 표시됩니다. 도구가 차이를 발견하지 못하면 다음 대화 상자가 나타납니다.
그림 19: 동일한 이미지 알림
하지만 차이가 발견된 경우 다음 테이블에 나열됩니다. 원하는 경우, 그림 16과 유사한 포맷의 TSV 파일에 결과를 기록할 수 있습니다.
그림 20: 이미지 비교 결과 테이블
다음은 RT 타겟에서 어플리케이션 이미지를 불러오는 간단한 방법을 단계별로 나열한 것입니다.
다음은 어플리케이션 이미지를 RT 타겟에 배포하는 간단한 방법을 단계별로 나열한 것입니다.
이 섹션에는 어플리케이션 특정 요구사항에 맞게 이 참조 어플리케이션을 사용자 정의할 수 있도록 RT 어플리케이션 배포 (RTAD) 유틸리티의 설계 및 구현에 관한 추가 정보가 있습니다. 유틸리티의 소스 코드는 LabVIEW의 \examples\RTADU 폴더에 제공되며 어플리케이션 실행 파일과 설치 프로그램 빌드 스펙이 있는 프로젝트를 포함합니다.
어플리케이션 이미지는 RT 타겟 하드 드라이브의 내용으로, RT 시스템의 동작과 작업을 정의합니다. RT 어플리케이션 이미지를 생성하려면 일반적으로 LabVIEW 환경에서 어플리케이션을 개발하고 처음에 LabVIEW 프로젝트에서 RT 타겟에 배포합니다. 일반적으로 이는 RT 실행 파일을 만들고, 시작 시 실행되도록 설정한 후 RT 타겟에 배포하는 것을 의미합니다. RT 어플리케이션 배포 유틸리티를 사용하기 전에 이 과정을 통해 독립적인 RT 타겟에서 어플리케이션을 철저히 테스트해야 합니다.
RT 어플리케이션 배포 유틸리티에는 RT 실행 파일을 만들거나 RT 타겟에서 어플리케이션을 실행하지 않는 다른 몇 가지 용도가 있습니다. 예를 들어, 이 유틸리티를 사용하면 빠르게 RT 타겟의 깨끗한 이미지를 생성하여 다시 쓰거나 RT 타겟에 설치된 LabVIEW Real-Time 버전을 바꿀 수 있습니다.
기본 어플리케이션 이미지는 RTAD 유틸리티에서 사용되는 [RT 시스템 복제] VI에 의해 생성되고 배포됩니다. 이 VI는 어플리케이션 이미지의 파일을 ZIP 아카이브 파일에 저장합니다. RTAD 유틸리티는 어플리케이션 이미지 파일의 기본 확장자로 *.lvappimg를 사용합니다. 원한다면 다른 확장자를 사용하거나 어플리케이션에서 사용하는 기본값을 변경할 수 있습니다.
어플리케이션 이미지 프로퍼티 파일과 선택한 FPGA 비트파일은 모두 일단 생성된 후에는 *.lvappimg 파일과 이미지화된 컨트롤러에 추가됩니다.
RTAD 유틸리티는 어플리케이션 이미지의 일부로 추가 정보를 저장하려고 불러오기 과정 중에 추가적인 INI 설정 파일 (rtad_Create AppImage Info File.vi)을 생성하고 이를 [RT 시스템 복제] VI가 생성한 어플리케이션 이미지 파일에 추가합니다. 이 파일의 이름은 lvappimage.info입니다. 이는 다음과 같은 추가 파라미터를 포함합니다.
이 유틸리티는 어플리케이션 이미지 테이블을 새로 고치면 이 파일 (rtad_Read AppImage Properties.vi)에서 정보를 읽고 기존 어플리케이션 이미지에 대해 이 정보를 업데이트할 수 있도록 합니다.
어플리케이션 이미지 식별자 (Application Image Identifier)는 GUID (Globally Unique Identifier)입니다. 이미지 프로퍼티가 변경되어도 같은 이미지의 여러 버전을 쉽게 추적하고 식별할 수 있도록 이 식별자가 lvappimage.info에 추가됩니다. 그러나 이 기능을 노출하는 코드를 만들지는 않았습니다. GUID는 단순히 향후에 도구를 개선할 수 있도록 추가된 기능일 뿐이기 때문입니다.
이 파일에 저장된 정보를 소스 코드에서 추가하거나 편집할 수 있습니다.
[RT 시스템 복제] VI는 또한 어플리케이션 이미지 생성 과정의 일부로 INI 설정 파일 (RTImageInfo.ini)을 생성합니다. 이 파일의 내용을 수정하지 마십시오.
RT 어플리케이션 배포 유틸리티는 큐 메시지 핸들러 (QMH) 디자인 패턴을 주 VI와 여러 SubVI의 기반으로 사용합니다. 이 디자인 패턴과 QMH에서 사용되는 비동기 메시지 통신 (AMC) 라이브러리에 대해서는 AMC 및 QMH 문서에 자세히 설명되어 있습니다.
QMH는 기본 이벤트 구조를 사용하여 프런트패널에서 사용자 입력을 받고 VI가 처리할 메시지를 큐에 생성합니다. 메시지 프로세서는 VI의 작업 하나마다 케이스가 하나씩 있는 케이스 구조를 포함합니다. RTAD 유틸리티가 처리하는 주요 작업 중에는 어플리케이션 이미지 새로 고침(Refresh AppImages), 타겟 새로 고침(Refresh Targets), 어플리케이션 이미지 불러오기(Retreive AppImage), 어플리케이션 이미지 배포(Deploy AppImage)가 있습니다. 일부 사용자 상호작용은 메시지 프로세서가 여러 작업을 수행하도록 할 수 있고, 항상 또 다른 작업을 수행하게끔 하는 작업도 있습니다. 예를 들어, 어플리케이션 이미지 불러오기(Retrieve AppImage) 작업이 수행되면 주 UI의 어플리케이션 이미지 테이블을 업데이트하기 위해 어플리케이션 이미지 새로 고침(Refresh AppImages)이 호출됩니다.
또한, 유틸리티가 시작되면 어플리케이션을 초기화하기 위해 몇몇 초기 메시지가 큐에 입력됩니다.
메시지 프로세서는 시프트 레지스터에 어플리케이션 상태 클러스터를 포함합니다. 이 클러스터는 다음을 포함한 어플리케이션에 대한 기본 정보를 포함합니다.
이 클러스터의 정보는 유틸리티의 여러 작업에서 사용되고 업데이트됩니다.
그 밖에도, RTAD는 나머지 어플리케이션과 병렬로 어플리케이션 크기 조정 이벤트의 처리에 사용되는 크기 조정 엔진을 실행합니다. 크기 조정 엔진은 어플리케이션의 크기가 조정될 때 RT 타겟과 어플리케이션 이미지의 목록 상자가 균일하게 확대되고 축소되도록 설계되었습니다. 또한, 모든 버튼은 크기가 조정된 목록 상자에 맞춰 필요에 따라 적절히 이동됩니다. 마지막으로 다중 열 목록 상자의 열은 조정된 크기에 따라 자동으로 조정됩니다. 이는 분배기 막대와 VI 서버 프로퍼티를 사용하여 달성되었습니다.
RTAD 유틸리티 초기화 프로세스는 다음 작업으로 구성됩니다.
초기화 - 기본: 어플리케이션 설정 파일의 이름, 어플리케이션 이미지 폴더의 기본 위치와 같은 상태 클러스터의 일부 프런트패널 객체와 값을 초기화합니다.
초기화 - 설정 로드: 어플리케이션 설정 파일을 읽고 상태 클러스터에 데이터를 저장합니다.
초기화 - 셋팅 설정: 설정 파일의 데이터를 기반으로 유틸리티에서 다른 셋팅을 초기화합니다.
타겟 새로 고침 - 상태 클러스터의 RT 타겟 목록을 업데이트합니다. 이 작업은 또한 UI 업데이트를 호출하여 UI를 새로 고칩니다.
어플리케이션 이미지 새로 고침 - 상태 클러스터의 어플리케이션 이미지 목록을 업데이트합니다. 이 작업은 또한 UI 업데이트를 호출하여 UI를 새로 고칩니다.
RTAD 유틸리티는 최상위 VI 또는 실행 파일과 같은 폴더에 저장된 설정 INI 파일 (rtad_config.ini)을 사용합니다. 유틸리티가 초기화될 때 이 파일의 정보가 로드되고, 유틸리티가 종료될 때 이 파일이 업데이트됩니다. 이 파일에는 유틸리티에 대한 다음 정보가 포함되어 있습니다.
어플리케이션 이미지 경로
어플리케이션 이미지가 저장되는 폴더
RT 타겟 셋팅
리얼타임 타겟 (Real-Time Target) 테이블에 표시되는 RT 타겟을 필터링하는 셋팅
사용자가 추가한 타겟 정보
RT 타겟 목록 상자에 수동으로 추가된 타겟의 개수와 그와 관련된 IP 주소에 대한 정보입니다. 이 정보는 목록에 추가된 타겟이 명시적으로 제거될 때까지 어플리케이션을 다시 시작해도 목록에 남아있게 하려고 저장됩니다.
어플리케이션 모드
이 항목은 RTAD 유틸리티의 UI 및/또는 동작을 더 상세히 사용자 정의하는 데 사용됩니다. 이 셋팅은 현재 '관리자(Manager)'로 설정되어 있습니다. 이 셋팅이 없는 경우, 저장된 어플리케이션 이미지의 변경을 방지하기 위해 어플리케이션 이미지 불러오기(Retrieve Application Images) 및 어플리케이션 이미지 설정(Configure Application Image) 버튼이 UI에서 제거됩니다. 이 셋팅을 기반으로 초기화 과정 중에 추가 사용자 프로파일을 정의하고 유틸리티의 동작을 설정할 수 있습니다. 보다 완전한 구현에서는 이 과정에 완전한 사용자 관리와 확인이 추가됩니다.
이 작업은 RT 유틸리티에서 [RT 타겟 정보 얻기] VI를 사용하여 수행되며 로컬 서브넷에 있는 모든 RT 타겟의 목록뿐만 아니라 유틸리티에 수동으로 입력한 모든 타겟을 반환합니다.
진행 상황 팝업
타겟 새로 고침(Refresh Targets) 작업과 여러 가지 다른 더 긴 작업 중에는 진행 상황 대화 상자가 나타납니다. 이 VI는 Util_Progress Show Progress Popup.vi를 사용하여 시작되는 동적 VI입니다. 진행률 표시줄은 유틸리티의 활동을 보여주기 위한 것일 뿐, 작업의 실제 진행 상황을 나타내는 것은 아닙니다. 작업이 완료되면 Util_Progress Close Progress Popup.vi를 사용하여 진행 대화 상자가 닫힙니다.
사용자가 사용할 수 있는 어플리케이션 이미지 목록을 업데이트하기 위해, 유틸리티는 어플리케이션 이미지 폴더에서 기본 확장자 (*.lvappimg)와 일치하는 모든 파일의 목록을 불러옵니다. 이러한 각 파일의 압축 (ZIP) 파일로부터 기본 (RTImageInfo.ini) 및 사용자 설정 (lvappimage.info) 파일을 추출하고 관련 정보를 읽습니다. 이 어플리케이션 이미지 목록은 유틸리티의 상태 클러스터에 클러스터 배열로 저장됩니다.
어플리케이션 이미지 불러오기는 rtad_Retrieve Application Image From Target.vi에 구현된 특정 단계의 시퀀스를 따릅니다.
이 유틸리티는 LabVIEW RT 유틸리티 API를 사용하여 타겟에서 이미지를 불러오고, LabVIEW Real-Time과 함께 설치된 FTP API를 사용하여 다른 모든 FTP 기능을 처리합니다. 모든 배포 및 FTP 함수를 사용하는 래퍼 VI가 구현되어 있으므로 유틸리티에서 다른 배포 또는 파일 전송 기술을 쉽게 사용할 수 있습니다. 다른 배포 또는 파일 전송 API를 사용하려면 기존 래퍼 함수의 코드를 원하는 코드로 대체하고 필요한 경우 모든 입력 또는 출력을 변경하십시오.
컨트롤러에 전송된 모든 파일은 컨트롤러의 C: 디렉토리에 저장됩니다. 어플리케이션은 모든 컨트롤러가 FTP 서버의 표준 사용자 이름과 암호를 사용하고 있다고 가정합니다. 컨트롤러의 FTP 서버가 암호로 보호되어 있는 경우, 이를 처리하기 위해 유틸리티를 수정해야 합니다. 적절한 인증 정보는 파일에서 읽거나 FTP 래퍼 함수에 직접 작성하거나 런타임에 사용자에게 입력받을 수 있습니다. 또는 불러오기 후 FTP를 수행하는 코드를 그냥 제거해도 됩니다.
컨트롤러 이미지와 로컬 위치에 저장된 버전과 같고, 새 이미지가 컨트롤러에서 생성되더라도 이전 이미지 프로퍼티가 남아 있을 수 있도록, 생성된 lvappimage.info 파일은 이미지를 불러온 뒤 컨트롤러로 전송됩니다.
FPGA 비트파일은 이미지와 함께 저장되므로 사용자가 디스크 상의 비트파일 로컬 버전을 추적할 필요가 없습니다. 이미지가 생성되면 이미지 생성에 사용된 FPGA 비트파일을 수정하거나 삭제할 수 있지만, 다시 배포하면 이미지의 동작이 변경되지 않습니다. 이 방법의 유일한 단점은 가끔 비트파일이 매우 커질 수 있다는 점으로, 컨트롤러의 디스크 공간이 제한됩니다. 이 점이 우려되면 유틸리티를 수정하여 불러오거나 배포된 이미지 내에서가 아니라, 항상 로컬 디스크에서 비트파일을 검색하도록 할 수 있습니다.
하나 이상의 타겟에 어플리케이션 이미지를 배포하는 것은 복잡한 프로세스로, 먼저 이미지 호환성을 확인하고 어플리케이션 이미지 파일을 배포하고 선택한 비트파일을 FPGA 플래시에 배포한 후, 선택한 RT 타겟에 사용자 정의 네트워크 셋팅을 적용해야 합니다.
이미지 호환성은 기존 컨트롤러의 하드웨어가 대상 컨트롤러와 일치하는지 확인합니다. 기본적으로, 컨트롤러 타입만 비교됩니다. 하지만 이미지의 비트파일이 플래시에 적절하게 배포되도록 컨트롤러 백플레인을 추가로 비교할 수 있습니다. CRI는 불러오기 및 배포 중에 cRIO 컨트롤러에서 백플레인 정보를 불러오는 데 사용됩니다. 백플레인이 일치하지 않으면 이미지가 호환되지 않는다는 알림 메시지가 사용자에게 전달됩니다. 현재 이 접근 방식에는 일부 제한이 있습니다. CRI는 RIO가 설치된 경우에만 컨트롤러에서 정보를 불러올 수 있습니다. 그 결과, 설정되지 않은 타겟에서는 백플레인 호환성을 확인할 수 없습니다. 또한, CRI는 PXI FPGA 타겟을 지원하도록 수정될 수는 있지만, 현재 cRIO 백플레인에서만 작동합니다. 이러한 제한 때문에 이 기능은 기본적으로 비활성화되어 있습니다.
원하는 경우, 프로젝트에서 CRI_INSTALLED 조건부 비활성화 기호를 True로 변경하여 호환성 확인의 FPGA 부분을 활성화할 수 있습니다. 활성화된 경우, 이 확인은 이미지가 FPGA 플래시용 비트파일을 포함하는 경우에만 수행됩니다. 따라서 런타임 시 FPGA 비트파일을 호환되지 않는 백플레인에 배포하려는 RT 어플리케이션에 대한 보호 기능은 없습니다.
타겟 호환성 확인에서 에러가 반환되지 않으면 배포 프로세스가 시작됩니다. 다음은 그 과정을 설명한 순서도입니다. 타겟 호환성 확인과 함께, 이 과정은 루프에서 선택된 각 배포 타겟에 대해 순차적으로 발생합니다.
그림 21: 배포 프로세스 순서도
배포 과정에는 배포 과정 중 사용자 정의 네트워크 셋팅을 설정하고 RT 타겟에 적용하는 옵션도 포함됩니다. 이 옵션은 배포 과정 중에는 DHCP를 통해 다른 IP 주소를 자동으로 할당받는 다수의 RT 타겟을 설정하고, 각 컨트롤러가 자체 시스템에 배포된 후에는 같은 정적 IP 주소를 가지도록 하려는 경우에 유용합니다.
사용자 네트워크 셋팅을 적용하는 옵션은 두 단계로 처리됩니다. 첫 번째는 rtad_Target Configuration Options Dialog.vi가 처리하는 이러한 셋팅의 설정입니다. 이 단계의 정보는 클러스터에 저장되어 두 번째 단계로 전달됩니다. 두 번째 단계는 어플리케이션 이미지가 특정 타겟에 적용되기 전에 이러한 사용자 셋팅을 각 RT 타겟에 적용하는 것입니다. 사용자 정의 네트워크 셋팅의 적용은 rtad_Configure Target.vi가 처리합니다. 이 프로세스를 더욱 사용자 정의하거나 향상하려면 일반적으로 필요에 따라 이 VI를 모두 변경하고 설정 정보를 전달하기 위해 클러스터를 수정해야 합니다.
각 RT 타겟에 대한 어플리케이션 이미지의 배포는 rtad_Deploy Image State Machine.vi에서 구현됩니다. 이 순차적인 과정은 어플리케이션 이미지의 파일 크기와 개수에 따라 각 RT 타겟마다 몇 분이 소요됩니다. [현재 RT 시스템 복제] VI는 어플리케이션 이미지를 여러 타겟에 동시에 배포할 수 없습니다.
FPGA 플래시 배포를 위해서는 NI-RIO가 설치되어 있어야 합니다. 이 기능은 기본적으로 활성화되어 있습니다. 이 기능을 비활성화하고 NI-RIO가 없는 컴퓨터에서 유틸리티를 실행하려면 프로젝트의 RIO_INSTALLED 조건부 비활성화 기호가 False로 설정되도록 소스 코드를 수정해야 합니다.
이미지가 플래시 배포를 위한 FPGA 비트파일을 포함하는 경우, 타겟의 ni-rt.ini 파일이 재부팅 시 실행되지 않도록 수정됩니다. 그런 다음 타겟이 재부팅되고 FPGA 비트파일이 배포됩니다. ni-rt.ini 토큰이 원래 상태로 리셋되고 타겟이 마지막으로 다시 부팅됩니다. 마지막 재부팅 중에는 배포 프로세스가 재부팅이 완료되기를 기다리지 않습니다. 이렇게 하면 배포된 타겟이 배포 후 타겟 목록에 나타나지 않을 수 있습니다. 몇 분 후에 새로 고침을 누르면 목록에 타겟이 다시 나타날 것입니다.
배포 과정 중, 각 RT 타겟의 배포 결과는 For 루프의 문자열 배열 시프트 레지스터에 저장되고 대화 상자 UI의 선택된 타겟 테이블이 업데이트됩니다. 이 문자열 배열과 각 타겟에 대한 추가 정보는 배포 과정이 완료된 후에 저장할 수 있습니다. RTAD 유틸리티는 이 데이터를 탭으로 구분된 값 (TSV) 파일에 저장합니다. 이 파일은 텍스트 편집기나 Microsoft Excel로 열거나 데이터베이스로 반입할 수 있습니다. 이 파일에는 배포 과정의 각 타겟에 대한 다음 정보가 포함되어 있습니다.
이 데이터를 파일에 저장한 VI (rtad_Write Deployment Results to File.vi)는 물론 데이터를 데이터베이스에 직접 저장하도록 업데이트될 수 있습니다.
비교 도구는 두 이미지의 모든 파일에 대한 체크섬을 생성한 후 이러한 체크섬을 하나씩 비교하여 작동합니다. 이름이 서로 다르거나 한 이미지에는 있지만 다른 이미지에는 없는 모든 파일의 파일 이름이 저장됩니다. 비교는 대화 상자로, 또는 백그라운드에서 실행될 수 있는 rtad_RT Image Compare Dialog.vi에 의해 수행됩니다. 이 VI는 독립형 도구나 다른 어플리케이션의 구성요소로도 실행할 수 있도록 설계되었습니다.
비교 과정은 매우 간단합니다. 먼저 두 개의 이미지가 수집됩니다. 도구가 로컬 위치에 저장된 두 이미지를 비교하는 경우, 이미지를 수집하는 데 아무런 작업도 필요하지 않습니다. 그러나 로컬 이미지를 네트워크 컨트롤러 이미지와 비교하려면 먼저 네트워크 컨트롤러 이미지를 불러와야 합니다.
이미지가 수집된 후에는 두 이미지의 각 파일에 대해 체크섬이 계산되고, 두 이미지의 파일 경로/체크섬 쌍의 배열이 비교됩니다. 체크섬이 다른 파일뿐 아니라, 한 목록에는 있지만 다른 목록에는 없는 파일이 전부 기록됩니다.
이 도구에는 일반적으로 컨트롤러가 자동으로 수정하는 파일을 무시하는 옵션이 포함되어 있습니다. 이 파일에는 컨트롤러의 임시 디렉토리에 있는 모든 파일과 시작 시 수정될 수 있는 특정 시스템 파일이 포함됩니다. 이 파일 목록은 경험적으로 작성된 것이며 모든 파일을 포함하지 않을 수도 있습니다. rtad_Calculate Checksum.vi의 배열 상수에 파일을 추가하여 이 무시 목록에 추가할 수 있습니다.
비교 결과가 그 다음 테이블로 표시됩니다. 이 테이블은 수정된 파일, 첫 번째 이미지에서만 찾은 파일, 두 번째 이미지에서만 찾은 파일의 목록을 포함합니다. 마지막으로, 사용자는 이러한 결과를 파일에 기록할 수 있습니다.
RT 어플리케이션 배포 유틸리티와 함께 제공되는 프로젝트에는 LabVIEW 개발 환경 없이 실행할 수 있는 Windows 실행 파일로 유틸리티를 빌드하는 빌드 스펙이 포함되어 있습니다. 최상위 VI (RT 어플리케이션 배포 유틸리티) 외에, 빌드 스펙에는 다른 두 개의 파일만 포함하면 됩니다.
Util_Progress Progress Popup.vi
이 VI는 같은 실행 파일에 넣어 두어야 합니다. 유틸리티에서 동적으로 호출되므로 빌드에 명시적으로 포함되어야 합니다.
rtad_config.ini
이것은 실행 파일과 같은 폴더에 위치해야 하는 유틸리티의 설정 INI 파일입니다.
빌드한 후 RTAD 유틸리티 실행 파일은 시스템에 LabVIEW 런타임 엔진만 설치되어 있어도 실행할 수 있습니다. 하지만 FPGA 플래시 배포 기능이 활성화된 경우, NI-RIO 드라이버도 설치되어 있어야 합니다.
RTAD 버전 2.1.09 (2012년 2월 2일)
RTAD 버전 2.1.08 (2011년 7월 29일)
RTAD 버전 2.1.07 (2011년 4월 7일)
RTAD 버전 2.1.06 (2011년 3월 1일)
RTAD 버전 2.0.00 (2011년 1월 20일) - 1.0 이후 주요 업그레이드