ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:499.71KB ,
资源ID:3640464      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3640464.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电焊条焊药的自动配料系统模拟软件设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电焊条焊药的自动配料系统模拟软件设计.docx

1、电焊条焊药的自动配料系统模拟软件设计成绩课程名称: 程序设计实训_ _ 设计题目: 电焊条焊药的自动配料系统模拟软件设计 姓 名 : 学 号 : 1108020104专业班级 : 网络工程1101班指导教师 : 李 爱 国完成日期 : 2013 07 - 10学 校 : 西安科技大学题 目电焊条焊药的自动配料系统模拟软件设计姓 名学号1108020104班级网工1101指导老师李爱国完成日期2013 07 - 101. 设计任务1.1 设计目的(1) 了解电焊条焊药生产过程中的自动配料系统原理,学习分析数据和算法设计思想。(2) 进一步学习C/C+工程设计方法以及程序调试技巧,进一步熟悉计算机

2、语言的使用方法和设计理念。(3) 了解并学习微软基础类MFC,会用MFC进行简单的框架设计,可以做基本绘图以及简单菜单单文档文件的编写,并输出简单系统程序的exe文件。(4) 学习撰写专业技术文档,为之后撰写毕业设计及工作中的报告积累经验1.2 设计内容1.2.1 电焊条的简介电焊条在建筑和工业中被广泛应用于将钢制结构焊接在一起。一根电焊条可以分为焊料和焊药两部分。焊料是一根规定材质、长度(约400毫米)和直径(约5毫米)的钢棒;而焊药是包裹在焊料上面的一层化学药品。焊接的时候,在高温作用下将焊料熔化,熔化的焊料填满被焊接的两块钢板之间的缝隙,从而达到将这两块钢板焊接在一起的目的。焊药是助焊剂

3、,其作用是帮助焊料更好地将被焊接的钢结构焊接在一起。根据电焊条的焊料材质的不同、用途不同,焊药的配方需要做相应的改变,因此焊药的配方至关重要。1.2.2 焊药自动配料过程的工作原理自动配料系统的作用是,根据焊药的配方,将有关化学原料按照规定的重量比例投放到搅拌机里。焊药自动配料系统的原理是:在1条导轨(类似火车铁轨)上放置一辆电动配料小车,小车中安置了电子秤,可以称量小车中化学原料的重量。导轨上安置了07号位置开关,当小车到达某个位置开关出时,此位置开关就动作(此位置开关输出高电平),反之,此位置开关就不动作(此位置开关输出低电平)。导轨的上方固定了6只料斗,里面分别放置了不同的面粉状固体化学

4、原料。每个料斗上都有一个电子阀门,控制料斗的打开和关闭。自动配料系统的工作过程如下:1) 操作员通过计算机键盘设定一种焊药的配方(即需用到要哪几种化学原料,每种化学原料的重量)。假设一种焊药配方最多只需要6种化学原料,分别是A,B,C,D,E,F,并假设A,B,C,D,E,F这6种化学原料分别存放在A,B,C,D,E,F这6只料斗里面。因此还要设定好要用到的每种化学原料分别装在那只料斗里面。下面我们假设某种焊药的配方用到4种化学原料A,C,D和E。A,C,D和E这4种化学原料分别装在A,C,D,E这4只料斗里面,而且A,C,D和E这4种化学原料的重量比例是5公斤,10公斤,20公斤和65公斤(

5、假设小车最多能装100公斤化学原料)。设定好后,操作员发布“开始配料”命令。2) 首先将小车退回到达0号位置开关,准备开始一次配料。即当小车到达0号位置开关时,小车停止。3) 启动小车向前行驶,当小车到达1号位置开关时,小车停止,A料斗打开,开始向小车里面流入化学原料A,当达到5公斤时,A号料斗关闭,停止流料。启动小车向前行驶。4) 当小车2号位置开关时,因为不需要配B号料斗里面的化学原料B,故小车不停止,继续向前行驶。5) 同理经过3,4,5,6好位置开关,产生不同响应,完成配料。6) 当小车到达7号位置开关时,小车停止,并将车厢自动翻起来,将车厢里的化学原料倒入搅拌机,然后小车快速倒退行驶

