矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: pdshyh

请教HP3457A表的使用问题

[复制链接]
     
 楼主| 发表于 2018-12-30 19:13:47 | 显示全部楼层
今天用PCI-GPIB 卡,3vdc电压档输入短路10PLAC 0.5/s速度测量12小时,这次测量时间数据比较足,就是温度波动没有考虑
开机曲线.png
回复 支持 反对

使用道具 举报

     
发表于 2018-12-30 22:20:52 | 显示全部楼层
pdshyh 发表于 2018-12-28 16:35
谢谢washu 老师回复,好家伙查了Type 44007 Omega 公司官网看338元, DS18b20 数字温度传感器不 ...

随便买个5kΩ的 NTC就行了。室温范围内大差不差的。
回复 支持 反对

使用道具 举报

     
发表于 2018-12-30 22:22:12 | 显示全部楼层
washu 发表于 2018-12-28 13:12
在 3457A 手册 3-26 页“数学运算-温度测量”章节给出了测量温度的方法,
1、将 3457A 设为 30kΩ 功 ...

washu老师画图用的娴熟啊。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-12-31 11:15:26 | 显示全部楼层
Edward 发表于 2018-12-30 22:20
随便买个5kΩ的 NTC就行了。室温范围内大差不差的。

谢谢,想弄DS18b20 数字温度传感器学着测量电阻等温飘玩
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-12-31 11:31:33 | 显示全部楼层
本帖最后由 pdshyh 于 2018-12-31 11:50 编辑

hp6626电源的开机曲线,用PCI-GPIB 卡连接电脑使用软件自动采集数据进行测量,轻松多了。
QQ图片20181231112653.png
回复 支持 反对

使用道具 举报

     
发表于 2018-12-31 16:05:59 | 显示全部楼层
Edward 发表于 2018-12-30 22:20
随便买个5kΩ的 NTC就行了。室温范围内大差不差的。

随便二字也太随便了 随便找了个国产热敏电阻厂家的 MF52 手册,B 值从 3100 到 4500 都有,随便么

所以我前面给出了我的建议也是我自己用的 NTC 型号(MF52A503F3950),这个是一个比较合适的取值,在 0 °C 时误差较大,达到 0.5 °C;在 50 °C 时误差只有 0.1°C,总之都不到 1 °C 误差;而假设用和它最接近的 3600,误差都达到 2 °C 以上了。

所以反正都是五毛一个,不如买误差最小的 3950

cr10953.jpg
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-1 09:42:33 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-1 09:44 编辑
washu 发表于 2018-12-31 16:05
随便二字也太随便了  随便找了个国产热敏电阻厂家的 MF52 手册,B 值从 3100 到 4500 都有,随便么 ; ...


新年快乐!!!
NTC 型号(MF52A503F3950),在 0 °C 时误差较大,达到 0.5 °C;在 50 °C 时误差只有 0.1°C,总之都不到 1 °C 误差,要求不高可以用这个测量温度,做温漂测量一台设备多数据测量,34547a继电器来回在温度档和电压或电阻档转换,长时间多数据测量,一天几万数字,应该还是分开分别测量好。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-3 21:49:17 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-3 21:50 编辑
washu 发表于 2018-9-2 19:43
给你一个我以前采集 3457A 数据然后存入文本的小程序参考  


        washu 老师好,3457a软件和电子表作图在坛友的应用指点会用了,pc通过 HP-IB(GPIB)卡连接表用3457a软件做了3v量程输入短路12小时的采集记录,比人工测量记录轻松多了,这段时间一直在看 HP3457A_Contec_UITest和3457a对比揣摩两个例程,看回帖讲解学习,关于编程还有几个问题请教,希望给与解惑:
        1.3457a的读写部分,测量功能、量程积分时间,发送命令并显示等基本理解明白,就是对下面三段真假逻辑判断,全部真或全部假等是循环还是...弄不明白。--------这个例程如何循环测量不清楚。
                 SendCmd.Enabled = True
                Receive.Enabled = True
                CheckBox1.Enabled = True
             .
            .
          Timer1.Enabled = False
        CheckBox1.Enabled = False
        CheckBox2.Enabled = False
       .
       .
       Timer1.Enabled = True
        CheckBox1.Enabled = True
        CheckBox2.Enabled = True
     2.  SendCommand("TRIG AUTO;NPLC 10;FUNC DCV,1", Val(DMMAddr1.SelectedItem))
         WriteCommand("FUNC DCI,0.1;CHAN " & cb_MUXCurrChannel.SelectedItem & "; TRIG SGL", Val(cb_DmmAddress.SelectedItem))  ,两个例程发送指令SendCommand和  WriteCommand不一样能否互换, 为什么在读写过程用Val和Cstr进行字符转换数字或数字转换字符?
    3.想以HP3457A_Contec_UITest为参照修改一个简单可以测量并写到文本文件中,开头部分
