技术中心
 
 

采用Delphi5.0实现计算机与三垦变频器通讯实例

   日期:2013-07-11     来源:互联网    

一、引言

为了满足广大用户对通讯功能应用的要求,在三垦VM05系列变频器中对通讯功能进行了加强,机器本身标准配置了RS232与RS485通讯接口,可方便地实现一对一或一对多通讯。三垦变频器的使用说明书中介绍了采用VB6.0实现通讯的实例,因VB6.0中自带一个可实现通讯的MSCOMM控件,可以比较方便的完成通讯功能。Delphi5.0为Inprise公司开发的一款优秀的可视化软件开发工具,因其短小精悍、真编译、易学易用等优点,逐渐成为越来越多程序员喜爱的开发工具。遗憾的是,Delphi自身没有实现串行通讯功能的控件,当然我们可以采用Windows的API函数或内欠汇编程序完成通讯功能,但如此需要我们熟悉复杂的API函数、汇编程序、多线程、消息处理机制以及掌握大量的通信知识等技术。但是,Delphi深受广大程序员爱好的一个非常重要的原因是因为Delphi有着众多的强大的第三方控件,SPCOMM就是一款流行的应用于Delphi中的串口通讯控件。她因其源代码完全采用面向对象的PASCAL语言编写而能与Delphi很好的结合,经过编译安装后的控件可以与Delphi自身的控件一样的使用。

二、三垦VM05变频器通讯功能简介

由于篇幅所限,关于通讯的基本知识不是本文介绍的要点,读者可以参考相关的书籍。三垦VM05变频器通讯的电文格式主要有两种形式:①ASCII形式:以ASCII代码文字构成的电文的一种形式。②BINARY形式:以16进制数据构成变频器的编号及数据部分的一种形式。ASCII形式电文长度较BINARY形式长,故电文传送时间要比BINARY形式的长些,但ASCII形式电文可以实现强大通讯要求的功能,所以是本文介绍的重点。

1、 ASCII形式电文构成形式如下:

 

 

①开始代码为“*”,即ASCII代码的2AH。

②③变频器编号,固定为2个字节,范围为1~32。如1号变频器写为:01。

④指令代码,变频器的指令代码,参考下面的描述。

⑤数据,与指令代码配合的操作数,可参考三垦变频器说明书的指令代码说明。

⑥校验和,将①~⑤的数据以二进制求和,取得到结果的低2位16进制数的补码,最后将bit7设为0,bit6设为1。

⑦⑧终止代码,可以由变频器功能码Cd151决定采用CR+LF和CR两种形式。

注:CR,回车符ASCII 的0DH;LF,换行符ASCII的0AH。

2、指令代码。

三垦变频器的标准电文中共有27种命令。限于篇幅需要,本文只简单介绍几个常用的命令,其他命令可以参考三垦变频器的使用说明书中的描述。

 

 

3、变频器参数设定

 

 

其他参数均采用默认值。其中与通讯有关的参数为:波特率Cd148=1(4800 bps),奇偶校验位Cd149=1(奇数),停止位Cd150=1(1位),终止代码Cd151=0(CR+LF)。

三、采用SPCOMM控件完成上位机对三垦变频器的控制。

1、SPCOMM控件的安装。

为了让SPCOMM控件能像Delphi本身自带的控件一样使用,必须进行安装与编译。首先将SPCOMM.PAS等文件拷贝到Delphi的安装目录Delphi5lib下,然后打开Delphi5,选择下拉菜单 Component中的 Install Component选项,在 Unit file name处点击Browse按钮,在Delphi5lib下选择SPCOMM.PAS,其他各项可用默认值,点击 OK按钮。编译安装成功后,在System控件面板中会出现一个红色COM 232字样控件(如下图所示)。现在就可以像使用Delphi自带控件一样使用SPCOMM控件了。

2、窗体的建立以及程序的编写。

拖动一个SPCOMM控件到窗体上,然后布置如下的界面,全部源程序如下:

 

 

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, SPComm, Buttons, StdCtrls, ComCtrls;

type

TForm1 = class(TForm)

Comm1: TComm;

Edit1: TEdit;

BitBtn1: TBitBtn;

Memo1: TMemo;

Label1: TLabel;

Label2: TLabel;

StatusBar1: TStatusBar;

function SumCheck(s:string):integer;

procedure SendCommand(s:string);

procedure BitBtn1Click(Sender: TObject);

procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;

BufferLength: Word);

Procedure FormCreate(Sender: TObject);

Procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Str_Send,Str_Input:string;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: Tobject );//窗体创建时对一些参数初始化

begin

Comm1.BaudRate:=4800; //设置波特率为4800

Comm1.CommName:=COM1; //设置通讯口为COM1

Comm1.Parity:=Odd; //设置校验位为奇校验(Odd)

Comm1.StopBits:=_1; //设置停止位为1位

Comm1.StartComm; //启动通讯口

end;

Function TForm1.SumCheck(s:string):integer; //自建立校验和函数

var Str_Sum,i:integer;

begin

Str_Sum:=0;

for i:=1 to length(s) do

begin

Str_Sum:=Str_Sum + Ord(s[i]);

Application.ProcessMessages ; //转让系统控制权

end;

Str_Sum:=(((0-Str_Sum) And 127) Or 64);

Result:=Str_Sum;

end ;

procedure Tform1.SendCommand(s:string);

var i:integer;

begin

for i:=1 to length(s) do //完成对字符串的发送

begin

Comm1.WriteCommData(@s[i],1);

Application.ProcessMessages;

end

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Str_Send:=Edit1.Text; //将Edit1输入的字符串设为命令的开始部分

Str_Send:=Str_Send + Chr(sumcheck(str_send))+ #13 + #10; //对电文增加校验和以及CR+LF

StatusBar1.Panels[1].Text:=Str_Send; //将命令显示在状态条上,便于查看

SendCommand(Str_Send); //发送控制命令

end;

procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;

BufferLength: Word);

begin //以下程序为将接收到的数据显示在Memo1上。

SetLength(Str_Input, BufferLength);

Move(Buffer^, PChar(Str_Input)^, BufferLength);

Memo1.Lines.Add(Str_Input);

Memo1.Invalidate;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Comm1.StopComm; //程序退出时关闭通讯口

end;

end.

以上程序在Windows2000 Professional,Delphi5.0环境下编译通过。

四、结束语

将以上的程序编译运行,然后将计算机的COM1口连接到三垦变频器的RS232通讯口上(参考三垦变频器使用说明书),并设定好前文所示的变频器参数,就可以实现通讯了。如在发送的命令框里输入:*01O00500,按发送按钮,就可以将频率设定为5HZ,同时Memo1里增加了返回的代码。输入*01P,变频器可以实现正转。由于返回的电文里含有回车与换行符,大家可以发现Memo1自动的换行显示。本文为了使程序简洁易懂,并未加任何通讯错误处理与花哨的界面,大家在此程序的基础上修改后即可满足您对三垦变频器监控的要求。

参考文献:

1、《三垦变频器VM05系列使用说明书》-三垦力达电气(江阴)有限公司。

2、《Delphi 5 开发指南》 电子工业出版社 王忠 迟忠先 编著。

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