6、。小车快速倒退行驶,直到小车遇到0号位置开关才停止行驶。7) 循环执行第3步到第6步,直到操作员发布“停止配料”命令,配料过程结束。操作员只有在小车到达0号和7号位置开关时,才能发布“停止配料”命令。1.2.3 设计内容 用C语言或者C+语言编写一个程序,用形象化的动画动作模拟焊药自动配料系统的工作过程。可以根据自己的想象设计出美观逼真的形象。焊药的配方可以由用户设定,但是小车一次只能装不超过100kg的原料,并要求。1)小车匀速向前行驶,小车匀速倒退行驶,且倒退速度明显快于前进速度,以提高生产效率。2)配料重量用小车在料斗前停顿的时间长度来模拟。1.3 设计指标或者要求(1) 要求使用C+语

7、言设计并编译满足程序设计要求的程序,并调试正确,可以正常运行。(2) 要求在设计自动配料系统中利用到MFC,做出一个单文档窗口。(3) 可以自主完整的讲述自己的设计,并详细严谨的撰写程序设计报告。2.设计过程2.1 程序功能根据焊药自动配料原理,用形象化的动画动作模拟焊药自动配料系统的工作过程。本焊药自动配料系统采用C+语言,利用MFC设计,实现简单的焊药自动配料过程,并用一个单文档窗口输出,达到形象美观逼真功能基本完善的要求。通过用户自由简单的控制,可以完成6种配料任意比例的配制,及小车的装卸过程,并可以控制配料的开始与停止。达到形象美观逼真功能基本完善。2.2 程序流程图2.3 程序主要模

8、块或者函数2.3.1 焊药自动配料系统主要有以下几个模块:(1) 车厢内原料动作变化;(2) 小车翻转的卸料过程;(3) 配料过程;(4) 加料过程;(5) 小车加料、卸料、倒退的三个状态;(6) 菜单的绘制。2.3.2 焊药自动配料系统主要函数:类名类方法及变量AddDlgint a_b1, a_b2, a_b3, a_b4, a_b5, a_b6Car int m_start , starty, startx , m_unload , m_carstate,GetPositionx(); void CarGo(CDC * pDC);int starty ; car()CMainFramep

9、rotected: CMainFrame() ; DECLARE_DYNCREATE(CMainFrame)public: virtual CMainFrame() ; virtualBOOL PreCreateWindow(CREATESTRUCT& cs)CMyApppublic: CMyApp() ; DECLARE_MESSAGE_MAP()CMyDocprotected: CMyDoc() ; DECLARE_DYNCREATE(CMyDoc) public: virtual CMyDoc() ; virtual BOOL OnNewDocument() ; virtual void

10、 Serialize(CArchive& ar);CMyViewpublic: virtual void OnDraw(CDC* pDC) ;void Drawcar(CDC *pDC, Car *Mycar) virtual BOOL PreCreateWindow(CREATESTRUCT& cs) ; void XBoard(CDC * pDC) ;void DrawMeterial(CDC *pDC); void DrawSwitch(CDC *pDC);void JudgeV() ; void CarState(CDC*pDC) ;void DrawView(CDC *pDC); i

11、nt x_v , v_flag , CJY , v , flag ,sum , ma , mb , mc , md , me , mf , m_go ,step , m_state;Switch Switch_a , Switch_b , Switch_c ,Switch_d ,Switch_e ,Switch_f ,Switch_g ; Meterial PMeterial_a ; Meterial MyMeterial_a , MyMeterial_b , MyMeterial_c , MyMeterial_d , MyMeterial_e , MyMeterial_f;Car Mycar

12、 ; bool AddMeterial ; CString strTime ;virtual CMyView();protected: afx_msg void OnStartCar();afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnAddmeterial();afx_msg void OnStopcar();afx_msg void OnExit();afx_msg void OnUpdateStopcar(CCmdUI* pCmdUI);afx_msg void OnYu();afx_msg void OnV2();afx_msg v

13、oid OnV1();virtual BOOL OnPreparePrinting(CPrintInfo* pInfo) ;virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo) ;virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo) ;Equipmentpublic: void PaintEquipment(CDC *pDC);Equipment();virtual Equipment();Meterialpublic: int m_mcount , m_meterial;v

14、oid PaintMeterial(CDC *pDC);Meterial();virtual Meterial();Switchpublic: int m_flag;Switch();virtual Switch();3. 软件运行或测试结果3.1 软件运行结果截图说明图1 运行后的主界面:图2 开始菜单 图3 配料菜单 图4 退出菜单 图5 点击开始菜单后,若预先没有配料提示加料 的页面如下:图6 点击配料中的加料子菜单后,出现加料窗口。在对应位置输入所需原料的重量。其页面如下图所示:图7 加料时输入所需原料的重量不能超过100kg,若超过,则会出现错误提示。其页面如下图所示:图8 配料成功

