变频器与上位机串行通讯程序设计
Setting=9600,n,8,1 '(波特率为9600,校验码为无校验,8位数据位,1位停止位)。
图24 控制界面
图24是监控系统的主控制界面,对TD2000的开机、关机、正转、反转、点动正转、点动反转、自由停车、紧急停车、故障复位等控制,通过点击窗口上相应的运行控制按钮来实现;如果点击右边的“运行参数”按钮,即可进入变频器运行参数监控界面,实时监视变频器的运行频率、设定频率、运行转速、设定转速、输出电流、输出电压、闭环反馈、闭环设定、变频器当前状态等。
下面以分别以“设定发送数据长帧格式子函数”、“计算校验和子函数”以及“以50Hz运行变频器”程序段为例加以说明。
表2 计算机向变频器发送数据帧
起 始 字 节 从 机 地 址 命 令 字 功 能 号 码 设 定 高 位 设 定 低 位 控 制 高 位 控 制 低 位 主 设 定 高 位 02 02 00 00 00 00 04 7F 13 主 设 定 低 位 88 E2 校 验 码 通讯程序的流程图如图25所示。由于本文中软件的主界面要实时显示频率和电流,需要每隔一段时间向变频器发送读频率和读电流的命令,所以发送其他
23
变频器与上位机串行通讯程序设计
控制指令如正转、停止时,应该先停止发送读频率和读电流的指令,完成后再重新发送读电流和读频率的命令,这是因为同时向串口发送几个命令会发生错误。读频率指令和读电流指令也不能同时发送,需要交替进行。另外,要注意每向变频器发送一个命令后,及时取走输入缓冲区中的返回码,以免影响下一次读取输入缓冲区的正确性。
打开串口打开串口发送控制指令?N发送读频率指令延时,读接收缓冲区YY发送控制指令?N发送读电流指令延时,读接收缓冲区发送控制指令延时,读接收缓冲区处理返回值N退出程序?Y关闭串口
图25 程序流程图
(1) 设定发送数据长帧格式子函数
Public Function SendLcode2(a As String)
24
变频器与上位机串行通讯程序设计
'长帧发送函数
Dim OutDataByte() As Byte Dim i As Integer SendLcode2 = \
ReDim OutDataByte(Len(SendLcode2)/2) '重新定义发送数组长度 For i = 1 To Len(SendLcode2)/2
OutDataByte(i) = CByte(Val(\ '把字符串变成字节数组 Next
Form1.MSComm1.Output=OutDataByte '发送 End Function
(2) 计算校验和子函数
Public Function FCS(SendStr As String) '校验和函数 Dim str Dim i As Integer
str = Val(\i = 3 Do
str = str Xor Val(\i = i + 2
Loop While i < Len(SendStr) FCS = Hex$(str) End Function
(3)以50Hz运行变频器。
TD3000频率的定标为1:100,要使变频器以50Hz运转,主设定应为1388H(5000),故计算机向变频器发送数据帧为(见表2):
其对应部分程序段为:
Private Sub Command1_Click() '开机命令
MSComm1.PortOpen=True '打开端口接入总线 dim str1, SendString,BCC '定义变量
str1=\ '赋值以50Hz运行2#变频器的数据变量 BCC=CStr(FCS(str1)) '调用异或校验函数生成校验码 SendString=str1+BCC '生成完整待发送字符串
25
变频器与上位机串行通讯程序设计
SendLcode2 (SendString) '调用长帧格式函数把字符串变成字节并发送 注意:发送读频率的命令后,要过一段时间再从输入缓冲区内读取数据,否则会发生错误。这段时间是等待时间与数据校验时间之和。
通过计算机的串行端口及接口转换电路来控制变频器,利用VB编制监控软件,可以方便、直观地控制变频器的运行,监视变频器的运行状态,设置变频器的参数并进行校验。在此基础上,还可以总结变频器参数设置方面的规则,根据系统功能的要求,自动设置变频器的工作参数,实现变频器应用的“智能化”[10]。
4 监控所得曲线和数据的分析
图26 加速时间限制的矢量控制变频调速方式下,电机的转矩-转速特性曲线
26
变频器与上位机串行通讯程序设计
图27 加速时间限制的矢量控制变频调速方式下,电机的定子电流-转速特性曲线
图28 加速时间限制的矢量控制变频调速方式下,电机的功率-转速特性曲线
图29 两种控制方式下,电机的转矩-转速特性对比曲线
27