摘要:本文介绍了一种基于VB的计算机串口通信,实现上位机对台达变频器的通讯及对变频器实时监控的功能。
关键词: 串行通信 变频器 VB
一、 引言
在能源日益紧张的今天,变频器作为交流调速的一种主要手段,以其很强的可靠性和抗干扰能力在工业生产中取得了越来越广泛的应用,其自身所带的控制面板虽具有简单、高效的特点,但却过于专业化、操作不够方便、直观性能差以及仅能实现单机控制等缺点。通常使用上位机、PLC、变频器构成一套监控系统,PLC作为桥梁把变频器与上位机联系起来,向下控制变频器,向上实现与上位机的数据交换。VFD-L型变频器是台达公司推出的一款新产品,提供了标准的工业RS-485通信接口和内置协议,为计算机监控管理提供了方便。本文将台达VFD-L型变频器直接与上位机相连,省去了PLC,降低了成本,便于实现分布式控制。通过VB的人机界面实现对变频器的分布式网络控制,应用RS-485总线结构,可实现对多达32台变频器的控制。系统组成示意图如下:
二、通信协议
VFD-L型交流马达驱动器支持Modbus通信协议,该协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(如以太网)和其它设备之间可以通信。
变频器具有RS-485通信接口接线端子为“SG+”和“SG-”,定义如下:
SG+:信号正端,连接转换接口的RS-485口引脚“3”
SG-:信号负端,连接转换接口的RS-485口引脚“8”
对变频器进行串口通信时,必须预先设置好变频器的功能参数。设置如下所示:
F2-00 d4 由RS-485通信界面输入
F2-01 d3 由RS-485通信界面操作,键盘STOP键有效
F9-00 dn 通信地址为n,根据变频器的站号设置n为1,2,3 ……要与上位机一致
F9-01 d1 波特率为9600位/秒
F9-04 d1 ASCII mode 7,E,1
Modbus协议有两种传输模式:ASCII模式和RTU模式,用户根据需要选择模式,包括串口通信参数,在配置每个控制器时,一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。本设计采用ASCII模式,在消息中的每个8Bit字节都作为两个ASCII字符发送,这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。消息帧格式如下表所示:
例如发送的字符串为:
:01 06 2000 0012 B7
:为起始位
01为变频器站地址
06为功能码,表示写入字符至变频器
2000为写入地址
0012为命令码,在此表示正转启动
B7为校验位
结束符为回车换行
三、接口转换
一般常用的PC机都有RS-232串行通信接口,但很少有RS-485串口(工控机除外)。为了与变频器通信,可以添加RS-485串口模块,但成本相对较高。为此,我们采用RS-232/ RS-485接口转换器。
本设计中采用西门子公司的 RS-232/RS-485转换器。一端可以直接插在计算机COM口上,另一端提供一个半双工的RS-485接口,直接连接变频器的接线端子。但是这种转换器多为有源转换电路,而变频器的RS-485接口不提供电源,所以需要外接24V直流电源。如下图:
这种RS-485控制对用户是完全透明的,为RS-232串口编写的程序可以直接用在这里,不必修改,使用非常方便。
四、通信程序开发
变频器通信驱动软件VB的通信控件MSCOMM,它是WINDOWS串行通信编程的ACTIVEX控件。常用的属性为:
COMMPORT:通信端口号
INBUFFERCOUNT:输入缓冲区
OUTBUFFERCOUNT:输出缓冲区
PORTOPEN:端口开放和关闭
SETTINGS:设置波特率、数据位、奇偶性
编程时首先要对通信控件MSCOMM的属性进行初始化,为了与变频器通信协议格式一致,要把VB通信控件MSCOMM的SETTINGS属性设置为“9600,7,E,1”。人机界面如下图:
根据实际需要,我们还可以增加其它监控界面的内容。
发送程序采用事件驱动的方式,利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。部分程序如下:
OnComm 事件
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive ‘接收事件
News = MSComm1.Input ‘接收内容
Case comEvSend‘发送事件
MSComm1.Output = News ‘发送内容
End Select
End Sub
变频器序号的选择,把要监控的变频器的站号输入到第二个文本框,范围为1-32。
Private Sub Text2_Change()
MSComm1.CommPort = Val(Text2.Text) ‘设置变频器站号
End Sub
要监控某站变频器输出状态时,在第二个文本框输入被监控的站号,要先发送一表示读取的指令字符串,再按“接收”按钮,输出状态的指令码会显示在第一个文本框。
Private Sub Receive_ClICk()
Text1.text = News ‘显示接收频率
End Sub
要改变变频器频率时,把要求频率写入第一个文本框并按“发送”按钮。
Private Sub Send_Click()
News = Text1.text ‘待发送频率
End Sub
正转、反转和停止发送的指令字符串分别为“:0n0620000012C7”、“:0n 0620000022C7”和“:0n0620000001D8”,n为被监控变频器的站号,值为1,2……32。
通信试验:用接口转换器连接好变频器与上位机,按照要求设置变频器参数,启动VB通信程序运行,在文本框输入变频器的站号及频率,按“发送”,“正转”,“反转”及“停止”按钮,查看变频器控制面板的显示和输出状态。选择变频器的站号,按“接收”按钮,监控变频器的运行状态。经验证,VB的界面显示与变频器的输出状态是一致的,所以本设计是可行的。
五、结束语
本文介绍了变频器与上位机通信连接及程序的开发,根据需要可以利用VB强大功能使变频器按任意曲线输出,实现对多个变频器的分布式控制,解决了现场操作控制面板的不方便的问题,利用人机界面实现对变频器的监控管理。本设计可以广泛应用于机电一体化及自动控制的变频调速系统中,通过上位机实现对现场的实时监控。