电焊条焊药的自动配料系统模拟软件设计Word文档下载推荐.docx

上传人:b****6 文档编号:16545367 上传时间:2022-11-24 格式:DOCX 页数:34 大小:499.71KB
下载 相关 举报
电焊条焊药的自动配料系统模拟软件设计Word文档下载推荐.docx_第1页
第1页 / 共34页
电焊条焊药的自动配料系统模拟软件设计Word文档下载推荐.docx_第2页
第2页 / 共34页
电焊条焊药的自动配料系统模拟软件设计Word文档下载推荐.docx_第3页
第3页 / 共34页
电焊条焊药的自动配料系统模拟软件设计Word文档下载推荐.docx_第4页
第4页 / 共34页
电焊条焊药的自动配料系统模拟软件设计Word文档下载推荐.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

电焊条焊药的自动配料系统模拟软件设计Word文档下载推荐.docx

《电焊条焊药的自动配料系统模拟软件设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《电焊条焊药的自动配料系统模拟软件设计Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。

电焊条焊药的自动配料系统模拟软件设计Word文档下载推荐.docx

一根电焊条可以分为焊料和焊药两部分。

焊料是一根规定材质、长度(约400毫米)和直径(约5毫米)的钢棒;

而焊药是包裹在焊料上面的一层化学药品。

焊接的时候,在高温作用下将焊料熔化,熔化的焊料填满被焊接的两块钢板之间的缝隙,从而达到将这两块钢板焊接在一起的目的。

焊药是助焊剂,其作用是帮助焊料更好地将被焊接的钢结构焊接在一起。

根据电焊条的焊料材质的不同、用途不同,焊药的配方需要做相应的改变,因此焊药的配方至关重要。

1.2.2焊药自动配料过程的工作原理

自动配料系统的作用是,根据焊药的配方,将有关化学原料按照规定的重量比例投放到搅拌机里。

焊药自动配料系统的原理是:

在1条导轨(类似火车铁轨)上放置一辆电动配料小车,小车中安置了电子秤,可以称量小车中化学原料的重量。

导轨上安置了0—7号位置开关,当小车到达某个位置开关出时,此位置开关就动作(此位置开关输出高电平),反之,此位置开关就不动作(此位置开关输出低电平)。

导轨的上方固定了6只料斗,里面分别放置了不同的面粉状固体化学原料。

每个料斗上都有一个电子阀门,控制料斗的打开和关闭。

自动配料系统的工作过程如下:

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公斤(假设小车最多能装100公斤化学原料)。

设定好后,操作员发布“开始配料”命令。

2)首先将小车退回到达0号位置开关,准备开始一次配料。

即当小车到达0号位置开关时,小车停止。

3)启动小车向前行驶,当小车到达1号位置开关时,小车停止,A料斗打开,开始向小车里面流入化学原料A,当达到5公斤时,A号料斗关闭,停止流料。

启动小车向前行驶。

4)当小车2号位置开关时,因为不需要配B号料斗里面的化学原料B,故小车不停止,继续向前行驶。

5)同理经过3,4,5,6好位置开关,产生不同响应,完成配料。

6)当小车到达7号位置开关时,小车停止,并将车厢自动翻起来,将车厢里的化学原料倒入搅拌机,然后小车快速倒退行驶。

小车快速倒退行驶,直到小车遇到0号位置开关才停止行驶。

7)循环执行第3步到第6步,直到操作员发布“停止配料”命令,配料过程结束。

操作员只有在小车到达0号和7号位置开关时,才能发布“停止配料”命令。

1.2.3设计内容

用C语言或者C++语言编写一个程序,用形象化的动画动作模拟焊药自动配料系统的工作过程。

可以根据自己的想象设计出美观逼真的形象。

焊药的配方可以由用户设定,但是小车一次只能装不超过100kg的原料,并要求。

1)小车匀速向前行驶,小车匀速倒退行驶,且倒退速度明显快于前进速度,以提高生产效率。

2)配料重量用小车在料斗前停顿的时间长度来模拟。

1.3设计指标或者要求

(1)要求使用C++语言设计并编译满足程序设计要求的程序,并调试正确,可以正常运行。

(2)要求在设计自动配料系统中利用到MFC,做出一个单文档窗口。

(3)可以自主完整的讲述自己的设计,并详细严谨的撰写程序设计报告。

2.设计过程

2.1程序功能

根据焊药自动配料原理,用形象化的动画动作模拟焊药自动配料系统的工作过程。

本焊药自动配料系统采用C++语言,利用MFC设计,实现简单的焊药自动配料过程,并用一个单文档窗口输出,达到形象美观逼真功能基本完善的要求。

通过用户自由简单的控制,可以完成6种配料任意比例的配制,及小车的装卸过程,并可以控制配料的开始与停止。

达到形象美观逼真功能基本完善。

2.2程序流程图

2.3程序主要模块或者函数

2.3.1焊药自动配料系统主要有以下几个模块:

