您的位置 首页 ADAS

变频器与微机的串行通讯规划

0 引言在工业电气传动装置中,变频器因应用方便,性能可靠,所以被作为首选的电机控制器得到广泛应用[1]。计算机控制技术与现代变频器技术相结合,采用

0 导言

在工业电气传动装置中,变频器因运用便利,功用牢靠,所以被作为首选的电机操控器得到广泛运用[1]。核算机操控技能与现代变频器技能相结合,选用变频器的规范RS485通讯接口和内置协议,能够便利地完成微机对下位机的会集操控,而且易于软件完成,费用低价,具有较高的牢靠性和实用价值[2]。

为了便于操作和监控电动机的运转工况,需求对其电压、电流、频率、转速及作业状况等要害信息进行监测,并依据作业需求,修正相应的参数,调整电动机的作业状况。这些信息可经过变频器(下位机)传给微机(上位机),因而需求变频器与微机进行通讯,经过微机监控变频器来操控、和谐电动机的运转。本文依据Visual C++下的MSComm控件来完成微机与变频器的串口通讯。

1 变频器通讯机制

1.1 体系硬件整体结构简图

因为大都工业用变频器供给的是契合RS485规范的串行通讯接口,而微机的通讯接口多为RS232C接口[3],因而在二者之间需求加接RS485-RS232C接口转化器。这样运用该接口经过软件编写的通讯驱动程序就能够完成微机与变频器的信息交流。体系硬件整体方框图如图1所示。

1.2 串行通讯

串行通讯是指外设和核算机间运用一根数据信号线传送数据,这些通讯数据在信号线上是按位进行传输的,每一位数据都占有一个固定的时刻长度。

这种通讯办法的长处是运用的数据线少,在远间隔通讯中能够节省通讯本钱。当然,其传输速度比并行通讯慢。关于RS485 串行接口其最大传输速率为10 Mbit/s,最长通讯间隔为1 200 m。

1.3 通讯协议格局

串口通讯传输的基本思想依据帧传输办法,即在向串口发送数据时是逐帧发送。在每帧传输过程中选用应对办法[4]。具体为上位机发送指令参数,变频器首要经过校验判别是否为正常帧,若校验为正常帧,能够接纳并做出应对。不然丢掉不予应对。

本文所举例的变频器的通讯帧格局如图2 所示,每一帧都由帧头、帧格局数据块、校验和、帧尾四部分构成。

EOT:开始位,1个字节;

DATA:数据块,n 个字节,包含指令字、参数、作业状况等内容;

BCC:校验和,2个字节,为其前5 个字节数据之和,低位在前,高位在后;

ETX:完毕,1个字节。

通讯协议的数据格局为:

1)串口帧选用10位帧,1位开始位,8位数据位,1位中止位,无奇偶校验位,均为十六进制数据,字长为8 bit,选用COM1串口,波特率为9 600 bit/s;

2)变频器依据上位机指令向上传送相应数据;

3)应对发送,微机宣布修正指令,变频器接纳指令后,修正参数,并把参数修正状况传给上位机;

4)上位机发送其他指令如发动、中止等。

2 MSComm控件

Microsoft Communication Control(简称MSComm)是Microsoft 公司供给的在Windows下进行串行通讯编程的ActiveX控件,它为运用程序供给了经过串行端口接纳和发送数据的简洁办法。

2.1 MSComm控件的引证

MSComm 控件的引证和其他ActiveX 控件的引证相似,一般都是在Visual C++6.0环境下,新建一个工程,在“工程”菜单下,挑选“增加到工程”的Components

and Controls Gallery 选项,在弹出的对话框中翻开“Registered ActiveX Controls”,挑选“Microsoft Communications Control version 6.0”刺进到工程中,这样相似电话机容貌的MSComm控件就呈现在东西框中,用户能够像运用内部控件那样把它增加到窗体。

值得一提的是,该控件能够放在窗体的任一方位,在运转的时分对外是不行见的。

2.2 MSComm控件两种处理通讯的办法

MSComm控件有两种处理通讯的办法,包含事情驱动办法和查询办法[5,6]。在文献[5,6]中对此做了具体介绍。

2.3 MSComm控件的特点

MSComm 控件中比较重要的几个特点如下:

CommPort 设置并回来通讯端标语,缺省值为COM1,可设置1~16个;

Settings 以字符串的方法设置并回来波特率、奇偶校验、数据位、中止位;

PortOpen 设置并回来通讯端口的状况,也可翻开和封闭端口;

Input 读入并铲除接纳缓冲区的字符;

Output 将发送的字符串或数组写到发送缓冲区;

CommEvent 在通讯过错或事情发生时发生;

OnComm 事情,CommEvent 特点存有该过错或事情的数值码。

