Win9X平台下通过RS485通信实现多台三菱变频器控制
请求以格式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来实现。 下面是串口控制子程序的流程图: 6 结束语 本文利用Win9X下的ActiveX控件和三菱变频器RS-485的串行通信功能,成功实现了在Win9X环境下单台IPC机对多台三菱变频器的控制,并能实时检测各变频器的运行状态。整个控制系统灵活方便,具有很大的实用性。本文在Win9X下多台变频器控制的设计方案及软件实现为此类问题的解决作了很好的尝试与探索。与DOS方式的控制相比,具有开发周期短、充分利用硬件资源、软件界面美观等优点。但由于Win9X是多任务分时操作系统,所以*1 ACK *2变频器站 *7 *1 ACK *2变频器站 *5错误代码 *7 属性/事件 功能 类型 CommPort 设置串口号 Integer Settings 设置串口通信参数 String PortOpen 设置或返回通信口的状态 BOOL InputMode 设置从缓冲区读取数据的格式 Integer Input 从接收缓冲区读取数据 Variant Output 向发送缓冲区写入数据 Variant InBufferSize 接收缓冲区的大小 Integer InpbfferCount 接收缓冲区的字节数 Integer OutbufferSize 接收缓冲区的大小 Integer InpbfferCount 接收缓冲区的字节数 Integer inputLen 设置或返回input每次读出的字节数 Integer Commevent 串口事件 Integer
Win9X平台RS485通信变频器控 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)