基于MoBus协议的变频器VC.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MoBus协议的变频器VC

基于MoBus协议的变频器VC++控制系统 2011-9-26 20:35:00 来源: 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(counts0) { input1=myco mm.getinput(); //将接收缓冲区内容读至input1中 str=(char*)(unsigned char*)input1.parray-pvdata;//将input1变量的数据指针赋值给字符指针 } …… ⅱ、发送字符串 cstring senddata1; senddata1=”atz”; mycomm.setoutput(colevariant (senddata1))

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档