5732|0

1379

帖子

0

TA的资源

裸片初长成(中级)

楼主
 

基于VB和RS-485总线技术的变频器远程监控系统设计 [复制链接]

摘 要 :本文介绍利用Visual Basic高级语言实现基于RS485总线的计算机对多台变频器的远程监控系统的设计,并以EMERSON TD3000系列变频器为例,详细描述了系统的硬件配置、参数设置、通讯协议等,并给出了编程实例。

关键词: 上位机   变频器    串行通讯    通讯协议

1  引言
随着电力电子技术、微电子技术的发展,变频器已广泛应用于交流电动机的速度控制上,尤其是近年来越来越多地利用RS232/RS485串行通讯和工业现场总线技术进行变频器的网络通讯和远程监控,以实现生产线设备之间的实时自动控制及生产流程的实时监控。为满足应用的需要,变频器大多都带有通讯接口。由于RS485网络具有设备简单、容易实现、传输距离远、维护方便等优点而被许多变频器厂家所采用,用户可通过上位机开发通讯程序,监控变频器的运行。本文以EMERSON(原 AVANSYS)公司 TD3000变频器为例,介绍基于RS485总线的计算机对多台变频器的实时监控系统的设计。

2  系统的硬件连接
TD3000是 EMERSON公司推出的高性能矢量控制变频器,能以很高的控制精度进行宽范围的调速运行,它带有内置的标准RS485通讯口,通过转换器可方便地与上位机进行串行通讯,实现上位机对变频器功能码的快速修改及运行状态的直观监控,并实现组网监控运行[2]。本系统组成如图1。

图1 系统配置图


计算机的RS-232口通过一个RS232/RS485转换器转换为RS-485构成通讯网络,以TD3000变频器作为从机组成“单主多从”通讯控制网(单监控主机多变频器从机),通讯介质为屏蔽双绞线,屏蔽层一点接地。变频器串行通讯接口端子的接线如图2。

图2 通讯端口接线图

 

3  TD3000变频器的串行通讯协议及相关参数设置
TD3000的通讯协议中,其上位机与变频器的通信,通过上位机与变频器之间交换命令和应答实现的。
(1) 物理接口
RS485总线接口:异步、半双工;
总线上每段最多32个站(最多31个从站),可用中继器扩展至127个站(包含中继器)。
(2) 数据格式
1位起始位、8位数据位、1位停止位、无校验;
1位起始位、8位数据位、1位停止位、奇校验;
1位起始位、8位数据位、1位停止位、偶校验;
默认:1位起始位、8位数据位、1位停止位、无校验。
(3) 波特率
9600bps、19200bps、38400bps、125Kbps。
默认: 9600bps。
(4) 通信地址
从机的本机地址设置范围2~126。
127号为广播地址,主机广播时,从机不允许应答。
(5) 通信方式
上位机为主机,变频器为从机。采用主机“轮询”,从机“应答”方式。
(6) 协议类型
协议采用长短帧结构:
短帧—用于独立传送自动控制系统所需的控制字和状态字;
长帧—既包括控制字和状态字又含有涉及到操作控制、观测、维护以及诊断等的内容(所具有的内容受变频器自身功能的限制);
特殊报文—用于获取从站的软件版本和机器型号[3]。

表1 数据帧结构


(7) TD3000变频器的参数设置
使用通讯方式控制变频器时,应对变频器的通讯数据格式、波特率、通讯地址等进行设置,具体通过设置相应的功能码来完成。下面是对TD3000变频器的参数设置:
F0.03=6 频率设定方式选择“通讯给定”
F0.05=2 运行命令选择“通讯控制”
F9.00=3 串行通讯时的波特率设定为9600BPS
F9.01=0 串行通讯时的数据格式采用“N,8,1”,即1位起始位,8位数据位,1位停止位,无校验
F9.02=2 本机地址设置2号从机

4  数据帧结构描述
(1) 数据帧结构为:帧头、用户数据、帧尾(见表1)。
帧头包括:起始字节(特殊报文:68H;短帧:7EH;长帧:02H)
从机地址(范围2-126,127为广播地址,0、1号地址保留)。
帧尾包括:校验数据(异或校验,计算方法为本帧数据字节的连续异或结果)。
用户数据包括:参数数据和过程数据两部分(在短帧中没有参数数据)。其中参数数据包括:功能码操作命令/响应、功能码号、功能码设定/实际值。过程数据包括:主机控制命令/从机状态响应、主机运行主设定/从机运行实际值。当主机发送时为“命令”或“设定值”,如对变频器进行开机、关机、正反转、频率设置、参数读取等,当从机(变频器)发送时为对主机命令的“响应”或工作状态及参数“实际值”的反馈。数据遵循先发高字节,再发低字节的原则;如果功能码操作不正确,则用低字节返回操作错误代码,此时高字节为0。
(2) 变频器的运行控制既可以用长帧实现,也可以用短帧实现。本文中仅以长帧为例进行说明,其帧格式如下:
● 计算机到变频器:


变频器到计算机:

5  通讯程序及监控界面的设计
    目前监控系统上位机一般采用Windows平台,Windows平台下的串行通讯程序设计一般有2种途径:一是直接调用WindowsAPI函数,响应速度快,但程序设计较复杂;二是采用MSCOMM串行通讯控件,灵活性稍差,但控件的使用使得通讯程序设计大为简单。在一般控制要求并不太高的情况下,通过第二种途径进行程序开发既能满足控制要求,又能简化程序设计。
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控件时,不能以数字串的形式直接发送,而是要以字节形式发送;同时在接收时,要用二进制的形式来取回数据,否则通讯就不能成功。

此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表