(1)车厢内原料动作变化;

(2)小车翻转的卸料过程;

(3)配料过程;

(4)加料过程;

(5)小车加料、卸料、倒退的三个状态;

(6)菜单的绘制。

2.3.2焊药自动配料系统主要函数:

类名

类方法及变量

AddDlg

inta_b1,a_b2,a_b3,a_b4,a_b5,a_b6

Car

intm_start,starty,startx,m_unload,m_carstate,GetPositionx();

voidCarGo(CDC*pDC);

intstarty;

car()

CMainFrame

protected:

CMainFrame();

DECLARE_DYNCREATE(CMainFrame)

public:

virtual~CMainFrame();

virtualBOOLPreCreateWindow(CREATESTRUCT&

cs)

CMyApp

CMyApp();

DECLARE_MESSAGE_MAP()

CMyDoc

CMyDoc();

DECLARE_DYNCREATE(CMyDoc)

public:

virtual~CMyDoc();

virtualBOOLOnNewDocument();

virtualvoidSerialize(CArchive&

ar);

CMyView

virtualvoidOnDraw(CDC*pDC);

voidDrawcar(CDC*pDC,Car*Mycar)

virtualBOOLPreCreateWindow(CREATESTRUCT&

cs);

voidXBoard(CDC*pDC);

voidDrawMeterial(CDC*pDC);

voidDrawSwitch(CDC*pDC);

voidJudgeV();

voidCarState(CDC*pDC);

voidDrawView(CDC*pDC);

intx_v,v_flag,CJY,v,flag,sum,ma,mb,mc,md,me,mf,m_go,step,m_state;

SwitchSwitch_a,Switch_b,Switch_c,Switch_d,Switch_e,Switch_f,Switch_g;

MeterialPMeterial_a;

MeterialMyMeterial_a,MyMeterial_b,MyMeterial_c,MyMeterial_d,MyMeterial_e,MyMeterial_f;

CarMycar;

boolAddMeterial;

CStringstrTime;

virtual~CMyView();

afx_msgvoidOnStartCar();

afx_msgvoidOnTimer(UINTnIDEvent);

afx_msgvoidOnAddmeterial();

afx_msgvoidOnStopcar();

afx_msgvoidOnExit();

afx_msgvoidOnUpdateStopcar(CCmdUI*pCmdUI);

afx_msgvoidOnYu();

afx_msgvoidOnV2();

afx_msgvoidOnV1();

virtualBOOLOnPreparePrinting(CPrintInfo*pInfo);

virtualvoidOnBeginPrinting(CDC*pDC,CPrintInfo*pInfo);

virtualvoidOnEndPrinting(CDC*pDC,CPrintInfo*pInfo);

Equipment

voidPaintEquipment(CDC*pDC);

Equipment();

virtual~Equipment();

Meterial

intm_mcount,m_meterial;

voidPaintMeterial(CDC*pDC);

Meterial();

virtual~Meterial();

Switch

intm_flag;

Switch();

virtual~Switch();

3.软件运行或测试结果

3.1软件运行结果截图说明

图1运行后的主界面:

图2开始菜单图3配料菜单

图4退出菜单

图5点击开始菜单后,若预先没有配料提示加料的页面如下:

图6点击配料中的加料子菜单后,出现加料窗口。

在对应位置输入所需原料的重量。

其页面如下图所示:

图7加料时输入所需原料的重量不能超过100kg,若超过,则会出现错误提示。

图8配料成功后,小车正在加料。

并且各原料的重量也会显示在页面的右侧。

图9完成加料后,下车正在卸料。

如下图所示:

图10小车完成加料卸料后,会询问是否继续。

若继续,则会重复之前的加料卸料程序。

若否,则会回到初始页面。

其图如下所示:

3.2软件结果

焊药自动配料系统运行正常,图形界面整体效果简洁、美观,用户操作简单,基本实现了焊药自动配料功能,但是因为技术水平有限,不能使软件再具备其他辅助功能等,需要进一步完善。

4.软件设计过程中遇到的问题及解决办法

(1)刚开始遇到的最大困难是基础类MFC的快速学习与应用。

因为要做出一个有着美观界面的窗口,对MFC的学习必不可少。

通过学习我了解到MFC实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,是WinAPI与C++的结合。

(2)接下来遇到的是如何画图的问题,经过查资料,才有了初步的掌握。

从画笔的创建,到画刷的使用,再到图形的绘制,才完成界面上的图形绘制。

(3)在设计过程中,如何实现动画功能,这同样是一个很复杂的问题。

通过学习新的知识,不断调试更改,才实现了这个功能。

(4)实现料斗下料,小车内原料变化,都比较困难,较为复杂,最后通过查询资料和请教同学才得以解决。

5.总结

通过两周的课程设计,我觉得受益匪浅。

焊药自动配料系统,是我第一次使用MFC编写出来的程序。

