数控变频器的研究与实现(数控变频器作用)
myzbx 2025-06-08 23:02 32 浏览
一般变频器具有两种控制方式:控制面板控制方式和串行通信数据控制方式。控制面板控制方式利用变频器自带控制面板进行手动操控,一般应用于非自动控制场合。在自动化程度越来越高的工业生产现场以及机电一体化的数控设备中,人工操作基本是不可行的。为此,本文采用串行通信数据控制方式,设计了基于Visual C++的变频器上位机控制系统,用来建立与变频器之间的串行通信。该系统具有控制界面直观、操作简单、控制内容齐全等优点。通过RS-232/485串行通信方式直接控制变频器,实现现场交流电机的自动化控制,进而实现“控制-检测-调节-再控制”的闭环控制系统。这是一条可行、高效的技术路线。
1 变频器数字控制方式
1.1 变频器的数字控制的软硬件基础
本文选用台达VFD-M变频器为控制对象,使用Visual C++的MFC类编写串口程序,以ModBus为通信协议,经RS-232转RS-485电路,最终实现利用上位机对台达变频器VFD-M的所有参数的设置,实现对变频器的实时控制。根据变频器的通信地址,操作人员可以在上位机上设置多台变频器的参数,以实现对变频器运行的实时控制。其可视化界面美观、实用,操作简洁。
1.2 变频器命令代码控制方式
在众多的通信协议中,由Modicon公司设计的ModBus通信协议已经成为一个通用工业标准,据此不同厂商生产的控制设备可以连成工业网络,实现集中监控[1]。通过此协议,控制器之间、控制器与其他设备之间可以实现信息交换。使用该通信方式无需附加任何费用,是最为廉价、实用且开放的串行通信方式。本文以RS-485标准构建硬件桥梁,在其上使用ModBus通信协议实现计算机与变频器通信,进而实施控制。在实际的应用中,只需按照变频器规定的通信数据结构、控制字和协议格式发送数据即可实现计算机与变频器的通信。以台达变频器VFD-M为例,采用ModBus ASCII通信协议的运转、停止、正转、反转代码指令分别为:“:010620000002-
D7\r\n”、“:010620000001D8\r\n”、“:010620000010C9\r\n”、“:010620000020B9\r\n”。只要将这些控制代码传送给变频器,即可令变频器执行相应功能,控制电机运转。
2 Visual C++串行通信实现
2.1 Visual C++与MFC简介
Visual C++是微软公司推出的在Win32环境下运行的面向对象可视化集成编译系统的开发程序。MFC是微软生产的名为Microsoft Foundation Classes(微软基础类)的C++类集的缩写形式,它提供面向对象框架,程序开发人员可以使用这一框架创建Windows应用程序,并且MFC按照C++类的层次形式结合在一起,几个高层类提供一般功能,而低层类实现更具体的行为,每一个低层次类都是从高层类中派生出来的,因此继承了高层类的行为[2]。
MFC是一个微软公司提供的类库,以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少开发人员开发应用程序的工作量。其中MFC类中包含了大量窗口句柄封装类、Windows自带的控件和组件的封装类。MFC类(或者其派生类)、组件的封装类是MFC应用程序的总体结构。MFC 提供了MFC AppWizard 自动生成框架(用MFC编写的程序绝大部分都能在Windows中完美运行)。
实际上,MFC是微软提供的用于在C++环境下编写应用程序的一个框架和引擎。VC++是Windows下开发人员使用的专业C++ SDK(Standard Software Develop Kit,专业软件开发平台),MFC就是挂在其上的一个辅助软件开发包。
C++和VC++的区别在于C++是一种程序设计语言,是一种完全兼容C语言的软件编制的通用规范;而VC++只是一个编译器、开发工具,或者说是一种集成的应用程序开发平台。
2.2 Cserial类与ActiveX控件MSComm对比
MSComm控件(Microsoft Communication Control)建立在ActiveX基础之上,几乎覆盖了对串口编程接口的所有封装,其最大的好处是技术本身的跨语言特性,即凡是支持ActiveX控件操作的程序设计语言均可使用,例如Visual C++、Visual Basic、Visual FoxPro等。.NET平台语言也同样支持ActiveX,因此,MSComm几乎成了这些不能直接操作系统资源的语言平台上可以进行串口通信的为数不多的方法之一。
但是,在Visual C++中使用MSComm,要比在Visual Basic等语言环境中复杂得多。使用MSComm就要理解COM模型特殊的变量,COM并不是简单的类封装,而是要通过各种复杂的接口和数据转换的过程,才能将对控件的操作转化为最终对Windows API的调用。使用基于MSComm的串口通信程序,可能存在随着通信数据量的加大,整个程序所占内存数量上升的情况,而主程序对此无能为力。除此之外,MSComm控件依赖于消息循环,在一般情况下需要有对话框作为宿主,这使得编写一个使用串口的后台服务几乎成为不可能的事。
Cserial类的优点在于它的开放性,即所有的功能均以源代码提供,开发者不仅可以直接在工程中使用这些代码,而且可以根据项目规划将其编译成静态库、动态库,还可以在原有的基础上进行改造[3]。因此本文使用Cserial 类控制串口。
2.3 使用Cserial类控制串口
Cserial一共有7个文件,作用如下:
(1)Serial.cpp和Serial.h是基础类包装,定义并实现Cserial类。
(2)SerialEx.h和SerialEx.cpp定义并实现继承于Cserial类的CserialEx类,这个类为Windows的消息传递进行了特别的优化,适合于使用SDK编写的图形界面程序。
(3)SerialMFC.h、SerialWnd.h和SerialWnd.cpp 3个文件实现了进一步的包装,便于在MFC中使用Cserial[4]。
例如串口的打开、设置、读、写、关闭函数分别为:
m_port.Open;
m_port.SetUp;
m_port.Write;
m_port.Read;
m_port.Close;
如写运转指令:m_port.Write(":010620000002D7\r\n");。
3 总体方案设计
3.1 总体方案结构
变频器的串行通信系统结构图如图1所示。
3.2 控制界面设计
本文设计的系统所要实现的基本功能是控制变频器输出,使电机能正转、反转、加速和减速。为了使软件有更好的兼容性能,附加了串口配置模块。同时为方便操作员使用,还增加了变频器在STOP模式下的预设模块,并以视图化形式呈现出来,用来完成对一些常用函数的设置。系统控制界面如图2所示。
3.3 串行通信的编程实现
(1)创建基于对话框的项目
①进入Visual C++编程环境,选择“File/New”菜单命令,打开新建项目工作区,选择“Project”标签下的“MFC AppWizard[exe]”选项,在“Project Name”编辑框中输入应用程序项目的名称“数据控制变频器的研究与实现”,在“Location”编辑框中输入相应的文件名和文件路径,单击“OK”按钮。
②在MFC AppWizard-Step1向导页上选择基于对话框的选项(Dialog base),后面其他的向导页都采用默认设置值并确定。
(2)调整对话框属性
①按“Alt+Enter”组合键,弹出“Dialog Properties”对话框。
②设置ID和标题,其他保持默认设置,如图3所示。
(3)给对话框添加控件
将控件工具栏中的控件按钮拖到对话框模板上合适的位置。
(4)根据需要对控件的属性进行设置,如表1所示的对正转按钮的设置。
(5)添加消息映像
在Windows的使用控件编程中,必须事先设定对话框中各控件的消息处理方式,这样,用户才可以向控件发送消息来完成指定的任务,或根据控件产生的消息执行相应的程序代码。为控件添加消息的一般步骤如下。
①打开“MFC ClassWizard”对话框,按“Ctrl+W”组合键,如图4所示。
②选择“Message Maps”标签,从“Class name”列表框中选择“CvisualCDlg”类。
③在“Object IDs”列表框中选择产生消息的控件ID,例如IDC_FORWARD。
④在“Messages”消息框中选择消息响应方式,例如BN-CLICKED方式。
⑤单击“Add Function”按钮,创建相应的成员函数。
⑥选定“Member functions”列表框中的相应成员函数,单击“Edit Code”按钮,在成员函数模板中添加如下程序代码:
void CVisualCDlg::OnForeward
{
//TODO:Add your control notification handler code here
}
至此系统框架就已经完成,下一步就是针对每一个控件内嵌Cserial类函数来完成对串口的控制,进而控制变频器。
3.4 变频器工作方式设定
要实现对变频器的串行通信控制,需对变频器进行工作方式设定,如表2所示,详细设定值说明可参考台达VFD-M变频器使用手册[5]。
3.5 通信的硬件实现
3.5.1 台达变频器VFD-M
台达VFD-M变频器系列是由中达电通股份有限公司生产的超低噪音迷你型变频器,最大输出功率可达7.5 kW,体积小、噪音低,主要用于三相异步交流电机的控制。
3.5.2 物理接口
台达VFD-M变频器带有RS-485接口,因此可以通过RS-232/485转换器与上位机RS-232端口连接,与上位机建立通信。
将界面控制变为函数控制,建立函数库,通过函数调用实现控制,使其资源共享,便于在不同控制系统中灵活调用。
搜集不同型号的变频器的控制代码,编制控制代码表,供程序定义时使用及在编程过程中调用。这样,程序就可适用于控制各式各样的变频器。
在工业自动化控制领域,组网运行是发展趋势,系统中各控制单元的控制方法及实现,大部要由主控计算机完成。本文以上位机Visual C++6.0为开发平台,使用MFC类进行开发设计,最终形成运行于上位机的应用程序。变频器是自动控制系统中使用较广泛的交流电机控制器,本文通过上位机,用串行通信的方式对变频器操控,进而对交流电机实现控制。这一方案及实现方法能为自动化工程师解决此类问题提供一个理想、良好的解决思路。
阅读本文用了: 分秒,转发只需1秒
转载是一种智慧分享是一种美德
相关推荐
- 如何设计一个优秀的电子商务产品详情页
-
加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...
- 怎么在JS中使用Ajax进行异步请求?
-
大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...
- 中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革
-
前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...
- 前端监控 SDK 开发分享_前端监控系统 开源
-
一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...
- Ajax 会被 fetch 取代吗?Axios 怎么办?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...
- 前端面试题《AJAX》_前端面试ajax考点汇总
-
1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...
- Ajax 详细介绍_ajax
-
1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...
- 6款可替代dreamweaver的工具_替代powerdesigner的工具
-
dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...
- 我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊
-
接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...
- 福斯《死侍》发布新剧照 "小贱贱"韦德被改造前造型曝光
-
时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...
- 2021年超详细的java学习路线总结—纯干货分享
-
本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...
- 不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!
-
Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...
- 2025 年 Python 爬虫四大前沿技术:从异步到 AI
-
作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...
- 最贱超级英雄《死侍》来了!_死侍超燃
-
死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...
- 停止javascript的ajax请求,取消axios请求,取消reactfetch请求
-
一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)
- JS Loop For (32)
