필드 프로그래머블 게이트 어레이 (FPGA)로 프로그래밍할 수 있는 EtherCAT I/O를 사용하여 리얼타임 배포 시스템을 설계할 수 있습니다. EtherCAT RIO 모듈식 슬레이브 섀시는 NI CompactRIO 및 EtherCAT을 지원하는 기타 프로그램 가능한 자동화 컨트롤러 (PAC)에 지능형 확장 I/O를 제공합니다. NI LabVIEW FPGA Module을 사용하여 EtherCAT RIO 슬레이브 섀시를 프로그래밍하면, 사용자 정의 타이밍, 폐루프 컨트롤, 인라인 처리가 가능한 프로그램 가능한 분산 디바이스를 제공합니다.
확장 I/O는 채널 수가 많거나 넓은 공간이 필요한 리얼타임 시스템을 설계할 때 자주 필요합니다. 확장 I/O를 사용하면 분산 측정을 추가하거나 기존 어플리케이션을 확장할 수 있습니다. 그러나 이 컨트롤 시스템의 결정론적 특성을 유지하기 위해 자체 동기화 아키텍처를 구축하는 것은 빠르게 복잡해지고 확장성이 떨어질 수 있습니다. EtherNet/IP, EtherCAT, PROFINET과 같은 리얼타임 이더넷 I/O 기술이 현재 존재하며 이러한 어플리케이션을 단순화할 수 있으므로, 주요 컨트롤러와 결정론적 통신을 유지하도록 설계된 리얼타임 원격 I/O 네트워크 사용을 고려하십시오.
EtherCAT RIO 확장 섀시는 EtherCAT I/O를 CompactRIO, PXI 또는 산업용 컨트롤러 시스템에 추가합니다. C 시리즈 모듈용 8슬롯 견고한 섀시는 EtherCAT이라는 개방형 리얼타임 이더넷 프로토콜을 통해 결정론적으로 통신합니다. EtherCAT 마스터 컨트롤러에서 여러 EtherCAT RIO 확장 섀시를 데이지 체인 방식으로 연결하여 시간에 민감한 어플리케이션을 확장할 수 있습니다. 또한 소프트웨어 구성 및 LabVIEW 프로그래밍 환경은 리얼타임 EtherCAT I/O를 추가할 때 사용하기 쉽도록 설계되었습니다.
그림 1. NI 마스터 컨트롤러 및 분산 슬레이브 디바이스를 사용하는 일반적인 EtherCAT 시스템
LabVIEW Real-Time 및 LabVIEW FPGA Module을 모두 사용하여 EtherCAT RIO 슬레이브 섀시를 프로그래밍할 수 있습니다. LabVIEW Real-Time을 사용하여 NI 스캔 모드에서 프로그래밍하면 손쉽게 확장 I/O를 사용할 수 있습니다. NI 스캔 모드는 간단한 드래그 앤 드롭 I/O 변수와 라이브 테스트 패널을 사용하여 EtherCAT RIO 슬레이브 디바이스의 물리적 I/O 값에 즉시 접근하고 시스템 성능을 모니터하며 고급 문제 해결을 할 수 있도록 합니다. 그렇다면 EtherCAT 확장 I/O에 FPGA 인텔리전스를 추가하는 이유는 무엇입니까?
FPGA 모드로 EtherCAT RIO 슬레이브 섀시를 프로그래밍하면 어플리케이션에 새로운 수준의 사용자 정의와 유연성을 제공합니다. 의사 결정 기능을 내장하여 응답 시간을 단축하고 호스트 상호작용 없이 신속하게 환경에 반응합니다. 또한 지능형 디바이스는 노드에서 인라인 분석, 사용자 정의 트리거링, 신호 조작을 수행하여 마스터의 프로세싱 부하를 줄일 수 있습니다. 또한 LabVIEW FPGA를 사용하면 도메인 전문가가 VHDL 프로그래머가 아니더라도 아이디어를 신속하게 프로토타이핑하고 구현할 수 있습니다.
CompactRIO용 LabVIEW FPGA 및 기타 NI 재구성 가능한 I/O 플랫폼에서 프로그래밍에 익숙한 경우, 로컬 FPGA와 EtherCAT RIO용 FPGA 프로그래밍에는 몇 가지 차이가 있습니다. LabVIEW 2009에서 NI는 슬레이브의 FPGA 데이터를 마스터의 리얼타임 처리에 동기화하는 사용자 정의 I/O 변수를 도입했습니다. 또한 이러한 사용자 정의 I/O 변수는 컨트롤러의 리얼타임 프로그램과 확장 섀시의 FPGA 프로그램 사이에서 데이터를 전송하는 유일한 수단입니다.