Shared fLog As IO.StreamWriter         '定义文件流
           '将打开的日志文件内容写入并关闭它
       .
       .  
fLog.Flush()
        fLog.Close()
    End Sub
复制过去这三行,中间的的不需要了吧。
  这几天反复揣摩感觉有所进步,谢谢
回复 支持 反对

使用道具 举报

     
发表于 2019-1-4 12:46:55 | 显示全部楼层
pdshyh 发表于 2019-1-3 21:49
washu 老师好,3457a软件和电子表作图在坛友的应用指点会用了,pc通过 HP-IB(GPIB)卡连接表 ...

1、3457A 和 “HP3457A_Contec_UITest” 是不同时期写的,3457A 是 09 年左右,HP3457A_Contec_UITest 是 18 年,相隔 9 年,书写风格自然有一些差异。

此外,3457A 编写的时候,我还保留了较多的 VB6 时期的书写风格,比如

Record.AppendText(Now & " HP 3457A: " & FormatNumber(CStr(dResult), 10) & vbCrLf)

该行代码中的

FormatNumber(CStr(dResult), 9)

这是一个 VB6 时代的书写风格(面向过程),而在 HP3457A_Contec_UITest 中它变为这样的:

tb_Record.AppendText("待测电阻为:" & dMeasResistance.ToString("N6") & "Ω" & vbCrLf)   

也就是说这个部位变为

dMeasResistance.ToString("N6")

这是一个面向对象的写法了。

另外 FormatNumber(CStr(dResult), 9) 中的 CStr 可能不是必须的,只是我以前书写的一个习惯而已。类似的 Val() 通常也不是必须的,编译器会自动处理这些类型的转换。


2、这里并没有一般意义的“循环”,不停地读取表的数据依靠定时器(Timer 的 Tick 事件)引发,实际上这也是一种循环,称为消息循环,但系统处理了这个循环,程序员不需要自己处理它。只需要给 Timer 设置 Interval 属性(单位是毫秒)它就会按设置值不停引发这个事件,运行里面的代码。

那些设置控件 Enable 为 T or F 是为了在读取 3457A 过程中防止控件被你误触发而屏蔽它们,以免出现岔子,基本的程序不需要这些代码,但实际上的程序这些代码是必须的,否则用户的错误操作会导致程序崩掉。


回复 支持 反对

使用道具 举报

     
发表于 2019-1-4 13:36:02 | 显示全部楼层
washu 发表于 2019-1-4 12:46
1、3457A 和 “HP3457A_Contec_UITest” 是不同时期写的,3457A 是 09 年左右,HP3457A_Contec_UITest 是 ...

额,你的上位机现在还在继续维护啊?
回复 支持 反对

使用道具 举报

     
发表于 2019-1-4 16:21:33 | 显示全部楼层
Edward 发表于 2019-1-4 13:36
额,你的上位机现在还在继续维护啊?

