推广 热搜: 电机  PLC  变频器  服务机器人  培训  变送器  危化品安全,爆炸  西门子PLC  触摸屏  阀门 

基于MoBus协议的变频器VC++控制系统

   日期:2013-03-23     来源:工控之家网    作者:工控之家    浏览:31    评论:0    
1、 前言

    在工业控制领域中,经常要用变频器去控制交流电机的转速、转向等,尽管变频器自身带有控制面,具有简单、有效的特点,但由于现场操作不够方便,直观性差以及仅能实现单机控制等缺点,针对这些缺点,现在的变频器都带有rs485通信接口,使用户能方便灵活地选择变频器的强大功能,在windows下开发工控软件,可利用windows的丰富资源,方便地生成各种采单及美观大方的图形界面。

    mobus协议是应用于电子控制器上的一种通用语言,通过此协议控制器之间可以相互通信,而visual c++ 6.0的activex控件————mscomm通信控制能够满足windows环境下开发微机的低层资源。本文介绍的方案使用mobus协议的ascⅱ传输模式,通过visual c++ 6.0编程实现windows环境下,台达vfd-s变频器的计算机控制系统

2、 系统硬件设计

    现在一般的pc机都有rs232串口,但少有rs485口,而实现与变频器进行长距离且抗噪音干扰的通信,一般多采用一块rs232/485转换器,总体的系统方框图如图1

目前,rs232/485转换器有无源和有源两种,如果通信距离较近,采用无源转换即可。可以购买也可以自己设计。

3、mobus协议下ascⅱ模式的通信过程及台达vfd-s型变频器的通信要求

3.1mobus协议规定的通信过程

    mobus协议是一种可靠而有效的工业控制系统通信协议,得到了众多硬件厂商的支持,并广泛应用。mobus协议的数据通讯通过主机与从机之间查询/回应的方式实现,查询消息中的功能代码告知从设备要执行何种功能,数据段包含了从设备要执行的功能的附加消息。从设备产生回应消息,回应消息中的功能代码是查询消息中功能代码的回应,查询消息、回应消息中都有用于判断传输是否正确的错误检测域。

3.2 ascⅱ模式的通信数据格式

    mobus协议系统中有两种有效的传输模式:ascⅱ(美国标准信息交换码)模式和rtu(远程终端装置)模式,ascⅱ模式通信时,在消息中的每个8-bit数据由两个ascⅱ字元所组成。例如,一个1-byte资料64h(十六进制表示法),以ascⅱ“64”表示,包含了‘6’(36h)及‘4’(34h)。

    ascⅱ模式:

    ascⅱ模式采用lrc(longitudinal redundancy check)侦误值。lrc侦误值是将adr1至最后一个资料内容加总,得到之结果以256为单位,超出部分去除(例如得到结果为1f2h时则只取f2h),然后计算二次反补后得到的结果即为lrc侦误值。

3.3台达vfd-s型变频器的通信要求

    vfd-s系列交流马达驱动器是内建rs485串联通讯介面,通讯埠(rj-11)位于控制回路端子,端子定义如下:
       
    2:gnd   3:sg-  4:sg+  5:+5v

    2、5pin为参数设定器操作盘之电源,做rs485通信时,请勿使用!
    
    使用rs485串联通讯介面时,每台vfd-s型必须预先在(9-00)指定通讯地址,电脑便根据其个别地址实施控制。

4、mscomm控件介绍

    mscomm控件是微软公司开发的专门用于串行通信的控件,它是高级语言编写的串行通信程序和pc串口之间的桥梁,vc++ 6.0中提供了mscomm控件,用户可以在自己的应用程序嵌入mscomm控件,利用它可以方便的进行计算机串口的通信管理。

    使用mscomm控件时,其中一个难点是对输入缓冲区或输出缓冲区的数据进行处理,因为向输出缓冲区写入的数据及从输入缓冲区读出的数据都是variant类型的数据,而程序中常用的通信数据既可能是文本型的字符串,又可能是二进制的数值,因此必须处理好字符串与variant类型数据间的转换及二进制数据与variant类型数据的转换。

    以下代码简单介绍如何完成使用mscomm控件时如何接收和发送字符串或二进制数值: 

    ⅰ、收字符串