테이블 1. 로컬과 확장 섀시의 FPGA 전송 방법 비교.
FPGA 타겟을 LabVIEW 프로젝트 창의 EtherCAT RIO 슬레이브에 추가한 후, EtherCAT RIO 디바이스에서 마우스 오른쪽 버튼을 클릭하고 추가≫사용자 정의 변수를 선택하여 사용자 정의 I/O 변수를 생성할 수 있습니다. 속성 창에서 변수 이름, 데이터 타입, 데이터 방향 (호스트에서 FPGA로 또는 그 반대)을 설정할 수 있습니다. 슬레이브의 FPGA 모드에서 생성할 수 있는 사용자 정의 I/O 변수의 개수에는 제한이 있습니다. EtherCAT RIO는 스캔 모드의 I/O 변수와 FPGA 모드의 사용자 정의 I/O 변수 모두에 대해 총 512바이트의 입력 데이터와 512바이트의 출력 데이터를 저장할 수 있습니다. 예를 들어, 스캔 모드에서 4개의 32채널 모듈을 사용하고 각 채널이 32비트의 데이터를 사용할 경우, 스캔 모드 I/O 변수는 256바이트의 입력 데이터를 사용합니다. 나머지 256바이트의 입력 데이터를 사용하면, FPGA 모드에서 최대 64개의 입력 사용자 정의 I/O 변수 (32비트 길이)를 생성할 수 있습니다.

그림 2. 마스터의 리얼타임 코드와 슬레이브의 FPGA 코드 사이에서 통신하는 사용자 정의 I/O 변수를 생성합니다.
이러한 사용자 정의 I/O 변수는 각 스캔 사이클마다 마스터 컨트롤러와 단일 포인트 데이터를 주고받으므로, EtherCAT RIO 확장 섀시에서 처리된 데이터를 전달하는 데 가장 적합합니다. 예를 들어, NIWeek 2009 키노트에서 발표자는 6개의 EtherCAT RIO 슬레이브 섀시를 사용하여 한 곡을 연주하는 여러 개의 음악적 차임벨을 울렸습니다. 마스터 리얼타임 코드는 각 분산된 차임벨을 울릴 타이밍을 제어했지만, 슬레이브 섀시의 FPGA는 마이크로부터 오디오 웨이브폼 측정값을 기록하고 빠른 푸리에 변환 (FFT)을 수행하여 특정 차임 주파수의 사운드 강도를 얻었습니다. 그 후 슬레이브 FPGA는 펄스 폭 변조 (PWM)를 사용하여 일련의 LED 밝기를 조절해 차임벨의 음량에 맞췄습니다. 리얼타임 프로그램이 실행되지 않더라도, 이 LED는 EtherCAT RIO 확장 섀시의 FPGA 로직 덕분에 동일한 차임 주파수에서 다른 큰 소리에도 반응합니다.

그림 3. 이 EtherCAT RIO FPGA 코드는 NIWeek 2009 키노트 데모에서 한 곡을 연주하는 여러 차임벨을 울리는 데 사용되었습니다.
슬레이브 섀시는 LabVIEW FPGA 알고리즘 함수 외에도 여러 섀시 I/O 신호를 제공하여 코드를 사용자 정의하고 동기화할 수 있습니다. 예를 들어, EtherCAT 상태를 사용하면 7개의 EtherCAT 상태 중 하나에서 특정 FPGA 로직을 실행할 수 있습니다. 따라서 마스터 컨트롤러와의 통신이 중단되면 EtherCAT RIO 확장 섀시는 안전 작동 상태로 전환되고, FPGA 코드는 적절한 안전 상태 동작을 지정할 수 있습니다. 또 다른 유용한 신호는 출력 및 입력 버추얼 포인트입니다. 이 두 타이밍 신호는 각 슬레이브가 각 스캔 주기 동안 출력 및 입력 값을 언제 업데이트하는지 정확히 나타냅니다. 따라서 이 상승 에지는 여러 EtherCAT RIO 확장 섀시에서 FPGA 코드를 동기화하는 데 사용할 수 있습니다. LabVIEW 예제는 NI-Industrial Communications for EtherCAT 드라이버에 포함되어 NI 스캔 엔진 동기화, 특수 디지털 신호, 비동기 오버샘플링 등 여러 고급 FPGA 기능을 보여줍니다.
그림 4. 가상 포인트 타이밍 신호를 사용하여 EtherCAT I/O FPGA 코드를 동기화합니다.
EtherCAT RIO 확장 섀시와 같은 결정론적 분산 I/O를 사용하면 리얼타임 어플리케이션에 필요한 엄격한 타이밍과 동기화를 유지할 수 있습니다. 또한 EtherCAT RIO 슬레이브에 하드웨어 레벨 FPGA 코드를 추가하면 컨트롤러의 프로세싱 부하를 줄이고, 노드에서 지능적인 결정을 내려 응답 시간을 단축할 수 있습니다.