本发明涉及生产调度技术领域,尤其涉及一种基于Excel和VB生成作业车间调度甘特图的方法。
背景技术:
绘制甘特图,目前基本有两种做法:
一种是使用专用甘特图绘制软件,例如Microsoft project,翰文横道图编制系统等软件。这些专用软件虽然绘制甘特图很方便,很直观,尤其是Microsoft project在针对项目进度管理时绘制的甘特图能直观地显示项目进度,但是在作业车间调度领域中,由于涉及庞大的数据量,遇到的问题复杂多变,致使这些专用的软件在使用中存在着灵活性和操作性很差,适应性不强,给使用者带来了诸多的不便。
另一种是采用编程软件,例如VC++,VB等软件,通过编程调用数据库,然后用对话框的形式弹出生成的甘特图。这种方法虽然可以快速处理大量的数据,适应性也比较强,但是甘特图一旦生成成功,将不能直接修改,可视化程度不高。
技术实现要素:
本发明的目的在于提供一种基于Excel和VB生成作业车间调度甘特图的方法,该方法简洁快速,易于修改,可视化程度高。其具体方法包括如下步骤:
1)设置Excel模板文件,包括设置对应的工作表,所述工作表中至少包含相应的表头;
2)设置VB模板文件,包括根据所述要素设置窗体及其相关属性,然后在窗体上添加相关控件并设置其属性,最后编制“绘制甘特图.vbp”程序;
3)通过加载“绘制甘特图.vbp”程序,点击“导入数据”命令按钮,调取已设置完成的excel模板文件,获取工件信息;
4)点击“生成甘特图”命令按钮,生成所述作业车间调度甘特图。
所述一种基于Excel和VB生成作业车间调度甘特图的方法进一步设计在于,所述工作表为为主、辅2个工作表,标签名分别设置为“工件箱、甘特图”。
所述一种基于Excel和VB生成作业车间调度甘特图的方法进一步设计在于,在所述主工作表中至少设置:“工件号,工序数,工序号,到达时间,可选机器集,加工时间,Cmax,开始时间,结束时间,选择的机器”表头。
所述一种基于Excel和VB生成作业车间调度甘特图的方法进一步设计在于,所述窗体添加3个命令按钮,2个标签控件,2个文本框控件。
所述一种基于Excel和VB生成作业车间调度甘特图的方法进一步设计在于,所述甘特图由平面坐标和矩形块组成,一个矩形块的长度表示一道工序的加工时间,矩形块的左端表示开工时间,右端表示完工时间。
所述一种基于Excel和VB生成作业车间调度甘特图的方法进一步设计在于,所述平面坐标横坐标代表的是加工时间,其刻度线和底线是对excel工作表中单元格的行高,列宽,边框线进行相应的设置而生成的。刻度尺是根据最大完工时间Cmax来选择,然后通过对相应单元格进行合并居中并输入相应刻度值而生成的。
所述一种基于Excel和VB生成作业车间调度甘特图的方法进一步设计在于,所述平面坐标纵坐标代表的是加工机器代号,其刻度线和底线是对excel工作表中单元格的行高,列宽,边框线进行相应的设置而生成的。刻度尺是根据机器数量来选择,然后通过对相应单元格进行合并居中并输入相应机器代号而生成的。
所述一种基于Excel和VB生成作业车间调度甘特图的方法进一步设计在于,所述矩形块是通过确定工作表单元格目标区域,然后进行单元格合并,水平居中,垂直居中操作,最后将目标区域单元格添加四周框线,填充相应颜色并写入工序信息而生成的,同一个工件的工序用相同的颜色填充。
与现有方法相比,本发明一种基于Excel和VB生成作业车间调度甘特图的方法具有以下有益效果:
(1)本发明可以快速处理庞大的数据,大大提高工作效率,形成模板后可重复使用,技术效果明显,体现了较大的项目使用价值;
(2)本发明利用excel的良好操作性,在甘特图生成以后,不用改变低层程序,便可以直接在excel中直接进行调整和修改,灵活性强,可视化程度高;
(3)本发明可以实现调度数据与甘特图的共同关联存储。
附图说明
图1是Excel模板文件中主、辅工作表的设计示例图。
图2是本实施例的部分输入内容。
图3是VB窗体模板。
图4-1到图4-2是导入数据的核心代码。
图5是导入数据成功后的窗体。
图6-1到图6-3是生成甘特图的核心代码。
图7是本实施例的调度结果甘特图。
下面结合附图及实施例对本发明作进一步的说明。
1.设置excel模板文件
1.1 新建工作簿
在新建的工作簿中,分别建立工作表标签名称为“工件箱”的主工作表和工作表标签名称为“甘特图”的辅工作表。主工作表应包含表头用来存储工件加工信息。例如:“工件号,工序数,工序号,到达时间,可选机器集,加工时间,Cmax,开始时间,结束时间,选择的机器”表头。请参见图1所示。
1.2 各单元格输入内容
以20个工件,每个工件10道工序,10台加工机器为例,主工作表中上述输入区的对应单元格的部分输入内容请参见图2所示。
2.设置VB模板文件
2.1 新建VB模板文件并设定窗体及其属性,
新建VB模板文件,在该文件中设置form1.caption=“生成甘特图”。
2.2 添加控件并设置相关属性
首先添加2个命令按钮,其caption属性分别设置为“导入数据”,“甘特图”;然后添加俩个标签控件,其caption属性分别设置为“JobNum”,“MachNum”;最后添加俩个文本框控件,其text属性均设置为“ ”;请参见图3所示。
2.3 编写“生成甘特图.vbp”程序
编写“生成甘特图.vbp”程序,编写完成并调试成功后,以“生成甘特图.vbp”程序存盘。
3.加载程序,导入数据,获取工件信息
加载“生成甘特图.vbp”程序,点击导入数据命令按钮,选择步骤1中设置好的excel模板文件,获取工件信息。该程序的核心代码如图4-1~4-2所示,导入数据成功后如图5所示。
4.生成甘特图
首先生成平面坐标,其具体步骤如下:
Step1.令excel中标签名为“工件箱”的工作表G2单元格的值为最大完工时间Cmax;
Step2.设置“甘特图”工作表的第一列列宽为3,然后选定该工作表指定区域(第二列到第Cmax+1列)的列宽为100/Cmax;
Step3.设置工作表的第二行、第三行以及第MachNum*2+5行和第MachNum*2+6行的行高为5;
Step4.构建横坐标:选定工作表指定区域(第MachNum*2+6行第二列到MachNum*2+6行第Cmax+1列的所有单元格),设置其下框线的线型为实线;设置横坐标的刻度尺(包括刻度值和最小刻度单位线),例如:由于该实例的Cmax比较大,设置刻度值为50,最小刻度单位为10,当第MachNum*2+6行的列数(假设为第i列)为10的整数倍时,设置第i+1列的右框线为实线,当第MachNum*2+5行的列数(假设为第j列)为50的整数倍时,设置第j+1列的右框线为实线,对应第MachNum*2+7行第j+1列的单元格数值为j,然后把该单元格相邻的前23个单元格和后26个单元格合并居中;
Step5.构建纵坐标:选定工作表指定区域(第四行第一列到第MachNum*2+6行第一列的所有单元格),设置其右框线的线型为实线;设置纵坐标的刻度,纵坐标代表的是工件加工的机器代号,在第五行第一列的单元格中输入M1,代表机器1,然后以该单元格为基础,在第一列中每隔一个单元格依此输入M2,M3……直到M&MachNum。
然后生成矩形块,具体步骤如下:
Step1.把每个工件的每道工序根据选择的机器代号和开始时间放入相应的单元格,例如:(1,1),代表第一个工件的第一道工序,它的开始时间是9,选择的机器号是9,那么它所处的位置就在工作表的第9*2+3行,第9+2列所对应的单元格;
Step2.根据工序的开始时间和结束时间,确定每道工序的时间区域,然后将该区域的单元格合并居中,并将四周边框线设置为实线;
Step3.给Step2中确定的单元格区域填充颜色,同一工件的所有工序用相同的颜色填充。
最后,添加结束标志线,并标注最大完工时间,其具体步骤如下:
Step1.选定工作表指定区域(第四行第Cmax+1列到第MachNum*2+6行第Cmax+1列的所有单元格),设置其右框线的线型为实线;
Step2.在第四行,第Cmax+1列单元格输入该实例最大完工时间Cmax;
Step3.选定第四行的第(Cmax-50)列到第(Cmax+1)列,然后进行合并居中。
该程序的核心代码如图6-1~6-3所示,生成完甘特图如图7所示。