微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于VB和RS-485总线技术的变频器远程监控系统设计

基于VB和RS-485总线技术的变频器远程监控系统设计

时间:12-13 来源:互联网 点击:

制要求,又能简化程序设计。

visual basic以其面向组件的新技术及对硬件控制能力强而著称,vb提供的mscomm控件是grescent sortware inc公司提供的activex控件,它通过串行端口传输和接收数据,为应用程序提供串行通讯功能[1]。应用时首先要求注册它,把它放到表单上,然后设置其属性:

commport=1, 通讯端口号

inbuffersize=1024, 收缓冲大小

inputlen=0,

outbuffersize=1024 发缓冲大小

rthreshold=18, 串口接字符触发事件

rtsenable=false,

setting=9600,n,8,1 (波特率为9600,校验码为无校验,8位数据位,1位停止位)。

图3 人机界面

图3是监控系统的主控制界面,对td3000的开机、关机、正转、反转、点动正转、点动反转、自由停车、紧急停车、故障复位等控制,通过点击窗口上相应的运行控制按钮来实现;如果点击右边的“运行参数”按钮,即可进入变频器运行参数监控界面,实时监视变频器的运行频率、设定频率、运行转速、设定转速、输出电流、输出电压、闭环反馈、闭环设定、变频器当前状态等。

下面以分别以“设定发送数据长帧格式子函数”、“计算校验和子函数”以及“以50hz运行2#变频器”程序段为例加以说明。

表2 计算机向变频器发送数据帧

(1) 设定发送数据长帧格式子函数

public function sendlcode2(a as string)

长帧发送函数

dim outdatabyte() as byte

dim i as integer

sendlcode2 = "02" + a

redim outdatabyte(len(sendlcode2)/2)

重新定义发送数组长度

for i = 1 to len(sendlcode2)/2

outdatabyte(i) = cbyte(val("&h" & mid(sendlcode2, i * 2 - 1, 2)))

把字符串变成字节数组

next

form1.mscomm1.output=outdatabyte 发送

end function

(2) 计算校验和子函数

public function fcs(sendstr as string)

校验和函数

dim str

dim i as integer

str = val("&h" & mid(sendstr, 1, 2))

i = 3

do

str = str xor val("&h" & mid(sendstr, i, 2))

i = i + 2

loop while i < len(sendstr)

fcs = hex$(str)

end function

(3)以50hz运行2#变频器。

td3000频率的定标为1:100,要使变频器以50hz运转,主设定应为1388h(5000),故计算机向变频器发送数据帧为(见表2):

其对应部分程序段为:

private sub command1_click() 开机命令

mscomm1.portopen=true 打开端口接入总线

dim str1, sendstring,bcc 定义变量

str1="0200000000047f1388" 赋值以50hz运行2#变频器的数据变量

bcc=cstr(fcs(str1)) 调用异或校验函数生成校验码

sendstring=str1+bcc 生成完整待发送字符串

sendlcode2 (sendstring) 调用长帧格式函数把字

符串变成字节并发送

end sub

6 结束语

本系统通过基于rs485总线的计算机对变频器通讯,实现了上位机对多台变频器的控制及实时监控功能,利用vb编制的人机界面使操作简便,取得了良好的实用效果。针对通讯过程中应注意的事项总结如下:

(1) 在实际的运行过程中,长帧和短帧的发送,有时会出现不能同时发送的情况,这是因为变频器对指令的处理时间与我们所设置的波特率不协调,以至不能辨认数据帧,这时可以改变一下波特率,使之协调。

(2) 两个通信帧之间要保证有2个字节以上传输时间的间隔,确保准确识别报文头。

(3) 在读取参数时,会出现所返回的数据不能够稳定地固定在某一个范围内,返回错误数据。这是因为发送数据与接收数据的间隔设置不当引起的,以至于变频器还没有正确处理完数据时,就已经读出错误数据。

(4) 使用mscomm控件时,不能以数字串的形式直接发送,而是要以字节形式发送;同时在接收时,要用二进制的形式来取回数据,否则通讯就不能成功。

参考文献

[1] microsoft corporation.visual basic 5.0 active x控件参考手册[m]. 北京:科学出版社,1998.

[2] 安圣电气有限公司. td3000高性能矢量控制变频器用户手册[m]. 深圳:安圣电气有限公司,2001.

[3] 安圣电气有限公司. td3000变频器串行通信协议[m]. 深圳:安圣电气有限公司,2001.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top