控制华仪电子电源





4.00/5 (8投票s)
这个程序展示了如何控制华仪电源,设置给定值并获取反馈。
引言
现在,一些以前很难找到或者很昂贵的数字控制设备已经大规模生产,并且比欧洲的便宜。控制系统最重要的部分之一是精确控制广泛的电压。
在一些项目中,我们过去使用基于微控制器的电源RS232控制,这有时会由于环境引起的电机和类似原因而导致错误。幸运的是,我们找到了一些比我们自己制造的更便宜的中国电源。
代码描述
华仪电子 HYElect (Type HY3020M) 是最受欢迎的可控电源之一,它只提供一个可安装的控制程序,没有关于使用中的通信协议的信息,甚至没有其控制程序的源代码! 我们要求总公司发送给我们协议,但似乎他们已经把自己封闭起来了,所以什么都不能发布! 尽管他们提供了很大的帮助!! 幸运的是,使用RS232嗅探方法,提取了基本协议!
该程序由两部分组成。 通过选择“虚拟电源”,它被假定为虚拟电源,您可以远程设置其电压和电流上限;通过选择“实际电源”,它将更改为如何与实际电源单元通信。
应设置的通信属性为:9600bps的波特率,8位作为默认数据长度,无奇偶校验位和一个停止位,并且布线必须按照下面所示的方式进行(计算机连接器的引脚2必须连接到电源连接器的引脚3,计算机连接器的引脚3必须连接到电源连接器的引脚2,计算机连接器的引脚5必须连接到电源连接器的引脚5,并且在每一侧,引脚7和8必须相互连接)
那里使用的协议非常简单。 必须发送的请求字符串是“8
”。
MSCom.Write("8")
回复将采用以下形式:“VVVAAA”。 “VVV”表示电源电压,必须除以10,“AAA”表示电源电流,同样必须除以10。
RP_Vol_In = Mid(STR_InSerial, 1, 3)
RP_Cur_In = Mid(STR_InSerial, 4, 3)
NumUpDown_RP_Get_Voltage.Value = Val(RP_Vol_In) / 10.0
NumUpDown_RP_Get_Current.Value = Val(RP_Cur_In) / 10.0
该程序还可以更改电压设定点和电流上限。 要设置电压,可以使用以下代码
Dim Volt_Temp As Integer = NumUpDown_RP_Set_Voltage.Value * 10
Dim Volt_Check As Integer = 2
While Volt_Temp > 0
Volt_Check = Volt_Check + (Volt_Temp Mod 10)
Volt_Temp = Volt_Temp \ 10
End While
Volt_Check = Volt_Check Mod 10
RP_Vol_Out = "2" & (NumUpDown_RP_Set_Voltage.Value * 10).ToString("0000") & _
Volt_Check.ToString("0")
正如最后一行中显而易见的那样,字符串长度为6个字符。 电压设置字符串的指示字符是“2”,必须设置在字符串的开头。 接下来的四个字符由 NumUpDown_RP_Set_Voltage.Value * 10).ToString("0000")
声明所需的值。 最后一个字符是Volt_Check
,它是所有数字Volt_temp
之和除以10的余数。
电流设置的过程类似,不同之处在于指示字符是“1
”。 下面带来的代码片段描述了创建要发送以更改电流上限的字符串的过程。
Dim Curr_Temp As Integer = NumUpDown_RP_Set_Current.Value * 10
Dim Curr_Check As Integer = 1
While Curr_Temp > 0
Curr_Check = Curr_Check + (Curr_Temp Mod 10)
Curr_Temp = Curr_Temp \ 10
End While
Curr_Check = Curr_Check Mod 10
RP_Cur_Out = "1" & (NumUpDown_RP_Set_Current.Value * 10).ToString("0000") _
& Curr_Check.ToString("0")
有趣的观点
可以学到的最有趣的事情是“永远不要依赖公司发送给你的信息”! 我几乎可以说,我花了一个多星期的时间在互联网上搜索,寻找是否有任何有用的信息可能帮助像我这样的人推进项目,但幸运的是,我什么也没找到,这迫使我坚持下去。 正如一句著名的中国谚语所说:“失望是失败的第一步”!
特别感谢
特别感谢 Kamalaldin Farzaneh 教授,他信任我,让我体验、失败并重新开始。
历史
- 2010 年 4 月 5 日:首次发布