15、后,小车正在加料。并且各原料的重量也会显示在页面的右侧。其页面如下图所示:图9 完成加料后,下车正在卸料。如下图所示:图10 小车完成加料卸料后,会询问是否继续。若继续,则会重复之前的加料卸料程序。若否,则会回到初始页面。其图如下所示:3.2 软件结果焊药自动配料系统运行正常,图形界面整体效果简洁、美观,用户操作简单,基本实现了焊药自动配料功能,但是因为技术水平有限, 不能使软件再具备其他辅助功能等,需要进一步完善。4. 软件设计过程中遇到的问题及解决办法(1) 刚开始遇到的最大困难是基础类MFC的快速学习与应用。因为要做出一个有着美观界面的窗口,对MFC的学习必不可少。通过学习我了解到MFC

16、实际上是微软提供的,用于在C+环境下编写应用程序的一个框架和引擎,是WinAPI与C+的结合。(2) 接下来遇到的是如何画图的问题,经过查资料,才有了初步的掌握。从画笔的创建,到画刷的使用,再到图形的绘制,才完成界面上的图形绘制。(3) 在设计过程中,如何实现动画功能,这同样是一个很复杂的问题。通过学习新的知识,不断调试更改,才实现了这个功能。(4) 实现料斗下料,小车内原料变化,都比较困难,较为复杂,最后通过查询资料和请教同学才得以解决。5. 总结通过两周的课程设计,我觉得受益匪浅。焊药自动配料系统,是我第一次使用MFC编写出来的程序。也正是因为这个程序,我才能接触并学习基础类MFC,并对所

17、学知识有了一次深刻地认识与巩固。在编写程序过程中让我认识到了做一件事认真与细心是必不可少的,并且在编程过程中我对所学知识综合运用,深刻理解。在程序设计过程中,程序功能有些复杂;在设计过程中遇到很多等问题,如何画图,如何实现动画功能,如何实现交互功能;我通过调试及查阅资料和自学新知识解决部分问题,但依然有个别问题我难以解决,这要在今后学习中不断改进解决。在写程序过程中,要用到很多平时上课没有学过的知识,这对我来说有一些难度,但这也提醒我,不仅要重视平时课内知识,还要在课外多学习其他知识,丰富自己的知识库,这对我们今后的工作学习是很重要的。这两周的实习使我对今后的学习有很大的启发:只有平时基础知识

18、学习扎实,才能在程序设计时确定正确,实用,简洁的方向,才能在遇到问题时很好的解决;平时多了解一些专业知识,能扩充知识面;多实践也是很有帮助的,只有在实践中才能很好的发现问题。最后,真的很感谢老师这两周以来的指导与教诲,让我在今后的生活和学习上,有了全面的认识,使我更加明确了以后的方向。附录:程序源代码1 闫阿丹view.p/ 闫阿丹View.cpp : implementation of the CMyView class#include stdafx.h#include 闫阿丹.h#include resource.h#include 闫阿丹Doc.h#include 闫阿丹View.h#i

19、nclude ar.h#include Equipment.h#include Switch.h#include Meterial.h#include #include AddDlg.h#include #pragma comment(lib, winmm.lib)#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifIMPLEMENT_DYNCREATE(CMyView, CView)BEGIN_MESSAGE_MAP(CMyView, CView)ON_COMMAND(I

20、D_StartCar, OnStartCar)ON_WM_TIMER()ON_COMMAND(IDD_ADDMETERIAL, OnAddmeterial)ON_COMMAND(ID_STOPCAR, OnStopcar)ON_COMMAND(ID_EXIT, OnExit)ON_UPDATE_COMMAND_UI(ID_STOPCAR, OnUpdateStopcar) ON_COMMAND(ID_YU, OnYu) ON_COMMAND(ID_V2, OnV2) ON_COMMAND(ID_V1, OnV1) ON_COMMAND(ID_FILE_PRINT, CView:OnFilePr

21、int)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSAGE_MAP()CMyView:CMyView() m_state = 0; /小车的坐标与导轨开始初的坐标之差 x_v=0; /小车的小刮刮与小车壁坐标之差 m_go = 1; /小车是否去配料 mf = 0; /保存料f的重量 me = 0; /保存料e的重量 md = 0; /保存料d的重量 mc = 0; /保存料c的重量 mb = 0; /保