variant    input1;     //定义一个variant结构的变量
char        *str;  
int      counts;
counts=mycomm.getinbuffercount();  //获取接收缓冲区中的字符数
if(counts>0)
{ input1=myco 
mm.getinput();   //将接收缓冲区内容读至input1中
str=(char*)(unsigned char*)input1.parray->pvdata;//将input1变量的数据指针赋值给字符指针

……
    ⅱ、发送字符串
cstring  senddata1;
senddata1=”atz”;
mycomm.setoutput(colevariant (senddata1));
ⅲ、接收二进制数据
variant  input1;    //定义variant类型变量
byte   rxdata[2048],aa1;   //定义存放二进制数据的数组
long   len1,k;
colesafearray  safearray1;   //定义colesafearray类的实例
input1=mycomm.getinput();
safearray1=input1;        //将variant变量赋值colesafearray类的实例
len1=safearray1.getonedimsize(); //使用colesafearray类的成员函数获取数据长度
for(k=0;k safearray1.getelement(&k,rxdata+k); //使用colesafearray类的成员函数将数据写入数组
ⅳ、发送二进制数据
cbytearray array1;
array1.removeall();
array1.setsize(3);
array1.setat(0,12);array1.setat(1,79);array1.setat(2,0xe2);
mycomm.setoutput(colevariant(array1));

5、通信程序编写

    下面给出了利用pc机对vfd-s型台达变频器的串行通信控制程序:

    ⑴端口设置界面(如图3)

    通过设置端口参数使控制程序跟变频器的(9-00 9-01 9-04)参数设定一致,从而能够保证正常通信,同时设置变频器的(2-00 2-01)参数,使得变频器的控制由rs485通讯界面输出。

    ⑵主界面(如图4)

    主界面用来发送控制信息给变频器来控制电机的起止、反转、寸动和频率等。

    ⑶运行控制编程

    发送控制信号:  主要代码(以正转运行为例)
 
if(nid==idc_radio1)
 {   str0=":010620000012" ;
   b="0x01"+0x06+0x20+0x00+0x00+0x12;
   if(b>0xff)
    b="b"&0x0ff;  
    b="b"︿c;  //求校验
   b="b"+1;
  str1.format("%02x",b);
 }
    str3=str0+str1+"\r\n";
 mycomm.setoutput(colevariant(str3));

    接收返回信息: 通过接收返回信息来监测变频器的状态,包括输出频率、输出电流、运转命令、变频器状态以及异常代码等。

    为提高程序效率,通常接收数据的操作都在oncomm事件中进行的,主要代码:
       …………
variant input1;                     //定义variant类型变量
 char  
rxdata[2048];                  //定义存放二进制数据的数组
 long len1,k;
 colesafearray safearray1;           //定义colesafearray类的实例
 cstring strdis;
 switch(mycomm.getcommevent())
 {  case 2:
  input1=mycomm.getinput();   //收到 rthreshold 个字符
  safearray1=input1;      //将varaiant变量赋值给colesafearray类的实例
  len1=safearray1.getonedimsize();  //使用colesafearray类的成员函数获取数据长度
  for(k=0;k   safearray1.getelement(&k,rxdata+k);
  for(k=0;k   { strdis+=rxdata[k]; }
…………     //处理接收的信息

6、小结

    本文介绍了通过vc++ 6.0的mscomm控件,遵照mobus协议中的ascⅱ模式实现了在windows环境下的计算机对变频器的参数传递,运行及频率控制以及实时监控。本人通过对整个控制系统的软硬件设计,实现了变频器的计算机控制,经试验表明系统的频率控制比使用外部avi输入更加精确,并且该系统具有简单、可靠、实用的优点。 

 
打赏
 
更多>同类环保知识
0相关评论

推荐图文
推荐环保知识
点击排行
网站首页  |  免责声明  |  联系我们  |  关于我们  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅  |  违规举报  |  鲁ICP备12015736号-1
Powered By DESTOON