由于变频器具有优良的控制特性以及其高效节能的特点,使得变频器近几年在各个领域被广泛的采用。在某些场合,需要用一台工控机灵活地控制多台变频器,以达到控制交流电机的目的。在油田输油控制系统中,多台变频器的控制问题成为关键,按照以往的控制方法,需要使用PLC或者控制电路板来控制变频器。然而使用这种方法造价高、系统复杂、布线量大、故障率高,因此亟需一种结构简单、造价低廉、可靠性高的系统来实现多台变频器的控制。 针对这一需要,一些公司(如日本三菱、德国西门子、日本东芝等)推出了带有RS-485通信接口的变频器,使用户能方便灵活地选择变频器的强大功能,设计各自的工业控制系统。因此,我们可以充分利用厂商提供的工业总线接口,使控制系统布线简洁,稳定可靠。 目前,我们在利用工业总线接口开发用户程序时,大部分都是基于DOS环境下的,随着Windows操作系统的普及使得DOS单任务系统固有的缺陷显得日益突出,人们越来越希望能在Windows的环境下进行工业控制。 在Windows 9X下开发工控软件,不仅可以实现多任务操作,充分利用硬件资源,而且可以利用Windows 9X下丰富的开发工具,方便地生成各种菜单及友好的图形界面,软件产品质量高且开发周期短。但在Windows 9X环境下,系统完全接管了各种硬件资源,不允许用户直接对系统硬件进行控制。如何在Windows 9X/NT环境下开发微机的底层资源,已成为当今工控业的一个值得探讨的课题。 本文以三菱FR-A500变频器的串行通信为例,利用Visual Basic 6.0的ActiveX控件—Microsoft Communication控件,通过对变频器串行通信协议的分析,解决了Windows 9X环境下与多个变频器的串行通信, 成功地实现了用单台工控PC机对多台交流异步电机的灵活控制,从而在Windows9X环境下如何实现串行通信的问题上作了有益的尝试。 2 油田输油控制系统的简介 由于多台变频器的控制技术是油田输油控制系统中的关键,所以有必要简单介绍一下本控制系统的概况。 油田输油控制系统主要有以下几部分构成,图1所示: 1. 中央控制器,主要一台工控计算机及其通信模块构成,它主要负责发送控制指令及控制参数,并根据现场返回的工况数据调整控制参数; 2. 监控信号和管道反馈信号由RS—485总线连接到中央控制器; 3. 泵站1~n主要油泵、变频器、通信适配器、管道传感器等构成; 控制系统的通信原理 根据油田输油控制系统的要求,我们给出了通信原理框图(图2),这里只重点突出工控PC机与变频器RS—485的接口部分。RS—485的驱动器可带32个接收器,在波特率为100Kbit/s时,通信距离可达到1200m; 通信距离为15m时,波特率可达10Mbit/s。在工业现场,RS-485是应用较多的一种通信方式。 图2 中工控PC机通过RS-232C—RS-485转换器与多个变频器相连接,最多可达到32台。每个变频器被赋予各自的地址码用以识别身份,这样,上位机便能通过RS-485通信线,对挂在上面的所有变频器进行控制操作。
变频器的串行口通信协议分析 通过对油田输油控制系统的结构设计,以及对三菱FR-A500变频器原理及通信方式的研究,我们发现三菱FR-A500变频器的通信方式为异步半双工RS—485协议;波特率19200bit/s,9600bit/s,4800bit/s 可选;ASCII 7或8位数据位可选;1位奇偶校验可选;1或2位停止位可选。其通信协议的数据格式有十种,分别为: A,A’,B,C,D,E,E’,F,G,H; 下面以格式A为例简要说明一下变频器通信协议: 格式A的功能是变频器运行频率、运行参数的写入和复位变频器,其结构如下:
*1 ENQ——表示控制代码,它有以下几种:(括号内为ASCII码) STX (H02) 正文数据开始;ETX (H03) 正文数据结束;ENQ (H05) 通信请求; ACK (H06) 应答无数据错误;LF (H0A) 换行;CR (H0D) 回车; NAK (H15) 应答发现数据错误; *2变频器站号——可用十六进制数在H00和H1F(站号0 至31 )间设定; *3指令代码——由计算机发给变频器,指明程序要求(如:监视、运行等); *4等待时间——规定变频器收到从计算机来的数据和传输应答数据之间的等待时间。根据计算机的响应时间在0和150ms之间设定,最小设定单位10ms。 *5数据——表示计算机与变频器之间传输的数据,如:频率、参数等; *6总合校验——由被校验的ASCII码数据的总和(二进制)的最低一个字节表示的2个ASCII数字(十六进制)。 *7表示CR(回车)、LF(换行)代码。 与格式A相对应的数据格式有C和D;若用户程序通信请求以格式A发送到变频器的数据被变频器接受,则变频器以格式C形式的数据返回给计算机;若变频器发现计算机发送的数据有误,则变频器以格式D形式的数据返回给计算机。 数据格式C和D分别如下:
其他的数据格式的功能如下:格式A’ 用于运行指令的写入,其对应的应答数据格式为格式C和格式D;格式 B用于监视变频器的运行参数(频率、电压、电流、转速)及读出变频器的系统参数,其对应的应答数据格式为E、E’、F、G、H。
一般情况下,变频器通过操作面板(PU)来设置变频器参数,一旦参数设定好了,就不能改变,这样很难通过现场信号进行实时的控制。通过以上对变频器通信协议的分析,考虑用软件来实现工控机与变频器的串行通信,利用软件可以灵活的实现系统所需的各种功能而不必改动现场的硬件电路,而且RS-485通信线最多能同时控制32台变频器,同时,各变频器的运行状态也能实时地回送给上位机。 5 控制系统通信控制软件设计 5.1串口通信程序设计方法 基于对系统结构和变频器串口通信协议的分析,必须对工控计算机的串行口进行编程。在DOS的操作系统下,计算机所有的硬件对编程人员是透明的,因此比较容易进行内存管理和硬件中断管理,所以程序的响应速度快。但是,DOS是单任务操作系统,对硬件资源浪费严重,并且在进行图形界面编程时其难度和任务量都远远超过了对硬件部分的编程。因此我们采用Windows 9X操作系统和基于此平台的开发软件来编写控制系统软件。 在Windows 9X环境下,操作系统完全接管了各种硬件资源, 不允许用户程序直接读写硬件端口和进行中断管理。所以早期的程序员只能通过数目众多的API函数来控制端口,使用起来很不方便。 本系统利用VB6.0下提供了一个ActiveX控件(Microsoft Communication控件, 简称MSComm 控件)来实现串行口的通信设计。通过在应用程序中嵌入MSComm控件的方式,进行计算机串口的通信管理,下面简要介绍一下MSComm控件的功能: MSComm 6.0控件可以实现数据缓冲区的管理,Input (从缓冲区读取接收数据)的数据类型为Variant,从缓冲区读取数据的格式为字符串格式(Text)或二进制格式(Binary)。 MSComm控件提供的具体功能如表1:
其中串口号(CommPort)设置为1、2 … n等表示COM1、COM2 … COMn。参数设置(Settings)的格式为“BBBB,P,D,S”,BBBB表示波特率,P表示奇偶校验(N:无校验,E:偶校验,O:奇校验),D表示字节有效位数,S表示停止位数。串口状态(PortOpen)为BOOL变量,TRUE表示打开串口,FALSE表示关闭串口。InputMode使程序能方便地选择从缓冲区读取数据的格式,设置为0时,为字符串格式(Text),设置为1时,为二进制格式(Binary)。InputLen设置或返回的是用Input从缓冲区读字符串时每次读出的字符个数,这个性质对于读出数据块中定长数据串非常有用。 InBufferCount和OutBufferCount用于串口的查询方式。对于较复杂的通信任务,可通过Com9Xvent处理串口的事件,当相应事件或串口错误事件发生时,系统会激活OnComm事件,在OnComm中添加用户的处理代码,则可实现类似DOS中断的串口处理程序。 5.2变频器串口通信软件结构 为了用该控件控制一个串口进行通信操作,还必须在应用程序中插入该控件。为此,将MSComm控件插入到程序的某个对话框,并为这个控件对象命名为MSComm1,则程序中对串口的各种操作都可通过对象MSComm1来实现。 下面是串口控制子程序的流程图:
|