22、存料b的重量 ma = 0; /保存料a的重量 sum = 0; /保存料的总重量 Step = 0; /小车轮子转动的速度 m_color = 0; /小车是否是第一次去配料 AddMeterial = false;/小车是否是正在加料 flag=0; /小车是否去配料 v =1; /保存小车的速度 CJY=0; /用于提前检测小车的坐标 v_flag = 0;/标志小车速度是否等于2m/sCMyView:CMyView()BOOL CMyView:PreCreateWindow(CREATESTRUCT& cs) return CView:PreCreateWindow(cs); void

23、 CMyView:OnDraw(CDC* pDC) CMyDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); int m_nWidth,m_nHeigth; CDC m_nDC; CBitmap m_nBmp; /映射屏幕的内存设备环境,获取游戏窗口的大小用于下面设置内存位图的尺寸 CRect windowRect; GetClientRect(&windowRect); m_nWidth=windowRect.Width(); m_nHeigth=windowRect.Height(); /内存设备环境与屏幕设备环境兼容 m_nDC.CreateCo

24、mpatibleDC(pDC); /内存位图与屏幕设备兼容,大小为游戏窗口的尺寸 m_nBmp.CreateCompatibleBitmap(pDC,m_nWidth,m_nHeigth); m_nDC.FillSolidRect(windowRect,RGB(0,0,0); /内存设备环境与内存位图兼容,以便通过m_nDC在内存位图上作画 m_nDC.SelectObject(&m_nBmp); DrawView(&m_nDC); /把内存DC上的图形拷贝到电脑屏幕上 pDC-BitBlt(0,0,m_nWidth,m_nHeigth,&m_nDC,0,0,SRCCOPY); m_nDC.D

25、eleteDC();/删除DC m_nBmp.DeleteObject();/删除位图 BOOL CMyView:OnPreparePrinting(CPrintInfo* pInfo) return DoPreparePrinting(pInfo);void CMyView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) void CMyView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) #ifdef _DEBUGvoid CMyView:AssertValid() cons

26、t CView:AssertValid();void CMyView:Dump(CDumpContext& dc) const CView:Dump(dc);CMyDoc* CMyView:GetDocument() ASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMyDoc); return (CMyDoc*)m_pDocument;#endif /_DEBUG/绘制小车,及小车的动作void CMyView:Drawcar(CDC *pDC, Car *Mycar) CPen newpen,*oldpen;/创建画笔 newpen.CreatePen(

27、PS_SOLID,2,RGB(118,130,122);/小车的颜色 设置与画刷相同的颜色 oldpen=pDC-SelectObject(&newpen);/选择创建的画刷 if(!Mycar-m_unload) /小车不处于卸料的状态 double dalta = 20; const double R = 10; const double PI = 3.1415926; double angle; angle = -1*R/PI*180; Step +=2*v; pDC-Rectangle(700-m_state,200 ,720+60-m_state,200+40);/画一个矩形 pDC

28、-Ellipse(710+5-m_state,200+40,710+25-m_state,200+60);/在给定半径以(x,y)为圆心画圆 pDC-Ellipse(710+35-m_state,200+40,710+55-m_state,200+60); pDC-Ellipse(710+12-m_state,200+47,710+18-m_state,200+53); pDC-Ellipse(710+42-m_state,200+47,710+48-m_state,200+53); CBrush RedBrush; RedBrush.CreateSolidBrush(RGB(251,135,

29、171);/车轮的颜色 设置填充模式和颜色 CBrush *pBrhold; pBrhold = (CBrush *)pDC-SelectObject(&RedBrush); if(AddMeterial = false) if(m_go) pDC-Pie(710+5-m_state,200+40,710+25-m_state,200+60,725-m_state + 10*cos(Step/(10),250- 10*sin(Step/(10),725-m_state+ 10*cos(Step/(10)+9*PI/5),250-10*sin(Step/(10)+9*PI/5);/绘制并填充一个

30、扇形 pDC-Pie(710+35-m_state,200+40,710+55-m_state,200+60,755-m_state + 10*cos(Step/(10),250- 10*sin(Step/(10),755-m_state+ 10*cos(Step/(10)+9*PI/5),250-10*sin(Step/(10)+9*PI/5); else pDC-Pie(710+5-m_state,200+40,710+25-m_state,200+60,725-m_state - 10*cos(Step/(10),250-10*sin(Step/(10),725-m_state- 10*cos(Step/(10)+1*PI/5),250-10*sin(Step/(10)+1*PI/5); pDC-Pie(710+35-m_state,200+40,710+55-m_state,200+60,755-m_state - 10*cos(Step/(10),250-10*sin(Step/(10),755-m_state- 10*cos(Step/(10)+1*PI/5),250-10*sin(Step/(10)+1*PI/5); pDC-S

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1