C\#NI-VISA 를 통 해 Tektronix TBS 2000 B 시리즈 오실로그래프 를 조작 하 는 실현 절차

개술
본 고 는 C\#언어 접근 제어 Tektronix TBS 2000 B 시리즈 오실로그래프 를 사용한다.인터페이스 프로 토 콜 은 NI-VISA 를 사용 합 니 다.
최근 프로젝트 는 오실로그래프 와 통신 해 야 하 며 오실로그래프 를 간단하게 제어 하고 파형 데 이 터 를 가 져 와 야 한다.한 동안 의 연 구 를 통 해 관련 조작 을 대체적으로 알 게 되 었 습 니 다.관련 자료 가 많 지 않 은 것 을 발 견 했 기 때문에 제 가 알 고 있 는 관련 지식 을 여러분 과 공유 하 겠 습 니 다.글 끝 에 본 논문 과 관련 된 문서,코드,설치 프로그램의 다운로드 주 소 를 제공 할 것 이다.
정상 적 인 상황 에서 우리 가 한 장치 와 통신 을 해 야 한다 면 먼저 PC 가 어떤 방식 으로 장치 와 연결 되 는 지,통신 프로 토 콜 이 무엇 인지 알 아야 한다.작업 이 많은 장치 와 연결 되 어야 하기 때문에 자주 사용 하 는 연결 방식 은 주로 네트워크 연결,직렬 연결,USB 인터페이스 연결 등 이 있다.통신 프로 토 콜 은 모두 사용자 정의 프로 토 콜 텍스트 입 니 다. 이 프로젝트 는 먼저 오실로그래프 의 통신 협 의 를 알 아야 다음 개발 이 가능 하 다 고 생각 했 습 니 다.공식 사이트 에서 프로 그래 밍 자 료 를 다운로드 한 결과 이 장 치 는 VISA 를 통 해 연결 할 수 있 는 것 으로 밝 혀 졌 습 니 다.그것 은 무엇 입 니까?VISA 는 National Instruments 회사 가 이 끌 고 일부 설비 제조 업 체 와 공동으로 지정 한 유 니 버 설 설비 연결 기준 이다.설비 가 어떤 방식 으로 연결 되 든 VISA 규범 에 부합 하면 이 표준 협 의 를 통 해 연결 할 수 있다.NI-VISA 는 NI 회사 가 실현 한 협의 이다.이 협의 인 터 페 이 스 를 통 해 우 리 는 설비 와 직접 통신 할 필요 가 없다.NI-VISA 가 제공 하 는 인 터 페 이 스 를 통 해서 만 장치 에 접근 할 수 있 으 며,자주 사용 하 는 인 터 페 이 스 는 매우 간단 하 다.주로 OPEN,WRITE,READ 등 몇 가지 명령 이다.규범 에 맞 는 장 치 는 SCPI 명령 집합 문 서 를 공개 하고 이 문 서 를 자세히 읽 으 면 장치 의 통 제 를 실현 할 수 있다.전체 프로젝트 과정 에서 저 는 몇 개의 공식 사이트 에서 다운로드 한 문 서 를 통 해 프로젝트 개발 을 완 성 했 습 니 다.거의 장애 가 없 었 습 니 다.여기 서 우리 의 제조 업 이 선진 국 에 비해 큰 차이 가 있다 는 것 을 감개 할 수 밖 에 없습니다.우 리 는 이런 표준 적 인 것 이 부족 하고 모든 일 을 밑바닥 에서 시작 해 야 하 며 과학적 이지 않 습 니 다.만약 그 거두 들 이 이 방면 의 일 을 하려 고 한다 면 정말 좋 을 것 이다.장 을 보 거나 생선 을 파 는 앱 을 하 는 것 보다 훨씬 의미 가 있다.
연결
오실로그래프 는 네트워크 인터페이스 와 PC 를 통 해 연결된다.

오실로그래프 IP 와 PC 를 같은 네트워크 에 설정 합 니 다.예 를 들 어 192.168.11.11.설정 할 때 IP 에 0 이 없 도록 주의 한 다음 에 PC 에서 먼저 ping 을 해서 ping 이 통 하 는 지 확인 합 니 다.

ping 이 통 하면 브 라 우 저 에 입력 하 십시오.http://192.168.11.11오실로그래프 홈 페이지 를 열 수 있 는 지 확인 하고 SCPI 명령 이 실 행 될 수 있 는 지 확인 하 세 요.

3.설치 구동
NI-VISA Runtime 설치 프로그램 을 실행 하고 실행 시 기본 패키지 와.NET 지원 패 키 지 를 선택 하 십시오. 

.NET 지원 패 키 지 는.NET 4.0-4.5.1 Runtime Support(IVI),.NET XX Runtime Support(NS),NS 패 키 지 는 기 존 버 전이 다.
설치 완료 후 두 개의 가방 형성:Ivi.Visa 와 NationalInstruments.Visa
그 중에서 Ivi.Visa 는 두 가지 버 전이 있 습 니 다.
32 비트 위치:C:\\Program Files(x86)\IVI Foundation\\VISA\\Microsoft.NET\Framework 32\\v 2.0.50727\\VISA.NET Shared Components 5.8.0
64 비트 위치:C:\\Program Files\IVI Foundation\VISA\Microsoft.NET\Framework 64\\v 2.0.50727\VISA.NET Shared Components 5.8.0
National Instruments.Visa 위치:C:\\Windows\Microsoft.NET\\assembly\GACMSIL\NationalInstruments.Visa\v4.0_17.0.0.0__2eaa5af0834e221d
인용
새 VS 프로젝트 는 위 주소 에 Ivi.Visa 와 NationalInstruments.Visa 두 개의 인용 을 추가 합 니 다.Ivi.Visa 의 라 이브 러 리 는 필요 에 따라 32 비트 또는 64 비트 를 선택 할 수 있 습 니 다.
프로그램 이 실 행 될 때 대상 기기 가 설치 되 어 실 행 될 때 인용 한 라 이브 러 리 는 프로젝트 폴 더 로 복사 할 필요 가 없습니다.

