利用SICL-LAN服务器的控制

E5071C

利用SICL-LAN服务器的控制

有关样本应用程序的其他主题

概述

本部分说明在Windows环境中如何利用SICL控制E5071C。

在Excel VBA中的样本程序

打开Microsoft Excel中的ctrl_lansicl.xls,显示如下图所示的屏幕:

ctrl_lansicl.xls

如何利用ctrl_lansicl.xls中的每个要素,请参见以下说明。

  1. 在第1部分,SICL-LAN地址右面的单元中输入控制SICL-LAN服务器的E5071C的地址。此地址为XX,已通过命令System > Misc Setup > Network Setup > SICL-LAN Address [XX]将其设置。在IP地址右面的单元中输入E5071C的IP地址。没有这两个单元中的修正值,此VBA宏将不会正常运行。

  2. 点击第2部分中的“预置”,以执行预置操作。

  3. 在第3部分,设置通道1的扫描范围(起点和终点)和测量点的数量。点击设置以执行设置,如下设置表所示。

  4. 第4部分,设置通道1中的迹线1的测量参数和数据格式。点击设置以执行设置,如下设置表所示。

  5. 在第5部分,点击读出迹线,并检索通道1中的迹线1的格式化数据数组。以表格和图形形式显示数据。

VBA宏中的操作说明

本部分说明VBA宏的操作,着眼于与SICL控制相关的部分。

  • 要使用VBA宏中的SICL,您必须清除SICL定义文件(用于VB)的功能并定义SICL定义文件的变量。

  • 在VBA宏中,目标名称为“SICL”的标准模块ctrl_sicllan.xls是定义文件。

SICL的基本流程控制显示在利用SICL的控制流程中。

  • 此样本程序中,在通信部分利用SICL的ivprintf功能、ivscanf功能和iread功能;您也可以使用其他SICL功能。详情,请参见sicl.hlp(SICL的在线帮助)。

利用SICL的控制流程

 

  • 如何利用SICL的每个功能的更多信息,请参见SICL手册。

以下说明在利用SICL的控制流程中的每个步骤的程序。

连接

程序的相应连接是OpenSession(OpenSession)。利用第1部分ctrl_lansicl.xls中输入的SICL-LAN地址和IP地址,通过SICL的iopen功能,OpenSession与E5071C建立了连接。iopen功能将您指定的E5071C的地址信息作为它的参数。

语法

地址 = iopen(dev)

 

变量

addr

说明

对话信息(输出)

数据类型

整数类型

 

dev

说明

您指定(输入)的仪器的地址信息

数据类型

字符串类型

语法

sicl-name [ip-address]:interface, sicl-lan-address

例如,如果参数(dev)是“lan[192.168.0.1]:hpib9,17,”,通过利用SICL接口名为lan的外部控制器,使得hpib9接口的17地址与IP地址是192.168.0.1的E5071C连接。

OpenSession

Function OpenSession() As Integer

Dim ServAddr As String

Dim IpAddr As String

On Error GoTo ErrHandler

'''Get Sicl-Lan Address

Sheets("Sheet1").Select

Range("C2").Select

ServAddr = ActiveCell.FormulaR1C1

'''Get Ip Address

Sheets("Sheet1").Select

Range("C3").Select

IpAddr = ActiveCell.FormulaR1C1

 

OpenSession = iopen("lan[" & IpAddr & "]:hpib9," & ServAddr)

Call itimeout(OpenSession, 10000)

Exit Function

ErrHandler:

MsgBox "*** Error : " & Error$

Call siclcleanup

End

End Function

 

发送

在通信过程中,步骤相应的发送对象是OutputSiclLan。OutputSiclLan利用SICL的ivprintf功能发送信息(SCPI命令)。ivprintf功能将iopen功能和程序消息的对话信息输出作为它的参数。

语法

状态 = ivprintf(addr,mes)

 

变量

Status

说明

返回功能值(输出)

数据类型

整数类型

 

addr

说明

对话信息(输出)

数据类型

整数类型

 

mes

说明

程序消息(输入)

数据类型

字符串类型

OutputSiclLan

Sub OutputSiclLan(addr As Integer, message As String)

 

