티스토리 뷰

NI사의 이더넷 DAQ 장비를 사용하기 위해서는 IP 할당 및 장비에 대한 예약은 필수적인 요소입니다. IP 할당은 DHCP를 통해서 공유기에 물리게 되면 자동적으로 받아오게 되지만, 장비 추가 및 예약과 관련된 부분은 MAX에서 사용자가 설정을 해줘야 합니다. 


이러한 부분을 사용자는 코드상에서 처리할 수 있습니다. 이번 글에서는 C#을 이용하여 장비를 추가하고, 장비를 예약 및 예약 해제를 하는 방법에 대해서 알아보도록 하겠습니다. 이더넷 장비에 대해서 명확한 이해를 원하신다면 아래의 링크를 참조해주시기 바랍니다.


이더넷 DAQ 장비에 대해서 좀더 알아보기


그럼 장비를 설정하는 방법에 대해서 알아보도록 하겠습니다. 


1. 장비 추가하기


이더넷 장비를 추가하기 위해서는 MAX에서 네트워크 NI-DAQmx 디바이스 찾기를 통해서 장비를 찾을 수 있습니다. NI 장비든 타회사의 장비든 이더넷 장비를 사용자의 PC에서 공유기를 통해서 원활하게 잡기 위해서는 이더넷 장비의 서브넷 마스크와 PC가 가진 이더넷 설정의 서브넷 마스크는 반드시 동일해야 합니다.


아래의 그림과 같이 네트워크 장비 찾기를 통해서 사용자가 수동적으로 장비를 추가할 수 있습니다. (아래의 그림에서 일부 정보는 정보 보안을 위해서 삭제하였습니다.)



위와 같은 방식으로 장비를 인식할 수 있습니다. 또한 프로그램적으로도 장비를 인식할 수 있습니다. C#의 DAQmx 관련 어셈블리를 살펴보면 DaqSystem이라는 클래스를 보유하고 있습니다. DaqSystem 클래스 MAX에 저장된 태스크, 스케일, 글로벌 채널에 대한 접근을 물론 DAQ 하드웨어를 위한 함수를 제공하고 있습니다. 


DaqSystem 클래스에는 AddNetworkDevice라는 함수가 있습니다. AddNetworkDevice는 2개의 함수로 재정의하여 제공되고 있습니다. 이 함수의 구조는 아래와 같습니다. 


public Device AddNetworkDevice(string ipAddress, string deviceName, bool attemptReservation, double timeout)


public Device AddNetworkDevice(string ipAddress, string deviceName, double timeout)


AddNetworkDevice 함수는 장비의 IP 주소, 장비의 이름, 예약 여부, 타임아웃 시간에 대한 정보를 파라미터로 입력받습니다. 예약에 대한 부분을 처리하지 않고자 한다면 두번째 함수를 사용할 수 있습니다. IP 주소와 장비의 이름은 위의 MAX에서 확인을 할 수 있습니다. 호스트 이름이 장비의 이름이며, 유선 IP 주소가 장비의 이더넷 주소입니다. C# 코드에서는 아래와 같이 사용을 할 수 있습니다. 



정상적인 주소와 장비 이름을 사용하여 함수를 호출했다고 한다면 장비가 성공적으로 추가가 될 것입니다. 만약 그렇지 않다면 함수는 DaqException이 발생을 합니다.


2. 장비 예약 및 예약 해제하기


MAX상에서 장비가 추가되거나, 위의 함수를 통해서 성공적으로 장비를 추가했으면 장비 사용을 위해 예약을 해줘야 합니다. 다른 PC에서 동일한 장비에 동시에 접근을 하지 못하도록 하게 위해서 이더넷 장비에 대한 예약은 필수적입니다. 


예약을 하는 방법은 Device 클래스를 이용해야 합니다. Device 클래스는 Factory 패턴을 적용하여 생성자가 따로 없습니다. 따라서 Device 객체를 가져오기 위해서는 아래의 함수를 이용해야 합니다. 


Device dev = DaqSystem.Local.LoadDevice("장비의 이름");


MAX에서 설정된 장비의 이름을 인자로 넣어서 함수를 실행하게 되면 Device는 null이 아닌 객체를 리턴하게 됩니다. 

Device 클래스에 대한 객체가 생성이 되었으면 Device 클래스에서 제공하는 ReserveNetworkDevice와 UnreserveNetworkDevice 함수를 통해서 예약과 예약 해제를 할 수 있습니다. 


아래와 같은 방식으로 장비를 예약하고 해제할 수 있습니다. 



아래의 그림은 Start 버튼을 누르면 예약을 하고, Stop을 누르게 되면 자동으로 예약 해제를 하는 프로그램을 간략히 구현한 결과입니다.



이 글에서는 C#에서 DAQ 장비를 이더넷으로 추가 및 예약하기 위한 방법에 대해서 알아보았습니다.


이 글이 도움이 되셨나요? 그렇다면 아래의 그림을 클릭해주세요.


댓글