HP3457A_Contec_UITest 是应楼主的提问写的,实际上基于 Contec 卡的上位机程序早就不更新了 现在都用 VISA 了
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-4 21:47:56 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-4 21:49 编辑
washu 发表于 2019-1-4 12:46
1、3457A 和 “HP3457A_Contec_UITest” 是不同时期写的,3457A 是 09 年左右,HP3457A_Contec_UITest 是 ...


      谢谢,3457A 和 “HP3457A_Contec_UITest” 这两个例程对我初次接触编程来说都是新的 ,循环不停地读取表的数据依靠定时器(Timer 的 Tick 事件)引发 消息循环,O(∩_∩)O哈哈~原来是这样的,明白了 SendCmd.Enabled = True的意思了Enabled 是启用意思,我对 SendCmd.Enabled这种带点后面连参数还是不熟悉,慢慢来。这两个例程正好让我对比过程编程和对象编程的不同,还是慢慢来。3457A的Timer 的 Tick 事件循环的一个循环的起终点在哪里,3457指令在说明书的位置,有时间自己慢慢看,关于触发设定TRIG HOLD和TRIG SGL,TRIG HOLD是仪表进行一次测量并在屏幕上显示结果,然后停止测量?TRIG SGL是什么意思,还有, Srlen = Len(RecvBuf)           
                                                              .
                                                              Cmd(0) = 2                          
                                                               Cmd(1) = YrAddr                  
                                                               Cmd(2) = MyAddr
                                                              .
                                                              .
                                                              Cmd(0) = 2
                                                              Cmd(1) = MyAddr
                                                              Cmd(2) = DMMAddr
                                                               .
                                                              .

                                                             Srlen = Len(RecvBuf)                'A maximum value of receive data is designated.
                                                              Cmd(0) = 2                          'Number of command.
                                                            Cmd(1) = DMMAddr                     'Listener address is recquired.
                                                             Cmd(2) = MyAddr                     'Taker address is recquired.
还有这几个类似的语句前后语句比较多,没有找到是干什么的
谢谢帮助。
回复 支持 反对

使用道具 举报

     
发表于 2019-1-5 13:49:47 | 显示全部楼层
pdshyh 发表于 2019-1-4 21:47
谢谢,3457A 和 “HP3457A_Contec_UITest” 这两个例程对我初次接触编程来说都是新的 ,循环不 ...

某个 Timer 比如 Timer1 的 Tick 事件起点在这里:

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
。。。。。
。。。

End Sub  <--- 终点


SendCmd.Enabled = True

这里

SendCmd 是按钮控件(的一个实例),因此也继承了 Button 类的所有属性,比如 Enable 属性,它指示该实例是否响应用户交互,设置为 T 则对用户消息比如按下它做出响应,设置为 F 则不做出响应。类的某个实例.属性 = xx,这是典型的面向对象的写法。

Srlen = Len(RecvBuf)           
Cmd(0) = 2                          
Cmd(1) = YrAddr                  
Cmd(2) = MyAddr

这是一个比较 VB6 时代的写法,它构造一个缓冲区给 Contec 卡的 API 接口,发送一些信息比如地址、指令等玩意给 API,这是典型的面向过程的写法。而安捷伦的 GPIB 卡,则提供了 VISA 类,所以现在我都用安捷伦的卡,使用起来就方便多了,比如它是这样用的(类似前面那个按钮的写法),比起面向过程的写法更清晰易懂:
cr10957.png
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-5 20:25:34 | 显示全部楼层
washu 发表于 2019-1-5 13:49
某个 Timer 比如 Timer1 的 Tick 事件起点在这里:

Private Sub Timer1_Tick(ByVal sender As System. ...

谢谢washu 老师,全部串起来理解,知道
        Timer1.Enabled = False
        CheckBox1.Enabled = False
        CheckBox2.Enabled = False
       .
       .
       Timer1.Enabled = True
        CheckBox1.Enabled = True
        CheckBox2.Enabled = True
的作用了,运行例程写测量数据,几个键选择框变暗变亮变暗变亮......
Select Case Meafunction.SelectedIndex
            Case 0 : Meafunc = "FUNC DCV"
.
.

用这样选择语句测量功能或积分时间,很妙,这两个测量为什么选择放在读写的后面,.....
总的来说,这两个例程都基本本理解了,我这个零基础,理解比较费劲,谢谢您的耐心讲解,
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-6 09:09:19 | 显示全部楼层
Edward 发表于 2018-12-30 22:20
随便买个5kΩ的 NTC就行了。室温范围内大差不差的。

您好Edward 老师,换头像不认识了 ,谢谢您的支持,这两天有公干稍忙些,平常都很闲。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 06:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表