Dim Status As Integer

Dim actualcnt As Long

Dim length As Long

 

On Error GoTo ErrHandler

length = Len(message)

Status = ivprintf(addr, message & Chr$(10))

Exit Sub

 

ErrHandler:

MsgBox "*** Error : " & Error$

Call siclcleanup

End

End Sub

 

接收

在通信过程中,程序相应的接收ASCII格式消息是EnterSiclLan。EnterSiclLan利用SICL的ivscanf功能,以ASCII格式接收消息,并将其存储在输出变量中。ivscanf功能将iopen功能、输出格式和输出数据的对话信息输出作为它的参数。

语法

状态 = ivscanf(addr,fmt,ap)

 

变量

fmt

说明

输出格式(输入)

数据类型

字符串类型

 

ap

说明

输出数据(输出)

数据类型

字符串类型

 

有关变量(状态)和变量(地址)的详情,请参见变量

在Visual Basic中,当利用ivscanf功能接收字符串数据时,必须将作为固定长度的字符串的变量清除。

EnterSiclLan

Sub EnterSiclLan(addr As Integer, Query As String)

 

Dim Status As Integer

Dim actualcnt As Long

Dim res As String * 256

 

On Error GoTo ErrHandler

Status = ivscanf(addr, "%t", res)

Query = Trim(res)

Exit Sub

 

ErrHandler:

MsgBox "*** Error : " & Error$

Call siclcleanup

End

 

End Sub

 

在通信过程中,程序的相应接收数组数据是EnterSiclLanArrayReal64,它利用SICL的iread功能以IEEE 64-bit浮点二进制传送格式来接收数组数据,并将其存储到输出变量中。iread功能将iopen功能、输出数据、数据字段的数量、完成读取数据的条件和实际读出数据字段的数量的对话信息输出作为它的参数。

语法

状态 = iread(addr,buf,bufsize,reason,actual)

 

变量

buf

说明

输出数据(输出)

数据类型

字符串类型

 

bufsize

说明

数据字段的数量(输入)

数据类型

长整数类型

 

reason

说明

完成读出数据的条件(输入)

数据类型

整数类型

 

actual

说明

实际读出数据字段数量(输出)

数据类型

长整数类型

 

有关变量(状态)和变量(地址)的详情,请参见变量

 

以下说明EnterSiclLanArrayReal64的每个功能。

(1) 检索数据标头。

(2) 将数据字段的数量存储到标头部分的大小变量中。

(3) 检索通道1中迹线1的格式化数据数组,并将其存储到databuf变量中。

(4) 检索数据端的消息端接器。
 

EnterSiclLanArrayReal64

Function EnterSiclLanArrayReal64(addr As Integer, databuf() As Double) As Long

 

Dim Status As Integer

Dim actualcnt As Long

Dim buf As String * 8

Dim size As Long

On Error GoTo ErrHandler

'''Read header info of "#6NNNNNN"

Status = iread(addr, buf, 8, I_TERM_MAXCNT, actualcnt) '.................(1)

size = Val(Mid$(buf, 3, 6)) '.................(2)

'''Read data

Status = iread(addr, databuf, size, I_TERM_MAXCNT, actualcnt) '.................(3)

'''Read ending LF

Status = iread(addr, buf, 1, I_TERM_MAXCNT, actualcnt) '.................(4)

EnterSiclLanArrayReal64 = size / 8

Exit Function

 

ErrHandler:

MsgBox "*** Error : " & Error$

Call siclcleanup

End

End Function

 

断开

利用SICL的iclose功能断开通信。iclose功能将iopen功能的对话信息输出作为它的参数。

语法

状态 = iclose(addr)

有关变量(状态)和变量(地址)的详情,请参见变量

样本控制

通过逐步执行以上程序,可以控制E5071C,以下是利用SICL的控制流程中的控制流程。这将通过预置中说明的“预置”程序(当点击“预置”按钮时,执行的程序)来证明。

预置

Sub Preset()

 

''' Open Session

E507x = OpenSession

 

'''Presetting the analyzer

Call OutputSiclLan(E507x, ":SYST:PRES")

'''Close Session

Call iclose(E507x)

 

End Sub