也正是因为这个程序,我才能接触并学习基础类MFC,并对所学知识有了一次深刻地认识与巩固。

在编写程序过程中让我认识到了做一件事认真与细心是必不可少的,并且在编程过程中我对所学知识综合运用,深刻理解。

在程序设计过程中,程序功能有些复杂;

在设计过程中遇到很多等问题,如何画图,如何实现动画功能,如何实现交互功能;

我通过调试及查阅资料和自学新知识解决部分问题,但依然有个别问题我难以解决,这要在今后学习中不断改进解决。

在写程序过程中,要用到很多平时上课没有学过的知识,这对我来说有一些难度,但这也提醒我,不仅要重视平时课内知识,还要在课外多学习其他知识,丰富自己的知识库,这对我们今后的工作学习是很重要的。

这两周的实习使我对今后的学习有很大的启发:

只有平时基础知识学习扎实,才能在程序设计时确定正确,实用,简洁的方向,才能在遇到问题时很好的解决;

平时多了解一些专业知识,能扩充知识面;

多实践也是很有帮助的,只有在实践中才能很好的发现问题。

最后,真的很感谢老师这两周以来的指导与教诲,让我在今后的生活和学习上,有了全面的认识,使我更加明确了以后的方向。

附录:

程序源代码

1闫阿丹view.p

//闫阿丹View.cpp:

implementationoftheCMyViewclass

#include"

stdafx.h"

闫阿丹.h"

resource.h"

闫阿丹Doc.h"

闫阿丹View.h"

ar.h"

Equipment.h"

Switch.h"

Meterial.h"

#include<

math.h>

AddDlg.h"

mmsystem.h>

#pragmacomment(lib,"

winmm.lib"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

IMPLEMENT_DYNCREATE(CMyView,CView)

BEGIN_MESSAGE_MAP(CMyView,CView)

ON_COMMAND(ID_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:

:

OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT,CView:

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;

//保存料b的重量

ma=0;

//保存料a的重量

sum=0;

//保存料的总重量

Step=0;

//小车轮子转动的速度

m_color=0;

//小车是否是第一次去配料

AddMeterial=false;

//小车是否是正在加料

flag=0;

v=1;

//保存小车的速度

CJY=0;

//用于提前检测小车的坐标

v_flag=0;

//标志小车速度是否等于2m/s}

~CMyView(){}

BOOLCMyView:

PreCreateWindow(CREATESTRUCT&

cs){

returnCView:

PreCreateWindow(cs);

}

voidCMyView:

OnDraw(CDC*pDC){

CMyDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

intm_nWidth,m_nHeigth;

CDCm_nDC;

CBitmapm_nBmp;

//映射屏幕的内存设备环境,获取游戏窗口的大小用于下面设置内存位图的尺寸

CRectwindowRect;

GetClientRect(&

windowRect);

m_nWidth=windowRect.Width();

m_nHeigth=windowRect.Height();

//内存设备环境与屏幕设备环境兼容

m_nDC.CreateCompatibleDC(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.DeleteDC();

//删除DC

m_nBmp.DeleteObject();

//删除位图}

OnPreparePrinting(CPrintInfo*pInfo){

returnDoPreparePrinting(pInfo);

}

OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/){}

OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/){}

AssertValid()const{CView:

AssertValid();

Dump(CDumpContext&

dc)const{CView:

Dump(dc);

CMyDoc*CMyView:

GetDocument(){

ASSERT(m_pDocument->

IsKindOf(RUNTIME_CLASS(CMyDoc)));

return(CMyDoc*)m_pDocument;

#endif//_DEBUG

//绘制小车,及小车的动作

Drawcar(CDC*pDC,Car*Mycar){

CPennewpen,*oldpen;

//创建画笔

newpen.CreatePen(PS_SOLID,2,RGB(118,130,122));

//小车的颜色设置与画刷相同的颜色

oldpen=pDC->

SelectObject(&

newpen);

//选择创建的画刷

if(!

Mycar->

m_unload){//小车不处于卸料的状态

doubledalta=20;

constdoubleR=10;

constdoublePI=3.1415926;

doubleangle;

angle=-1*R/PI*180;

Step+=2*v;

pDC->

Rectangle(700-m_state,200,720+60-m_state,200+40);

//画一个矩形

Ellipse(710+5-m_state,200+40,710+25-m_state,200+60);

//在给定半径以(x,y)为圆心画圆

Ellipse(710+35-m_state,200+40,710+55-m_state,200+60);

Ellipse(710+12-m_state,200+47,710+18-m_state,200+53);

Ellipse(710+42-m_state,200+47,710+48-m_state,200+53);

CBrushRedBrush;

RedBrush.CreateSolidBrush(RGB(251,135,171));

//车轮的颜色设置填充模式和颜色

CBrush*pBrhold;

pBrhold=(CBrush*)pDC->

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));

//绘制并填充一个扇形

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{

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));

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));

}}

S

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

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

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