基于PLC控制的工业机械手仿真监控_第1页
基于PLC控制的工业机械手仿真监控_第2页
基于PLC控制的工业机械手仿真监控_第3页
基于PLC控制的工业机械手仿真监控_第4页
基于PLC控制的工业机械手仿真监控_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计基于PLC控制的工业机械手 仿真监控102012127刘博机械工程系学生姓名: 学号: 机械电子工程系 部: 李烨专 业: 指导教师: 二一四年六月诚信声明本人郑重声明:所呈交的毕业设计,是本人在导师的指导下,独立进行研究工作所取得的成果。在完成设计时所利用的一切资料均已在参考文献中列出。本人完全意识到本声明的法律结果由本人承担。作者签名:日期: 年 月 日毕业设计任务书设计题目:基于PLC控制的工业机械手仿真监控系部:机械工程系 专业: 机械工程系机械电子 学号:102012127学生:刘博 指导教师(含职称):李烨(讲师)专业负责人:张焕梅1设计的主要任务及目标以Pro/E对机械手进行建模设置机器手的运动环境和动作通过PLC控制使得机械手能够在Pro/E环境下完成指定动作2设计的基本要求和内容掌握Pro/E二次开发的基础知识并熟悉C语言通过PLC编程控制使机械手完成指定动作将PLC程序转换成C语言并成功编译C语言函数找到PRO/E与C语言接口,使PRO/E软件能够调用C语言函数在PRO/E界面实现机械手的控制毕业设计说明书及答辩用资料一份3主要参考文献1 孙恒机械原理M.北京:高等教育出版社,20062 崔继仁.电气控制与PLC应用技术M.北京:中国电力出版社,2012.23 谭浩强.C程序设计M.北京:清华大学出版社,2005 4 张继春 编著.Pro/ENGINEER二次开发实用教程M. 北京:北京大学出版社,20034进度安排毕业设计各阶段名称起 止 日 期1分析题目,确定设计思路,进行开题检查2013.122014.3.142完成机械手的设计与建模2014.3.152014.4.243进行中期检查2014.4.244完成控制程序的编写,写出毕业论文2014.4.252014.5.255进行设计说明书及图纸整理,准备答辩2014.5.262014.6.10基于PLC控制的工业机械手仿真监控摘要:本文深入研究了基于Pro/TOOLKIT的二次开发方法,PLC与C语言的转换,利用Pro/TOOLKIT进行Pro/ENGINEER的二次开发,如Pro/TOOLKIT的工作模式、利用Pro/TOOLKIT制作菜单、交互对话框、创建Pro/TOOLKIT应用程序的基本方法以及如何实现。设计过程是将PLC语言转换为C语言并按照控制要求编写好C语言的函数。在Pro/E中使用其内部的dat文件调用MFC,通过C语言实现Pro/E和PLC的挂钩,最终实现在Pro/E界面中实现对电动机械手的控制。关键词:Pro/E,二次开发,Pro/TOOLKITIndustrial Manipulator Based on PLC Control Simulation MonitoringAbstract:This design is mainly through PLC to C language and writing right C language function according to control requirements. In Pro/E is used in its internal calls to the MFC dat file, through the C language implementation of Pro/E and PLC linked, so that we can implement in the Pro/E screen control of the pneumatic manipulator. Pro/ENGINEER is a widly used mold CAD/CAM software.Take it for studying object,with analysis of the development interfaces of Pro/ENGINEER.The paper did research on methods of sencondary development by Pro/TOOLKIT,such as Pro/TOOLKITs work mode ,designing menu and User Interface Dialog Boxes.The way of creating application of Pro/TOOLKIT as well as implement of information transformation mechanism between Pro/E and MFC are studied,so that we can implement in the Pro/E screen control of the pneumatic manipulator. Key words:Pro/E,Sencondary development,Pro/TOOLKIT目 录1 前言11.1国内机械手现状简介11.2 CAD软件二次开发的现状与前景12 Pro/E5.0及其二次开发工具简介32.1 Pro/ENGINEER软件简介32.2 Protoolkit工具简介(接口)42.3 Protoolkit开发工具包的正确安装42.4 vs2008的正确安装52.5 平台建立63 机械手的建模93.1 总体设计93.2 机械手的规格参数93.3 驱动方式的选择103.4 机械手的装配113.5 机械手装配步骤114 基于VS的Pro/E二次开发流程184.1 如何实现Pro/E5.0与vs2008的挂钩184.2 PLC语言和C语言的转换184.3 如何编写vs2008中的DLL函数204.4 如何在Pro/E中调用DLL文件234.5 Pro/E内部函数的调用245 界面设计265.1 VS2008界面设计265.2 UI界面设计286 实现在Pro/E中机械手的控制33结 论37参考文献38致 谢40I太原工业学院毕业设计1 前言1.1国内机械手现状简介机械手是在自动化生产过程中使用的一种具有抓取和移动工件功能的自动化装置,它是在机械化、自动化生产过程中发展起来的一种新型装置。近年来,随着电子技术特别是电子计算机的广泛应用,机器人的研制和生产已成为高技术领域内迅速发展起来的一门新兴技术,它更加促进了机械手的发展,使得机械手能更好地实现与机械化和自动化的有机结合。机械手能代替人类完成危险、重复枯燥的工作,减轻人类劳动强度,提高劳动生产力。机械手越来越广泛的得到了应用,在机械行业中它可用于零部件组装 ,加工工件的搬运、装卸,特别是在自动化数控机床、组合机床上使用更普遍。目前,机械手已发展成为柔性制造系统FMS和柔性制造单元FMC中一个重要组成部分。把机床设备和机械手共同构成一个柔性加工系统或柔性制造单元,它适应于中、小批量生产,可以节省庞大的工件输送装置,结构紧凑,而且适应性很强。当工件变更时,柔性生产系统很容易改变,有利于企业不断更新适销对路的品种,提高产品质量,更好地适应市场竞争的需要。而目前我国的工业机器人技术及其工程应用的水平和国外比还有一定的距离,应用规模和产业化水平低,机械手的研究和开发直接影响到我国自动化生产水平的提高,从经济上、技术上考虑都是十分必要的。由“可编程序控制器-传感器-液压元件”组成的典型的控制系统是自动化技术的重要方面。因此,进行机械手的研究设计是非常有意义的。1.2 CAD软件二次开发的现状与前景任何通用的CAD软件,甚至面向某一类对象的专用的、商品化的CAD软件,都难以满足形形色色具体产品设计的需要。所以,一个公司欲全面采用CAD技术,并取得积极效果,应以引入的CAD系统为基础,根据本公司的实情,进行程度不同的用户化、本地化的二次开发,形成具有本公司特色的产品设计CAD系统。有效的二次开发是CAD/CAM发挥效能的关键环节。我国许多企业引进了国外知名的CAD/CAM系统,但往往没有得到充分的利用,企业对CAD的巨额投资,并没有真正达到提高设计质量、缩短设计周期的目的,也没有带来应有的效益。究其原因,是没有对产品进行和管理方面进行二次开发。目前可在计算机平台上运行且在我国CAD市场比较流行的三维软件有PTC公司的Pro/ENGINEER、EDS公司的UG、SolidWorks公司的SolidWorks,这些软件在功能上都是比较出色的,也都提供了各自的二次开发接口。目前国内的二次开发水平总体比较低下,与通用CAD软件普及率较高的情况不适应,制约CAD软件作用的发挥。因此,大力推广三维CAD软件的二次开发,提高CAD软件的使用效率,已成为当今国内CAD软件应用的当务之急。2 Pro/E5.0及其二次开发工具简介本设计主要是使用vs2008的共享MFC的方式建立Pro/E的一些插件,在二次开发中PTC公司在版本中给出了对应的关系,例如,Pro/E2.0对应VC+6.0,Pro/E5.0对应VS2008.在本文中主要使用的是Pro/E5.0对应VS2008来进行的一次二次开发。2.1 Pro/ENGINEER软件简介Pro/ENGINEER是世界上最成功的CAD软件之一,是美国PTC公司的产品。其设计的Pro/ENGINEER具有以下技术特点;(1)全相关性过去的二维设计中许多时间是花在图纸绘制和错误修改上,图纸的更改常常是顾此失彼。Pro/ENGINEER各个模型建立在一个真正统一的数据结构上,各个模块之间是全相关的,如该系统处理三维实体、二维工程图、截面图、总装配以及在分析、仿真、加工零件的工艺规程等各类数据时是严格一体化的,设计人员可以在任何一个环节对不满意的模型尺寸进行修改,同时修改后的尺寸会反映到从设计到加工的各个过程,以确保所有零件和多个环节的数据一致性。(2)实体造型在产品设计过程当中,与传统的计算机辅助设计相比,PRO/E设计产品是基于三维实体的而非传统的鼓励的二维点、线、面。他可以完成实体造型后再按照严格的投影关系产生三视图和其他需要的辅助视图,因而生成的二维工程图几何上是无错误的。(3)基于特征的参数化建模特征造型被公认为是目前几何造型的发展趋势,在Pro/ENGINEER中,实体模型都是一些由工程特征组合而成的。该系统的Pro/Feature模块提供了拉伸、旋转、扫描、孔、槽、扭曲、圆角、倒角、抽壳、拔模斜度、管道和变截面扫描等众多的特征构造方法,这些都为用户提供了设计复杂形状曲面或实体模型的强有力工具,另外,Pro/ENGINEER还允许自己定义特征UDF,用户可以通过它建立自己的特征库。在国内的一些公司和企业中,Pro/ENGINEER作为一种软件工具,主要还是集中在辅助设计之上,现在已有不少企业已经用于辅助制造和模拟上,而Pro/E作为一种功能强大的三维软件,还具有很大的应用空间。2.2 Protoolkit工具简介(接口) CAD/CAM软件一般都有自己供用户使用的二次开发接口,如AUTOCAD的AutoCAD development system(ADS),I-DEAS的Open Architecture(OA)等等,它给用户提供一系列工具,可以完成用户界面定制,宏程序定义,和编写外部程序来根据自己的需要或具体情况扩展系统的功能。Pro/ENGINEER软件在提供强大的设计、分析、制造功能的同时,也为用户提供了多种二次开发工具。常用的二次开发工具有:族表(Family Table)、用户定义特征(UDF)、Program、J-link、Pro/TOOLKIT等。 本设计主要是使用vs2008的共享MFC的方式建立Pro/E的一些插件,所以必须要正确的安装Pro/E自带的二次开发工具protoolkit来对Pro/E进行一些相应的二次开发。2.3 Protoolkit开发工具包的正确安装我们在安装Pro/E的时候需要注意到的是在默认安装时是不安装pro/toolkit的,在安装过程中选择pro/toolkit,如图2.1所示图2.1 Pro/TOOLKIT安装界面2.4 vs2008的正确安装首先需要正确下载vs2008软件来配合proe5.0的二次开发,下载地址为/download/e/7/7/e777851c-c1a4-4979-86b3-6886953b32e9/VS2008ProEdition90DayTrialCHSX1435983.iso。在安装vs2008安装时选择安装组件选择c+功能,如下图2.2。图2.2 vs2008安装组件的选择默认情况下在自定义安装方式下面Visual Studio 2008帮我们选择的默认安装组件,安装好后如图2.3图2.3 vs2008开机界面2.5 平台建立想要实现二次开发,首先应该建立proe和vs2008之间的通信。首先要配置好环境,把上述包含文件和库文件都添加到vc中工具-选项-项目和解决方案-vc+目录如图2.4所示图2.4选择添加文件包含文件添加成功如图2.5所示图2.5包含文件的添加库文件添加好后如图2.6所示图2.6 库文件的添加到此实现了proe野火版5.0与vs2008的挂钩。在vs2008菜单栏中选中 项目-属性-配置属性-连接器-输入,实现他们的连接如图2.7图2.7 连接器的输入添加附加依赖项的项目为:wsock32.lib mpr.lib psapi.lib protk_dllmd.lib netapi32.lib。3 机械手的建模3.1 总体设计据设计题目给出的坐标形式和基本参数确定该设计和各项结构,其中已确定的各项有:(1)本工业机械手是通用机械手,是一种具有独立控制系统的,程序可变,动作灵活多样的机械手。通用机械手工作的范围大,定位精度高,通用性强,适用于不断变换生产品种的中小批量自动化生产。本工业机械手的控制定位方式是简易型的点定位控制,因此,其控制系统不是很复杂。(2)本工业机械手是圆柱坐标的坐标型式,其手臂的运动系由两个直线运动和两个回转运动所组成,即沿X轴的伸缩,沿Z轴的升降和绕Z轴的回转。特点:占地面积小而活动范围大,结构较简单,并能达到较高的定位精度,应用广泛。(3) 本工业机械手是六自由度机械手。所谓工业机械手的自由度就是整机手臂和手腕相对于固定坐标所具有的独立运动:包括手臂的升降、升缩和手腕部的回转。3.2 机械手的规格参数(1) 抓重:50 N (额定抓取重量或额定负荷)(2) 自由度:6(3) 坐标形式:圆柱坐标(4) 最大工作半径:1200(5) 手臂最大中心高(下降时):800机械手所建模型如图3.1所示图3.1机械手模型3.3 驱动方式的选择 根据有关资料的显示,现在机械手驱动方式的成熟控制方式有多种,主要以下几种方式,并进行比较选择: (1) 液压传动机械手,是以油液的压力来驱动执行机构的机械手,但对密封装置要求严格,不然油的泄漏对机械手的工作性能有很大影响,且不宜在高温,低温下工作。 (2) 气压传动机械手:是以压缩空气的压力来驱动执行机构运动的机械手。其主要特点:介质来源极方便,不污染环境,工作可靠,气动动作迅速,结构简单,成本低,操作维修方便。但是由于空气具有可压缩的特点,工作速度的稳定性较差,而且气源压力较低,抓重一般在30公斤以下,适用于高速,轻载,高温和粉尘大的环境中进行工作。 (3) 机械传动机械手:既由机械传动机构(如凸轮,连杆,齿轮和齿条,间歇机构等)驱动的机械手。它是一种附属于工作主机的专用机械手,其动力是由工作机械传递的。它的特点是运动准确可靠,动作频率高,但结构较大,动作程序不可变。常被用于为工作主机的上,下料。 (4)电力传动机械手:即由特殊结构的感应电动机,直线电机或步进电机直接驱动执行机构的机械手,因为不需中间的转换机构,故机械结构简单。其中直线电机机械手的运动速度快和行程长,维护和使用方便。 综合上述四种驱动方式的优缺点, 因此本设计的三自由度工业机械手选用液压传动机械手作为驱动方式。3.4 机械手的装配Pro/E装配的过程如图3.2所示:图3.2 Pro/E装配一般过程机械手构件的装备关系比较简单,其中各零件、连接件之间多为面匹配和轴对齐,而各活动关节间的装配类型均为“销钉”连接。3.5 机械手装配步骤根据装配关系分析,采用的装配序列为:六自由度机械手底座垂直轴支撑体垂直轴回转体机械手手臂机械手手腕机械手手掌机械手手指具体步骤如下:(1)运行Pro/E,新建组件asm0001,点确定进入装配模式,单击工具栏按钮,添加元件进入装配,首先根据文件目录找到底座,单击打开,便将底座引入了装配环境。对于首个进入装配环境的元件,应使其状态达到完全约束,故应如图3.3选取缺省,图3.3图3.4当下方状态栏如图3.4显示完全约束时,单击确定按钮,完成第一个元件即底座的装配。(2)按照装配序列,依次添加各元件以及相应的连接件,若元件间面面重合,或者面与面平行,则属于匹配装配;若元件间共轴线,则属于轴对齐,如图3.5所示选取相应装配;而各活动关节间的装配类型均为“销钉”连接,则应选择如图3.6所示的销钉选项。 图3.5 图3.6运行Pro/E,打开装配ASM0001后,点击菜单栏“应用程序”“机构”,即进入了机构模块,如图3.7所示。 图3.7 机构模块 图3.8 进入机构模块后即可对各运动轴做参数设置,以限制主体之间的相对位置、运动范围、运动轴零位置参照等。如图3.8,选择旋转轴,右键单击并选择菜单中编辑定义选项,进入运动轴设置对话框(图3.9),编辑运动轴的零位置和限制,并可对编辑数据进行预览。使用“拖动”功能可检查为运动轴指定的限制是否满足预期的运动范围。图3.9 运动轴设置对话框在机构模式下,点击 “伺服电动机”图标,定义“伺服电动机”(如图3.10),名称为“ServoMotor1”,类型栏选择“运动轴”,点击装配时生成的销钉轴;轮廓栏(如图3.11)的“规范”选择“速度”,“初始位置”为开始运动的位置,可定义当前位置,也可以定义任意位置为运动初始位置,并可以预览,“模”选择“常数”,“A”值为“10”。图3.10图3.11点击“拖动元件”按钮,点击“快照”,生成“Snapshot1”如图3.12。点击“初始条件”按钮,名称为“InitCond1”,选择“快照”为“Snapshot1”,如图3.13,单击“确定”完成初始条件的定义。 图3.12 图3.13单击“机构分析”按钮,名称为“AnalysisDefinition1”,类型为“位置”,“优先选项”中,“持续时间”为17s,“帧频”为“10”,“最小间隔”为“0.1”。“快照”选择先前生成的“Snapshot1”,如图3.14。将7电动机添加到分析中,定义各电动机的开始、结束时间,如图3.15。然后点击“运行”,即可以观察运动仿真情况,确定设定正确后单击“确定”。图3.14图3.15前面的运动分析“AnalysisDefinition1”生成后,单击界面右边回放按钮,即可进入回放界面,此界面可对先前的运动分析进行回放、保存至文件、也可打开文件中以存在的运动分析。如图3.16,点击播放,打开“AnalysisDefinition1”,即进入动图3.16图3.17画界面,如图3.17所示,单击播放便开始重新播放“AnalysisDefinition1”,图5.11所示“捕获.”,即为视频录制按钮,单击,进去如图3.18界面,“名称”处单击浏览选路径为E:盘,新建名称yundong,“类型”选MPEG,勾取“照片级渲染帧”可使视频效果更佳,单击确定便完成了运动仿真视频的制作。图3.184 基于VS的Pro/E二次开发流程4.1 如何实现Pro/E5.0与vs2008的挂钩在二次开发过程中,Pro/E版本与c语言开发版本是有对应关系的。例如,一般如果你使用Pro/E2.0来进行二次开发官方会推荐您使用vc+6.0版本,而如果要使用Pro/E5.0来进行Pro/E的二次开发那么官方会推荐您使用vs2008版本,这样库的设置会比较方便。本次设计我们选择使用Pro/E5.0对应vs2008的组合来进行本次二次开发。Pro/E5.0内部有一些dat文件,我们可以在Pro/E中通过调用这些dat文件来实现对外部函数的调用,这里指的就是我们所编写的dll函数。VS2008DLL文件PROEDat文件调用动态链接库图4.1 Pro/E与vs挂钩方式4.2 PLC语言和C语言的转换表4.2转换关系梯形图C 语言/ if( X0=1 ) Y0=1; 梯形图C语言/ if( X0=1 ) Y0=0; 梯形图C语言/ if(X0=1&X1=0&X2UP=1&X3DOWN=1)Y0=1;X2UP=0;X3DOWN=0; else梯形图C语言/ if( X0=1&X1=0 )|X2=1 ) Y0=1; else Y0=0; 梯形图C语言/ if( ( (X0=1|X2=1)&X1=0 )|X3=1 ) Y0=1;Y1=1; else Y0=0;Y1=0; 梯形图C语言/ if(X0=1&M0=0) T0=10; M0=1;)梯形图C语言/ if( T000 ) D2=D0/D1; 加减乘除类同梯形图C语言/ if( D00 ) D2=D0*D1; 加减乘除类同梯形图C语言/ if( D00 ) D2=D0+D1; 加减乘除类同梯形图C语言/ if( D00 ) D2=D0-D1; 加减乘除类同4.3 如何编写vs2008中的DLL函数Pro/E是基于C的,Pro/E中提供了很多可以供我们调用的内部函数,在Pro/E的帮助文件中有很多帮我们可以在protoolkit文件下的protkdoc中找到我们需要的帮助文件,其中我们在编写DLL文件时需要用的函数可以在其中的IENOWINGS文件中找到,如图4.3图4.3Pro/E内部函数路径打开该文件后,可以在其中找到我们需要调用的Pro/E内部函数,我们现在以promessageclear为例做一个示例型的查找。先看一下我们查找到的函数,找到的函数如图4.4所示图4.4Pro/E内部函数查找方法具体的功能和使用方式在Pro/E的帮助文件也给的非常清楚,如图4.5所示图4.5内部函数的功能我们在VS2008中所编写的程序Pro/E并不能认识,是因为在使用protoolkit工具进行二次开发时,必须至少要调用一个Pro/E的内部函数。并且要包含protoolkit的一个输入输出函数,方式如下:#include ProToolkit.hExtern ”C” int user_initialize()return (0);Extern ”C” Void user_terminate 其中,入口点函数为Extern ”C” int user_initialize()return (0);出口点函数为Extern ”C” Void user_terminate 下面我们来说一说Pro/toolkit的函数风格,1.Pro/tk使用的是面向对象的编程风格2.Pro/tk应用程序与pro/e之间传递的数据结构对应用者是不可见的3.数据结构只能通过pro/tk函数来访问4.每一个pro/tk的库函数都表现为对一个对象的动作与行为(action and objects)5.函数由一下三部分组成,前缀pro+对象名称动作,绝大部分对象是pro/e数据库中的项目,每种对象都有一个标准名称,有说明该对象的大单词组成。4.4 如何在Pro/E中调用DLL文件上一节我们说了如何编写C语言中的源文件,那么如何将我们编写的源文件加载到Pro/E中去呢?下面我们说一下如何进行Pro/E和C语言连接的问题。在Pro/E中调用DLL函数需要借用Pro/E内部的dat文件,通过动态链接库使得Pro/E可以成功的调用DLL文件。下面我们来说说具体的步骤:(1)编写dat文件 为了方便说明,我们假设在D 盘根目录进行操作。(当然也可以在任何有读写权限的文件夹下操作)。首先在D 盘建立一个名称为“MyTestMenu”的文件夹,然后在该文件夹下建立一个名称为“text”的文件夹,在该“text”文件夹下再建立一个名称为“Resource”的文件夹。接下来,将我们在VS2008中编译好的DLL文件拷贝至“MyTestMenu”文件夹下,同时建立一个名称为“ProTK.dat”的文件,文件内容为:NAME jixieshouSTARTUP dllEXEC_FILE D:MyTestMenujixieshou.dllTEXT_DIR D:MyTestMenutextDELAY_START FALSEEND其中,EXEC_FILE后的文件路径是dll的一个完整路径,TEXT_DIR后的文件路径是包含的文本文档的路径。(2) 在Pro/E中注册这个dat文件,具体操作如图4.6所示,工具-辅助应用程序-注册图4.6 DAT文件调用(3)成功后会在Pro/E中成功插入一个插件,如图4.7所示图4.7 DAT文件调用成功成功启动后,便可以在Pro/E中形成我们需要的插件。4.5 Pro/E内部函数的调用现在我们已经可以成功的调用DLL函数了,下面我们自己来编写一段简短的程序看一下我们是否可以成功调用。打开vs2008,新建一个项目我们取名为TEXT的MFC文件,编写代码如下:#include stdafx.h#include ProMessage.hvoid Test()AfxMessageBox(_T(我是主宰);/函数入口,Pro/E 与VS 的接口extern C int user_initialize()extern C void user_terminate()保存release版本发布生成DLL文件,我们按照这一章所讲的进行调用,得到效果如图4.8所示图4.8 Pro/E二次开发示例5 界面设计5.1 VS2008界面设计在这一小节中,我们来了解如何建立VC中的简单对话框并将其与Pro/E中的UI做简要对比。下面我们开始在VS2008中创建一个对话框。打开VS2008,文件-新建项目,然后选择MFC ActiveX控件图5.1 MFC对话框编写步骤1输入名称,确认。并在项目中选定添加资源1图5.2 MFC对话框编写步骤2选中Dialog出现对话框编辑窗口,我们只做最简单的对话框编辑,将其中的确定和取消改为上升和下降。添加类,右键点击窗口任一部分,选择“添加类”。然后创建自己的新类图5.3 新建类向导在这个类中包含了我们所有的控件的定义与动作函数(需要自己手动设定动作内容,这与Pro/E 中的动作设定是一样的,此处我们仅作对话框创建演示,不设置任何动作,后面会叙述动作的设置)定义完成自己的类之后,我们只需要将其加载在菜单函数中便可以了。方法如下:int MenuShowMFCDialog()AFX_MANAGE_STATE(AfxGetStaticModuleState();CMyDialog* MFCDlg = new CMyDialog;MFCDlg -Create(IDD_DIALOG1, NULL);MFCDlg -ShowWindow(SW_SHOW);MFCDlg = NULL ;return 0 ; 这样,当我们在菜单中激活这个菜单命令之后,我们在上面创建的对话框便以非模态的形式出现在了图形窗口中(非模态是指用户在操作这个对话框的同时,还可以切换到其他物件上操作,与此相对的是模态对话框,模态对话框除了自己外,不允许用户操作其他物件。通常我们都会创建非模态对话框,以便对图形窗口进行操作)。5.2 UI界面设计Pro/E系统的UI基本上都存放于安装路径的textresource下,例如,本机上该文件夹为:C:PTCPro/EWILDFIRE5textresource。在其中寻找,其对话框都是以.RES命名。建立这种RES 文件非常简单,首先从这个文件夹中随便拷贝一个以.res 命名的文件,用文本编辑器打开后,将其中的内容删除,这样我们就可以在里面写自己的UI 界面了。另外一种方法是直接建立一个TXT 文件,然后将其后缀名称修改为res. 但是这种方法并不是每次都行,有时候系统会提示说文件结尾格式不对。创建好的。Res文件如图5.4所示:图5.4 UI对话框格式 编写好的UI可以用Pro/E自带的一个UI查看器来查看,这个查看器名称为:prodialog_view.exe。放在C:PTCPro/EWILDFIRE5protoolkiti486_ntobj 中,查看时,将RES 文件直接拖拽到这个可执行文件的图标上便可。下面我们就来编写我们自己的UI 对话框。/第一个对话框.res(Dialog 第一个对话框(Components(PushButton OK)(PushButton Cancel)(PushButton Show)(Label Label)(Resources(OK.Label OK)(OK.TopOffset 4)(OK.BottomOffset 4)(OK.LeftOffset 4)(OK.RightOffset 4)(Cancel.Label Cancel)(Cancel.TopOffset 4)(Cancel.BottomOffset 4)(Cancel.LeftOffset 4)(Cancel.RightOffset 4)(Show.Label Cancel)(Show.TopOffset 4)(Show.BottomOffset 4)(Show.LeftOffset 4)(Show.RightOffset 4)(Label.Label my first dialog)(.Label 第一个对话框)(.StartLocation 5)(.DefaultButton Show)(.Layout(Grid (Rows 1 1 1) (Cols 1)Label(Grid (Rows 1) (Cols 1 1)CancelShow)OK) 编写完成后在Pro/E自己提供的对话框查看器中打开即可,在这里win7系统在打开prodialog_view.exe这个对话框查看器时会出现问题,在XP系统中打开,显示效果如图5.5 所示图5.5 UI对话框示例下面我们来看一下如何将自己搭建的对话框加载到Pro/E 系统中。为了简单起见,我们将使用前面我们制作的第一个对话框来举例。代码如下:#include #include #define Cancel 0/ 定义退出动作void Exit_ACTIOIN(char* dialog, char* component, ProAppData data)ProUIDialogDestroy(dialog);/ 定义OK按钮的动作函数void OK_ACTIOIN(char* dialog, char* component, ProAppData data)AfxMessageBox(ok);/定义cancel按钮动作函数void Cancel_ACTIOIN(char* dialog, char* component, ProAppData data)AfxMessageBox(cancel);/定义show按钮动作函数void Show_ACTIOIN(char* dialog, char* component, ProAppData data)AfxMessageBox(show);/主函数:创建对话框void UserTestShowUI()Pro/Error status;char* dialog_name = 第一个对话框;int dialog_status;ProUIDialogCreate(dialog_name, dialog_name); / 创建对话框/ 以下设置各个动作函数ProUIDialogCloseActionSet(dialog_name, Exit_ACTIOIN, NULL);ProUIPushbuttonActivateActionSet(dialog_name, OK, OK_ACTIOIN, NULL);ProUIPushbuttonActivateActionSet(dialog_name, Cancel, Cancel_ACTIOIN, NULL);ProUIPushbuttonActivateActionSet(dialog_name, Show, Show_ACTIOIN, NULL);/激活并显示对话框ProUIDialogActivate(dialog_name, &dialog_status); 然后,我们需要把这个对话框的资源文件“第一个对话框.RES”放置到我们工程中的Resource 文件夹中。这样,当用户激活这个函数时,我们建立的对话框便显示在了图形窗口中。当用户点击上面的按钮时,便会激活相应的动作函数。当然,本例中只是实现了最简单的功能而已,连读取数据的动作也没有涉及,这主要是为了让代码更简洁,也便于大家理解基本的创建过程。 从代码看,要使用一个对话框必须具备这些步骤: 首先在内存中创建对话框,然后设置其上的每一个控件所对应的动作函数,最后激活并显示这个对话框。对于在这段简单代码中所包含的这几个函数,大家可以查询函数搜索器,以便加深理解。若想加深了解,一定要经常查阅帮助文件,或者直接查询相关头文件。只有这样,才能够在此基础上制作出优美的图形界面。6 实现在Pro/E中机械手的控制前面我们做了一系列的工作,现在我们将他们整合一下,来将程序加载到Pro/E中来实现我们所需要达到的目标。首先,我们打开VS2008,文件新建项目MFC.DLL,依据5.2所讲的内容制作一个界面,我们在Pro/E调用的时候需要用到。界面如图6.1所示图6.1 对话框编辑我们要将这个对话框加载到Pro/E中还需要对函数进行编辑,双击“上升”出现这样一段函数,代码如下:/ jixieshoudialog.cpp : 实现文件/#includestdafx.h#includejiexieshou001.h#includejixieshoudialog.h#includeProMenu.hexternCint user_initialize()int menuId; ProMenuFileRegister (jixieshou001, mymenu.mnu, &menuId); ProMenubuttonActionSet (jixieshou001, Partial Check, ProCheckPart,NULL, 0); ProMenubuttonActionSet (jixieshou001, Full Check, ProCheckPart, NULL, 1); ProMenubuttonActionSet (jixieshou001, Quit Checks,(ProMenubuttonAction)ProMenuDelete, NULL, 0); ProMenubuttonActionSet(jixieshou001, jixieshou001,(ProMenubuttonAction)ProMenuDelete, NULL, 0);/ cjixieshoudialog 对话框IMPLEMENT_DYNAMIC(cjixieshoudialog, CDialog)cjixieshoudialog:cjixieshoudialog(CWnd* pParent /*=NULL*/): CDialog(cjixieshoudialog:IDD, pParent)cjixieshoudialog:cjixieshoudialog()void cjixieshoudialog:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(cjixieshoudialog, CDialog)ON_BN_CLICKED(IDCANCEL, &cjixieshoudialog:OnBnClickedCancel)END_MESSAGE_MAP()/ cjixieshoudialog 消息处理程序void cjixieshoudialog:OnBnClickedCancel()/ TODO: 在此添加控件通知处理程序代码OnCancel();externCvoid user_terminate()下面我们来看这篇源代码都做了些什么,ProMenu是我们Pro/E中自带的内部函数,其子目录下的的ProMenubuttonActionSet是我们需要调用的函数,在调用成功后会使我们创建的菜单出现在Pro/E程序中,下面我们开始调用,如前面所说的,编写我们的dat文件,name Dialogstartup dllexec_fileC:UserschenshiDocumentsVisualStudio2008ProjectstextDebugtexttext_dir .allow_stop truedelay_start falseend在Pro/E中调用这个protk.dat文件出现如图6.2界面,图6.2 机械手DAT文件的调用如果调用成功,我们创建的对话框会出现在我们的pro/e界面中,点击启动会出下如图6.3界面图6.3 将对话框加载到Pro/E中结 论 本文以PTC公司的CAD/CAM软件Pro/ENGINEER为基础,在Pro/E中进行机械手建模,然后应用其提供的二次开发工具模块Pro/TOOLKIT实现Pro/E与C语言的挂钩,实现机械手在Pro/E界面的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论