38度发烧友论坛--38Hot Volt-Nuts 仪表 基准 工具 电子爱好者专业论坛

搜索
查看: 561|回复: 9

[制作] Visual Studio vb for 循环死机

[复制链接]
发表于 2019-2-1 15:49:16 | 显示全部楼层 |阅读模式
本帖最后由 pdshyh 于 2019-2-1 16:16 编辑

过去做过稳压电源+波段开关可调电阻调整输入输出电压电流,做三极管输入输出曲线测量非常麻烦,现在通过pc--GPIB 卡连接hp6626多路电源供三极管Vbe和vce,通过步进调整Ibe和Vce测量Ib、Ic、Vbe和vce,软件正在调试中,就是输出曲线测量调试多个循环后死机,请老师帮忙看看。

If cb_Measure.SelectedItem = "输出曲线" Then    '输出曲线测量部分
            For j = 1 To 10
                Ib = j * Val(Initial)
                SendCommand("ISET " & Val(inPasgeWay) & "," & Ib, 2)
                Sleep(200)
                If VceMax = 5 Then
                    number = "250"
                Else
                    number = "500"
                End If

                For i = 1 To Val(number)
                    Vce = i * 0.02

                    DoEvents()
                    SendCommand("VSET " & Val(outPasgeWay) & "," & Vce, 2)
                    Sleep(Val(TextBox1.Text))
                    SendCommand("IOUT? " & Val(inPasgeWay), 2)
                    Ibcurrent = ReadValue(2)

                    SendCommand("VOUT?" & Val(inPasgeWay), 2)
                    VbeVoltage = ReadValue(2)

                    SendCommand("IOUT? " & Val(outPasgeWay), 2)
                    Iccurrent = ReadValue(2)

                    SendCommand("VOUT? " & Val(outPasgeWay), 2)
                    VceVoltage = ReadValue(2)
                    Sleep(Val(TextBox1.Text))
                    Label3.Text = FormatNumber(CStr(Ibcurrent), 7)
                    Label2.Text = FormatNumber(CStr(Iccurrent), 7)
                    Label11.Text = FormatNumber(CStr(VceVoltage), 7)
                    Label4.Text = FormatNumber(CStr(VbeVoltage), 7)
                    Refresh()
                    Record.AppendText(Now & "输出曲线测量 " & FormatNumber(CStr(Ibcurrent), 10) & " " & FormatNumber(CStr(VbeVoltage), 10) & " " & FormatNumber(CStr(Iccurrent), 10) & " " & FormatNumber(CStr(VceVoltage), 10) & vbCrLf)
                    Record.ScrollToCaret()
                    fLog.WriteLine(Now & " Ib:Vbe:Ic:Vce " & FormatNumber(CStr(Ibcurrent), 10) & " " & FormatNumber(CStr(VbeVoltage), 10) & " " & FormatNumber(CStr(Iccurrent), 10) & " " & FormatNumber(CStr(VceVoltage), 10))
                    fLog.Flush()
                Next
                fLog.WriteLine(" 输出曲线测量 Ib= " & Ib)
                fLog.Flush()
            Next
        End If

QQ图片20190201151329.png
QQ图片20190201151329.png

sjgcl01.rar

508.89 KB, 下载次数: 6

回复

使用道具 举报

发表于 2019-2-2 16:37:53 | 显示全部楼层
描述得比较模糊,大体看了下,造成死机应该是线程处理问题,在某种条件下死循环,从而死机
几个建议:
1、界面显示和指令、数据组成等不要混合在界面里处理,界面只负责显示和传导用户设置的参数
2、增加专门的业务层,处理里面指令等部分逻辑
3、要考虑到GPIB到电源部分,很可能没你设置的执行那么快,返回的数据也许会扰乱相关处理。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-2 19:42:48 | 显示全部楼层
本帖最后由 pdshyh 于 2019-2-2 19:58 编辑
jincai2004 发表于 2019-2-2 16:37
描述得比较模糊,大体看了下,造成死机应该是线程处理问题,在某种条件下死循环,从而死机
几个建议:
1 ...

     谢谢指教,我是参照其他老师的例程,自己移植后比葫芦画瓢做的,基础比较差,做的过程按倒葫芦起了瓢,您的意思我基本明白了,能否方便的时候将1/2条简单举例说明一下,我就能照着做了,死机情况没说清楚,出现死机是在办公室,没有电源,临时把一些弹框消息关闭,还是有软件和GPIB到电源通讯错误信息出来造成运行死机可能有关系,软件运行稳定性差有鼠标点击,休眠等就死机。          奇怪的是 加了些东西 Label3.Text = FormatNumber(CStr(Ibcurrent), 7) 出现字符数字转换问题,在原来运行就没问题。
                                                                                                                        祝春节快乐!


回复 支持 反对

使用道具 举报

