ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Keithley 2600源表LabVIEW驱动实践:VISA、SCPI与TSP全攻略

Keithley 2600源表LabVIEW驱动实践:VISA、SCPI与TSP全攻略 简介吉时利两千六百系列系统源表常用于半导体器件、太阳能电池、电池及电化学传感器测试这套驱动程序包正是为在图形化编程环境LabVIEW中控制该系列仪器而设计面向需要远程控制与自动采集数据的测试工程师和科研人员。资源包共计一百五十四个文件压缩后仅约一点九四兆字节其中以一百三十六个虚拟仪器文件为主辅以菜单文件、自定义控件、库文件、工程文件以及配置与说明文档完整覆盖从底层驱动调用到测试界面构建的流程。使用这套驱动包用户可以直接设置电压源数值、读取电流测量结果、执行四端口电阻测量并借助局域网将仪器接入网络化测试系统实现远程操作与多设备协同。包内提供的工程示例和配套文档可显著降低二次开发门槛便于使用者快速掌握配置方法并根据实际需求扩展自动化测试序列。目前已有八百六十六人学习适合具备一定开发基础、需要对接吉时利两千六百系列仪器进行精密测量的工程师参考。1. 想让 Keithley 2600 系列在 LabVIEW 里听话先得搞清楚驱动在哪一层实验室里来了台 2636B上位机是 LabVIEW第一反应是去 NI 官网找现成驱动结果发现要么版本老得对不上要么装完还是识别不到。这个标题背后的问题很实际Keithley 2600 系列26xx 源表在 LabVIEW 里到底该怎么驱动、走哪条路径最省事、出问题了从哪查起。我做了几年半导体器件测试从 2602 到 2636 都用过今天就把这条路的细节和坑一次说清楚——适合正在搭 I-V 测试系统、被 VISA 资源列表困扰、或者想把 TSP 和 LabVIEW 混着用的工程师。2. 三种驱动路径先用原理说服自己再决定抄哪条2.1 SCPI over VISA、TSP、官方驱动三选一的取舍Keithley 2600 系列在 LabVIEW 里被驱动的方式主流其实就三种。最通用的一条是 SCPI over VISA把源表当一个 VISA 设备用*IDN?、:SOUR:VOLT这类标准命令一行行发LabVIEW 里用 VISA Open / VISA Write / VISA Read 节点来做。这条路的好处是你换任何支持 SCPI 的仪器都能复用这套代码坏处是每次扫描的每一条命令都要走一趟总线点数一多速度就下来了。第二条是 TSPTest Script Processor。2600 系列内部有个独立的脚本引擎你可以把整套扫描逻辑写成一个 TSP 脚本用loadscript烧进设备然后在 LabVIEW 里只需要触发一次、等结果回来。这是 Keithley 自己最推荐的方式特别是做高速 I-V 扫描或者双通道同步时省掉的不只是代码量而是几百次总线往返的时间。代价是你要多学一种脚本语法调试时不太直观。第三条是用 Keithley 官方提供的 LabVIEW 驱动程序。这些驱动本质上是把 TSP 或 SCPI 封装成了 LabVIEW 的 VI 函数库你调用的时候不用写命令字符串。但问题在于官方驱动的更新节奏比较慢而且每个 LabVIEW 版本的兼容性不一样装完报VI 版本太旧的经历很多人都有过。我一般把它当参考实现真正做事还是自己基于 VISA 写。选型上我的建议很简单如果你只是偶尔测几条曲线SCPI over VISA 就够了最直接也最好排查如果你要跑几百个点的自动扫描或者测半导体器件的击穿特性直接学 TSP别犹豫。中间态是最难受的——用官方驱动却不明原理出了问题连命令在哪儿都找不到。2.2 NI-VISA 是基础设施先确认它和你的 LabVIEW 配合正常很多人在Keithley 的 LabVIEW 驱动程序上栽跟头第一步其实不是下载驱动而是确认本机的 NI-VISA 安装情况。LabVIEW 本身不带仪器通信能力VISA 是它和 GPIB、串口、USB、以太网仪器对话的公共接口层NI-VISA 运行时是必须的。常见的情况是装了 LabVIEW 2021 又装了 LabVIEW 2023结果 VISA 版本被高版本覆盖旧的 VI 编译报错也有的是只装了 LabVIEW Runtime Engine没装 NI-VISAVISA 节点直接变成灰色不可用。安装路径上NI-VISA 通常和 LabVIEW 一起装或者单独从 NI 官网下载注意位数要和 LabVIEW 一致——32 位 LabVIEW 配 32 位 VISA混着装会出现VISA 资源管理器可以打开设备但 LabVIEW 里找不到资源的玄学问题。装完以后验证的方法是打开 NI Max 或者 VISA Interactive Control左边树形菜单里能看到ASRL串口、GPIB、USB、TCPIP开头的资源名。如果你能看到类似TCPIP0::192.168.1.100::INSTR这样的条目说明 VISA 层已经识别到源表了这一步才是后面所有工作的地基。2.3 在 LabVIEW 里写第一个命令之前先用命令行问一句 IDN这是我最强调的最小验证步骤不打开 LabVIEW先确认仪器能不能对话。Keithley 2600 前面板有 Remote/Local 切换接到电脑后先按MENU COMMUNICATION查看当前是 GPIB、USB 还是 Ethernet记下地址。然后用 VISA Interactive ControlNI 自带工具打开该资源发送*IDN?正常会返回类似KEITHLEY INSTRUMENTS,MODEL 2636B,1234567,1.7.0的标识。这一步的意义是把你从LabVIEW 驱动有没有问题中解放出来——如果命令行都读不到LabVIEW 里再改也是白搭如果命令行能读到问题就锁定在 LabVIEW 端的 VISA 配置或路径设置上。这个顺序十个换了新电脑就死活连不上仪器的工程师九个人都跳过了。3. 落地实现用 NI-VISA 在 LabVIEW 里跑通 2600 系列的最小 I-V 扫描3.1 从 VISA 资源列表到 Open确认会话参数没设错在 LabVIEW 里新建一个 VI函数面板搜索VISA Open拖到框图。这个节点的关键是VISA resource name输入——它不只是个字符串而是要右键选择Browse在弹出框里选 NI-VISA 识别到的设备。很多人在这里直接手动输入 IP 地址结果格式错了比如少了TCPIP0::前缀或者把INSTR写成了SOCKET得到的就是VISA Open报错 -1073807339资源不可用。正确的最小连接框图逻辑是三段式VISA Open - VISA Write发命令- VISA Read读回应。VISA Open 配置面板里Timeout (ms)我默认设 10000不要用默认的 2000很多初次连接失败其实是握手慢不是真的不通。VISA Read 节点需要指定byte count2600 系列返回的 ASCII 字符串一般不长IDN 查询设 256 足够但如果是读一大段数据这个值不够会导致被截断后面会专门说。3.2 写一个最小 VI读回仪器型号验证链路跟着做一个最简 VI图形化编程语言的思路我用文字流程描述照这个连线就能跑通。前面板放一个字符串显示控件框图放四个节点VISA Open、VISA Write、VISA Read、VISA Close顺序连线错误线串起来。VISA Write 的写入字符串填*IDN?VISA Read 的 byte count 填 256。运行这块 VI显示控件里应该出现完整的厂商和型号字符串。如果这里能出数据说明你已经完成了LabVIEW 连接 Keithley 2600的最核心动作——剩下的所有功能都是在这个链路里加命令、加解析、加循环。3.3 单点 I-V 测试设置源电压限制电流回读测量值连接验证通了下一步做一个真正有用的功能设定一个源电压测出对应的电流值。Keithley 2600 的 SCPI 命令模式里通道 A 和通道 B 以smua/smub区分。这里以通道 A 为例发一组命令:SOUR:FUNC VOLT :SOUR:VOLT 1.0 :SENS:FUNC CURR :SENS:CURR:PROT 0.01 :OUTP ON READ?逻辑说明前四条是配置源表模式和参数SENS:CURR:PROT 0.01是 10 mA 电流限制这个值对二极管、电阻这种常见器件别小于 1 mA否则稍微有点漏电就触发 Compliance 限制并停止测试。OUTP ON之后源表才真正输出电压最后的READ?返回一个包含电压、电流、时间戳的数组ASCII 格式逗号分隔。LabVIEW 里对 VISA Read 回的数据用解析字符串按逗号拆开取第二个元素索引 1就是电流值。注意一个细节这个命令序列在OUTP ON之后不仅输出了 1V 电压同时也在做电流量程的自动选择所以回读的电流精度在 pA 到 A 之间自适应。如果你发现读值跳动很大可以加一条:SENS:CURR:NPLC 1NPLC1 表示 50Hz 工频下积分一个周期约 20ms噪声会立刻降下来。3.4 完整的线性扫描 VI扫电压、记录电流、画波形图单点测量只是热身实际测试里最少要做的是线性扫描——比如从 -1V 扫到 1V每步 0.1V记录电流变化。SCPI 方式下有两种写法一种是 LabVIEW 循环里逐点改电压另一种是用源表内部的扫描控制命令:SOUR:SWESourceMeter 支持硬件扫描序列。在 LabVIEW 里逐点写循环更直观也更方便控制每个点的停留时间。框图结构是外层一个 For 循环循环次数由扫描点数决定循环内做 VISA Write改电压- VISA Write (READ?) - VISA Read读回数据按逗号拆开存数组循环结束后把电压数组和电流数组捆绑成簇送到波形图。:SENS:CURR:NPLC 1 :SOUR:VOLT:START -1.0 :SOUR:VOLT:STOP 1.0 :SOUR:VOLT:STEP 0.1 :TRIG:COUN 21 :READ?这段 SCPI 用源表自身的扫描引擎替代了 LabVIEW 循环一次总线交互返回 21 个点的数据。注意:TRIG:COUN必须先于READ?设定否则默认触发一次只回一个点。回读的字符串是 21 组电压电流的压缩格式用 LabVIEW 的Spreadsheet String To Array函数可以一次性转成二维数组然后拆列给波形图。从工程角度我推荐这段基于TRIG:COUN的写法不只是代码少关键是源表内部扫描的每步间隔严格均匀不会像 LabVIEW 循环那样受到 Windows 线程调度的抖动影响——这对测量某些对时间敏感的器件特性很关键。3.5 双通道协调2602 以上型号的通道复用问题如果你用的是 2602/2612/2636 这类双通道型号在 LabVIEW 里同时控制 SMU A 和 SMU B 要注意一个常见误用很多人把两个通道当作独立的 VISA 资源分别 Open这是错误的。2600 系列双通道的通信链路只有一条仪器内部用smua和smub两个逻辑节点区分通道在 SCPI 模式下对应的命令前缀是:SOUR1和:SOUR2或通过:INST:SEL SMUA/SMUB切换当前操作通道。我在 LabVIEW 里的做法是用一个 VISA 会话先在初始化命令里写:INST:SEL SMUA ; 设置通道A :INST:SEL SMUB ; 设置通道B然后两个通道的配置分别完成。好处是节省一个会话而且避免两个 VISA 会话同时去抢物理接口导致的一连串超时错误。如果你用的是以太网连接这种单会话双通道的做法在跑同步扫描时也更容易保证时序一致性。4. 驱动使用中的常见问题排查5 个高频踩坑与解决思路4.1 设备在 VISA 资源列表里存在但 LabVIEW 打不开现象NI Max 里能看到 ASRL/TCPIP 资源但 VISA Open 报错 -1073807339或者连上了但发送任何命令都超时。原因最常见的是上次 LabVIEW 程序异常退出VISA 会话没有正常关闭源表还在等待上一个连接的状态也可能是前面板被手动切到 Local 模式远程指令被锁住了。另一个隐蔽原因是 2600 系列在同一时间只接受一个远程会话NI Max 本身占着连接LabVIEW 再去 Open 就会冲突。解决先关掉 NI Max 里的 Interactive Control 窗口把源表前面板按LOCAL键切回远程模式再不行就重启 VISA 会话在错误处理分支里加一个VISA Clear节点它会复位仪器 I/O 层但不会重启仪器。如果还是不行给源表断电重上电这个动作能解决八成莫名奇妙的连接问题。4.2 读取回来的数据被截断数组长度不对现象READ?返回的数据读不全比如扫 101 个点只读回 60 个点的数据或者字符串读到一半后面全是乱码。原因VISA Read 的 byte count 常量设小了LabVIEW 按这个值一次只读这么多字节剩下的数据留在缓冲区里。2600 系列默认返回的是加权格式的 ASCII每个点约 20 个字符101 个点就是 2KB 多byte count 设为 4096 或更大才安全。解决把 VISA Read 的 byte count 设成一个足够大的固定值比如 65536然后用VISA Bytes at Port属性节点先查询可用字节数再动态设置读取长度。注意一次READ?对应一次 VISA Read不要在一次命令后连续调两次 Read 去读剩余数据——第二个 Read 会直接等待超时因为源表不会主动再发数据。4.3 Windows 提示驱动数字签名问题或设备管理器出现代码 31现象用 USB 连接 2600 系列时Windows 设备管理器里出现黄色感叹号属性里能看到Windows 无法验证此设备所需的驱动程序的数字签名或代码 31NI Max 里也找不到 USB 资源。原因Keithley 2600 的 USB 接口是 USBTMC 类设备驱动由 NI-VISA 提供。这类问题通常出现在你单独装了一个很老的 VISA 运行时或者 Windows Update 自动更新了 USB 驱动导致版本不匹配代码 31 的常见诱因是硬件更改后驱动程序状态污染。解决先卸载设备管理器里当前的这个 USB 设备勾选删除驱动程序软件拔线重启重新安装最新版 NI-VISA注意位数和 LabVIEW 匹配插线后让 Windows 重新枚举。如果安装时碰到签名验证卡住可以在 Windows 的高级启动选项里临时禁用驱动程序强制签名装完再恢复——这不是常规操作但遇到旧版本 VISA 配合新 Windows 时确实只能这样绕过去。以太网连接则完全没有这个问题所以我一般会用网口顺手一些。4.4 测量电流噪音大读数跳得离谱现象闭环灵能出数但读出来的电流在 pA 量级疯狂跳动或者同一个电压点两次读到的电流差十倍。原因大概率是 NPLC 设置太小。NPLC0.01 时源表积分时间极短噪声抑制很差另外如果测试夹具的屏蔽没接地50Hz 工频干扰会直接进来。还有一个被忽略的因素——源表的自动量程在微安以下档位切换时会有量程切换毛刺也会让读数跳。解决把:SENS:CURR:NPLC设成 1 或 10对应 50Hz 下 20ms 或 200ms 积分时间读数稳定性会有一个质的提升代价是每个点扫描时间变长。对大多数 DC 器件测试NPLC1 就够了不需要更低。屏蔽问题上把测试线用屏蔽双绞线屏蔽层单端接地这是模拟电路的基本功但很多人在 LabVIEW 编程时会忘。提醒一句不要为了追求扫描速度把 NPLC 设到 0.01 或更低除非你的器件本身是高频响应的否则扫出来的曲线噪音会大到无法发表。4.5 双通道数据错位A 通道的电压写到了 B 通道现象用前面介绍的:SOUR1和:SOUR2设置双通道时明明最后测的是通道 B结果显示的电压却和通道 A 一致。原因SCPI 模式下的命令前缀容易搞混。2600 系列里:SOUR1对应 SMU A、:SOUR2对应 SMU B但有些指令不带前缀时默认作用于当前选中通道如果你前面执行过:INST:SEL SMUB后面的裸指令就会被当成 B 通道的。解决不要依赖当前选中通道这个状态每一条设置命令都显式带上通道前缀比如:SOUR1:VOLT 1.0和:SOUR2:VOLT 1.0分开写。排查时可以先用:SOUR1:VOLT? :SOUR2:VOLT?读回两个通道当前设置值核对是否和预期一致。这个错位是双通道测试里最隐蔽的问题因为程序不报错、连接也正常就是数据张冠李戴。5. 进阶用法TSP 脚本烧录、双通道时序同步和波形图调色5.1 把扫描逻辑烧进 TSP一次触发整机自主跑完LabVIEW 循环逐点扫描的上限大约在每秒几十个点这算瓶颈来自总线通信。要突破就得用 TSP。典型的 TSP 扫描脚本可以在设备里独立完成电压设置、延时、读数、数组保存的全过程LabVIEW 只需要做一次loadscript烧录和一次触发、一次读取结果-- Keithley 2636B TSP 扫描脚本示例 smua.reset() smua.source.func smua.OUTPUT_DCV smua.source.level -1 smua.source.limit 0.01 smua.measure.nplc 1 buffer smua.makebuffer(21) smua.trigger.advance smua.TRIG_ADV_SCAN smua.trigger.source.linear(-1, 1, 0.1) smua.trigger.count 21 smua.trigger.endpulse smua.TRIG_ENDPULSE_LAST smua.trigger.action smua.TRIG_ACTION_MEASURE smua.buffer buffer smua.trigger.initiate() smua.wait() print(buffer.read())这段脚本的执行逻辑和前面 SCPI 扫描一样但全部在源表内部运行总线只在开始和结束时各产生一次交互。LabVIEW 端需要用子 VI 把脚本内容用loadscript命令发送注意脚本结尾一行要写成loadscript 脚本内容 endscript烧录完成后用smua.trigger.initiate()触发再用 VISA Read 读回数据。整个流程下来扫描速率从每秒几十点提升到每秒几百点对半导体器件的击穿扫描、太阳能电池的 I-V 特性测试有明显效果。5.2 双通道同步输出的时序控制别让 A 通道先跑 20ms如果你的测试需要 SMU A 和 SMU B 同时在同一个电压步进上测量——比如测晶体管转移特性时要给栅极和漏极同时加电压——2600 系列的 TSP 提供了同步触发机制而不是靠 LabVIEW 发两条命令的时间差。原因是 LabVIEW 发出smub.source.level value之后到下一次循环再发smua.source.level value之间隔了 Windows 线程调度和总线往返时间差可能有几十毫秒这对某些器件意味着完全不同的工作点。正确做法是在 TSP 里用trig的方式把两个通道绑定到一个触发源smua.trigger.source smua.TRIG_SOURCE_SYNC smub.trigger.source smub.TRIG_SOURCE_SYNC smua.source.output smua.OUTPUT_ON smub.source.output smub.OUTPUT_ON smua.trigger.initiate() smub.trigger.initiate()两个通道同时监听同一个 TSP 触发信号硬件实现同步。在 LabVIEW 6 里这个关键差异建议你先用示波器同时观察两个通道的输出波形确认同步精度再去跑正式测试。5.3 波形图上的数据色彩从默认黄线到可读性提升LabVIEW 波形图默认的配色在扫完 101 个点以后很容易看花眼特别是同时显示电压和电流两条曲线时。很多人不知道的细节是波形图的曲线颜色是在框图上通过属性节点控制的而不是前面板手动选一次就完事——程序每次运行时如果你手动改过前面板颜色它会被运行时的默认设置覆盖。我的习惯是初始化时设置颜色数组把电流曲线设成深红色电压曲线设成墨蓝色顺便把 X 轴标尺设成对数格式如果扫描跨度大对数坐标能让低电流区间的细节显现出来这个细节在发表数据时很重要属性节点 WaveformGraph - Active Plot - Color 属性节点 WaveformGraph - XScale - ScaleStyle - Logarithmic另外2600 系列READ?返回的数据里电压和电流的顺序是电压电流别把横纵坐标搞反——这个错误我见过同事在 400 点多曲线上翻车之后只能用最后 100 个点重测来弥补惨痛教训。最后一条经验来自实战正式跑一批数据之前我先用线缆短接源表输出扫一次验证连线和命令是否正常再接入真实器件。这样可以把设备没设置对和器件本身特性有问题两类故障完全分开省下的排查时间远比这一分钟扫描多得多。希望帮到你。本文还有配套的精品资源点击获取
返回列表