- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
利用SICL-LAN服务器的控制
概述
在Excel VBA中的样本程序
概述
本部分说明在Windows环境中如何利用SICL控制E5071C。
利用SICL-LAN服务器控制E5071C,您必须进行经SICL-LAN服务器进行控制中说明的准备工作。
在Excel VBA中的样本程序
打开Microsoft Excel中的ctrl_lansicl.xls,显示如下图所示的屏幕:
ctrl_lansicl.xls
如何利用ctrl_lansicl.xls中的每个要素,请参见以下说明。
在第1部分,SICL-LAN地址右面的单元中输入控制SICL-LAN服务器的E5071C的地址。此地址为XX,已通过命令System > Misc Setup > Network Setup > SICL-LAN Address [XX]将其设置。在IP地址右面的单元中输入E5071C的IP地址。没有这两个单元中的修正值,此VBA宏将不会正常运行。
点击第2部分中的预置,以执行预置操作。
在第3部分,设置通道1的扫描范围(起点和终点)和测量点的数量。点击设置以执行设置,如下设置表所示。
第4部分,设置通道1中的迹线1的测量参数和数据格式。点击设置以执行设置,如下设置表所示。
在第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