코드
https://github.com/cnxy/VISAInstrument
연결 코드:

string IP = this.txtIP.Text.Trim();

      string IpRegex = @"^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$";

      if (!Regex.IsMatch(IP, IpRegex))
      {
        MessageBox.Show("IP     !");
        return;
      }

      if (!PortUltility.OpenIPAddress(IP, out string fullAddress))
      {
        MessageBox.Show("     !");
        return;
      }

      try
      {
        _portOperatorBase = new LANPortOperator(fullAddress);
      }
      catch (Exception ex)
      {
        MessageBox.Show($"       :{ex.Message}");
        return;
      }

      try
      {
        _portOperatorBase.Timeout = 2000;
        _portOperatorBase.Open();
      }
      catch (Exception ex)
      {
        MessageBox.Show($"      :{ex.Message}");
        return;
      }

      EnabledControls(true);
      MessageBox.Show("    !");
쓰기 명령 은 모두 두 가지 가 있 습 니 다.하 나 는 데 이 터 를 되 돌려 주지 않 아 도 되 고 하 나 는 데 이 터 를 되 돌려 야 하 는 명령 을 내 린 후에 야 읽 기 명령 을 내 릴 수 있 습 니 다.그렇지 않 으 면 읽 기 에 실패 할 것 입 니 다.
읽 기와 쓰기 명령 은 다음 과 같다.

private void btnWrite_Click(object sender, EventArgs e)
    {
      string CmdStr = this.txtCommand.Text.Trim();

      
      try
      {
        _portOperatorBase.WriteLine(CmdStr);
        ShowLog($"[Write][{CmdStr}][Success]");
      }
      catch
      {
        ShowLog($"[Write][{CmdStr}][ERROR]");
      }
    }

    private void btnReadString_Click(object sender, EventArgs e)
    {
      try
      {
        var result = _portOperatorBase.Read();
        ShowLog($"[Read][{result}][{result.Length}]");
      }
      catch (IOTimeoutException)
      {
        ShowLog($"[Read][ERROR:Timeout]");
      }
      catch (Exception ex)
      {
        ShowLog($"[Read][Exception:{ex.Message}]");
      }
    }
핵심 코드 가 이렇게 많 으 니 나머지 는 필요 에 따라 SCPI 지령 표를 조회 하면 된다.
부록,관련 SCPI 명령
 다음 명령 은 Tektronix TBS 2000 B 시리즈 오실로그래프 에 만 적용 된다.

( )        
1.     
WRITE:*IDN?

READ:

( )      
1.       
RECAll:SETUp FACtory

2.      
Select:CH<x> ON/OFF

3.         
HORizontal:POSition?

HORizontal:POSition 10

 

HORizontal:SCAle?

400      

HORizontal:SCAle 0.2

 

4.         
CH1:POSition?

CH1:POSition 1

 

CH1:SCAle?

CH1:SCAle 2.5

 

5.    
  

TRIGger:A:MODe?

NORMAL

 

    

TRIGger:A:TYPe?

EDGE

 

   

TRIGger:A:EDGE:SOUrce CH1

 

  :

TRIGger:A:EDGE:COUPling g {DC|HFRej|LFRej|NOISErej}

 

  

TRIGger:A:EDGE:SLOpe {RISe|FALL}

 

    (  )

TRIGger:A:LEVel?

2.0800

TRIGger:A:LEVel 3.5

 

    (    )

TRIGger:A:LEVel:CH1?

2.0800

TRIGger:A:LEVel :CH1 3.5

 

( )      
1.     /      
ACQuire:STOPAfter SEQuence

ACQuire:STOPAfter RUNSTOP

  :ACQuire:STOPAfter?

             

 

2.    /      
ACQuire:STATE?

0:Run Single

1:Stop

  :ACQuire:STATE ON/OFF

 

3.        
TRIGger:STATE?

READY:    

SAVE:    

 

( )        
1.         (  )
DATA:SOURCE CH1

 

2.    /      
HORizontal:RECOrdlength?

2000

 

3.          (   ,       )
WFMOutpre:RECOrdlength?

2000

4.          
DATa:STARt 1     1

DATa:STOP 2000

DATa:WIDth?       (   )   1,     2  ,      0

 

5.      
CURVe?

Read(Bytes):           【LENGTH= N+(STOP-STARt+1)+1】

   :  (N  )+  (STOP-STARt+1  )+  (1  )。

   :#(1  )+       (1  )+    (1~9  )

   :
, , , -128~127
관련 문서,코드 다운로드:https://gitee.com/seabluescn/tksamples.git
이상 은 C\#NI-VISA 를 통 해 Tektronix TBS 2000 B 시리즈 오실로그래프 를 조작 하 는 실현 절차 에 대한 상세 한 내용 입 니 다.c\#Tektronix TBS 2000 B 시리즈 오실로그래프 를 조작 하 는 자 료 는 저희 의 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기