新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于VB和RS-485总线技术的变频器远程监控系统设计

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

作者:时间:2016-12-13来源:网络收藏
  1 引言

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

本文引用地址:http://www.eepw.com.cn/article/201612/329547.htm

  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控件时,不能以数字串的形式直接发送,而是要以字节形式发送;同时在接收时,要用二进制的形式来取回数据,否则通讯就不能成功。

  参考文献

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

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

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



评论


技术专区

关闭