3 软件完成

3.1 程序模块

软件完成首要包含上位机初始化程序模块,串口事情处理模块,数据校验模块,数据处理模块等。

3.1.1 上位机初始化模块

翻开串口并设置串口参数,一起,预读缓冲区以清空残留数据,对串口初始化。设置的串口参数包含:串标语、波特率、奇偶校验位、数据位、中止位等。

首要代码如下:

If(m_ctrlComm.GetPortOpen())

m_ctrlComm.SetPortOpen(FALSE);// 查看串口,如果是翻开的,则封闭

m_ctrlComm.SetCommPort(1); // 依据协议要求,挑选COM1端口

m_ctrlComm.SetSettings(“9 600,n,8,1”);// 设置波特率9 600,无校验,8个数据位,1个中止位

m_ctrlComm.SetInputMode(1);//1:表明以二进制办法检取数据

m_ctrlComm.SetRThreshold(1);// 参数1表明每逢串口接纳缓冲区中有多于或等于1 个字符时将引发一个接纳数据的OnComm事情

m_ctrlComm.SetInputLen(0);//设置当时接纳区数据长度为0,表明悉数读取

m_ctrlComm.GetInput ();// 先预读缓冲区以铲除残留数据

3.1.2 串口事情处理模块

该模块首要是接纳下位机发送来的数据包,并对数据包进行数据类型的转化,以便于数据处理模块和数据校验模块对其进行处理。首要代码如下:

switch(m_ctrlComm.GetCommEvent ())// 代表控件引起的事情

{

case 2: //comEvReceiv 事情,事情值为2 表明接纳缓冲区内有字符

{

VARIANT variant_inp;

COleSafeArray safearray_inp;

LONG len,k;

BYTE rxdata[2048];

CString strtemp,m_str;

variant_inp=m_ctrlComm.GetInput();//读缓冲区

safearray_inp=variant_inp;//VARIANT 型变量转化为ColeSafeArray型变量

len=safearray_inp.GetOneDimSize ();// 得到有用数据长度

for(k=0;k

safearray_inp.GetElement(k,rxdata+k);//转化为BYTE型数组

}

for(k=0;k

BYTE bt=*(char*)(rxdata+k);

strtemp.Format(“%02X”,bt);// 将字符以十六进制办法送入暂时变量strtemp寄存,留意这儿应参加一个空隔

m_str+=strtemp;

//参加接纳编辑框对应字符串

}

// 微机操控变频器的参数经过相似COIeVariant的结构函数来完成,COIeVariant 能够接纳各种类型的数据(如字符串、整数、浮点数等)并主动将其转化为契合VARIANT要求的数据。然后就能够依据自己的通讯协议要求参加相应的处理代码,完成数据的传递[6]。

…… //在此能够增加通讯协议代码

}

}

3.1.3 数据校验模块

依据约好的通讯协议,关于上位机发送的指令,不契合协议格局(包含数据头,尾,数据长度等)时,下位机将不予应对;关于下位机传送给上位机的数据,处理办法相同。契合协议格局(包含数据头,尾,数据长度等)时,核算校验和,校验和为其前5 个字节数据之和。校验正确,则进入数据处理模块,不然,丢掉不予处理。

3.1.4 数据处理模块

此模块包含数据解包,数据提取,数据转化,如将得到的十六进制的频率数据,以十进制数据办法上传至上位机显现。

此外还有等候超时处理模块,数据传输过错处理模块等。

3.2 通讯协议编程完成

变频器与微机进行通讯时,首要,作为下位机的发送方先即将发送的数据按协议规则的格局组成数据包,并求出查验和,然后连同包头和包尾一起发送出去。作为上位机的接纳方收到数据后,经过软件完成通讯协议,首要流程如图3所示。

在软件完成通讯协议的过程中,处理和校验数据时,留意要将接纳的数据格局转化为适宜的数据格局,不然在调试的时分就会呈现过错,或许在上位机的操控界面上不能正确显现。

3.3 界面完成

该软件首要由静态数据区和动态数据区两部分组成。静态数据区包含串口参数的挑选和参数数据的显现,并可挑选和修正参数指令;因为该变频器选用应对式通讯,所以在动态数据区中,显现下位机传送的数据,一起,在静态作业区能够导入导出参数;

在动态作业区,能够依据需求,挑选是否进行守时发送丈量指令,然后实时监控下位机的作业状况。静态数据区和动态数据区两部分相互配合,完成对下位机的完好操控。如图4所示。

4 结语

选用Visual C++环境下的MSComm控件对变频器进行软件编程,经过变频器的RS485串口通讯功用,能够实时监控和调整下位机的作业状况,完成对下位机的会集操控。软件界面友爱,操作便利,具有较强的实用性。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/139573.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部