发表于 2019-2-2 22:23:03 | 显示全部楼层
设置电源电压,以及显示电源输出电压部分都是多线程的,你和界面的线程搞到一起,当然鼠标点击、休眠等都容易故障了。
另外,VB.NET处理这些东西不怎么样,如果要搞,建议C#搞,资料也多很多。
从你的代码看,应该是从做硬件或嵌入式的转过来的吧?精神可嘉,但要真做好这些,也不是三言两语可以说清楚的,建议多找找相关资料看看吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-3 11:32:20 | 显示全部楼层
jincai2004 发表于 2019-2-2 22:23
设置电源电压,以及显示电源输出电压部分都是多线程的,你和界面的线程搞到一起,当然鼠标点击、休眠等都容 ...

       谢谢,原来仪器测量是人工记录,论坛测量做图表挺漂亮,大多是上位机自动测量,也就有开始学习vb和单片机,也学了些基础知识,窗体控件刚刚开始看一头雾水,我是参照其他老师的例程,比葫芦画瓢,这个是第二个变化比较大的,比照着弄还好些,经常犯低级错误。
回复 支持 反对

使用道具 举报

发表于 2019-2-4 11:41:56 | 显示全部楼层
慢慢来吧,自动化测试是趋势,自己能做上位机,或集成厂家提供的驱动等,事半功倍的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-4 16:44:11 | 显示全部楼层
jincai2004 发表于 2019-2-4 11:41
慢慢来吧,自动化测试是趋势,自己能做上位机,或集成厂家提供的驱动等,事半功倍的。

      谢谢,编程基本完成测试,运行中测量一段时间窗体界面死机,程序还在后台运行,输入输出曲线可以测量记录,就是但是电路有问题,输入电压电流受输出电压影响比较大,应该是没有设置稳定的供电电路造成的。还得学习修改电路在修改程序了。
微信图片_20190204163402.jpg

sjgcl01.rar

515.1 KB, 下载次数: 0

回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-5 17:43:04 | 显示全部楼层

Visual Studio vb for 循环死机

编程基本完成,输出曲线测量还是窗体死机,后台还是运行,输入曲线Vce=10v,输入电流增大跑到那两条线后面了有问题。输出图更是惨不忍睹,输入电流不稳定有断路和负值,曲曲折折总算是做出来了

回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-8 17:38:02 | 显示全部楼层
本帖最后由 pdshyh 于 2019-2-9 20:27 编辑

经过这几天测试软件基本可以还是有个问题,电路问题比较麻烦使用双电源测量基本可行性不佳:
      1.软件运行窗体死机, for 循环中在向电源发出命令后增加延时,延时短或太长都不行。
      2.电路见上图电源两路直接接小功率三极管Ib小电流,输入曲线可以运行,Vce=0vVce=0.3v输入曲线正常,但是Vce=10v,Ib曲线跑到前面两条输入曲线后面去了不正常,大功率三极管,Vce=0vVce=0.3v输入曲线正常,但是Vce=10v,直接Vbe=-0.174V(电源内部表头读数),Ib=0.066A,Ic=1.75A,外接万用表测量Vbe电压是-0.6V,电源控制Ib=500μa,实际为66ma(电源表头读数),
Vbe.jpg

TIP41c输入曲线(串联电阻)

TIP41c输入曲线(串联电阻)

2n5551输入曲线(串联电阻)

2n5551输入曲线(串联电阻)

在电源通道(输入+)串联5k电阻到基极问题解决,输入曲线问题同小电流,多了一个曲线统一大电流Vbe电压变小的情况。
      3.输出曲线大功率管测量还行,小功率管Ib随着Vce电压增加1-2v不稳定变小跌落明显造成Ic曲线下滑。大功率管还行

TIP41c输出曲线(串联电阻)

TIP41c输出曲线(串联电阻)

讨教各位老师在现有条件,输出曲线和输入曲线测量采用什么电路保证输入电流稳定,软件编程部分窗体死机问题,谢谢。

sjgcl01.rar

515.92 KB, 下载次数: 0

最新程序

回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-9 17:32:45 | 显示全部楼层
输出曲线Ib电流跌落问题可能是电源设置有问题已经解决,输入曲线问题,Ib电流由Ib步进调整更改为Vbe步进调整,小功率小Ib电流输入曲线问题解决,大功率,输入曲线还是有些问题。
2n5551输入曲线g.png
2n5551输出曲线g.png
TIP41c输入曲线g.png
TIP41C输出曲线g.png

sjgcl01.rar

524.91 KB, 下载次数: 0

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|Archiver|手机版|38度发烧友 ( 粤ICP备14041877号-2 )

Powered by Discuz! X3.3 © 2001-2012 Comsenz Inc. Designed by 999test.cn

声明:论坛所有内容均由网友个人自主发表,并不代表本站立场。相关内容仅供参考,由此造成的人身伤害或财产损失均需自行承担。

  

GMT+8, 2019-2-20 00:13 , Processed in 0.149509 second(s), 27 queries , Gzip On.

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