專利名稱:自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法
自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法技術(shù)領(lǐng)域
本發(fā)明屬于智能作業(yè)控制技術(shù),特別是一種自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法。
背景技術(shù):
現(xiàn)代企業(yè)必須提升生產(chǎn)控制水平,才能提高生產(chǎn)率,確保履約率。在離散型企業(yè)內(nèi)部,面對多種具有不固定級級數(shù)的從屬關(guān)系的產(chǎn)品和具有一定先后順序的裝配部件,多采用把產(chǎn)品作為一種項目,把產(chǎn)品里的部件,子部件,最終器件、零件、部件同級化處理,人工拆分為項目的子項目平等對待的方法。人工拆分需要化大量時間,拆分的結(jié)果專門針對特定的模型,不具備通用性,不利于具正意義上的分類和匯總。
目前許多企業(yè)生產(chǎn)現(xiàn)場大多處于非完全控制狀態(tài)。生產(chǎn)現(xiàn)場的盲目性,隨意性非常大,生產(chǎn)控制手段匱乏,目視管理缺失,信息不能很好地公開,與生產(chǎn)準時化要求相距甚遠,質(zhì)量過程控制不能很好地保證,生產(chǎn)潛在的問題不能及時發(fā)現(xiàn),工作效率不能有效地提聞。
我國的一些企業(yè)對生產(chǎn)管理多采用現(xiàn)場安排、手工記錄方式。重復(fù)勞動多,生產(chǎn)數(shù)據(jù)沒有積累。生產(chǎn)計劃滯后,生產(chǎn)安排隨意性大,生產(chǎn)進度不確定性因素多,信息斷層。發(fā)明內(nèi)容
本發(fā)明的目的提供一種自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法。
實現(xiàn)本發(fā)明目的的技術(shù)方案為一種自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法,將多品種小批量生產(chǎn)方式的離散型企業(yè),按相似性分成鉗裝、裝擦、電裝、電調(diào)、總校、聯(lián)調(diào)、裝箱、裝外八個生產(chǎn)單元,每個單元又安排可控制數(shù)量的工位,半天按210 分鐘計算,根據(jù)包含各種因素的信息的多種表,尋找控制具有從屬關(guān)系產(chǎn)品的每一個部件在每一個工位上裝配的最佳時間點;最佳時間點用包含開始時間、結(jié)束時間和表示每個單元工位順序的順序號三個字段的部件進度表來表達,具體步驟如下
(I)由加班表和工序單元工位表運用顯示區(qū)間天數(shù)的確定,周末的判斷,循環(huán)中日期和時間的表達三種方法生成工序時間表;
(2)保留部件進度表表示已開工的、異常的、完工的記錄,清除其他記錄,并綁定部件進度表的保留記錄與工序時間表對應(yīng)的順序號;
(3)對多種具有不固定子部件級數(shù)和多道裝配工序的產(chǎn)品采用不固定嵌套循環(huán)層數(shù)和數(shù)組的方法,根據(jù)產(chǎn)品從屬關(guān)系、產(chǎn)品裝配流程、生產(chǎn)計劃、正常上班時間各單元工位數(shù)和加班時間各單元工位數(shù)五種因素,生成部件進度表所有記錄項,生成所有記錄項時賦值批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、工序號、工序名稱、列號、序號、優(yōu)先級、作業(yè)時長、非作業(yè)時長、有效性字段;
(4)運用一個子部件對應(yīng)多個父部件,一個父部件對應(yīng)多個子部件的多對多關(guān)系的對應(yīng)方法,確定部件進度表保留記錄的轉(zhuǎn)向單元的工序號、轉(zhuǎn)向工序名、轉(zhuǎn)向順序號;
(5)根據(jù)產(chǎn)品配套時間、缺件補齊時間、實際完成時間、作業(yè)異常推遲時間、優(yōu)先級五種因素,運用條件符合時參與排序、把表示工件的部件進度表的開始時間與表示工位的工序時間表的起始時間作比較取最有利時間的方法、間斷時間相加的方法、連續(xù)時間相加的方法、多對多關(guān)系的對應(yīng)方法四種方法。
本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點為在考慮產(chǎn)品從屬關(guān)系、產(chǎn)品裝配流程、生產(chǎn)計劃時間、產(chǎn)品配套時間、缺件補齊時間、異常推遲時間、實際完成時間、產(chǎn)品優(yōu)先級、正常上班時間各工序單元的工位數(shù)和加班時間各工序工序單元的工位數(shù)十種實戰(zhàn)因素情況下,自動尋找具有不固定級數(shù)從屬關(guān)系的產(chǎn)品的部件裝配最佳路徑。生產(chǎn)中最大的浪費是等待的浪費,通過自動尋找部件裝配的最佳路徑,能最大程度消除過量生產(chǎn)、等待時間、運輸、庫存、過程、動作、產(chǎn)品缺陷等浪費,縮短產(chǎn)品制造周期,提高生產(chǎn)效率,適應(yīng)現(xiàn)代企業(yè)多品種小批量的生產(chǎn)需求,提升離散型企業(yè)的快速響應(yīng)能力,提高全員生產(chǎn)率,實現(xiàn)響應(yīng)快速化。
下面結(jié)合附圖對本發(fā)明作進一步詳細描述。
圖I是自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法結(jié)構(gòu)圖。
圖2是自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法硬件配置圖。
具體實施方式
結(jié)合圖I和圖2,本發(fā)明自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法是離散型企業(yè)智能作業(yè)控制技術(shù)的核心內(nèi)容之一,下面對包括自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法在內(nèi)的離散型企業(yè)智能作業(yè)控制技術(shù)進行整體說明和描述,首先對多種具有不固定子部件級數(shù)和多道裝配工序的產(chǎn)品采用不固定嵌套循環(huán)層數(shù)和數(shù)組構(gòu)建產(chǎn)品結(jié)構(gòu)樹;并按相似性分成鉗裝、裝擦、電裝、電調(diào)、總校、聯(lián)調(diào)、裝箱、裝外八個生產(chǎn)單元,每個單元又安排可控制數(shù)量的工位,半天按210分鐘,計算生產(chǎn)能力初定各工序單元工位數(shù);在考慮產(chǎn)品從屬關(guān)系、產(chǎn)品裝配流程、生產(chǎn)計劃時間、產(chǎn)品配套時間、缺件補齊時間、異常推遲時間、實際完成時間、產(chǎn)品優(yōu)先級、正常上班時間各工序單元工位數(shù)和加班時間各工序單元工位數(shù)十種因素,控制具有從屬關(guān)系產(chǎn)品的每一個部件在每一個工位上裝配的最佳時間點,自動尋找部件裝配的最佳路徑;該最佳路徑以甘特圖方式實時顯示控制現(xiàn)場作業(yè);作業(yè)開工勾選調(diào)用作業(yè)指導(dǎo)書進行作業(yè)和作業(yè)進程返饋,從而實現(xiàn)離散型企業(yè)智能的作業(yè)控制。具體內(nèi)容如下。
—、構(gòu)建產(chǎn)品結(jié)構(gòu)樹
⑴注釋
I)本發(fā)明中,如果產(chǎn)品的A部件從屬于B部件,稱B部件和A部件之間就存在一級從屬關(guān)系,A部件為B部件的一級子部件,B部件為A部件的父部件;如果A部件屬于B 部件的一級子部件,那么B部件和A部件之間就存在二級從屬關(guān)系,A部件為B部件的二級子部件;本發(fā)明研究的產(chǎn)品對象的從屬關(guān)系的級數(shù)是不相同,不固定的,本發(fā)明中將這類具有不相同或不固定的從屬子部件的產(chǎn)品稱為具有不固定子部件級數(shù)的產(chǎn)品。
2)本發(fā)明中,如果A循環(huán)放在B循環(huán)里,稱B循環(huán)和A循環(huán)組成二層循環(huán),A循環(huán)為內(nèi)層循環(huán),B循環(huán)稱為外層循環(huán);如果A循環(huán)放在B循環(huán)里,B循環(huán)又放在C循環(huán),稱C循環(huán)、B循環(huán)、A循環(huán)組成三層循環(huán);對于不固定子部件級數(shù)的產(chǎn)品,設(shè)置與之對應(yīng)的循環(huán)的層數(shù)具有不固定性和不確定性,稱為不固定嵌套循環(huán)層數(shù)。
3)本發(fā)明中所說的產(chǎn)品結(jié)構(gòu)樹,指用如同計算機資源管理器的文件目錄一樣,以樹形視圖的方式來表達部件具有從屬關(guān)系的產(chǎn)品明細表,其中產(chǎn)品的每個零部件、器件在樹形視圖中顯示時稱為列表項,樹形視圖中表達每個零部件、器件的名稱的文字稱為列表項的顯示文本。
4)樹形視圖只能通過編輯才能增加和刪除數(shù)據(jù)項,一層、二層或三層等固定層樹形視圖的構(gòu)建方法已經(jīng)成熟,本發(fā)明研究的是對不固定子部件級數(shù)的產(chǎn)品構(gòu)建不固定層的樹形視圖的方法。
5)本發(fā)明中與具有從屬關(guān)系的產(chǎn)品的父部件、子部件相對應(yīng)的樹形視圖表達父節(jié)點和子節(jié)點的顯示文本稱為父項和子項。
6)產(chǎn)品明細表含產(chǎn)品代號、部件代號、部件名稱、單臺數(shù)、關(guān)重性、所屬產(chǎn)品、所屬部件、配套工序和備注九個字段。
(2 )產(chǎn)品明細表數(shù)據(jù)導(dǎo)入產(chǎn)品明細表反映了產(chǎn)品從屬關(guān)系,借助TrueTable軟件,將DWG格式文件生成文本文件,將文本文件導(dǎo)入軟件的產(chǎn)品明細表;
(3)利用導(dǎo)入的產(chǎn)品明細表通過對不固定子部件級數(shù)的產(chǎn)品采用不固定嵌套循環(huán)層數(shù)和數(shù)組的方法構(gòu)建產(chǎn)品結(jié)構(gòu)樹tv_pst,步驟如下。
I)將產(chǎn)品明細表按產(chǎn)品代號cpdh、部件代號ljdh、所屬產(chǎn)品zee、所屬部件zeb字段升序排序;
2)測試產(chǎn)品明細表的記錄數(shù),記作變量li_row ;
3)判斷產(chǎn)品明細表有沒有記錄,如果li_row=0,表示產(chǎn)品明細表沒有記錄,退出本步驟,如果li_row>0,表示產(chǎn)品明細表有記錄;讀取第一條記錄的產(chǎn)品代號cpdh,部件代號ljdh,所屬產(chǎn)品zee,所屬部件zeb,樹形視圖列表項子項顯示文本賦值;
4)設(shè)置變量內(nèi)層循環(huán)層數(shù) int i,數(shù)組 string zee[20], zeb[20], li_row[20];
5)將產(chǎn)品明細表按zee,zeb字段過濾,得到所有子部件;
6)賦值i=l,測試所有子部件的記錄數(shù),記作li_row[i];
7)判斷子部件有沒有記錄,如果li_row[i]=0,表示沒有子部件,那么添加樹形視圖列表項,此列表項前沒有子項不加“ + ”號;恢復(fù)父項過濾條件,光標指向其下一條記錄, 讀取下一條記錄部件的產(chǎn)品代號cpdh,部件代號ljdh,所屬產(chǎn)品zee,所屬部件zeb,樹形視圖列表項顯示文本賦值;重復(fù)步驟5)、6)、7);
如果li_row[i]>0,表示第一條記錄部件有子部件,那么添加樹形視圖列表項;此列表項前有子項加“ + ”號;讀取子部件的第一條記錄的產(chǎn)品代號cpdh,部件代號ljdh,所屬產(chǎn)品ZCC [i],所屬部件zeb [i],樹形視圖列表項子項顯示文本賦值;
8)將產(chǎn)品明細表按zcc[i],zcb[i]字段過濾,得到所有子部件;
9)測試所有子部件的記錄數(shù),記作li_row[i+l];
10)判斷所有子部件有沒有記錄,如果li_row[i+l]=0,表示其沒有子部件,那么添加樹形視圖列表項;此列表項前沒有子項不加“ + ”號;恢復(fù)父項過濾條件,光標指向其下一條記錄,讀取下一條記錄的產(chǎn)品代號cpdh,部件代號ljdh,所屬產(chǎn)品zee [i],所屬部件13zcb [i];樹形視圖列表項顯示文本賦值,重復(fù)步驟8)、9)、10);
如果li_row[i+l]>0,表示有子部件,那么添加樹形視圖列表項;此列表項前有子項加“ + ”號;賦值i=i+l ;讀取其子部件的第一條記錄的產(chǎn)品代號cpdh,部件代號ljdh,所屬產(chǎn)品ZCC [i],所屬部件zcb [i],樹形視圖列表項子項顯示文本賦值;
11)重復(fù)步驟 8)、9)、10);
12)當光標指向i級子部件的結(jié)尾時,回到父項,設(shè)置i=i _ I ;判斷光標回到是父項的從第I條到第li_row[i]條記錄之間的一條記錄還是父項的結(jié)尾記錄;如果是回到父項從第I條到第li_row[i]條記錄之間的一條記錄時,則恢復(fù)父項的過濾條件,進行下一條記錄的測試和判斷;如果是回到父項的結(jié)尾記錄,則進入上一層循環(huán),再次設(shè)置i=1-1 ;
13)直到i=l,用這種方法就構(gòu)建了產(chǎn)品目錄構(gòu)。
二、對不固定子部件級數(shù)的產(chǎn)品采用不固定嵌套循環(huán)層數(shù)和數(shù)組的方法尋找到產(chǎn)品所有的裝配部件,通過產(chǎn)品所有的裝配部件的作業(yè)時長計算產(chǎn)品的生產(chǎn)能力。
(I)注釋
I)本發(fā)明中裝配的部件有兩層含義一種是指將部件的一級子部件、零件、器件通過特定的工序裝成父部件,本發(fā)明中稱為裝配部件;裝成裝配部件的每一道工序所需的時間都可以通過時間測量和經(jīng)驗積累確定,通過數(shù)據(jù)采集方式得到;裝配部件裝成的每一道工序所需的時間可以通過作業(yè)勾選得到的數(shù)據(jù)進行更新;另一種是指部件的全部子部件的所有級子部件逐級裝配的全部過程,本發(fā)明中稱為總裝配部件。
2)生產(chǎn)能力計算表包含序號、產(chǎn)品代號、鉗裝、裝擦、電裝、電調(diào)、總校、聯(lián)調(diào)、裝箱、 裝外、產(chǎn)品工時i^一個字段;
3)工序單元工位表包含工序名稱和工位數(shù)兩個字段;
4)生產(chǎn)計劃表包含產(chǎn)品代號、部件代號、部件名稱、批次號、數(shù)量、配套日期、完成日期、完成情況、優(yōu)先級和備注字段;生產(chǎn)計劃表可以由文本文件導(dǎo)入;
5)裝配流程表包含產(chǎn)品代號、部件代號、部件名稱、工序號、工序名稱、作業(yè)時長、 非作業(yè)時長和備注字段。作業(yè)時間(記作tj)是對工件和工位都累計的時間,非作業(yè)時長 (記作te)是只對工件累計,對工位不累計的時間;裝配流程表可以由文本文件導(dǎo)入;
6)離散型企業(yè)所有產(chǎn)品的裝配工序進行成組分類,定義每組的工序名稱,根據(jù)產(chǎn)品裝配工藝相似性的特點,將裝配工序定義為鉗裝、裝擦、電裝、電調(diào)、總校、聯(lián)調(diào)、裝箱、裝外八類;
(2)計算生產(chǎn)能力初定各工序單元工位數(shù)對不固定子部件級數(shù)的產(chǎn)品采用不固定嵌套循環(huán)層數(shù)和數(shù)組的方法尋找到產(chǎn)品所有的裝配部件,根據(jù)產(chǎn)品所有的裝配部件的作業(yè)時長計算產(chǎn)品的生產(chǎn)能力;確定各工序單元工位數(shù)量的步驟如下
I)選擇需要計算生產(chǎn)能力的截止時間,過濾這段時間內(nèi)生產(chǎn)計劃表的產(chǎn)品計劃, 測試過濾后生產(chǎn)計劃表有沒有記錄,如果沒有記錄,計算結(jié)束;如果有記錄,記錄數(shù)記作 Ii_row,進行生產(chǎn)能力計算,生成生產(chǎn)能力計算表;
2)生產(chǎn)計劃表按產(chǎn)品代號、部件代號、批次號字段升序排序;
3)依次讀入已過濾的生產(chǎn)計劃表的不同的產(chǎn)品代號,作為生產(chǎn)能力計算表的各記錄項,記錄讀完后,增加計劃工時、達額工時、能力工時、工位數(shù)四個記錄匯總項;
4)設(shè)置表示循環(huán)層數(shù)變量 int i,數(shù)組 string zee[20], zcb[20], long lii_row[20];讀取生產(chǎn)計劃表第一條記錄的產(chǎn)品代號、部件代號、計劃數(shù)量Ijsll ;
5)查找對應(yīng)于裝配流程表各工序的作業(yè)時長,如果讀不到數(shù)據(jù)或讀的數(shù)據(jù)為空, 那么作業(yè)時長值為0,將計劃數(shù)量Ijsll與對應(yīng)部件對應(yīng)工序的作業(yè)時長相乘的數(shù)據(jù)與生產(chǎn)能力計算表對應(yīng)生產(chǎn)計劃表中產(chǎn)品代號的原數(shù)據(jù)相加,將結(jié)果設(shè)置給生產(chǎn)能力計算表中對應(yīng)生產(chǎn)計劃表中產(chǎn)品代號的記錄的相應(yīng)字段;如果生產(chǎn)能力計算表中對應(yīng)生產(chǎn)計劃表中產(chǎn)品代號的原數(shù)據(jù)為空,則將計劃數(shù)量Ijsll與對應(yīng)部件對應(yīng)工序的作業(yè)時長相乘的數(shù)據(jù)設(shè)置給生產(chǎn)能力計算表中對應(yīng)生產(chǎn)計劃表中產(chǎn)品代號的記錄的相應(yīng)字段;
6)將產(chǎn)品明細表按產(chǎn)品代號、部件代號字段過濾,得到所有子部件;
7)賦值i=l,測試子部件的記錄數(shù),記作lii_row[i];
8)判斷有沒有子部件,如果lii_row[i]=0,表示沒有子部件,那么生產(chǎn)計劃表中的光標指向下一條記錄,讀取下一條記錄的產(chǎn)品代號、部件代號、計劃數(shù)量I jsll,重復(fù)步驟 5)、6)、7)、8);
如果lii_row[i]>0,表示有子部件,讀取其子部件的第一條記錄的產(chǎn)品代號 cpdh、部件代號ljdh、部件名稱ljmc、所屬產(chǎn)品zee [i]、所屬部件zcb[i]、所屬數(shù)量 (Ijsl), ljsll=ljsll*ljsl ;
9)以產(chǎn)品代號、部件代號為條件查找裝配流程表對應(yīng)部件各工序單元的作業(yè)時長,如果讀不到數(shù)據(jù)或讀的數(shù)據(jù)為空,那么作業(yè)時長值為0,將計劃數(shù)量Ijsll與對應(yīng)部件對應(yīng)工序單元的作業(yè)時長相乘的數(shù)據(jù)與生產(chǎn)能力計算表中對應(yīng)生產(chǎn)計劃表中產(chǎn)品代號的原數(shù)據(jù)相加,將結(jié)果設(shè)置給生產(chǎn)能力計算表中對應(yīng)生產(chǎn)計劃表中產(chǎn)品代號的記錄的相應(yīng)字段;如果生產(chǎn)能力計算表中對應(yīng)生產(chǎn)計劃表中產(chǎn)品代號的原數(shù)據(jù)為空,則將計劃數(shù)量 Ijsll與對應(yīng)部件對應(yīng)工序單元的作業(yè)時長相乘的數(shù)據(jù)設(shè)置給生產(chǎn)能力計算表中對應(yīng)生產(chǎn)計劃表中產(chǎn)品代號的記錄的相應(yīng)字段;
10)將產(chǎn)品明細表按zcc[i],zcb[i]字段過濾,得到所有子部件;
11)測試子部件的記錄數(shù),記作lii_row[i+l];
12)判斷有沒有子部件,如果lii_row[i+l]=0,表示沒有子部件,那么恢復(fù)父項過濾條件;光標指向下一條記錄,讀取下一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱 ljmc、所屬產(chǎn)品zcc[i]、所屬部件zcb[i]、所屬數(shù)量(Ijsl) , ljsll=ljsll*ljsl ;重復(fù)步驟 9)、10)、11)、12);
如果lii_row[i+l]>0,表示有子部件;賦值i=i+l ;讀取子部件的第一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱ljmc、所屬產(chǎn)品zcc[i]、所屬部件zcb[i]、所屬數(shù)量 (Ijsl),ljsll=ljsll*ljsl ;
13)重復(fù)步驟 9)、10)、11)、12);
14)當光標指向i級子部件級的結(jié)尾時,回到父項,設(shè)置i=i _ I ;判斷光標是回到父項的從第I條到第li_row[i]條記錄之間的一條記錄還是父項的結(jié)尾記錄;如果是回到父項的從第I條到第li_row[i]條記錄之間的一條記錄,則恢復(fù)父項的過濾條件,進行下一條記錄的測試和判斷;如果是回到父項的結(jié)尾記錄,則進入上一層循環(huán),再次設(shè)置i=i -1,直到i=l ;
15)將生產(chǎn)能力計算表中計算得到的各條產(chǎn)品記錄中的各個工序橫向匯總求和, 設(shè)置給該記錄的產(chǎn)品工時字段;
16)將生產(chǎn)能力計算表中計算得到的各條產(chǎn)品記錄中的各個工序及產(chǎn)品工時進行縱向匯總求和,得到的數(shù)據(jù)設(shè)置給計劃工時記錄相對應(yīng)的各字段;
17)將生產(chǎn)能力計算表中計劃工時各工序的數(shù)值除以作業(yè)天數(shù),再除以每天作業(yè)的分鐘數(shù),就到得生產(chǎn)能力計算表中工位數(shù)安排的近似值;
18)將生產(chǎn)能力計算表中各工序的計劃工時和產(chǎn)品工時與達額率相乘,得到的數(shù)據(jù)設(shè)置給達額工時記錄相對應(yīng)的各字段;
19)將工作時長與各工序單元的工位數(shù)相乘得到能力工時,得到的數(shù)據(jù)設(shè)置給達額工時記錄相對應(yīng)的各字段。
(3)根據(jù)生產(chǎn)能力計算表中工位數(shù)安排的近似值填寫工序單元工位表中工位數(shù)字段。
三、自動尋找具有不固定級數(shù)從屬關(guān)系的產(chǎn)品的部件裝配最佳路徑
考慮產(chǎn)品從屬關(guān)系、產(chǎn)品裝配流程、生產(chǎn)計劃時間、產(chǎn)品配套時間、缺件補齊時間、 異常推遲時間、實際完成時間、產(chǎn)品優(yōu)先級、正常上班時間各工序單元工位數(shù)和加班時間各工序單元工位數(shù)十種因素的表,尋找控制具有從屬關(guān)系產(chǎn)品的每一個部件在每一個工位上裝配的最佳時間點,自動尋找具有不固定級數(shù)從屬關(guān)系的產(chǎn)品的部件裝配最佳路徑。
(I)注釋
I)本發(fā)明中在表示最佳路徑的部件進度表前,為了減少生成過程中的難度,先生成工序時間表。
2)缺件補齊時間表包含序號、產(chǎn)品代號、部件代號、部件名稱、批次號、數(shù)量、補齊日期和備注八個字段。缺件補齊時間表由文本文件導(dǎo)入;
3)加班表包含工序名稱、加班種類、工位數(shù)、加班日期和備注五個字段;加班表由文本文件導(dǎo)入;
4)工序時間表包含次序號、順序號、工序名稱、起始時間、有效性六個字段
5)部件進度表包含批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、 工序號、工序名稱、次序號、順序號、列號、序號、優(yōu)先級、開始時間、結(jié)束時間、作業(yè)時長、非作業(yè)時長、有效性、轉(zhuǎn)向工序號、轉(zhuǎn)向工序名、轉(zhuǎn)向順序號字段;
(2)由加班表和工序單元工位表運用顯示區(qū)間天數(shù)的確定,周末的判斷,循環(huán)中日期和時間的表達三種方法生成工序時間表,步驟如下
I)清除工序時間表原來的數(shù)據(jù);
2)用戶輸入截止日期em_2,今天的第二天與截止日期之間的日期稱為顯示區(qū)間, 記作變量XX ;
3)如果截止日期的年份等于今天today O的年份,顯示區(qū)間的天數(shù)xx為截止日期的號數(shù),減去今天today O的號數(shù),加上從今天today O的月份到截止日期月份的前一個月期間每個月最后一天的號數(shù)的累加和;
4)如果截止日期的年份等于今天today O的年份加I,顯示區(qū)間的天數(shù)xx為截止日期的號數(shù),減去今天today O的號數(shù),加上從今天today O的月份到今天today O當年十二月期間每個月最后一天的號數(shù),加上截止日期當年一月到截止日期月份前一個月期間每個月最后一天的號數(shù)的累加和;
5)如果截止日期的年份大于今天today O的年份加1,顯示區(qū)間的天數(shù)xx為截止16日期的號數(shù),減去今天todayO的號數(shù),加上從今天today O的月份到今天todayO當年十二月期間每個月最后一天的號數(shù),加上截止日期當年一月到截止日期月份前一個月期間每個月最后一天的號數(shù),加上從今天today O的次年一月到截止日期前一年十二月期間每個月最后一天的號數(shù)的累加和;
6)取每個月最后一天的方法為月份設(shè)為變量li_month,如果li_month=12,那么最后一天的號數(shù)為31 ;如果li_month〈12,那么下個月月份為本月加I,即li_month+l,每個月的最后一天就是下個月I號的前一天;
7)以顯示區(qū)間的天數(shù)為第一層循環(huán)的次數(shù),以工序單元工位表的工序名稱字段為第二層循環(huán)的次數(shù),以工位數(shù)字段為第三層循環(huán)次數(shù)進入循環(huán),依次讀數(shù)、賦值、設(shè)置直至完成三層循環(huán),工序時間表完成設(shè)置;
8)在步驟7)的循環(huán)中,依次讀數(shù)、賦值、設(shè)置直至完成三層循環(huán)的方法如下
讀取工序單元工位表中 每條記錄的工序名稱,設(shè)置給工序時間表的工序名稱字段;
讀取工序單元工位表中每條記錄的工位數(shù),設(shè)置給工序時間表的順序號字段;
工序時間表的次序號用兩位數(shù)n-m表示,η表示今天today O后第幾天數(shù),η從I 到xx ;m表示時間段,用I、2、3表示;I表示上午班8:00-11:30,1表示下午班12 :30-16:00, 3表示晚班17:00-20:30 ;每班次上班時間分別為上午班時間08:00 ;下午班時間12:30 ; 晚班時間17:00 ;
工序時間表的起始時間為日期時間型數(shù)據(jù),含日期和時間;
取今天todayO后的第η天日期,判斷第η天是不是星期天或星期六;如果是,那么工序單元工位表中的工位數(shù)不參與循環(huán);
工序時間表的有效性均設(shè)為O ;
讀取加班表中的記錄;將工序時間表按順序號字段降序排列;查找工序時間表中對應(yīng)同時段并且同工序名稱的記錄的順序號;如果查找到,則插入新的相應(yīng)記錄,記錄的順序號從查找到的順序號以后排;如果查找不到,則插入新的相應(yīng)記錄,記錄的順序號從I開始排,直到循環(huán)結(jié)束;
9)工序時間表生成后,按工序名稱、起始時間、次序號字段升序,順序號字段降序排序。
(3)保留部件進度表表示已開工的、異常的、完工的記錄,清除其他記錄,并綁定部件進度表的保留記錄與工序時間表對應(yīng)的順序號。
保留部件進度表有效性字段為表示已開工的值3、表示異常的值4、表示完工的值 5的記錄,清除其他記錄。
部件進度表有效性為3、4或5且開始時間不小于今天today O的第二天的記錄優(yōu)先作綁定處理,綁定工序時間表對應(yīng)的順序號,步驟如下
I)有效性O(shè)表示項目確定;有效性I表示開始時間確定;有效性2表示結(jié)束時間確定;有效性3表示已作開工“作業(yè)勾選” ;4表示已填報作業(yè)異常;有效性5表示已作完成 “作業(yè)勾選”;
2)保留有效性為3,或有效性為4或有效性為5的記錄,清除部件進度表的其它數(shù)據(jù);
3)整理保留的有效性為3、或4、或5的記錄,將部件進度表中按批次號、所屬產(chǎn)品、 所屬部件、產(chǎn)品代號、部件代號、工序號、列號字段升序排序,設(shè)置批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、工序號、列號相同的記錄序號從I開始重新設(shè)置;將部件進度表中批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、工序號相同,列號不相同的記錄列號從I 開始重新設(shè)置。
(4)對多種具有不固定子部件級數(shù)和多道裝配工序的產(chǎn)品采用不固定嵌套循環(huán)層數(shù)和數(shù)組的方法,根據(jù)產(chǎn)品從屬關(guān)系、產(chǎn)品裝配流程、生產(chǎn)計劃、正常上班時間各單元工位數(shù)和加班時間各單元工位數(shù)五種因素,生成部件進度表所有記錄項,生成所有記錄項時賦值批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、工序號、工序名稱、列號、序號、優(yōu)先級、作業(yè)時長、非作業(yè)時長、有效性字段的內(nèi)容如下
I)生產(chǎn)計劃表按批次號、產(chǎn)品代號、部件代號、開始時間字段升序排序;
2)生產(chǎn)計劃表按完成情況不等于‘完成’條件進行過濾;
3)測試生產(chǎn)計劃表記錄數(shù),記作li_row,如果li_row=0,退出本步驟;如果li_ row>0,表示生產(chǎn)計劃表有記錄;
4)讀取生產(chǎn)計劃表第一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱ljmc、 批次號cpph、數(shù)量ljsll、優(yōu)先級yxji字段的數(shù)值;
5)以產(chǎn)品代號為cpdh、部件代號為Ijdh過濾條件對裝配流程表過濾,測試部件對應(yīng)于裝配流程表的記錄數(shù),記作g_rownumber ;如果g_rownumber=0,表示裝配流程表沒有記錄,轉(zhuǎn)到下一節(jié)的內(nèi)容;如果g_rownumber>0,表示裝配流程表有記錄,以g_rownumber 為二層循環(huán)次數(shù),以Ijsll為三層循環(huán)次數(shù);讀取裝配流程表第一條記錄的工序號gxh和工序名稱gxmc,在部件進度表中查找有沒有批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、工序號、列號都相同的記錄,如果有,記作xx ;那么插入Ijsll條記錄,記錄的列號從 xx到(xx+ljsll),記錄的序號和有效性的值為O,記錄的批次號cpph、所屬產(chǎn)品zccp、所屬部件zcbj、產(chǎn)品代號cpdh、部件代號Ijdh、部件名稱Ljmc、工序號gxh、工序名稱gxmc、列號、序號、優(yōu)先級yxji、有效性字段賦值;如果沒有,插入Ijsll條記錄,記錄的列號從I到 I jsll、記錄的序號和有效性的值為O,記錄的批次號cpph、所屬產(chǎn)品zccp、所屬部件zcbj、 產(chǎn)品代號cpdh、部件代號Ijdh、部件名稱Ljmc、工序號gxh、工序名稱gxmc、列號、序號、優(yōu)先級yxji、有效性字段賦值;然后光標指向裝配流程表下一條記錄……直到二層循環(huán)結(jié)束, 這樣就將對應(yīng)的所有工序的信息設(shè)置給部件進度表中的批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、工序號、工序名稱、列號、序號、優(yōu)先級、有效性相應(yīng)字段;
6)將產(chǎn)品明細表按產(chǎn)品代號cpdh,部件代號Ijdh字段過濾,得到產(chǎn)品明細表中的所有子部件;
7)設(shè)置變量循環(huán)層數(shù) i,數(shù)組 string zee[20], zcb[20] , long lii_row[20],賦值 i=l ;
8)測試其記錄數(shù),記作lii_row[i],判斷有沒有子部件如果lii_row[i]=0,表示沒有子部件,那么生產(chǎn)計劃表中的光標指向下一條記錄,讀取下一條記錄的產(chǎn)品代號cpdh、 部件代號ljdh、部件名稱ljmc、批次號cpph、數(shù)量I jsll、優(yōu)先級yxji、完成日期wcrq ;重復(fù)步驟 5)、6)、7)、8);
如果lii_row[i]>0,表示有子部件,讀取子部件的第一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱ljmc、所屬產(chǎn)品zee [i]、所屬部件zcb[i]、所屬數(shù)量Ijsl,賦值 Ijsll=Ijsl木Ijsll ;
9)以產(chǎn)品代號cpdh、部件代號Ijdh為過濾條件對裝配流程表過濾,測試裝配流程表記錄數(shù),記作g_rownumber ;如果g_rownumber=0,表示裝配流程表沒有記錄,轉(zhuǎn)到下一節(jié);如果g_rownumber>0,表示裝配流程表有記錄,表示裝配流程表有記錄,以g_rownumber 為二層循環(huán)次數(shù),以Ijsll為三層循環(huán)次數(shù);讀取裝配流程表第一條記錄的工序號gxh和工序名稱gxmc,在部件進度表中查找有沒有批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、工序號、列號相同的記錄;如果有,記作xx,插入I jsll條記錄,記錄的列號從xx到 xx+ljsll,記錄的序號和有效性的值為O,記錄的批次號cpph、所屬產(chǎn)品、所屬部件、產(chǎn)品代號cpdh、部件代號ljdh、部件名稱ljmc、工序號gxh、工序名稱gxmc、列號、序號、優(yōu)先級 yxji、有效性字段賦值;如果沒有,插入Ijsll條記錄,記錄的列號從I到ljsll,記錄的序號和有效性的值為0,記錄的批次號cpph、所屬產(chǎn)品、所屬部件、產(chǎn)品代號cpdh、部件代號 ljdh、部件名稱ljmc、工序號gxh、工序名稱g xmc、列號、序號、優(yōu)先級yxji、有效性字段賦值;然后光標指向裝配流程表下一條記錄……直到二層循環(huán)結(jié)束;這樣就將對應(yīng)的所有工序的信息設(shè)置給部件進度表中的批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、工序號、工序名稱、列號、優(yōu)先級、有效性相應(yīng)字段;
10)將產(chǎn)品明細表按ZCC[i],ZCb[i]字段過濾,得到所有子部件;
11)測試子部件的記錄數(shù),記作lii_row[i+l];
12)判斷有沒有子部件,如果lii_row[i+l]=0,表示沒有子部件,那么恢復(fù)父項過濾條件;光標指向下一條記錄;讀取下一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱 ljmc、所屬產(chǎn)品zcc[i]、所屬部件zcb[i]、所屬數(shù)量Ijsl,賦值Ijsll=Ijsl*ljsll ;重復(fù)步驟9)、10)、11)、12);如果lii_row[i+l]>0,表示有子部件;賦值i=i+l ;讀取子部件每一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱ljmc,所屬產(chǎn)品zee [i],所屬部件zcb [i], 所屬數(shù)量 Ijsl,賦值 ljsll=ljsl*ljsll ;
13)重復(fù)步驟 9)、10)、11)、12);
14)當光標指向i級的結(jié)尾時,回到父項,設(shè)置i=1-1 ;判斷光標是回到父項的從第I條到第li_row[i]條記錄之間的一條記錄還是父項的結(jié)尾記錄;如果是回到父項的從第I條到第li_row[i]條記錄之間的一條記錄,則恢復(fù)父項的過濾條件,進行下一條記錄的測試和判斷;如果是回到父項的結(jié)尾記錄,則進入上一層循環(huán),再次設(shè)置i=1- 1,直至i=l ;
15)部件進度表按批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、 工序號、列號字段升序排序,刪除批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、工序號、列號都相同的記錄中有效性為O的記錄。
(5)運用一個子部件對應(yīng)多個父部件且一個父部件對應(yīng)多個子部件的多對多關(guān)系的對應(yīng)方法,確定部件進度表保留記錄的轉(zhuǎn)向單元的工序號、轉(zhuǎn)向工序名、轉(zhuǎn)向順序號。
優(yōu)先確定有效性為3、4或5的記錄的下道工序,由部件進度表有效性為3、4或5 的記錄的非作業(yè)時長zysc與結(jié)束時間wcrq,用連續(xù)時間相加的方法確定部件進度表下道工序或父部件第一道裝配工序的開始時間的方法如下
I)測試部件進度表有效性為3、4或5的記錄數(shù),如果記錄數(shù)為0,退出本步驟;如果記錄數(shù)不為0,作以下處理;
2)將部件進度表中按批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、工序號、 列號、序號字段升序排序,讀取部件進度表中批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、工序號、列號字段;如果讀取的部件進度表中批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、 部件代號、工序號、列號與上一條記錄相同,則跳過;如果讀取的部件進度表中批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、工序號、列號不相同,則將上一條記錄作如下處理;
3)賦值wcrq的分鐘記為mw ;小時數(shù)記為hw,非作業(yè)時長記為zysc ;
4)設(shè)置記錄的本班次上班時間,如果m=l,那么hsl=8, msl=0 ;如果m=2,那么 hsl=12, msl=30 ;如果 m=3,那么 hsl=17, msl=0,設(shè)置 nl=n ;
5)如果設(shè)置部件進度表下道工序或父部件第一道裝配工序的開始時間為ksrq, ksrq與當班次上班時間的時長為tysc,那么tysc= (hw_hsl)*60+(mw_msl)+zysc ;
6)如果tysc〈=210且(mw + zysc)〈60,那么ksrq的分鐘數(shù)為mw+zysc,小時數(shù)為 hw ;
7)如果 tysc〈=210 且(mw+ zysc) >=60,那么 ksrq 的小時數(shù)為 hw +int ((mw + zysc )/60),分鐘數(shù)為 mw=mod ((mw + zysc), 60);
8)m=m+l,讀取記錄的下班次數(shù)據(jù);如果m=4,那么m=l, n=n+l ;讀取工序時間表工序名稱為gxmc、有效性為O、次序號為n-m的記錄;如果讀到記錄,設(shè)工序時間表的起始時間為的小時數(shù)和分鐘數(shù)分別為hs2和ms2 ;記錄下班次的上班時間的小時數(shù)和分鐘數(shù)分別為 hs 和 ms ;如果 m=l,賦值 hs=8, ms=0 ;如果 m=2,賦值 hs=12, ms=30 ;如果 m=3,賦值 hs=17, ms=0 ;如果讀不到工序時間表的記錄,那么回到本步驟8)開始處循環(huán),直到讀到記錄,xx=( n_nl) *1440+ (hs2_hsl) *60+ (ms2_msl),yy= (n_nl) *1440+ (hs-hsl) *60+ (ms-msl) +210 ;
9)如果tysc>210且tysc〈=xx,那么ksrq的小時數(shù)為hs2,分鐘數(shù)為ms2 ;
如果tysc>xx 且 tysc〈=yy,那么非作業(yè)時長 zysc=zysc_((n_nl)*1440+ (hs2_hw )*60+(ms2_mw)) ;ksrq 的小時數(shù)為 hs2 +int ((ms2 + zysc )/60),分鐘數(shù)為 mod((ms2 + zysc),60);
如果tysc>yy,那么設(shè)置 hsl=hs, msl=ms, hw=hs2, mw=ms2,回到本步驟 9)開始處循環(huán),直到tysc>xx不成立;
10)判斷部件進度表記錄工序有沒有下道工序,如果部件進度表本條記錄的工序有下道工序,設(shè)置它的開始時間為ksrq,同時設(shè)置本條記錄的下道工序的有效性字段為1, 同時讀取本條記錄的下道工序的工序號、工序名稱,寫入本條記錄轉(zhuǎn)向工序號、轉(zhuǎn)向工序名字段,做為工件完工勾選后的流轉(zhuǎn)方向;
11)如果部件進度表本條記錄的工序沒有下道工序,則到產(chǎn)品明細表中查找產(chǎn)品代號、部件代號、所屬產(chǎn)品、所屬部件均對應(yīng)的記錄的單臺數(shù)記為I jsl,說明子部件與父部件的關(guān)系為Ijsl條子部件對應(yīng)I條父部件;讀取工序號為1,序號為O的同批次號的父部件的所有子部件,其記錄數(shù)記作xxl,再讀取工序號為1,序號為O的同批次號的父部件,其記錄數(shù)記作xx2,兩者相除的結(jié)果記作xx3,表明父部件被查找xx3次其有效性就可以改為 1,這樣就建立了對于多個父部件對應(yīng)多個子部件的多對多關(guān)系的對應(yīng)的唯一性;
12)如果該部件的工序號為I的父部件的記錄的開始時間不為空,那么記作 ksrql,取ksrq與ksrql的最大值為ksrq,那么該部件的父部件的工序號為I的記錄的開始時間設(shè)置為ksrq ;同時讀取其父部件的工序號和工序名稱,寫入該子部件記錄轉(zhuǎn)向工序號、轉(zhuǎn)向工序名字段,做為工件完工勾選后的流轉(zhuǎn)方向;
13)如果父部件的子部件對應(yīng)了 xx3次父部件,則將該父部件的有效性改為I ;
14)循環(huán)處理每條記錄,循環(huán)結(jié)束后按同樣的方法處理最后一條記錄;
15)將部件進度表不設(shè)置條件過濾,如果轉(zhuǎn)向工序號為1,說明轉(zhuǎn)向父部件,轉(zhuǎn)向工序號不為1,說明轉(zhuǎn)向下道工序;依此方法依次查找每條記錄轉(zhuǎn)向工序號、轉(zhuǎn)向工序名對應(yīng)的順序號,填入記錄的轉(zhuǎn)向順序號字段。
(6)根據(jù)產(chǎn)品配套時間、缺件補齊時間、實際完成時間、作業(yè)異常推遲時間、優(yōu)先級五種因素,運用條件符合時參與排序、把表示工件的部件進度表的開始時間與表示工位的工序時間表的起始時間作比較取最有利時間的方法、間斷時間相加的方法、連續(xù)時間相加的方法、多對多關(guān)系的對應(yīng)方法四種方法,生成部件進度表開始時間、結(jié)束時間、順序號、轉(zhuǎn)向工序號、轉(zhuǎn)向工序名、轉(zhuǎn)向順序的內(nèi)容如下
I)部件進度表按工序號為I且有效性為O條件過濾,確定部件進度表對應(yīng)記錄的有效性為I且初定部件進度表有效性為I的記錄的開始時間,方法如下
測試部件進度表記錄數(shù),記作g_rownumber,如果g_rownumber=0,表示部件進度表沒有可操作的記錄,程序結(jié)束;如果g_rownumber>0,表示部件進度表有可操作的記錄, 讀取部件進度表第一條記錄的產(chǎn)品代號記作變量cpdh、部件代號記作Ijdh ;
查找部件進度表中所屬產(chǎn)品等于cpdh,所屬部件等于ljdh,有效性為O的記錄,如果查到,說明有子部件,跳出本節(jié)內(nèi)容;如果查不到,表示沒有子部件,將部件進度表有效性設(shè)置為1,設(shè)置部件進度表中該記錄的開始時間的日期為今天today O后I天,時間為8點;
依次讀取部件進度表的下一條記錄的產(chǎn)品代號記作變量cpdh、部件代號記作ljdh,重復(fù)上述內(nèi)容;......經(jīng)過g_rownumber次循環(huán),取值、過濾、判斷,就確定了部件進度表中每條記錄的有效性是否為I,并初步確定有效性字段為I的記錄的開始時間;
2)初定缺件補齊時間表對應(yīng)部件進度表中的記錄的初始時間,方法如下
測試缺件補齊時間表的記錄數(shù)為g_rownumber,如果g_rownumber>0,表示缺件補齊時間表有記錄;以g_rownumber為循環(huán)次數(shù)作循環(huán),讀取缺件補齊時間表中的第一條記錄的補齊日期、產(chǎn)品代號、部件代號,在產(chǎn)品明細表中查找父部件,讀取父部件的所屬產(chǎn)品、 所屬部件、工序名稱字段數(shù)據(jù),將作為條件,查找部件進度表中的對應(yīng)記錄,讀取部件進度表對應(yīng)記錄的開始時間;如果缺件補齊時間表中的補齊日期的第二天與時間08 00合成, 生成的日期時間大于部件進度表對應(yīng)記錄的開始時間,那么將該缺件補齊時間表中的補齊日期的第二天與時間08 00合成生成的日期時間設(shè)置給該缺件所屬部件在部件進度表中對應(yīng)記錄的開始時間;
3)工序時間表按有效性為O的過濾條件進行過濾,部件進度表按有效性I的過濾條件進行過濾;測試部件進度表的記錄數(shù)記作g_rownumber,測試工序時間表的記錄數(shù)記作g_rownumberl ;如果都大于O,那么讀取部件進度表的第一條記錄;用DO·· LOOP WHILE condition循環(huán)語句做以下步驟4)、5)、6)、7)、8)的處理;
4)運用條件符合時參與排序、把表示工件的部件進度表的開始時間與表示工位的工序時間表的起始時間作比較取最有利時間的方法,確定有效性為I的部件進度表記錄的開始時間datetime ksrq和順序號的方法如下
部件進度表按開始時間、優(yōu)先級、工序名稱、批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、列號、序號字段升序排序;
工序時間表按次序號、起始時間、工序名稱、順序號字段升序排序;
確定有效性為I的部件進度表記錄的開始時間datetime ksrq和順序號的方法如下
讀取部件進度表第一條記錄的工序名稱賦值給變量gxmc、開始時間賦值給ksrq ;
計算ksrq為今天today O后的第幾天,值賦給η,根據(jù)ksrq的小時數(shù)變量hk判斷作業(yè)時間段,通過取最有利時間的方法來確定,即如果hk>=8且hk〈12,那么是上午班,m=l, hs=8, ms=0 ;如果 hk>=12 且 hk〈=16,那么是下午班,m=2, hs=12, ms=30 ;hk>=17 且 hk〈=20, 那么是晚班,m=3, hs=17, ms=0 ;
按n-m格式合成次序號,工序時間表按工序名稱為gxmc、有效性為O、次序號為 (n-m)過濾條件進行過濾,測試工序時間表的記錄數(shù)li_row ;如果記錄數(shù)li_row大于O,讀取工序時間表工序名稱為gxmc、有效性為O、次序號為n-m的第一條記錄的順序號賦值給變量11,起始時間給變量qsrq,取qsrq和ksrq最大值賦給ksrq,設(shè)置部件進度表本條記錄的開始時間 為ksrq,次序號為(n-m),順序號為yy ;如果測試工序時間表的記錄數(shù)li_row 不大于O,那么m=m+l ;如果m=4,那么m=l,n=n+l,回到本步驟4)開始處循環(huán),直到記錄數(shù)大于0,即找到空余時間段;
5)根據(jù)部件進度表開始時間和作業(yè)時長,用間斷時間相加的方法確定結(jié)束時間 datetime wcrq的方法如下
讀取部件進度表的作業(yè)時長為zysc ;
設(shè)部件進度表第一條記錄的結(jié)束時間wcrq的分鐘記作變量int mw, 小時記作變量int hw,其結(jié)束時間與上班時間的時長記作變量tysc,那么 tysc= (hk_hs) *60+(mk-ms)+zysc,設(shè)置mw = mk + zysc ;半天的工作時間 3· 5 小時為 210 分鐘;
如果tysc〈210且mw〈60,那么結(jié)束時間wcrq的分鐘數(shù)為mw = mk + zysc,小時數(shù)為hw=hk,設(shè)置其有效性為2,設(shè)置其完成時間為wcrq,設(shè)置工序時間表工序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的起始時間wcrq ;
如果tysc〈210且mw>=60,那么結(jié)束時間wcrq的小時數(shù)為hw= hk +int ((mk + zysc )/60),分鐘數(shù)為mw=mod ((mk + zysc),60),設(shè)置該記錄的有效性為2,設(shè)置該記錄的完成時間為wcrq,設(shè)置工序時間表工序名稱為gxmc、有效性為O、次序號為n_m,順序號為yy 的記錄的起始時間wcrq ;
如果tysc=210,那么結(jié)束時間 wcrq 的小時數(shù)為 hw= hk +int ((mk + zysc )/60), 分鐘數(shù)為mw=mod((mk + zysc),60),設(shè)置該記錄的有效性為2,設(shè)置該記錄的完成時間為 wcrq,設(shè)置工序時間表工序名稱為gxmc、有效性為O、次序號為n_m,順序號為yy的記錄的有效性為I ;
如果tysc>210,那么作以下處理
6)設(shè)置工序時間表工序名稱為gxmc、有效性為O、次序號為n-m的該記錄的有效性為1,同時需將部件進度表對應(yīng)記錄拆分成兩部分記錄;
部件進度表對應(yīng)記錄拆分成的第一部分記錄的開始時間為原開始時間不變,hsl、 ms I分別表示下班時間的小時數(shù)和分鐘數(shù);如果m=l,那么hsl=ll, msl=30 ;如果m=2,那么hsl=16,msl=00 ;如果m=3,那么hsl=20,msl=30 ;部件進度表對應(yīng)記錄拆分成的第一部分記錄的結(jié)束時間的日期設(shè)置為今天todayO后η天,時間的小時為hsl,時間的分鐘為msl ;部件進度表對應(yīng)記錄拆分成的第一部分記錄的有效性為2 ;部件進度表該記錄第一部分記錄的作業(yè)時長為(hsl-hk)*60+(msl _ mk),部件進度表該記錄第一部分記錄的時長為0.00, 設(shè)置工序時間表工序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的有效性為 I, zysc=zysc_(hsl-hk)氺60-(ms1-mk);
m=m+l,如果m=4,那么m=l, n=n+l,工序時間表按工序名稱為gxmc、有效性為O、次序號為(n-m)過濾條件進行過濾;測試工序時間表的記錄數(shù)li_row,如果記錄數(shù)li_row大于 0,插入新的記錄行做為部件進度表對應(yīng)記錄第二部分記錄,批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、工序號、工序名稱、優(yōu)先級、列號、非作業(yè)時長與原記錄保持不變,其有效性值為2,作業(yè)時長為zysc ;讀取工序時間表工序名稱為gxmc、有效性為 O、次序號為n-m的第一條記錄的順序號賦值給變量yy,起始時間給變量qsrq,將qsrq設(shè)置給部件進度表的開始時間,設(shè)置其次序號為(n-m),順序號為yy ;如果工序時間表記錄數(shù) l1.row不大于0,那么回到本步驟6)開始處循環(huán),直到記錄數(shù)大于0,即找到空余時間段;
確定第二部分結(jié)束時間datetime wcrq,設(shè)其結(jié)束時間wcrq的分鐘記作變量int mw,小時記作變量int hw,其結(jié)束時間與上班時間的時長記作變量tysc,設(shè)qsrq的分鐘數(shù)為 mk,小時數(shù)為 hk,那么七5^。=(111^-118)*60+(1111^-1118)+278(3,設(shè)置11 ¥ = mk + zysc ;半天的工作時間3. 5小時為210分鐘;
如果tysc〈210且mw〈60,那么其結(jié)束時間wcrq的分鐘數(shù)為mw = mk + zysc,小時數(shù)為hw=hk,設(shè)置其結(jié)束時間為wcrq,設(shè)置其有效性為2 ;設(shè)置其序號為1,如果第二部分再拆分,則第三部件序號為2,依次類推;設(shè)置工序時間表工序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的起始時間wcrq ;
如果tysc〈210且mw>=60,那么部件進度表記錄的結(jié)束時間wcrq的小時數(shù)為hw= hk +int ((mk + zysc )/60),分鐘數(shù)為 mw=mod((mk + zysc), 60);設(shè)置其結(jié)束時間為 wcrq,設(shè)置其有效性為2,設(shè)置其序號為1,如果第二部分再拆分,則第三部件序號為2,依次類推;設(shè)置工序時間表工序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的起始時間wcrq ;
如果tysc=210,那么其結(jié)束時間wcrq的分鐘數(shù)為hw= hk +int ((mk + zysc )/60),小時數(shù)為mw=mod((mk + zysc),60),設(shè)置該記錄的有效性為2,設(shè)置該記錄的完成時間為wcrq,設(shè)置其序號為1,如果第二部分再拆分,則第三部件序號為2,依次類推;設(shè)置工序時間表工序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的有效性為I ;
如果tysc>210,回到步驟6)即本步驟開始處循環(huán),直至tysc>=210不成立;這樣就設(shè)置部件進度表記錄的結(jié)束時間wcrq、有效性2 ;確定了新插入記錄的次序號、順序號、序號三個字段;設(shè)置工序時間表工序名稱為gxmc、有效性為O、次序號為n-m、順序號為yy的記錄的起始時間wcrq或有效性I ;
7)由部件進度表非作業(yè)時長zysc與結(jié)束時間wcrq,用連續(xù)時間相加的方法確定部件進度表下道工序或父部件第一道裝配工序的開始時間的方法如下
賦值wcrq的分鐘記為mw ;小時數(shù)記為hw,非作業(yè)時長記為zysc ;
設(shè)置記錄的本班次上班時間,如果m=l,那么hsl=8,msl=0 ;如果m=2,那么hsl=12,msl=30 ;如果 m=3,那么 hsl=17, msl=0,設(shè)置 nl=n ;
如果設(shè)置部件進度表下道工序或父部件第一道裝配工序的開始時間為ksrq,ksrq 與當班次上班時間的時長為tysc,那么tysc=(hw-hsl)*60+(mw-msl)+zysc,
如果tysc〈=210 且(mw + zysc)〈60,那么 ksrq 的分鐘數(shù)為 mw+zysc,小時數(shù)為 hw ;
如果tysc〈=210 且(mw+ zysc) >=60,那么 ksrq 的小時數(shù)為 hw +int ((mw + zysc )/60),分鐘數(shù)為 mw=mod ((mw + zysc), 60);
m=m+l,讀取記錄的下班次數(shù)據(jù);如果m=4,那么m=l, n=n+l,讀取工序時間表工序名稱為gxmc、有效性為O、次序號為n-m的記錄;如果讀到記錄,設(shè)工序時間表的起始時間為的小時數(shù)和分鐘數(shù)分別為hs2和ms2 ;記錄下班次的上班時間的小時數(shù)和分鐘數(shù)分別為hs 和 ms ;如果 m=l,賦值 hs=8,ms=0 ;如果 m=2,賦值 hs=12,ms=30 ;如果 m=3,賦值 hs=17,ms=0 ; 如果讀不到工序時間表的記錄,那么回到本節(jié)開始處循環(huán),至到讀到記錄,xx= (n-nl)*1440 + (hs2_hsl) *60+ (ms2_msl),yy= (n-nl) *1440+ (hs-hsl) *60+ (ms-msl) +210 ;
如果tysc>210且tysc〈=xx,那么ksrq的小時數(shù)為hs2,分鐘數(shù)為ms2 ;如果 tysc>xx 且 tysc<=yy,那么非作業(yè)時長 zysc=zysc- ((n-nl) *1440+ (hs2_hw) *60+ (ms2_m w)) ;ksrq 的小時數(shù)為 hs2 +int ((ms2 + zysc )/60),分鐘數(shù)為 mod((ms2 + zysc), 60); 如果tysc>yy,那么設(shè)置hsl=hs, msl=ms, hw=hs2, mw=ms2,回到本步驟7)開始處循環(huán),直到 tysc>xx不成立;
8)運用多對多關(guān)系的對應(yīng)等方法找出部件進度表下道工序或父部件第一道裝配工序,將開始時間和有效性賦值
判斷部件進度表記錄工序有沒有下道工序,如果部件進度表本條記錄的工序有下道工序,設(shè)置它的開始時間為ksrq,同時設(shè)置本條記錄的下道工序的有效性字段為1,同時讀取本條記錄的下道工序的工序號、工序名稱,寫入本條記錄轉(zhuǎn)向工序號、轉(zhuǎn)向工序名字段,做為工件完工勾選后的流轉(zhuǎn)方向;
如果部件進度表本條記錄的工序沒有下道工序,則到產(chǎn)品明細表中查找產(chǎn)品代號、部件代號、所屬產(chǎn)品、所屬部件均對應(yīng)的記錄的單臺數(shù)記為I jsl,說明子部件與父部件的關(guān)系為Ijsl條子部件對應(yīng)I條父部件;讀取工序號為1,序號為O的同批次號的父部件的所有子部件,其記錄數(shù)記作xxl,再讀取工序號為1,序號為O的同批次號的父部件,其記錄數(shù)記作xx2,兩者相除的結(jié)果記作xx3,表明父部件被查找xx3次其有效性就可以改為1, 這樣就建立了對于多個父部件對應(yīng)多個子部件的多對多關(guān)系的對應(yīng)的唯一性;
如果該部件的工序號為I的父部件的記錄的開始時間不為空,那么記作ksrql,取 ksrq與ksrql的最大值為ksrq,那么該部件的父部件的工序號為I的記錄的開始時間設(shè)置為ksrq,同時讀取其父部件的工序號和工序名稱,寫入該子部件記錄轉(zhuǎn)向工序號、轉(zhuǎn)向工序名字段,做為工件完工勾選后的流轉(zhuǎn)方向;
如果父部件的子部件對應(yīng)了 xx3次父部件,則將該父部件的有效性改為I ;
9)用DO…LOOP WHILE condition 循環(huán)語句,進行步驟4)、5)、6)、7)、8);按這種方法一直下去,當部件進 度表正在確定的所有部件均沒有父部件,且其對應(yīng)的所有裝配工序的開始時間和結(jié)束時間都確定后,即部件進度表的開始時間、結(jié)束時間、順序號都生成后, 或者工序時間表的所有記錄的有效性都為I后,循環(huán)結(jié)束;
10)將部件進度表不設(shè)置條件過濾,如果轉(zhuǎn)向工序號為1,說明轉(zhuǎn)向父部件,轉(zhuǎn)向工序號不為1,說明轉(zhuǎn)向下道工序,依此規(guī)則依次查找每條記錄轉(zhuǎn)向工序號、轉(zhuǎn)向工序名對應(yīng)的順序號,填入記錄的轉(zhuǎn)向順序號字段。
四、顯示最佳路徑以甘特圖方式顯示。
(I)注釋
I)顯示最佳路徑的甘特圖表包含天數(shù)、班次、順序號和S10、S20、S30、S40、S50、 S60、S70、S80、S90、S100、S110、S120、S130、S140、S150、S160、S170、S180、S190、S200、S210 共21個表示每十分鐘間隔的時間段的字段;
2)設(shè)置顯示最佳路徑的甘特圖表單元格字體的背景色為空值為rgb( 255,O, O),非空值為 rgb( O, 255,O);
3)選擇顯示最佳路徑的甘特圖表顯示的截止日期,考慮顯示的甘特圖表的清晰度要求,最佳路徑的甘特圖表顯示的時間間隔選擇十分鐘,上午班、下午班、晚班的作業(yè)時長均按210分鐘計算;
4)顯示最佳路徑的甘特圖表按工序單元的工序名稱分成八個;部件進度表分別按八個工序單元的工序名稱字段過濾,分別得到甘特圖表菜單鉗裝、裝擦、電裝、電調(diào)、總校、聯(lián)調(diào)、裝箱、裝外八個子菜單,表示八個工序單元的甘特圖表;
(2)以電裝工序為例,由部件進度表顯示最佳路徑的甘特圖表的步驟如下
I)部件進度表按次序號、順序號、開始時間、批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、列號、序號字段升序排序;
2)部件進度表按工序名稱字段過濾條件進行過濾;
3)測試部件進度表的記錄數(shù),如果等于0,表示部件進度表按上述條件過濾后沒有記錄,退出本步驟;
4)如果部件進度表的記錄數(shù)大于0,設(shè)置循環(huán)語句依次讀取從部件進度表的每一條記錄;
5)讀取部件進度表的第一條記錄的次序號,用函數(shù)找出在次序表中按從左到右的位置,記作I」[5];取次序號從左第I個到第(I」[5]-I)個字符串,轉(zhuǎn)換成Integer類型值,賦值給甘特圖表的天數(shù)字段,從第(I」[5] +1)個到最左邊字符串,轉(zhuǎn)換成Integer類型值,賦值給甘特圖表班次字段;設(shè)班次字段用變量m表示;則111的值為1、2或3 ;如果m=l, 那么 hsl=8, ms 1=0 ;如果 m=2,那么 hsl=12, msl=30 ;m=3,那么 hsl=17, ms 1=0 ;
讀取部件進度表第一條記錄的順序號賦值給甘特圖表的順序號字段;
讀取部件進度表的第一條記錄的開始時間賦給變量ksrq,結(jié)束時間賦值給變量 wcrq ;
讀取部件進度表的第一條記錄的產(chǎn)品代號賦值給變量cpdh,部件代號賦值給變量 Ijdh ;
判斷部件進度表記錄的時間在甘特圖表半天21個時間段的哪一段,過程是
如果不等式(hour(ksrq)-hsl) *60+(Minute (ksrq)-msl)〈10,同時(hour (wcrq) -hsl) *60+(Minute (wcrq)-msl) >0則查找甘特圖表本條記錄SlO字段是否有數(shù)據(jù),如果沒有,將變量string (cpdh+,-,+ljdh)賦值給SlO字段;
如果不等式(hour(ksrq)-hsl) *60+(Minute (ksrq)-msl)〈20,同時(hour (wcrq)-hsl) *60+(Minute (wcrq)-msl) >10則查找甘特圖表本條記錄S20字段是否有數(shù)據(jù),如果沒有,將變量string (cpdh+,-,+ljdh)賦值給S20字段;
如果不等式(hour(ksrq)-hsl) *60+(Minute (ksrq)-msl)〈30,同時(hour (wcrq)-hsl) *60+ (Minute (wcrq) -msl) >20則查找甘特圖表本條記錄S30字段是否有數(shù)據(jù),如果沒有,將變量string (cpdh+,-,+ljdh)賦值給S30字段;
……用同樣的方法一直到判斷部件進度表記錄的時間是否在甘特圖表半天第21 個時間段;如果不等式(hour (ksrq)-hsl) *60+(Minute (ksrq)-msl)〈210,同時(hour(wcrq )-hsl) *60+ (Minute (wcrq) -msl) >200則查找甘特圖表本條記錄S210字段是否有數(shù)據(jù),如果沒有,將變量string (cpdh+,-,+ljdh)賦值給S210字段;
6)讀取部件進度表的第二條記錄的次序號賦值給字符型變量zcc,用函數(shù)找出在ZCC中按從左到右的位置,記作I」;取ZCC從左第I個到第(I」[5]-1)個字符串, 轉(zhuǎn)換成Integer類型值賦值給數(shù)值型變量η ;從第(l_i [5] +1)個到最左邊字符串,轉(zhuǎn)換成 Integer類型值賦值給數(shù)值型變量m,讀取部件進度表第二條記錄的順序號設(shè)置給數(shù)值型變量I」;查找甘特圖表中天數(shù)等于n,班次等于m,順序號等于I」的記錄,如果查找到,表明甘特圖表有符合條件的記錄,記作li_row ;如果查不到,表明甘特圖表沒有符合條件的記錄,在甘特圖表插入新的記錄,記錄號為li_row,插入的甘特圖表的新記錄的天數(shù)字段賦值為n,班次字段賦值為m,順序號字段賦值為I」;
m 的值為 1、2 或 3 ;如果 m=l,那么 hsl=8, ms 1=0 ;如果 m=2,那么 hsl=12, msl=30 ; m=3,那么 hsl=17, ms 1=0 ;
讀取部件進度表的第二條記錄的開始時間賦給變量ksrq,結(jié)束時間賦值給變量 wcrq ;
讀取部件進度表的第二條記錄的產(chǎn)品代號賦值給變量cpdh,部件代號賦值給變量 Ijdh ;
判斷部件進度表記錄的時間在甘特圖表半天21個時間段的哪一段,過程是
如果不等式(hour(ksrq)-hsl) *60+(Minute (ksrq)-msl)〈10,同時(hour(wcrq) -hsl) *60+(Minute (wcrq)-msl) >0則查找甘特圖表本條記錄SlO字段是否有數(shù)據(jù),如果沒有,將變量string (cpdh+,-,+ljdh)賦值給SlO字段;
如果不等式(hour(ksrq)-hsl) *60+(Minute (ksrq)-msl)〈20,同時(hour (wcrq)-hsl) *60+(Minute (wcrq)-msl) >10則查找甘特圖表本條記錄S20字段是否有數(shù)據(jù),如果沒有,將變量string (cpdh+,-,+ljdh)賦值給S20字段;
如果不等式(hour(ksrq)-hsl) *60+(Minute (ksrq)-msl)〈30,同時(hour (wcrq)-hsl) *60+ (Minute (wcrq) -msl) >20則查找甘特圖表本條記錄S30字段是否有數(shù)據(jù),如果沒有,將變量string (cpdh+,-,+ljdh)賦值給S30字段;
……用同樣的方法一直到判斷部件進度表記錄的時間是否在甘特圖表半天第21 個時間段;如果不等式(hour (ksrq)-hsl) *60+(Minute (ksrq)-msl)〈210,同時(hour(wcrq )-hsl) *60+ (Minute (wcrq) -msl) >200則查找甘特圖表本條記錄S210字段是否有數(shù)據(jù),如果沒有,將變量string (cpdh+,-,+ljdh)賦值給S210字段;
7)依次讀取部件進度表的第三條到最后一條記錄,用步驟6)的方法完成甘特圖表數(shù)據(jù)的賦值;
五、作業(yè)進程返饋過程如下。
(I)注釋:
I)作業(yè)情況表包括序號、產(chǎn)品代號、部件代號、部件名稱、批次號、工序號、工序名稱、開始時間、結(jié)束時間、作業(yè)人員、作業(yè)時長、備注十二個字段。作業(yè)情況表在作業(yè)人員勾選時程序自動將不同時間獲取的信息為相應(yīng)字段賦值。
2)異常反饋表包含序號、產(chǎn)品代號、部件代號、部件名稱、批次號、工序號、工序名稱、異常現(xiàn)象、異常類別、解決措施、原因分析、填報人員、解決人員、填報日期、預(yù)完日期和備注字段。異常反饋表由技術(shù)人員填報。
3)作業(yè)指導(dǎo)書包含產(chǎn)品代號、部件代號、部件名稱、工序號、工序名稱、作業(yè)號、 作業(yè)內(nèi)容、設(shè)備、工裝、輔助材料和備注字段。作業(yè)指導(dǎo)書由技術(shù)人員填報。
(2)用todayO和time O可以獲取本機當時的日期和當時的時間;為了防止作業(yè)人員本人通過修改本機時間達到修改作業(yè)時長的目的,程序采用自動讀取服務(wù)器時間做為系統(tǒng)時間的方法,增加開始時間、結(jié)束時間兩種時間數(shù)據(jù)的客觀性;自動獲取作業(yè)時間的具體步驟如下
I)為讀取服務(wù)器時間設(shè)置一個游標declare get_date cursor for select getdate ();
2)打開游標open get_date;
3)設(shè)置給變量 tt_d :fetch get_date into : tt_d ;
4)關(guān)閉游標close get_date;
(3)作業(yè)“開工勾選”的步驟是
I)當作業(yè)人員開始作業(yè)時,在顯饋終端的一體機上,用本人設(shè)置的密碼登錄,顯示甘特圖窗口;
2)在甘特圖窗口,雙擊甘特圖表,在上方部件進度表經(jīng)過過濾的相關(guān)記錄的記錄行雙擊進行“開工勾選”;
3)程序自動獲取勾選時服務(wù)器的時間,設(shè)置給部件進度表對應(yīng)記錄的開始時間字段;設(shè)置部件進度表該記錄的有效性字段的值為3 ;
4)同時作業(yè)情況表插入一條記錄,將作業(yè)情況表插入的記錄的批次號、產(chǎn)品代號、 部件代號、部件名稱、工序號、工序名稱、開始時間、作業(yè)人員字段賦值;
(4)作業(yè)完成后,作業(yè)人員需進行作業(yè)“完工勾選”;作業(yè)“完成勾選”的步驟是
I)當作業(yè)人員完成作業(yè)后,在顯饋終端一體機上在用本人設(shè)置的密碼登錄的作業(yè)指導(dǎo)書窗口,單擊“完工勾選”按鈕進行“完工勾選”,作業(yè)指導(dǎo)書窗口退出;
2)進行作業(yè)“完工勾選”時,讀取服務(wù)器時間設(shè)置給部件進度表對應(yīng)記錄的結(jié)束時間。填報實際作業(yè)時長設(shè)置給部件進度表的作業(yè)時長字段;
3)設(shè)置部件進度表中該記錄的有效性字段的值為5。
4)根據(jù)產(chǎn)品代號、部件代號、批次號、工序號、作業(yè)人員信息查找對應(yīng)記錄、找到后,將獲取的服務(wù)器時間賦值給結(jié)束時間;
5)如果作業(yè)沒有完成,不需要進行“完工勾選”,想退出作業(yè)指導(dǎo)書窗口,單擊“退出”按鈕;
(5)作業(yè)發(fā)生異常時,作業(yè)人員需進行作業(yè)“異常反饋”;作業(yè)“異常反饋”的步驟是
I)對已作“開工勾選”的作業(yè)對象,在作業(yè)過程中,單擊作業(yè)指導(dǎo)書窗口“異常反饋”按鈕;
2)當作業(yè)發(fā)生異常時單擊“異常反饋”按鈕,進入“異常反饋”窗口 ;
3)部件進度表中該記錄的有效性為4 ;作業(yè)人員填報作業(yè)發(fā)生的異?,F(xiàn)象;同時填寫因異常導(dǎo)致的作業(yè)時長延長的時間;
4)技術(shù)人員到現(xiàn)場解決異常后,填寫異常原因和解決措施;
5)部件進度表數(shù)據(jù)刷新時,按新的作業(yè)時長調(diào)整數(shù)據(jù);
實施例
一、在圖I自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法結(jié)構(gòu)錄入或?qū)氘a(chǎn)品明細表、裝配流程表、生產(chǎn)計劃表、缺件補齊時間表數(shù)據(jù);
調(diào)整產(chǎn)品優(yōu)先級、正常上班時間各工序作業(yè)人員的人數(shù)和加班時間各工序作業(yè)人員的人數(shù);
根據(jù)產(chǎn)品從屬關(guān)系、產(chǎn)品裝配流程、生產(chǎn)計劃時間、產(chǎn)品配套時間、缺件補齊時間、 異常推遲時間、實際完成時間、產(chǎn)品優(yōu)先級、正常上班時間和各工序作業(yè)人員的人數(shù)和加班時間各工序作業(yè)人員的人數(shù)等因素,自動完成部件進度表的計算;
二、在圖2自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法硬件配置圖所示的配置,組建局域網(wǎng);一臺服務(wù)器放在專門機房的機架上,通過一臺48端口交換機和網(wǎng)線與客戶端相連;客戶端設(shè)計7臺采集終端、I臺控制終端、38臺顯饋終端;7臺采集終端和 I臺控制終端采用普通臺式機,38臺顯饋終端采用一體機。
服務(wù)器和交換機一同放在中心機房的機架上;服務(wù)器存放客戶端數(shù)據(jù),交換機將服務(wù)器和采集終端、控制終端、顯饋終端連接;采集終端采集產(chǎn)品明細表、裝配流程表、作業(yè)指導(dǎo)書等技術(shù)數(shù)據(jù)和生產(chǎn)計劃表、缺件補齊時間表、加班表等管理數(shù)據(jù);控制終端用于通過密碼類型控制各類工序作業(yè)人員安排和生產(chǎn)計劃表中產(chǎn)品的優(yōu)先級;顯饋終端顯示甘特圖、作業(yè)指導(dǎo)書和進行作業(yè)“開工勾選”、“完工勾選”和“異常反饋”。
在圖2智能作業(yè)控制方法硬件配置圖控制終端臺式機上通過修改生產(chǎn)計劃表的優(yōu)先級字段的數(shù)值大小改變產(chǎn)品優(yōu)先級,通過生產(chǎn)能力計算結(jié)果來改變作業(yè)人員安排,通過改變密碼表的密碼類型來同步改變作業(yè)人員顯示信息。
在圖2智能作業(yè)控制方法硬件配置圖采集終端臺式機,管理人員錄入和查詢加班表、生產(chǎn)計劃表、缺件補齊時間表;技術(shù)人員導(dǎo)入產(chǎn)品明細表、裝配流程表和作業(yè)指導(dǎo)書等技術(shù)數(shù)據(jù)。
在圖2自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑方法硬件配置圖顯饋終端的一體機顯示最佳路徑甘特圖。顯示最佳路徑甘特圖界面分兩部分,下部分為最佳路徑甘特圖,它用21個字段表示間隔10分鐘,時長半天210分鐘的甘特圖表,表示有作業(yè)的空間的背景色設(shè)置與表示沒有作業(yè)的空間的背景色不同;上部分是部件進度表;通過雙擊甘特圖表中記錄的任意一行,部件進度表得到符合條件的相關(guān)記錄;
在圖2智能作業(yè)控制方法終端圖上的顯饋終端的一體機上,正常作業(yè)需要進行作業(yè)“開工勾選”和作業(yè)“完工勾選”。退出時程序自動填報作業(yè)情況表,并修改反饋部件進度表的開始時間等信息。同時調(diào)用數(shù)字裝配工藝。發(fā)生異常作業(yè)時填報異常情況反饋表,同時修改部件進度表中的完成時間和作業(yè)時長信息。在圖2自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法終端圖上的顯饋終端的一體機上,顯示作 業(yè)內(nèi)容。
權(quán)利要求
1.ー種自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法,其特征在于將多品種小批量生產(chǎn)方式的離散型企業(yè),按相似性分成八個生產(chǎn)単元,每個單元又安排可控制數(shù)量的エ位,半天按210分鐘計算,根據(jù)包含各種因素的信息的多種表,尋找控制具有從屬關(guān)系產(chǎn)品的每ー個部件在每ー個エ位上裝配的最佳時間點;最佳時間點用包含開始時間、結(jié)束時間和表示每個單元エ位順序的順序號三個字段的部件進度表來表達,具體步驟如下 (1)由加班表和エ序單元エ位表運用顯示區(qū)間天數(shù)的確定,周末的判斷,循環(huán)中日期和時間的表達三種方法生成エ序時間表; (2)保留部件進度表表示已開エ的、異常的、完工的記錄,清除其他記錄,并綁定部件進度表的保留記錄與エ序時間表對應(yīng)的順序號; (3)對多種具有不固定子部件級數(shù)和多道裝配エ序的產(chǎn)品采用不固定嵌套循環(huán)層數(shù)和數(shù)組的方法,根據(jù)產(chǎn)品從屬關(guān)系、產(chǎn)品裝配流程、生產(chǎn)計劃、正常上班時間各單元エ位數(shù)和加班時間各單元エ位數(shù)五種因素,生成部件進度表所有記錄項,生成所有記錄項時賦值批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、エ序號、エ序名稱、列號、序號、優(yōu)先級、作業(yè)時長、非作業(yè)時長、有效性字段; (4)運用ー個子部件對應(yīng)多個父部件且ー個父部件對應(yīng)多個子部件的多對多關(guān)系的對應(yīng)方法,確定部件進度表保留記錄的轉(zhuǎn)向單元的エ序號、轉(zhuǎn)向エ序名、轉(zhuǎn)向順序號; (5)根據(jù)產(chǎn)品配套時間、缺件補齊時間、實際完成時間、作業(yè)異常推遲時間、優(yōu)先級五種因素,運用條件符合時參與排序、把表示エ件的部件進度表的開始時間與表示エ位的エ序時間表的起始時間作比較取最有利時間的方法、間斷時間相加的方法、連續(xù)時間相加的方法、多對多關(guān)系的對應(yīng)方法四種方法。
2.根據(jù)權(quán)利要求I所述的自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法,其特征在于步驟(I)中由加班表和エ序單元エ位表運用顯示區(qū)間天數(shù)的確定,周末的判斷,循環(huán)中日期和時間的表達三種方法生成エ序時間表,步驟如下 1)清除エ序時間表原來的數(shù)據(jù); 2)用戶輸入截止日期em_2,今天的第二天與截止日期之間的日期稱為顯示區(qū)間,記作變量XX ; 3)如果截止日期的年份等于今天todayO的年份,顯示區(qū)間的天數(shù)XX為截止日期的號數(shù),減去今天todayO的號數(shù),加上從今天today O的月份到截止日期月份的前ー個月期間每個月最后一天的號數(shù)的累加和; 4)如果截止日期的年份等于今天todayO的年份加1,顯示區(qū)間的天數(shù)XX為截止日期的號數(shù),減去今天today O的號數(shù),加上從今天today O的月份到今天today O當年十二月期間每個月最后一天的號數(shù),加上截止日期當年一月到截止日期月份前ー個月期間每個月最后一天的號數(shù)的累加和; 5)如果截止日期的年份大于今天todayO的年份加1,顯示區(qū)間的天數(shù)XX為截止日期的號數(shù),減去今天today O的號數(shù),加上從今天today O的月份到今天today O當年十二月期間每個月最后一天的號數(shù),加上截止日期當年一月到截止日期月份前ー個月期間每個月最后一天的號數(shù),加上從今天today O的次年一月到截止日期前一年十二月期間每個月最后一天的號數(shù)的累加和; 6)取姆個月最后一天的方法為月份設(shè)為變量li_month,如果li_month=12,那么最后一天的號數(shù)為31 ;如果li_month〈12,那么下個月月份為本月加I,即li_month+l,姆個月的最后一天就是下個月I號的前一天; 7)以顯示區(qū)間的天數(shù)為第一層循環(huán)的次數(shù),以エ序單元エ位表的エ序名稱字段為第二層循環(huán)的次數(shù),以エ序單元エ位表的エ位數(shù)字段為第三層循環(huán)次數(shù)進入循環(huán),依次讀數(shù)、賦值、設(shè)置直至完成三層循環(huán),エ序時間表完成設(shè)置; 8)在步驟7)的循環(huán)中,依次讀數(shù)、賦值、設(shè)置直至完成三層循環(huán)的方法如下 讀取エ序單元エ位表中每條記錄的エ序名稱,設(shè)置給エ序時間表的エ序名稱字段; 讀取エ序單元エ位表中每條記錄的エ位數(shù),設(shè)置給エ序時間表的順序號字段; エ序時間表的次序號用兩位數(shù)n-m表示,η表示今天todayO后第幾天數(shù),η從I到χχ ;m表示時間段,用I、2、3表示;1表示上午班8:00-11:30,1表示下午班12 :30-16:00, 3表示晚班17:00-20:30 ;每班次上班時間分別為上午班時間08:00 ;下午班時間12:30 ;晚班時間 17:00 ; エ序時間表的起始時間為日期時間型數(shù)據(jù),含日期和時間; 取今天today O后的第η天日期,判斷第η天是不是星期天或星期六;如果是,那么エ序單元エ位表中的エ位數(shù)不參與循環(huán); エ序時間表的有效性均設(shè)為O ; 讀取加班表中的記錄;將エ序時間表按順序號字段降序排列;查找エ序時間表中對應(yīng)同時段并且同エ序名稱的記錄的順序號;如果查找到,則插入新的相應(yīng)記錄,記錄的順序號從查找到的順序號以后排;如果查找不到,則插入新的相應(yīng)記錄,記錄的順序號從I開始排,直到循環(huán)結(jié)束; 9)エ序時間表生成后,按エ序名稱、起始時間、次序號字段升序,順序號字段降序排序。
3.根據(jù)權(quán)利要求I所述的自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法,其特征在于步驟(2)保留部件進度表表示已開エ的、異常的、完工的記錄,清除其他記錄,并綁定部件進度表的保留記錄與エ序時間表對應(yīng)的順序號的內(nèi)容如下 1)有效性O(shè)表示項目確定;有效性I表示開始時間確定;有效性2表示結(jié)束時間確定;有效性3表示已作開エ“作業(yè)勾選” ;4表示已填報作業(yè)異常;有效性5表示已作完成“作業(yè)勾選”; 2)保留有效性為3,或有效性為4或有效性為5的記錄,清除部件進度表的其它數(shù)據(jù); 3)整理保留的有效性為3、或4、或5的記錄,將部件進度表中按批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、エ序號、列號字段升序排序,設(shè)置批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、エ序號、列號相同的記錄序號從I開始重新設(shè)置;將部件進度表中批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、エ序號相同,列號不相同的記錄列號從I開始重新設(shè)置。
4.根據(jù)權(quán)利要求I所述的自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法,其特征在于步驟(3):對多種具有不固定子部件級數(shù)和多道裝配エ序的產(chǎn)品采用不固定嵌套循環(huán)層數(shù)和數(shù)組的方法,根據(jù)產(chǎn)品從屬關(guān)系、產(chǎn)品裝配流程、生產(chǎn)計劃、正常上班時間各單元エ位數(shù)和加班時間各單元エ位數(shù)五種因素,生成部件進度表所有記錄項,生成所有記錄項時賦值批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、エ序號、エ序名稱、列號、序號、優(yōu)先級、作業(yè)時長、非作業(yè)時長、有效性字段的內(nèi)容如下1)生產(chǎn)計劃表按批次號、產(chǎn)品代號、部件代號、開始時間字段升序排序; 2)生產(chǎn)計劃表按完成情況不等于‘完成’條件進行過濾; 3)測試生產(chǎn)計劃表記錄數(shù),記作li_row,如果li_row=0,退出本步驟;如果li_row>0,表示生產(chǎn)計劃表有記錄; 4)讀取生 產(chǎn)計劃表第一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱ljmc、批次號cpph、數(shù)量ljsll、優(yōu)先級yxji字段的數(shù)值; 5)以產(chǎn)品代號為cpdh、部件代號為Ijdh過濾條件對裝配流程表過濾,測試部件對應(yīng)于裝配流程表的記錄數(shù),記作g_rownumber ;如果g_rownumber=0,表示裝配流程表沒有記錄,轉(zhuǎn)到下ー節(jié)的內(nèi)容;如果g_rownumber>0,表示裝配流程表有記錄,以g_rownumber為ニ層循環(huán)次數(shù),以Ijsll為三層循環(huán)次數(shù);讀取裝配流程表第一條記錄的エ序號gxh和エ序名稱gxmc,在部件進度表中查找有沒有批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、エ序號、列號都相同的記錄,如果有,記作χχ ;那么插入Ijsll條記錄,記錄的列號從χχ到(xx+ljsll),記錄的序號和有效性的值為O,記錄的批次號cpph、所屬產(chǎn)品zccp、所屬部件zcbj、產(chǎn)品代號cpdh、部件代號Ijdh、部件名稱Ljmc、エ序號gxh、エ序名稱gxmc、列號、序號、優(yōu)先級yxji、有效性字段賦值;如果沒有,插入Ijsll條記錄,記錄的列號從I到ljsll、記錄的序號和有效性的值為O,記錄的批次號cpph、所屬產(chǎn)品zccp、所屬部件zcbj、產(chǎn)品代號cpdh、部件代號Ijdh、部件名稱Ljmc、エ序號gxh、エ序名稱gxmc、列號、序號、優(yōu)先級yxji、有效性字段賦值;然后光標指向裝配流程表下一條記錄……直到ニ層循環(huán)結(jié)束,這樣就將對應(yīng)的所有エ序單元的信息設(shè)置給部件進度表中的批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、エ序號、エ序名稱、列號、序號、優(yōu)先級、有效性相應(yīng)字段; 6)將產(chǎn)品明細表按產(chǎn)品代號cpdh,部件代號Ijdh字段過濾,得到產(chǎn)品明細表中的所有子部件; 7)設(shè)置變量循環(huán)層數(shù)i,數(shù)組 string zee [20], zcb [20] , long lii_row[20],賦值i=l ; 8)測試其記錄數(shù),記作lii_row[i],判斷有沒有子部件如果lii_rOW[i]=0,表示沒有子部件,那么生產(chǎn)計劃表中的光標指向下一條記錄,讀取下一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱ljmc、批次號cpph、數(shù)量ljsll、優(yōu)先級yxji、完成日期wcrq ;重復(fù)步驟5)、6)、7)、8); 如果lii_row[i]>0,表示有子部件,讀取子部件的第一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱ljmc、所屬產(chǎn)品zcc[i]、所屬部件zcb[i]、所屬數(shù)量Ijsl,賦值ljsll=ljsl*ljsll ; 9)以產(chǎn)品代號cpdh、部件代號Ijdh為過濾條件對裝配流程表過濾,測試裝配流程表記錄數(shù),記作g_rownumber ;如果g_rownumber=0,表示裝配流程表沒有記錄,轉(zhuǎn)到下ー節(jié);如果g_rownumber>0,表示裝配流程表有記錄,表示裝配流程表有記錄,以g_rownumber為ニ層循環(huán)次數(shù),以Ijsll為三層循環(huán)次數(shù);讀取裝配流程表第一條記錄的エ序號gxh和エ序名稱gxmc,在部件進度表中查找有沒有批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、エ序號、列號相同的記錄;如果有,記作XX,插入Ijsll條記錄,記錄的列號從XX到xx+ljsll,記錄的序號和有效性的值為0,記錄的批次號cpph、所屬產(chǎn)品、所屬部件、產(chǎn)品代號cpdh、部件代號I jdh、部件名稱I jmc、エ序號gxh、エ序名稱gxmc、列號、序號、優(yōu)先級yxji、有效性字段賦值;如果沒有,插入Ijsll條記錄,記錄的列號從I到ljsll,記錄的序號和有效性的值為O,記錄的批次號cpph、所屬產(chǎn)品、所屬部件、產(chǎn)品代號cpdh、部件代號ljdh、部件名稱I jmc、エ序號gxh、エ序名稱gxmc、列號、序號、優(yōu)先級yxji、有效性字段賦值;然后光標指向裝配流程表下一條記錄……直到ニ層循環(huán)結(jié)束;這樣就將對應(yīng)的所有エ序的信息設(shè)置給部件進度表中的批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、エ序號、エ序名稱、列號、優(yōu)先級、有效性相應(yīng)字段; 10)將產(chǎn)品明細表按zcc[i],zcb[i]字段過濾,得到所有子部件; 11)測試子部件的記錄數(shù),記作lii_row[i+l]; 12)判斷有沒有子部件,如果lii_row[i+l]=0,表示沒有子部件,那么恢復(fù)父項過濾條件;光標指向下一條記錄;讀取下一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱ljmc、所屬產(chǎn)品zcc[i]、所屬部件zcb[i]、所屬數(shù)量Ijsl,賦值Ijsll=Ijsl*ljsll ;重復(fù)步驟9)、10)、11)、12);如果lii_row[i+l]>0,表示有子部件;賦值i=i+l ;讀取子部件每一條記錄的產(chǎn)品代號cpdh、部件代號ljdh、部件名稱ljmc,所屬產(chǎn)品zee [i],所屬部件zcb [i],所屬數(shù)量 Ijsl,賦值 ljsll=ljsl*ljsll ; 13)重復(fù)步驟9)、10)、11)、12); 14)當光標指向i級的結(jié)尾吋,回到父項,設(shè)置i=i- I ;判斷光標是回到父項的從第I條到第li_row[i]條記錄之間的一條記錄還是父項的結(jié)尾記錄;如果是回到父項的從第I條到第li_row[i]條記錄之間的一條記錄,則恢復(fù)父項的過濾條件,進行下一條記錄的測試和判斷;如果是回到父項的結(jié)尾記錄,則進入上一層循環(huán),再次設(shè)置i=i - 1,直至i=l ; 15)部件進度表按批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、エ序號、列號字段升序排序,刪除批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、エ序號、列號都相同的記錄中有效性為O的記錄。
5.根據(jù)權(quán)利要求I所述的自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法,其特征在于步驟(4)中運用ー個子部件對應(yīng)多個父部件,一個父部件對應(yīng)多個子部件的多對多關(guān)系的對應(yīng)方法,確定部件進度表保留記錄的轉(zhuǎn)向單元的エ序號、轉(zhuǎn)向エ序名、轉(zhuǎn)向順序號的內(nèi)容如下 1)測試部件進度表有效性為3、4或5的記錄數(shù),如果記錄數(shù)為0,退出本步驟;如果記錄數(shù)不為0,作以下處理; 2)將部件進度表中按批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、エ序號、列號、序號字段升序排序,讀取部件進度表中批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、エ序號、列號字段;如果讀取的部件進度表中批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、エ序號、列號與上一條記錄相同,則跳過;如果讀取的部件進度表中批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、エ序號、列號不相同,則將上一條記錄作如下處理; 3)賦值wcrq的分鐘記為mw;小時數(shù)記為hw,非作業(yè)時長記為zysc ; 4)設(shè)置記錄的本班次上班時間,如果m=l,那么hsl=8,ms 1=0 ;如果m=2,那么hsl=12,msl=30 ;如果 m=3,那么 hsl=17, msl=0,設(shè)置 nl=n ; 5)如果設(shè)置部件進度表下道エ序或父部件第一道裝配エ序的開始時間為ksrq,ksrq與當班次上班時間的時長為tysc,那么tysc=(hw-hsl)*60+(mw-msl)+zysc ; 6)如果tysc〈=210且(mw+ zysc)〈60,那么ksrq的分鐘數(shù)為mw+zysc,小時數(shù)為hw ;7)如果tysc〈=210 且(mw+ zysc) >=60,那么 ksrq 的小時數(shù)為 hw +int ((mw + zysc)/60),分鐘數(shù)為 mw=mod ((mw + zysc), 60); 8)m=m+l,讀取記錄的下班次數(shù)據(jù);如果m=4,那么m=l,n=n+l ;讀取エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m的記錄;如果讀到記錄,設(shè)エ序時間表的起始時間為的小時數(shù)和分鐘數(shù)分別為hs2和ms2 ;記錄下班次的上班時間的小時數(shù)和分鐘數(shù)分別為hs和ms ;如果 m=l,賦值 hs=8, ms=0 ;如果 m=2,賦值 hs=12, ms=30 ;如果 m=3,賦值 hs=17,ms=0 ;如果讀不到エ序時間表的記錄,那么回到本步驟8)開始處循環(huán),直到讀到記錄,χχ= (n-nl)*1440+ (hs2_hsl) *60+ (ms2_msl),yy= (n-nl) *1440+ (hs-hsl) *60+ (ms-msl) +210 ; 9)如果tysc>210且tysc〈=xx,那么ksrq的小時數(shù)為hs2,分鐘數(shù)為ms2; 如果 tysc>xx 且 tysc<=yy,那么非作業(yè)時長 zysc=zysc- ((n-nl) *1440+ (hs2_hw) *60+ (ms2-mw)) ;ksrq 的小時數(shù)為 hs2 +int ((ms2 + zysc )/60),分鐘數(shù)為 mod((ms2 +zysc),60); 如果tysc>yy,那么設(shè)置hsl=hs, msl=ms, hw=hs2, mw=ms2,回到本步驟9)開始處循環(huán),直到tysc>xx不成立; 10)判斷部件進度表記錄エ序有沒有下道エ序,如果部件進度表本條記錄的エ序有下道エ序,設(shè)置它的開始時間為ksrq,同時設(shè)置本條記錄的下道エ序的有效性字段為1,同時讀取本條記錄的下道エ序的エ序號、エ序名稱,寫入本條記錄轉(zhuǎn)向エ序號、轉(zhuǎn)向エ序名字段,做為エ件完工勾選后的流轉(zhuǎn)方向; 11)如果部件進度表本條記錄的エ序沒有下道エ序,則到產(chǎn)品明細表中查找產(chǎn)品代號、部件代號、所屬產(chǎn)品、所屬部件均對應(yīng)的記錄的單臺數(shù)記為I jsl,說明子部件與父部件的關(guān)系為Ijsl條子部件對應(yīng)I條父部件;讀取エ序號為1,序號為O的同批次號的父部件的所有子部件,其記錄數(shù)記作XXI,再讀取エ序號為1,序號為O的同批次號的父部件,其記錄數(shù)記作xx2,兩者相除的結(jié)果記作xx3,表明父部件被查找xx3次其有效性就可以改為1,這樣就建立了對于多個父部件對應(yīng)多個子部件的多對多關(guān)系的對應(yīng)的唯一性; 12)如果該部件的エ序號為I的父部件的記錄的開始時間不為空,那么記作ksrql,取ksrq與ksrql的最大值為ksrq,那么該部件的父部件的エ序號為I的記錄的開始時間設(shè)置為ksrq;同時讀取其父部件的エ序號和エ序名稱,寫入該子部件記錄轉(zhuǎn)向エ序號、轉(zhuǎn)向エ序名字段,做為エ件完工勾選后的流轉(zhuǎn)方向; 13)如果父部件的子部件對應(yīng)了xx3次父部件,則將該父部件的有效性改為I ; 14)循環(huán)處理每條記錄,循環(huán)結(jié)束后按同樣的方法處理最后一條記錄; 15)將部件進度表不設(shè)置條件過濾,如果轉(zhuǎn)向エ序號為1,說明轉(zhuǎn)向父部件,轉(zhuǎn)向エ序號不為1,說明轉(zhuǎn)向下道エ序;依此方法依次查找每條記錄轉(zhuǎn)向エ序號、轉(zhuǎn)向エ序名對應(yīng)的順序號,填入記錄的轉(zhuǎn)向順序號字段。
6.根據(jù)權(quán)利要求I所述的自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法,其特征在于步驟(5):根據(jù)產(chǎn)品配套時間、缺件補齊時間、實際完成時間、作業(yè)異常推遲時間、優(yōu)先級五種因素,運用條件符合時參與排序、把表示エ件的部件進度表的開始時間與表示エ位的エ序時間表的起始時間作比較取最有利時間的方法、間斷時間相加的方法、連續(xù)時間相加的方法、多對多關(guān)系的對應(yīng)方法四種方法,生成部件進度表開始時間、結(jié)束時間、順序號、轉(zhuǎn)向エ序號、轉(zhuǎn)向エ序名、轉(zhuǎn)向順序號的內(nèi)容如下1)部件進度表按エ序號為I且有效性為O條件過濾,確定部件進度表對應(yīng)記錄的有效性為I且初定部件進度表有效性為I的記錄的開始時間,方法如下 測試部件進度表記錄數(shù),記作g_rownumber,如果g_rownumber=0,表示部件進度表沒有可操作的記錄,程序結(jié)束;如果g_rownumber>0,表示部件進度表有可操作的記錄,讀取部件進度表第一條記錄的產(chǎn)品代號記作變量cpdh、部件代號記作Ijdh ; 查找部件進度表中所屬產(chǎn)品等于cpdh,所屬部件等于Ijdh,有效性為O的記錄,如果查至IJ,說明有子部件,跳出本節(jié)內(nèi)容;如果查不到,表示沒有子部件,將部件進度表有效性設(shè)置為1,設(shè)置部件進度表中該記錄的開始時間的日期為今天todayO后I天,時間為8點; 依次讀取部件進度表的下一條記錄的產(chǎn)品代號記作變量cpdh、部件代號記作ljdh,重復(fù)上述內(nèi)容;......經(jīng)過g_rownumber次循環(huán),取值、過濾、判斷,就確定了部件進度表中姆條記錄的有效性是否為1,并初步確定有效性字段為I的記錄的開始時間; 2)初定缺件補齊時間表對應(yīng)部件進度表中的記錄的初始時間,方法如下 測試缺件補齊時間表的記錄數(shù)為g_rownumber,如果g_rownumber>0,表示缺件補齊時間表有記錄;以g_rownumber為循環(huán)次數(shù)作循環(huán),讀取缺件補齊時間表中的第一條記錄的補齊日期、產(chǎn)品代號、部件代號,在產(chǎn)品明細表中查找父部件,讀取父部件的所屬產(chǎn)品、所屬部件、エ序名稱字段數(shù)據(jù),將作為條件,查找部件進度表中的對應(yīng)記錄,讀取部件進度表對應(yīng)記錄的開始時間;如果缺件補齊時間表中的補齊日期的第二天與時間08 00合成,生成的日期時間大于部件進度表對應(yīng)記錄的開始時間,那么將該缺件補齊時間表中的補齊日期的第二天與時間08 00合成生成的日期時間設(shè)置給該缺件所屬部件在部件進度表中對應(yīng)記錄的開始時間; 3)エ序時間表按有效性為O的過濾條件進行過濾,部件進度表按有效性I的過濾條件進行過濾;測試部件進度表的記錄數(shù)記作g_rownumber,測試エ序時間表的記錄數(shù)記作g_rownumberl ;如果都大于O,那么讀取部件進度表的第一條記錄;用DO·· LOOP WHILEcondition循環(huán)語句做以下步驟4)、5)、6)、7)、8)的處理; 4)運用條件符合時參與排序、把表示エ件的部件進度表的開始時間與表示エ位的エ序時間表的起始時間作比較取最有利時間的方法,確定有效性為I的部件進度表記錄的開始時間datetime ksrq和順序號的方法如下 部件進度表按開始時間、優(yōu)先級、エ序名稱、批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、列號、序號字段升序排序; エ序時間表按次序號、起始時間、エ序名稱、順序號字段升序排序; 讀取部件進度表第一條記錄的エ序名稱賦值給變量gxmc、開始時間賦值給ksrq ; 計算ksrq為今天todayO后的第幾天,值賦給η,根據(jù)ksrq的小時數(shù)變量hk判斷作業(yè)時間段,通過取最有利時間的方法來確定,即如果hk>=8且hk〈12,那么是上午班,m=l,hs=8, ms=0 ;如果 hk>=12 且 hk〈=16,那么是下午班,m=2, hs=12, ms=30 ;hk>=17 且 hk〈=20,那么是晚班,m=3, hs=17, ms=0 ; 按n-m格式合成次序號,エ序時間表按エ序名稱為gxmc、有效性為0、次序號為(n-m)過濾條件進行過濾,測試エ序時間表的記錄數(shù)Ii_row ;如果記錄數(shù)li_row大于O,讀取エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m的第一條記錄的順序號賦值給變量yy,起始時間給變量qsrq,取qsrq和ksrq最大值賦給ksrq,設(shè)置部件進度表本條記錄的開始時間為ksrq,次序號為(n-m),順序號為yy ;如果測試エ序時間表的記錄數(shù)li_row不大于O,那么m=m+l ;如果m=4,那么m=l,n=n+l,回到本步驟4)開始處循環(huán),直到記錄數(shù)大于O,即找到空余時間段; 5)根據(jù)部件進度表開始時間和作業(yè)時長,用間斷時間相加的方法確定結(jié)束時間datetime wcrq的方法如下 讀取部件進度表的作業(yè)時長為zysc ; 設(shè)部件進度表第一條記錄的結(jié)束時間wcrq的分鐘記作變量int mw,小時記作變量inthw,其結(jié)束時間與上班時間的時長記作變量tysc,那么tysc=(hk_hs) *60+ (mk-ms) +zysc,設(shè)置mw = mk + zysc ;半天的工作時間3. 5小時為210分鐘; 如果tysc〈210且mw〈60,那么結(jié)束時間wcrq的分鐘數(shù)為mw = mk + zysc,小時數(shù)為·hw=hk,設(shè)置其有效性為2,設(shè)置其完成時間為wcrq,設(shè)置エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的起始時間wcrq ; 如果tysc〈210且mw>=60,那么結(jié)束時間wcrq的小時數(shù)為hw= hk +int ((mk + zysc)/60),分鐘數(shù)為mw=mod ((mk + zysc),60),設(shè)置該記錄的有效性為2,設(shè)置該記錄的完成時間為wcrq,設(shè)置エ序時間表エ序名稱為gxmc、有效性為O、次序號為n_m,順序號為yy的記錄的起始時間wcrq ; 如果tysc=210,那么結(jié)束時間wcrq的小時數(shù)為hw= hk +int ((mk + zysc )/60),分鐘數(shù)為mw=mod((mk + zysc), 60),設(shè)置該記錄的有效性為2,設(shè)置該記錄的完成時間為wcrq,設(shè)置エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的有效性為I ; 如果tysc>210,那么作以下處理 6)設(shè)置エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m的該記錄的有效性為1,同時需將部件進度表對應(yīng)記錄拆分成兩部分記錄; 部件進度表對應(yīng)記錄拆分成的第一部分記錄的開始時間為原開始時間不變,hsl、ms I分別表示下班時間的小時數(shù)和分鐘數(shù);如果m=l,那么hsl=ll, msl=30 ;如果m=2,那么hsl=16,msl=00 ;如果m=3,那么hsl=20,msl=30 ;部件進度表對應(yīng)記錄拆分成的第一部分記錄的結(jié)束時間的日期設(shè)置為今天todayO后η天,時間的小時為hsl,時間的分鐘為msl ;部件進度表對應(yīng)記錄拆分成的第一部分記錄的有效性為2 ;部件進度表該記錄第一部分記錄的作業(yè)時長為(hsl-hk) *60+(msl _ mk),部件進度表該記錄第一部分記錄的時長為0.00,設(shè)置エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的有效性為 I, zysc=zysc_(hsI-Jik)氺60-Unslnk); m=m+l,如果m=4,那么m=l, n=n+l,エ序時間表按エ序名稱為gxmc、有效性為O、次序號為(n-m)過濾條件進行過濾;測試エ序時間表的記錄數(shù)li_row,如果記錄數(shù)li_row大于O,插入新的記錄行做為部件進度表對應(yīng)記錄第二部分記錄,批次號、所屬產(chǎn)品、所屬部件、產(chǎn)品代號、部件代號、部件名稱、エ序號、エ序名稱、優(yōu)先級、列號、非作業(yè)時長與原記錄保持不變,其有效性值為2,作業(yè)時長為zysc ;讀取エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m的第一條記錄的順序號賦值給變量yy,起始時間給變量qsrq,將qsrq設(shè)置給部件進度表的開始時間,設(shè)置其次序號為(n-m),順序號為yy ;如果エ序時間表記錄數(shù)li_row不大于0,那么回到本步驟6)開始處循環(huán),直到記錄數(shù)大于0,即找到空余時間段;確定第二部分結(jié)束時間datetime wcrq,設(shè)其結(jié)束時間wcrq的分鐘記作變量int mw,小時記作變量int hw,其結(jié)束時間與上班時間的時長記作變量tysc,設(shè)qsrq的分鐘數(shù)為mk,小時數(shù)為 hk,那么 tysc= (hk_hs) *60+(mk-ms)+zysc,設(shè)置 mw = mk + zysc ;半天的工作時間3. 5小時為210分鐘; 如果tysc〈210且mw〈60,那么其結(jié)束時間wcrq的分鐘數(shù)為mw = mk + zysc,小時數(shù)為hw=hk,設(shè)置其結(jié)束時間為wcrq,設(shè)置其有效性為2 ;設(shè)置其序號為1,如果第二部分再拆分,則第三部件序號為2,依次類推;設(shè)置エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的起始時間wcrq ; 如果tysc〈210且mw>=60,那么部件進度表記錄的結(jié)束時間wcrq的小時數(shù)為hw= hk+int ((mk + zysc )/60),分鐘數(shù)為mw=mod((mk + zysc), 60);設(shè)置其結(jié)束時間為wcrq,設(shè)置其有效性為2,設(shè)置其序號為1,如果第二部分再拆分,則第三部件序號為2,依次類推;設(shè)置エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的起始時間wcrq ; 如果tysc=210,那么其結(jié)束時間wcrq的分鐘數(shù)為hw= hk +int((mk + zysc )/60),小時數(shù)為mw=mod((mk + zysc),60),設(shè)置該記錄的有效性為2,設(shè)置該記錄的完成時間為wcrq,設(shè)置其序號為1,如果第二部分再拆分,則第三部件序號為2,依次類推;設(shè)置エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m,順序號為yy的記錄的有效性為I ; 如果tysc>210,回到步驟6)即本步驟開始處循環(huán),直至tysc>=210不成立;這樣就設(shè)置部件進度表記錄的結(jié)束時間wcrq、有效性2 ;確定了新插入記錄的次序號、順序號、序號三個字段;設(shè)置エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m、順序號為yy的記錄的起始時間wcrq或有效性I ; 7)由部件進度表非作業(yè)時長zysc與結(jié)束時間wcrq,用連續(xù)時間相加的方法確定部件進度表下道エ序或父部件第一道裝配エ序的開始時間的方法如下 賦值wcrq的分鐘記為mw ;小時數(shù)記為hw,非作業(yè)時長記為zysc ; 設(shè)置記錄的本班次上班時間,如果m=l,那么hsl=8, ms 1=0 ;如果m=2,那么hsl=12,msl=30 ;如果 m=3,那么 hsl=17, msl=0,設(shè)置 nl=n ; 如果設(shè)置部件進度表下道エ序或父部件第一道裝配エ序的開始時間為ksrq,ksrq與當班次上班時間的時長為tysc,那么tysc=(hw-hsl)*60+(mw-msl)+zysc, 如果tysc〈=210且(mw + zysc)〈60,那么ksrq的分鐘數(shù)為mw+zysc,小時數(shù)為hw ; 如果 tysc〈=210 且(mw+ zysc) >=60,那么 ksrq 的小時數(shù)為 hw +int ((mw + zysc)/60),分鐘數(shù)為 mw=mod ((mw + zysc), 60); m=m+l,讀取記錄的下班次數(shù)據(jù);如果m=4,那么m=l, n=n+l,讀取エ序時間表エ序名稱為gxmc、有效性為O、次序號為n-m的記錄;如果讀到記錄,設(shè)エ序時間表的起始時間為的小時數(shù)和分鐘數(shù)分別為hs2和ms2 ;記錄下班次的上班時間的小時數(shù)和分鐘數(shù)分別為hs和ms ;如果 m=l,賦值 hs=8, ms=0 ;如果 m=2,賦值 hs=12, ms=30 ;如果 m=3,賦值 hs=17,ms=0 ;如果讀不到エ序時間表的記錄,那么回到本節(jié)開始處循環(huán),至到讀到記錄,χχ= (n-nl)*1440+ (hs2_hsl) *60+ (ms2_msl),yy= (n-nl) *1440+ (hs-hsl) *60+ (ms-msl) +210 ; 如果tysc>210且tysc〈=xx,那么ksrq的小時數(shù)為hs2,分鐘數(shù)為ms2 ;如果tysc>xx且tysc〈=yy,那么非作業(yè)時長 zysc=zysc_ ((n_nl) *1440+(hs2_hw) *60+(ms2_mw)) ;ksrq 的小時數(shù)為 hs2 +int ((ms2 + zysc )/60),分鐘數(shù)為 mod((ms2 + zysc), 60);如果 tysc>yy,那么設(shè)置hsl=hs, msl=ms, hw=hs2, mw=ms2,回到本步驟7)開始處循環(huán),直到tysc>xx不成立; 8)運用多對多關(guān)系的對應(yīng)等方法找出部件進度表下道エ序或父部件第一道裝配エ序,將開始時間和有效性賦值的方法如下 判斷部件進度表記錄エ序有沒有下道エ序,如果部件進度表本條記錄的エ序有下道エ序,設(shè)置它的開始時間為ksrq,同時設(shè)置本條記錄的下道エ序的有效性字段為1,同時讀取本條記錄的下道エ序的エ序號、エ序名稱,寫入本條記錄轉(zhuǎn)向エ序號、轉(zhuǎn)向エ序名字段,做為エ件完工勾選后的流轉(zhuǎn)方向; 如果部件進度表本條記錄的エ序沒有下道エ序,則到產(chǎn)品明細表中查找產(chǎn)品代號、部件代號、所屬產(chǎn)品、所屬部件均對應(yīng)的記錄的單臺數(shù)記為I jsl,說明子部件與父部件的關(guān)系為Ijsl條子部件對應(yīng)I條父部件;讀取エ序號為1,序號為O的同批次號的父部件的所有子部件,其記錄數(shù)記作XXI,再讀取エ序號為1,序號為O的同批次號的父部件,其記錄數(shù)記作xx2,兩者相除的結(jié)果記作xx3,表明父部件被查找xx3次其有效性就可以改為1,這樣就建立了對于多個父部件對應(yīng)多個子部件的多對多關(guān)系的對應(yīng)的唯一性; 如果該部件的エ序號為I的父部件的記錄的開始時間不為空,那么記作ksrql,取ksrq與ksrql的最大值為ksrq,那么該部件的父部件的エ序號為I的記錄的開始時間設(shè)置為ksrq,同時讀取其父部件的エ序號和エ序名稱,寫入該子部件記錄轉(zhuǎn)向エ序號、轉(zhuǎn)向エ序名字段,做為エ件完工勾選后的流轉(zhuǎn)方向; 如果父部件的子部件對應(yīng)了 xx3次父部件,則將該父部件的有效性改為I ; 9)用DO…LOOPWHILE condition循環(huán)語句,進行步驟4)、5)、6)、7)、8);按這種方法一直下去,當部件進度表正在確定的所有部件均沒有父部件,且其對應(yīng)的所有裝配エ序的開始時間和結(jié)束時間都確定后,即部件進度表的開始時間、結(jié)束時間、順序號都生成后,或者エ序時間表的所有記錄的有效性都為I后,循環(huán)結(jié)束; 10)將部件進度表不設(shè)置條件過濾,如果轉(zhuǎn)向エ序號為1,說明轉(zhuǎn)向父部件,轉(zhuǎn)向エ序號不為1,說明轉(zhuǎn)向下道エ序,依此規(guī)則依次查找每條記錄轉(zhuǎn)向エ序號、轉(zhuǎn)向エ序名對應(yīng)的順序號,填入記錄的轉(zhuǎn)向順序號字段。
全文摘要
本發(fā)明公開了一種自動尋找具有從屬關(guān)系產(chǎn)品的部件裝配最佳路徑的方法,將多品種小批量生產(chǎn)方式的離散型企業(yè),按相似性分成十個生產(chǎn)單元,每個單元又安排可控制數(shù)量的工位,半天按210分鐘計算,根據(jù)包含各種因素的信息的多種表,尋找控制具有從屬關(guān)系產(chǎn)品的每一個部件在每一個工位上裝配的最佳時間點;最佳時間點用包含開始時間、結(jié)束時間和表示每個單元工位順序的順序號三個字段的部件進度表來表達。本發(fā)明自動尋找具有不固定級數(shù)從屬關(guān)系的產(chǎn)品的部件裝配最佳路徑,能最大程度消除過量生產(chǎn)、等待時間、運輸、庫存、過程、動作、產(chǎn)品缺陷等浪費,縮短產(chǎn)品制造周期,提高生產(chǎn)效率。
文檔編號G06F17/30GK102982405SQ20121043311
公開日2013年3月20日 申請日期2012年11月1日 優(yōu)先權(quán)日2012年11月1日
發(fā)明者郭俊文, 何軍, 胡文花, 陳國勝, 王龍瑩, 聶永海, 唐曉冬, 張云龍, 郭曉丹, 吳慶, 錢軍 申請人:北方信息控制集團有限公司