《基于MoBus协议的变频器VC++控制系统.docx》由会员分享,可在线阅读,更多相关《基于MoBus协议的变频器VC++控制系统.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于MoBus协议的变频器VC+控制系统lihan导语:如今的变频器都带有rs485通信接口,使用户能方便灵敏地选择变频器的强大功能1、前言在工业控制领域中,经常要用变频器去控制的转速、转向等,尽管自身带有控制面,具有简单、有效的特点,但由于现场操作不够方便,直观性差和仅能实现单机控制等缺点,针对这些缺点,如今的变频器都带有rs485通信接口,使用户能方便灵敏地选择变频器的强大功能,在windows下开发工控软件,可利用windows的丰富资源,方便地生成各种采单及美观大方的图形界面。mobus协议是应用于电子控制器上的一种通用语言,通过此协议控制器之间可以互相通信,而visualc+6.0的
2、activex控件mscomm通信控制可以知足windows环境下开发微机的低层资源。本文介绍的方案使用mobus协议的asc传输形式,通过visualc+6.0编程实现windows环境下,台达vfd-s变频器的计算机控制系统2、系统硬件设计如今一般的pc机都有rs232串口,但少有rs485口,而实现与变频器进展长间隔且抗噪音干扰的通信,一般多采用一块rs232/485转换器,总体的系统方框图如图1目前,rs232/485转换器有无源和有源两种,假如通信间隔较近,采用无源转换即可。可以购置可以以自己设计。3、mobus协议下asc形式的通信经过及台达vfd-s型变频器的通信要求3.1mob
3、us协议规定的通信经过mobus协议是一种可靠而有效的工业控制系统通信协议,得到了诸多硬件厂商的支持,并广泛应用。mobus协议的数据通讯通过主机与从机之间查询/回应的方式实现,查询消息中的功能代码告知从设备要执行何种功能,数据段包含了从设备要执行的功能的附加消息。从设备产生回应消息,回应消息中的功能代码是查询消息中功能代码的回应,查询消息、回应消息中都有用于判断传输是否正确的错误检测域。3.2asc形式的通信数据格式mobus协议系统中有两种有效的传输形式:asc美国标准信息交换码形式和rtu远程终端装置形式,asc形式通信时,在消息中的每个8-bit数据由两个asc字元所组成。例如,一个1
4、-byte资料64h十六进制表示法,以asc64表示,包含了636h及434h。asc形式:asc形式采用lrclongitudinalredundancycheck侦误值。lrc侦误值是将adr1至最后一个资料内容加总,得到之结果以256为单位,超出局部去除例如得到结果为1f2h时那么只取f2h,然后计算二次反补后得到的结果即为lrc侦误值。3.3台达vfd-s型变频器的通信要求vfd-s系列沟通马达驱动器是内建rs485串联通讯介面,通讯埠rj-11位于控制回路端子,端子定义如下:2:gnd3:sg4:sg5:5v2、5pin为参数设定器操作盘之电源,做rs485通信时,请勿使用!使用rs
5、485串联通讯介面时,每台vfd-s型必须预先在9-00指定通讯地址,电脑便根据其个别地址施行控制。4、mscomm控件介绍mscomm控件是微软公司开发的专门用于串行通信的控件,它是高级语言编写的串行通信程序和pc串口之间的桥梁,vc+6.0中提供了mscomm控件,用户可以在自己的应用程序嵌入mscomm控件,利用它可以方便的进展计算机串口的通信管理。使用mscomm控件时,其中一个难点是对输入缓冲区或者输出缓冲区的数据进展处理,因为向输出缓冲区写入的数据及从输入缓冲区读出的数据都是variant类型的数据,而程序中常用的通信数据既可能是文本型的字符串,又可能是二进制的数值,因此必须处理好
6、字符串与variant类型数据间的转换及二进制数据与variant类型数据的转换。以下代码简单介绍怎样完成使用mscomm控件时怎样接收和发送字符串或者二进制数值:、收字符串variantinput1;/定义一个variant构造的变量charstr;intcounts;counts=mycomm.getinbuffercount;/获取接收缓冲区中的字符数ifcounts0input1=mycomm.getinput;/将接收缓冲区内容读至input1中str=charunsignedcharinput1.parray-pvdata;/将input1变量的数据指针赋值给字符指针、发送字符串c
7、stringsenddata1;senddata1=atzmycomm.setoutputcolevariantsenddata1;、接收二进制数据variantinput1;/定义variant类型变量byterxdata2048,aa1;/定义存放二进制数据的数组longlen1,k;colesafearraysafearray1;/定义colesafearray类的实例input1=mycomm.getinput;safearray1=input1;/将variant变量赋值colesafearray类的实例len1=safearray1.getonedimsize;/使用colesaf
8、earray类的成员函数获取数据长度fork=0;ksafearray1.getelementk,rxdata+k;/使用colesafearray类的成员函数将数据写入数组、发送二进制数据cbytearrayarray1;array1.removeall;array1.setsize3;array1.setat0,12;array1.setat1,79;array1.setat2,0xe2;mycomm.setoutputcolevariantarray1;5、通信程序编写下面给出了利用pc机对vfd-s型台达变频器的串行通信控制程序:端口设置界面如图3通过设置端口参数使控制程序跟变频器的9
9、-009-019-04参数设定一致,进而可以保证正常通信,同时设置变频器的2-002-01参数,使得变频器的控制由rs485通讯界面输出。主界面如图4主界面用来发送控制信息给变频器来控制电机的起止、反转、寸动和频率等。编程发送控制信号:主要代码以正转运行为例ifnid=idc_radio1str0=:010620000012b=0x01+0x06+0x20+0x00+0x00+0x12;ifb0xffb=b0x0ff;b=bc;/求校验b=b+1;str1.format%02x,b;str3=str0+str1+rnmycomm.setoutputcolevariantstr3;接收返回信息:
10、通过接收返回信息来监测变频器的状态,包括输出频率、输出电流、运转命令、变频器状态和异常代码等。为进步程序效率,通常接收数据的操作都在oncomm事件中进展的,主要代码:variantinput1;/定义variant类型变量charrxdata2048;/定义存放二进制数据的数组longlen1,k;colesafearraysafearray1;/定义colesafearray类的实例cstringstrdis;switchmycomm.getcommeventcase2:input1=mycomm.getinput;/收到rthreshold个字符safearray1=input1;/将v
11、araiant变量赋值给colesafearray类的实例len1=safearray1.getonedimsize;/使用colesafearray类的成员函数获取数据长度fork=0;ksafearray1.getelementk,rxdata+k;fork=0;kstrdis+=rxdatak;/处理接收的信息6、小结本文介绍了通过vc+6.0的mscomm控件,遵照mobus协议中的asc形式实现了在windows环境下的计算机对变频器的参数传递,运行及频率控制和实时监控。本人通过对整个控制系统的软硬件设计,实现了变频器的计算机控制,经试验说明系统的频率控制比使用外部avi输入更加准确,并且该系统具有简单、可靠、实用的优点。