이제 한번 GPIB 통신 프로그램에 대한 작업을 정리하도록 하겠습니다~
앞서 GPIB에 대한 대략적인 이야기를 하였으니
실제 C#으로 GPIB 통신을 합니다.
GPIB 통신을 위해서 여러 가지 방법이 있겠지만 일단 VISA 드라이버를 사용해서 하는법으로 해보겠습니다.
회사에서는 NI Measurement Studio 구입하여서 사용하고 있는데 라이센스 비용이 있다보니 사용하기가 힘들겠네요.
예전에는 VisaNS를 사용하여서 작업하였는데 찾아보니 VisaNS는 더이상 지원을 하지 않는다고 하네요.
예전 코드 실행하니 갑자기 안되더라고요. 헐헐
VISA란?
Virtual Instrument Software Architecture(VISA) 의 약자로 계측기와 통신을 하기 위한 표준 라이브러리입니다.
일반적으로 PC와 통신을 하기위한 구조는 위와 같습니다~
계측장비와 내 PC간 서로 연결이 되기 위해 다양한 통신 장치(GPIB, USB, LAN, Serial)을 사용할 것이고
계측기와 내가 제작한 프로그램이 서로 통신하기 위해 VISA Library를 사용하게 되는 것입낟~
VISA라이브러리가 없다면 프로그램 만들기 위해서 드라이버까지 건드려야 하는데 그럼 참으로 피곤할듯 하다.
그걸 건드릴 실력도 안되고 ㅠㅠ
감사하게도 VISA 라이브러리가 있어 C#의 개발 방법으로만 로직적으로 만들면 되니 다행이네요~ ㅎ
이제 통신을 해보자~
코딩하기전 순서를 적자면
1) NI-GPIB 컨버터를 준비한다.
2) NI-488.2 드라이버 설치한다. 설치되면 NI-Max 설치됨
3) C#으로 프로그램을 제작하기 위해 Visual Studio를 실행한다. (저는 Visual Studio 2017사용합니다~)
4) NI-GPIB 컨버터를 USB포트에 연결하고 장비가 준비가 되었는지 확인한다.
*위와 같이 연결시 Ready의 LED가 점등되면 이상없이 연결된 것 입니다.
1. Visual Studio를 실행하여 새 프로젝트를 시작한다.
Visual Studio 2017 상단 왼쪽에 보시면 파일 버튼 누르면 바로 새로만들기 나옵니다.
2. Windows Form(.NET Framework)선택한다.
*프로젝트 이름은 알아서 잘~
*프레임 워크는 아마 4.8.x일 것일듯(저는 2017이라 4.7.2입니다. 4.8.1이 마지막 닷넷 프레임워크라고 들었다 ㅜㅜ)
3. 로드가 되었는지 확인
아래와 같은 화면이 나오면 프로젝트가 잘 시작되는 것입니다.
UI설정에 따라 조금 다를 수 있습니다.
4. 제일 먼저 할일은 프로젝트 참조에 라이브러리를 추가한다.
[참조]라는 부분 클릭하고 우클릭하면 Context 메뉴가 나오는데 여기서 [참조 추가] 클릭하면 됩니다~
C:\Program Files (x86)\IVI Foundation\VISA\Microsoft.NET\Framework32\v2.0.50727\VISA.NET Shared Components 5.11.0 여기 경로에 Ivi.Visa.dll을 선택합니다.
참조에 Ivi.Visa 추가 된 것을 확인합니다.
앞에 느낌표가 있을경우 문제가 있는 것이니 에러를 확인하세요.
라이브러리도 연결되었으니
이제 하나씩 해보면 됩니다~
using Ivi.Visa; 입력하시어 참조된 라이브러리를 클래스에 등록하시고 메서드를 만들어 주도록 하겠습니다.
간략하게 메서드 만들어서 폼 로드시 바로 동작하게 하였는데
GlobalResourceManager.Find()에서 리소스 리턴을 확인 할 수 있습니다.
이제 한번 GPIB 통신 프로그램에 대한 작업을 정리하도록 하겠습니다~
앞서 GPIB에 대한 대략적인 이야기를 하였으니
실제 C#으로 GPIB 통신을 합니다.
ASRL은 시리얼 포트 관련으로 알고 잇는데 주소값이 없으니 패스~
장비 주소는
[ GPIB<컨트롤러 주소>::장비주소::INSTR ]
위의 형태로 나타납니다.
해당 장비에서 주소값이 GPIB0번 컨트롤러에 주소값이 5번으로 반환되었음을 알 수 있습니다.
이제 주소를 알았으니 해당 주소값을 가지고 통신을 시도하면 됩니다.
위의 메서드에 파라미터를 추가하면 필터를 추가할 수 있습니다.
위와 같은 정규식을 파라미터에 입력이 가능합니다.
현재는 GPIB 인터페이스를 걸러낼 것이라서 [ "GPIB?*INSTR" ] 로 입력합니다.
위와 같이 메서드를 변경하고 호출하면 GPIB가 하나만 검색됩니다.
현재 GPIB가 1개 장비만 연결되어 하나만 나오는데 여려 장비가 함께 연결되어 있으면 연결 장치 만큼 검색됩니다.
검색이 안될경우 GPIB연결 방식, 케이블 연결 방식, 장비 번호 지정 등을 확인하시면 됩니다.
코드를 보면 주소값 입력하여 Open메서드를 실행하면 세션이 연결되고 이후 SCPI 기본 명령어 [ "*IDN?" ] 을 전송하고
피드백을 받으면 해당 장비의 정보값이 들어옴을 확인 할 수 있습니다.
이제 해당 세션을 통해 장비를 제어하고 값을 읽고 하면 됩니다.
설명하는 문서가 적당한지 모르겠네요.
여기에는 기본적으로 통신을 하는것에 대해서만 기록하였고 다음번에는 간략하게 제어 프로그램을 만들어 봐야 겠네요.
'개발' 카테고리의 다른 글
윈폼에서 디자이너 로드 오류 해결방법 (0) | 2024.11.12 |
---|---|
C#으로 하는 GPIB 통신 -3- (4) | 2024.11.11 |
C#으로 하는 GPIB 통신 -2- (11) | 2024.11.10 |
내가 C#을 하는 이유 (7) | 2024.11.08 |
GPIB 소개 (11) | 2024.11.08 |