해결책
1. 코드에 있는 모든 VISA 세션 참조가 Open 그리고 Close 하는 지 확인하십시오. 대부분의 VISA LabVIEW 코드는 다음의 패턴을 따릅니다.
- VISA 참조 열기
- 읽기 및 쓰기 수행
- VISA 참조 닫기
이 코드 구조의 예를 보려면
도움말(Help) >> 예제 찾기(Find Examples..) 로 이동하셔서, LabVIEW의 예제 프로그램 인
Simple Serial.vi 을 확인하십시오
.
2. 장치의 I / O 포트 (Modbus I / O, I / O 서버 등)를 간섭하는 프로세스가 없는지 확인하십시오. 이를 Distributed System Manager에서 확인할 수 있습니다.
3. 문제는 VISA Write IRP_MJ_FLUSH_BUFFER 요청으로 인해 장치에서 INVALID DEVICE REQUEST 응답으로 인해 발생할 수 있습니다. Default로, 각 VISA Read/Write 뒤에는 RS-232를 통해 통신 할 때 VISA Flush를 실행합니다. VISA 버퍼 설정을 변경하여 VISA Flush를 실행하지 않도록하여 이 오류를 피할 수 있습니다.
Flush 명령을 실행하지 않기 위해서는 먼저, VISA I / O Buffer 함수를 코드 시작 부분에 호출하고 (VISA Open 후에, Read/Write 이전에), 마스크 크기를 48로 지정하고 (16 + 32, 16은 수신 버퍼 용 마스크, 32 전송 버퍼의 마스크), 그리고 크기를 4k와 Read/Write로 예상되는 최대 데이터 사이의 값으로 지정해야 합니다.
중요 : 크기를 설정 시 Upper limit을 확인하십시오. 데이터를 전송하거나 수신하는 데 충분한 크기가 아니면 컴퓨터가 손상 될 수 있습니다.