備數(shù)據(jù)采集到MES排產(chǎn)的車間數(shù)字化實(shí)踐)
簡(jiǎn)介面向制造業(yè)數(shù)字化轉(zhuǎn)型的《徐工傳動(dòng)智能工廠方案》講解PPT適合智能制造規(guī)劃人員、企業(yè)信息化負(fù)責(zé)人及技術(shù)團(tuán)隊(duì)研讀。內(nèi)容按智能工廠落地路徑展開(kāi)完整覆蓋信息系統(tǒng)高度集成、全局生產(chǎn)過(guò)程管控、生產(chǎn)信息實(shí)時(shí)采集、計(jì)劃準(zhǔn)確排程、物料準(zhǔn)時(shí)配送以及設(shè)備物聯(lián)網(wǎng)監(jiān)控、質(zhì)量實(shí)時(shí)管控、客戶集成、數(shù)字化研發(fā)與互聯(lián)網(wǎng)等核心環(huán)節(jié)系統(tǒng)說(shuō)明以MES為核心的智能信息化平臺(tái)如何貫通研產(chǎn)供銷存全價(jià)值鏈。針對(duì)齒輪、軸承件等特殊工藝零件方案專門給出DPM條碼直接標(biāo)印、激光打碼與自動(dòng)識(shí)別采集方案并配套高靈活性無(wú)線網(wǎng)絡(luò)覆蓋、智能化立體倉(cāng)庫(kù)、AGV調(diào)度、工業(yè)機(jī)器人協(xié)同等自動(dòng)化物流實(shí)施思路。包內(nèi)共1個(gè)pptx文件壓縮包大小28.08MB61頁(yè)圖文結(jié)構(gòu)完整突出客戶集成、互聯(lián)網(wǎng)、數(shù)字化研發(fā)、智能信息化平臺(tái)、高度自動(dòng)化五大關(guān)鍵能力可直接用于方案匯報(bào)、立項(xiàng)參考或智能制造內(nèi)部培訓(xùn)也可幫助讀者快速理解智能工廠建設(shè)所需的系統(tǒng)、設(shè)備與流程協(xié)同要點(diǎn)。目前已有89人學(xué)習(xí)瀏覽適合關(guān)注智能工廠整體架構(gòu)與實(shí)施要點(diǎn)的讀者使用。1. 徐工傳動(dòng)智能工廠方案用61頁(yè)講清從機(jī)加工到裝配的數(shù)字化底座工程機(jī)械傳動(dòng)件工廠比如齒輪、變速器、驅(qū)動(dòng)橋產(chǎn)線大多數(shù)還處在“設(shè)備有PLC、車間有記錄、但數(shù)據(jù)不上網(wǎng)”的狀態(tài)。這套徐工傳動(dòng)智能工廠方案尤其是那份61頁(yè)的PPT做的就是把離散的機(jī)床、清洗機(jī)、裝配線和檢測(cè)站用一張數(shù)據(jù)網(wǎng)絡(luò)拉通再疊加制造執(zhí)行和排產(chǎn)邏輯。它服務(wù)的人很明確既要懂工藝又要懂IT的車間工程師以及要在預(yù)算和工期里做決策的項(xiàng)目負(fù)責(zé)人。方案本身不神秘核心就三件事把設(shè)備數(shù)據(jù)采上來(lái)、把計(jì)劃排下去、把質(zhì)量追回去。接下來(lái)我從一個(gè)實(shí)施者的角度把這份方案從紙面落到車間的完整路徑拆一遍。2. 從網(wǎng)絡(luò)到數(shù)據(jù)先打通工廠的神經(jīng)系統(tǒng)2.1 智能工廠網(wǎng)絡(luò)規(guī)劃三層拓?fù)渑c設(shè)備接入方式方案PPT的第一層永遠(yuǎn)是網(wǎng)絡(luò)但PPT上畫的只是一根橫線現(xiàn)場(chǎng)落地時(shí)要考慮的是三層結(jié)構(gòu)。最上面是企業(yè)辦公網(wǎng)跑ERP和郵件中間是工控網(wǎng)跑MES、SCADA和數(shù)據(jù)服務(wù)器最下面才是設(shè)備網(wǎng)直接連機(jī)床的PLC、機(jī)器人的控制器、檢測(cè)儀表的網(wǎng)口或串口。這三層絕對(duì)不能直接物理打通特別是設(shè)備網(wǎng)里藏著很多老協(xié)議的廣播報(bào)文一旦串到辦公網(wǎng)整個(gè)企業(yè)的網(wǎng)絡(luò)都可能被拖垮。常見(jiàn)做法是用三層交換機(jī)做VLAN隔離辦公網(wǎng)一個(gè)VLAN工控網(wǎng)一個(gè)VLAN設(shè)備網(wǎng)按車間再拆幾個(gè)VLAN。比如一個(gè)傳動(dòng)軸加工車間可以劃分VLAN 10給辦公、VLAN 20給工控、VLAN 30給數(shù)控車床區(qū)、VLAN 40給磨削區(qū)、VLAN 50給熱處理爐。這個(gè)劃分不是隨便寫的它決定了后續(xù)采集數(shù)據(jù)能不能按產(chǎn)線收斂也決定了某個(gè)區(qū)域的廣播風(fēng)暴影響半徑。設(shè)備接入方式要按設(shè)備年代來(lái)定。近五年的數(shù)控系統(tǒng)比如西門子840D sl、發(fā)那科31i原生支持OPC UA或以太網(wǎng)接口直接連交換機(jī)就行。老一點(diǎn)的設(shè)備比如十年前的磨床可能只有RS232串口或Profibus總線這時(shí)候要加協(xié)議轉(zhuǎn)換網(wǎng)關(guān)把串口報(bào)文轉(zhuǎn)成Modbus TCP或OPC UA再進(jìn)交換機(jī)。初期規(guī)劃時(shí)一定要先盤點(diǎn)設(shè)備接口我見(jiàn)過(guò)不少方案畫得好好的到現(xiàn)場(chǎng)發(fā)現(xiàn)一半設(shè)備沒(méi)有網(wǎng)口只能現(xiàn)場(chǎng)加裝轉(zhuǎn)換器成本直接翻倍。這里給一個(gè)實(shí)際的交換機(jī)配置片段以華為設(shè)備為例把設(shè)備網(wǎng)端口劃到對(duì)應(yīng)VLAN里防止跨區(qū)域訪問(wèn)。# 進(jìn)入系統(tǒng)視圖批量創(chuàng)建VLAN system-view vlan batch 10 20 30 40 50 # 把數(shù)控車床區(qū)的設(shè)備端口劃到VLAN 30 interface GigabitEthernet0/0/1 port link-type access port default vlan 30 quit # 把采集服務(wù)器所在的工控網(wǎng)端口劃到VLAN 20 interface GigabitEthernet0/0/24 port link-type access port default vlan 20 quit # 辦公網(wǎng)和工控網(wǎng)之間啟用ACL只放行特定端口 acl number 3001 rule 5 permit tcp source 192.168.20.0 0.0.0.255 destination 192.168.30.0 0.0.0.255 dport 4840這段配置看著簡(jiǎn)單但有三個(gè)細(xì)節(jié)容易被坑。第一VLAN 30的設(shè)備網(wǎng)和VLAN 20的工控網(wǎng)之間ACL一定要精確到端口否則工控網(wǎng)里的進(jìn)程掃描會(huì)順著設(shè)備網(wǎng)跑到機(jī)床的控制器上輕則報(bào)警重則把系統(tǒng)搞死。第二設(shè)備網(wǎng)的網(wǎng)關(guān)地址不要用交換機(jī)自身的三層接口最好單獨(dú)起一個(gè)虛擬接口不然設(shè)備和MES服務(wù)器之間的路由會(huì)混亂。第三每個(gè)區(qū)域的交換機(jī)上要開(kāi)STP邊緣端口防止有人亂插網(wǎng)線導(dǎo)致環(huán)路這一點(diǎn)不做生產(chǎn)時(shí)間突然全網(wǎng)卡頓是家常便飯。2.2 數(shù)據(jù)采集方案選型OPC UA、工業(yè)網(wǎng)關(guān)還是直連數(shù)據(jù)庫(kù)設(shè)備數(shù)據(jù)采集方案層面有三種典型路子各有利弊。第一種是用OPC UA直接連數(shù)控系統(tǒng)或PLC適合新設(shè)備、協(xié)議開(kāi)放、帶寬足夠的場(chǎng)景數(shù)據(jù)點(diǎn)可以細(xì)化到主軸負(fù)載、進(jìn)給倍率、伺服電流這些底層信號(hào)。第二種是用工業(yè)網(wǎng)關(guān)專門對(duì)付老設(shè)備和不開(kāi)放的協(xié)議網(wǎng)關(guān)把Modbus、Profibus、甚至串口數(shù)據(jù)統(tǒng)一成JSON或MQTT發(fā)給上層好處是隔離風(fēng)險(xiǎn)壞處是多一道硬件延遲略有增加。第三種是直接連設(shè)備的數(shù)據(jù)庫(kù)比如某些國(guó)產(chǎn)系統(tǒng)自帶SQL Server接口可以定時(shí)讀表但這只適合數(shù)據(jù)量小、實(shí)時(shí)性要求不高的場(chǎng)景而且容易把生產(chǎn)庫(kù)讀卡死一般我不推薦。這里給一個(gè)對(duì)比表方便在方案階段跟甲方評(píng)審采集方式適用設(shè)備實(shí)時(shí)性改造成本風(fēng)險(xiǎn)點(diǎn)OPC UA直連新數(shù)控系統(tǒng)/PLC高毫秒級(jí)低軟件配置需要開(kāi)放UA接口工業(yè)網(wǎng)關(guān)老設(shè)備/私有協(xié)議中數(shù)百毫秒中硬件加實(shí)施網(wǎng)關(guān)故障影響整段直連數(shù)據(jù)庫(kù)帶數(shù)據(jù)庫(kù)的系統(tǒng)低秒級(jí)低有鎖表、卡頓風(fēng)險(xiǎn)在徐工傳動(dòng)這種有多品種、多年代設(shè)備的工廠里典型組合是新機(jī)床走OPC UA老機(jī)床加網(wǎng)關(guān)檢測(cè)設(shè)備直接網(wǎng)口采集最后統(tǒng)一匯聚到數(shù)據(jù)中臺(tái)。這一套數(shù)據(jù)管理方案是整個(gè)智能工廠數(shù)據(jù)管理方案的入口數(shù)據(jù)采不上來(lái)后面所有分析都白搭。方案PPT里寫“數(shù)據(jù)采集率98%”實(shí)際能做到90%就不錯(cuò)了剩下的要么是設(shè)備太老沒(méi)有接口要么是涉密設(shè)備不讓接。所以選型階段不要把“全部接入”作為承諾要寫“可接入率”給自己留一條退路。2.3 用Python搭一個(gè)OPC UA采集服務(wù)參數(shù)怎么設(shè)選定了OPC UA落地時(shí)最常用的方式是寫一個(gè)輕量采集服務(wù)。我一般會(huì)用一個(gè)Python腳本跑在工控網(wǎng)的采集服務(wù)器上定時(shí)從設(shè)備端OPC UA服務(wù)器讀數(shù)據(jù)點(diǎn)然后寫入數(shù)據(jù)中臺(tái)或MES的數(shù)據(jù)庫(kù)。from opcua import Client import time, json import pymysql # 連接車間數(shù)控機(jī)床的OPC UA服務(wù)器 client Client(opc.tcp://192.168.30.11:4840) client.session_timeout 30000 # 會(huì)話超時(shí)30秒 client.connect() # 讀取主軸負(fù)載、進(jìn)給率、故障代碼三個(gè)數(shù)據(jù)點(diǎn) spindle_load client.get_node(ns2;sMachine.Spindle.Load).get_value() feed_rate client.get_node(ns2;sMachine.Feed.Rate).get_value() alarm_code client.get_node(ns2;sMachine.Alarm.Code).get_value() # 通過(guò)批量參數(shù)寫入MySQL注意要用參數(shù)化查詢防止注入 sql INSERT INTO device_data(machine_id, spindle_load, feed_rate, alarm_code) VALUES(%s,%s,%s,%s) data (MC-01, int(spindle_load), round(feed_rate, 2), str(alarm_code)) # 此處省略連接池和異常處理正式環(huán)境必須加斷線重連 print(json.dumps({load: spindle_load, feed: feed_rate, alarm: alarm_code}))這段代碼邏輯很簡(jiǎn)單建立會(huì)話讀節(jié)點(diǎn)寫庫(kù)。真正的坑在參數(shù)設(shè)置。client.session_timeout要設(shè)得比采集周期長(zhǎng)比如采集間隔是10秒超時(shí)就得設(shè)30秒以上不然網(wǎng)絡(luò)稍微抖動(dòng)就掉線。設(shè)備側(cè)的OPC UA節(jié)點(diǎn)路徑也不是隨意猜的要從設(shè)備商的XML描述文件里導(dǎo)入或者用UaExpert之類的工具先探一遍真實(shí)節(jié)點(diǎn)否則一遍遍報(bào)BadNodeIdUnknown純屬白費(fèi)力。采集周期也要按信號(hào)類型區(qū)分。主軸負(fù)載這種快變量建議2到5秒采一次刀具壽命這種慢變量一小時(shí)采一次已經(jīng)足夠故障代碼必須毫秒級(jí)訂閱用OPC UA的訂閱機(jī)制而不是輪詢不然報(bào)警丟了后面質(zhì)量追溯就少了一環(huán)。這里我踩過(guò)一次主軸負(fù)載用5秒輪詢恰好一次刀具崩刃的沖擊只持續(xù)了1秒事后分析故障原因時(shí)數(shù)據(jù)里根本沒(méi)有那個(gè)尖峰完全黑匣子。3. 傳動(dòng)件加工線體的數(shù)字化改造從設(shè)備點(diǎn)表到運(yùn)行狀態(tài)可視化3.1 設(shè)備數(shù)據(jù)點(diǎn)表是怎么設(shè)計(jì)的網(wǎng)絡(luò)通了、采集服務(wù)跑起來(lái)下一步是把采集的點(diǎn)整理成一張數(shù)據(jù)點(diǎn)表。這張表是整個(gè)智能工廠數(shù)據(jù)管理方案的靈魂。沒(méi)有點(diǎn)表后期做看板、做追溯、做預(yù)測(cè)全都無(wú)從下手。點(diǎn)表不是設(shè)備廠商給的說(shuō)明書里抄一遍而是按業(yè)務(wù)需求反向梳理。比如徐工傳動(dòng)里一條典型齒輪加工線包括數(shù)控車床、滾齒機(jī)、磨齒機(jī)、熱處理爐和檢測(cè)機(jī)。對(duì)于磨齒機(jī)業(yè)務(wù)部門關(guān)心的是磨削主軸負(fù)載判斷砂輪鈍化、冷卻液溫度判斷熱變形、每次磨削的尺寸反饋判斷精度穩(wěn)定。對(duì)于熱處理爐關(guān)心的是爐溫曲線、碳勢(shì)、運(yùn)行時(shí)長(zhǎng)。每一個(gè)關(guān)心的業(yè)務(wù)問(wèn)題對(duì)應(yīng)至少一個(gè)數(shù)據(jù)點(diǎn)然后再去設(shè)備端找這個(gè)點(diǎn)的地址或節(jié)點(diǎn)路徑。我會(huì)把點(diǎn)表設(shè)計(jì)成多列每個(gè)字段都對(duì)應(yīng)一個(gè)業(yè)務(wù)查詢維度設(shè)備編號(hào)點(diǎn)位名稱類型采集周期報(bào)警上限報(bào)警下限單位協(xié)議地址M-01主軸負(fù)載Float3s850%ns2;sMC.Spindle.LoadM-01進(jìn)給倍率Int3s1200%40001M-02冷卻液溫度Float10s5515℃40050F-01爐溫Float5s950800℃40010這里面的關(guān)鍵參數(shù)是“采集周期”不是所有點(diǎn)都越快越好。數(shù)據(jù)太多存儲(chǔ)壓力和網(wǎng)絡(luò)帶寬都會(huì)被拖垮數(shù)據(jù)太少分析就失去價(jià)值。一個(gè)傳動(dòng)軸車間的經(jīng)驗(yàn)值一般控制在每臺(tái)設(shè)備15到30個(gè)核心點(diǎn)總數(shù)據(jù)量在每秒幾十條以內(nèi)。報(bào)警上下限設(shè)得松一點(diǎn)先讓系統(tǒng)跑起來(lái)然后每周根據(jù)報(bào)警記錄收緊避免剛開(kāi)始就天天誤報(bào)、車間直接把這套系統(tǒng)拉黑。3.2 老設(shè)備用Modbus TCP采集一次解決舊機(jī)床聯(lián)網(wǎng)問(wèn)題現(xiàn)場(chǎng)一定有大量無(wú)法升級(jí)OPC UA的老設(shè)備最常見(jiàn)的是只有Modbus RTU串口或Modbus TCP接口的機(jī)床、變頻器和儀表。這種情況下先加一個(gè)串口服務(wù)器或協(xié)議網(wǎng)關(guān)把RS485轉(zhuǎn)成以太網(wǎng)然后用Modbus TCP去讀保持寄存器。下面是我常用的一個(gè)采集腳本片段帶斷線重連和超時(shí)處理。from pymodbus.client.sync import ModbusTcpClient import time client ModbusTcpClient(192.168.40.21, port502, timeout3) if not client.connect(): raise RuntimeError(設(shè)備連接失敗檢查網(wǎng)關(guān)IP和端口) # 讀取起始寄存器地址100連續(xù)讀10個(gè)字比如主軸電流、進(jìn)給速度等 rr client.read_holding_registers(100, 10, unit1) if rr.isError(): print(Modbus讀取錯(cuò)誤: 地址或數(shù)量越界) else: currents rr.registers print(主軸電流: {} A, 進(jìn)給速度: {} mm/s.format(currents[0]/10.0, currents[1]/1000.0)) client.close()Modbus采集的參數(shù)要特別注意三組。第一組是“unit”設(shè)備地址多臺(tái)串口設(shè)備掛在同一總線上時(shí)每臺(tái)必須設(shè)成不同的unit否則數(shù)據(jù)全亂。第二組是寄存器地址映射不同廠商的說(shuō)明書里地址100可能代表電流也可能代表電壓而且有的從1開(kāi)始、有的從0開(kāi)始一定要用Modbus調(diào)試工具先讀一遍確認(rèn)別信書面的“地址表”那玩意兒經(jīng)常錯(cuò)。第三組是寄存器里的數(shù)據(jù)精度很多值要除以10或除以100才是真實(shí)物理量我見(jiàn)過(guò)有人忘了做換算導(dǎo)致看板上的主軸負(fù)載顯示成幾千的。網(wǎng)關(guān)和采集服務(wù)器之間的網(wǎng)絡(luò)參數(shù)最容易被忽視的是超時(shí)時(shí)間。Modbus TCP的超時(shí)一般設(shè)2到5秒太短會(huì)頻繁報(bào)連接失敗太長(zhǎng)會(huì)讓采集線程卡死。同時(shí)要給網(wǎng)關(guān)做心跳檢測(cè)用ping或Modbus固定讀一個(gè)靜態(tài)點(diǎn)一旦連續(xù)3次不通就報(bào)警不然設(shè)備壞了你都不知道等到做產(chǎn)量統(tǒng)計(jì)時(shí)才發(fā)現(xiàn)數(shù)據(jù)斷了好幾天。3.3 運(yùn)行狀態(tài)可視化選取哪些指標(biāo)才不會(huì)做成“假看板”數(shù)據(jù)采上來(lái)管理層最想看到的是車間大屏。但很多人把大屏做成了一堆曲線和數(shù)字的大雜燴車間主任瞟一眼就再也不看了。真正有用的看板指標(biāo)要圍繞三個(gè)問(wèn)題設(shè)備現(xiàn)在能不能干活這一班產(chǎn)了多少哪些環(huán)節(jié)在拖后腿所以第一屏只放三個(gè)核心指標(biāo)OEE設(shè)備綜合效率、實(shí)時(shí)開(kāi)動(dòng)率、在制品數(shù)量。OEE的計(jì)算不是光靠設(shè)備狀態(tài)要同時(shí)采產(chǎn)量信號(hào)和理論節(jié)拍。比如一條磨齒線理論節(jié)拍是每件5分鐘設(shè)備在上午10點(diǎn)到11點(diǎn)切了10件但中間有20分鐘停機(jī)那這個(gè)小時(shí)的OEE就是10件乘以5分鐘除以60分鐘再乘以合格率差不多是83%。這些參數(shù)必須在方案階段和車間核對(duì)清楚節(jié)拍取設(shè)計(jì)值還是實(shí)際均值目標(biāo)OEE是85%還是90%直接影響設(shè)備是否會(huì)被判定為低效。還有一個(gè)常被忽略的指標(biāo)是“刀具剩余壽命”。傳動(dòng)件加工里刀具磨損是影響精度和停機(jī)的頭號(hào)因素。采集主軸負(fù)載和加工件數(shù)再用簡(jiǎn)單算法估算刀具壽命比純靠操作工經(jīng)驗(yàn)可靠得多。算法不需要多復(fù)雜就是統(tǒng)計(jì)每次磨削的累積負(fù)載沖量超過(guò)閾值就提前預(yù)警換刀。這把“事后故障”變成了“事前干預(yù)”是智能工廠方案里最能打動(dòng)車間的一個(gè)點(diǎn)。4. 制造執(zhí)行與智能排產(chǎn)讓計(jì)劃跟著設(shè)備狀態(tài)說(shuō)話4.1 MES與ERP/PLM的數(shù)據(jù)接口先理清訂單、BOM與工藝路線設(shè)備數(shù)據(jù)流打通只解決了“看得見(jiàn)”的問(wèn)題最復(fù)雜的是“排得順”。傳動(dòng)件工廠的工單來(lái)自ERP工藝路線在PLM里而執(zhí)行層要交給MES。這三套系統(tǒng)的數(shù)據(jù)接口設(shè)計(jì)是智能工廠方案里最容易扯皮的部分。首先要明確一個(gè)原則主數(shù)據(jù)必須統(tǒng)一以PLM里的工藝路線為準(zhǔn)ERP里的訂單只負(fù)責(zé)數(shù)量和交期MES里的工單要同時(shí)引用兩者。接口設(shè)計(jì)上我建議用消息隊(duì)列異步傳輸而不是讓MES直接查ERP數(shù)據(jù)庫(kù)。ERP把訂單號(hào)、產(chǎn)品編碼、數(shù)量、交期推送到MQPLM把工藝路線和BOM推送到MQMES訂閱后生成可執(zhí)行工單。這樣任何一套系統(tǒng)掛掉都不會(huì)馬上影響另外兩套。這里要給每個(gè)編碼統(tǒng)一規(guī)則比如產(chǎn)品編碼用12位批次號(hào)用“年月日產(chǎn)線序號(hào)”組成。徐工傳動(dòng)的產(chǎn)品多品種小批量批號(hào)規(guī)則一旦定錯(cuò)后續(xù)追溯就亂了。我見(jiàn)過(guò)一個(gè)工廠批號(hào)規(guī)則里有中文到了MES里字符集一亂全部顯示亂碼追了三天才發(fā)現(xiàn)是編碼規(guī)范的問(wèn)題。所以接口設(shè)計(jì)的第一步不是畫架構(gòu)圖是拉著IT和工藝部門開(kāi)會(huì)把編碼規(guī)范、字段字典、狀態(tài)流轉(zhuǎn)圖這三樣?xùn)|西定死后面才能少吵架。4.2 智能排產(chǎn)算法的最小實(shí)現(xiàn)用貪心規(guī)則先跑起來(lái)很多方案里寫“高級(jí)排產(chǎn)APS”一上來(lái)就上遺傳算法最后項(xiàng)目爛尾。對(duì)傳動(dòng)件這種多工序離散產(chǎn)線我的建議是先做優(yōu)先級(jí)規(guī)則排產(chǎn)再逐步迭代到智能算法。最小可用的排產(chǎn)邏輯其實(shí)不復(fù)雜按交期緊迫度、設(shè)備負(fù)載均衡、換型次數(shù)最少三個(gè)維度排隊(duì)。下面是一段用Python寫的規(guī)則引擎骨架按交期緊迫度排序并考慮設(shè)備負(fù)載。import heapq from dataclasses import dataclass from typing import List dataclass class WorkOrder: order_id: str product: str quantity: int due_time: int remaining_hours: float def dispatch_by_priority(orders: List[WorkOrder], machine_load: dict): # 先把訂單按剩余時(shí)間除以剩余工時(shí)的“緊迫度”排列 heap [] for order in orders: urgency (order.due_time - 0) / max(order.remaining_hours, 0.1) heapq.heappush(heap, (urgency, order.order_id, order)) while heap: _, _, order heapq.heappop(heap) # 找到當(dāng)前負(fù)載最小的設(shè)備 best_machine min(machine_load, keylambda m: machine_load[m]) machine_load[best_machine] order.remaining_hours print(f派工單 {order.order_id} 給 {best_machine}設(shè)備負(fù)載 {machine_load[best_machine]:.1f} 小時(shí))這個(gè)骨架很簡(jiǎn)單但它已經(jīng)能實(shí)現(xiàn)“缺什么做什么”的核心功能。真正的排產(chǎn)系統(tǒng)要在這個(gè)基礎(chǔ)上增加換型時(shí)間、工序約束和物料齊套檢查。參數(shù)上機(jī)器負(fù)載的初始值應(yīng)該來(lái)自MES實(shí)時(shí)狀態(tài)而不是排產(chǎn)時(shí)刻的靜態(tài)值否則排產(chǎn)結(jié)果和現(xiàn)場(chǎng)完全對(duì)不上。智能排產(chǎn)在參數(shù)調(diào)優(yōu)上最重要的兩個(gè)參數(shù)是“緊迫度權(quán)重”和“換型懲罰值”。如果權(quán)重太高會(huì)發(fā)現(xiàn)所有訂單都在搶同一臺(tái)設(shè)備線上其他設(shè)備閑置換型懲罰太高小批量訂單會(huì)被無(wú)限壓后。一般我會(huì)把換型時(shí)間超過(guò)30分鐘作為懲罰閾值并給每個(gè)設(shè)備設(shè)一個(gè)最大負(fù)載百分比比如85%一旦超過(guò)就不再分配新任務(wù)。這個(gè)85%不是拍腦袋是從車間歷史數(shù)據(jù)里統(tǒng)計(jì)出來(lái)的設(shè)備負(fù)載超過(guò)85%后故障率和計(jì)劃外停機(jī)概率會(huì)顯著上升。4.3 插單與異常處理排產(chǎn)方案要預(yù)留“后悔藥”現(xiàn)場(chǎng)沒(méi)有不變的計(jì)劃。設(shè)備故障、來(lái)料延誤、急件插單都是常態(tài)。智能排產(chǎn)方案必須預(yù)留插單邏輯不然排產(chǎn)結(jié)果只能存在PPT里。我見(jiàn)過(guò)的做法是系統(tǒng)里區(qū)分硬插單和軟調(diào)單。硬插單是領(lǐng)導(dǎo)電話拍板的急件直接占當(dāng)前設(shè)備優(yōu)先級(jí)設(shè)為100軟調(diào)單是普通插單通過(guò)重新跑一遍排產(chǎn)引擎計(jì)算。關(guān)鍵參數(shù)是“最小排產(chǎn)周期”比如每30分鐘重新排一次未來(lái)8小時(shí)的計(jì)劃而不是每天只排一次。這樣才能消化現(xiàn)場(chǎng)擾動(dòng)。算法要保留上一次排產(chǎn)結(jié)果做差異對(duì)比避免計(jì)劃大起大落。否則訂單剛下整個(gè)產(chǎn)線計(jì)劃全部重排操作工變來(lái)變?nèi)プ詈笠欢〞?huì)被集體抵制。5. 避坑與常見(jiàn)問(wèn)題從61頁(yè)P(yáng)PT到車間落地這些坑繞不開(kāi)5.1 現(xiàn)象辦公網(wǎng)和工控網(wǎng)一打通車間全都掉線數(shù)據(jù)采集中斷原因很多工廠為了遠(yuǎn)程看監(jiān)控直接把辦公網(wǎng)和工控網(wǎng)用交換機(jī)串接沒(méi)有做VLAN隔離和防火墻設(shè)備網(wǎng)里的廣播報(bào)文、老式工控機(jī)的病毒直接把整個(gè)網(wǎng)絡(luò)的帶寬占滿。解決強(qiáng)制重置網(wǎng)絡(luò)架構(gòu)辦公網(wǎng)、工控網(wǎng)、設(shè)備網(wǎng)嚴(yán)格劃分VLAN三層交換機(jī)上做ACL只放行特定的IP和端口。設(shè)備網(wǎng)里所有采集服務(wù)要么在工控網(wǎng)內(nèi)獨(dú)立部署要么通過(guò)工業(yè)防火墻做白名單通信。做完之后用抓包工具連續(xù)觀察一周重點(diǎn)看是否有跨VLAN的異常廣播。5.2 現(xiàn)象設(shè)備數(shù)據(jù)采上來(lái)了但MES里的產(chǎn)量和設(shè)備真實(shí)計(jì)數(shù)對(duì)不上差一大截原因采集的計(jì)數(shù)信號(hào)來(lái)源不對(duì)比如有的設(shè)備產(chǎn)量信號(hào)是PLC里的刀具計(jì)數(shù)有的是機(jī)床的工件計(jì)數(shù)有的直接是傳感器觸發(fā)算的口徑完全不同。還有人把“設(shè)備啟動(dòng)”當(dāng)成“生產(chǎn)零件”輔助時(shí)間也算成了產(chǎn)量。解決數(shù)據(jù)點(diǎn)表里必須明確每個(gè)計(jì)數(shù)點(diǎn)的物理含義并和車間班組長(zhǎng)一起核對(duì)。建議在一條典型的加工線上做72小時(shí)對(duì)拍以人工紙質(zhì)記錄為準(zhǔn)校準(zhǔn)采集邏輯。比如數(shù)控車床可以按自動(dòng)循環(huán)次數(shù)計(jì)數(shù)磨齒機(jī)可以按完成的裝夾次數(shù)計(jì)數(shù)但前提是設(shè)備沒(méi)有空閑運(yùn)轉(zhuǎn)。5.3 現(xiàn)象APS排產(chǎn)模型跑出來(lái)了車間主任根本不用還是靠Excel手工排原因排產(chǎn)模型不懂現(xiàn)場(chǎng)約束比如某些設(shè)備只能加工特定材料、某些操作工只會(huì)操作某幾臺(tái)機(jī)床、某些時(shí)段要保檢修。模型排出來(lái)的計(jì)劃看似最優(yōu)實(shí)際執(zhí)行不了。解決排產(chǎn)模型要把資源約束、人員技能、工裝夾具都作為硬約束。上線初期不要追求最優(yōu)先讓排產(chǎn)結(jié)果覆蓋80%的常規(guī)場(chǎng)景剩下的異常情況由計(jì)劃員手動(dòng)調(diào)整系統(tǒng)記錄每次手工調(diào)整的差異用這些差異去優(yōu)化規(guī)則參數(shù)。讓計(jì)劃員參與規(guī)則設(shè)定而不是直接甩一個(gè)黑匣子模型給他們。5.4 現(xiàn)象刀具壽命預(yù)測(cè)模型反復(fù)誤報(bào)換刀頻率反而升高停機(jī)更多原因預(yù)測(cè)模型只基于主軸負(fù)載平均值沒(méi)有考慮加工材料和轉(zhuǎn)速變化。傳動(dòng)件常有重載切削和精加工的混合工序負(fù)載均值在精加工時(shí)低模型誤判為磨損頻繁觸發(fā)換刀。解決模型輸入要分段把同一把刀具按不同工序分開(kāi)統(tǒng)計(jì)。或者引入電流信號(hào)的RMS值和頻譜特征不只看平均值。最重要的參數(shù)是“報(bào)警閾值”要分層黃色預(yù)警、橙色警告、紅色強(qiáng)制。預(yù)警值設(shè)置保守一點(diǎn)強(qiáng)制值采用歷史數(shù)據(jù)的95分位。這樣既不會(huì)總停線又能在真正崩刃前報(bào)警。5.5 現(xiàn)象方案階段畫的數(shù)字化看板非常炫上線后車間主任說(shuō)沒(méi)參考價(jià)值沒(méi)人再看原因看板選了很多和現(xiàn)場(chǎng)脫節(jié)的指標(biāo)比如把全球OEE、庫(kù)存周轉(zhuǎn)率放上去但現(xiàn)場(chǎng)需要的是“當(dāng)前正在加工哪個(gè)訂單、還剩多少分鐘切換”。大數(shù)據(jù)看板成了管理層的面子屏不是操作工的作業(yè)屏。解決看板要分層設(shè)計(jì)。車間大屏放產(chǎn)線級(jí)實(shí)時(shí)狀態(tài)和異常報(bào)警工位屏放當(dāng)前訂單、工藝參數(shù)、操作指導(dǎo)。指標(biāo)要能支撐日常決策工位屏必須顯示“下一件是什么”而不是一堆花哨的歷史趨勢(shì)圖。我自己做過(guò)一次這種面子屏最后被車間扔在角落里接灰從那以后任何看板需求都要先問(wèn)一句誰(shuí)看看完做什么這一條是血淚經(jīng)驗(yàn)。6. 把方案變成效益驗(yàn)證指標(biāo)與后續(xù)進(jìn)階路線智能工廠方案不能以“系統(tǒng)上線”為終點(diǎn)要以“業(yè)務(wù)指標(biāo)改善”為終點(diǎn)。給徐工傳動(dòng)這類離散制造工廠我會(huì)建議用三個(gè)月做一次指標(biāo)復(fù)盤。第一看OEE的變化是否從65%提升到75%以上第二看計(jì)劃達(dá)成率是否穩(wěn)定在90%以上第三看質(zhì)量問(wèn)題追溯時(shí)間是否從一周縮短到一天以內(nèi)。這三個(gè)指標(biāo)分別對(duì)應(yīng)數(shù)據(jù)采集、智能排產(chǎn)和質(zhì)量管理這三塊投入缺哪個(gè)就補(bǔ)哪里。進(jìn)階的方向是引入數(shù)字孿生和AI預(yù)測(cè)但前提是前兩步做得扎實(shí)。剛開(kāi)始不要碰大模型先把A3報(bào)告、魚(yú)骨圖這些現(xiàn)場(chǎng)分析習(xí)慣保存下來(lái)用機(jī)器學(xué)習(xí)去做刀具壽命、設(shè)備健康度的預(yù)測(cè)才有足夠的歷史數(shù)據(jù)可訓(xùn)練。但要注意預(yù)測(cè)模型的性能要通過(guò)混淆矩陣和提前期來(lái)衡量不能只看準(zhǔn)確率我見(jiàn)過(guò)把模型調(diào)成只在報(bào)警器自身故障時(shí)才報(bào)警的情況形同虛設(shè)。最后說(shuō)一句我個(gè)人的教訓(xùn)凡是PPT里寫“全自動(dòng)化、無(wú)人化”的工廠項(xiàng)目十有八九第一年都要回退半步做半自動(dòng)。不要一次把所有功能都鋪開(kāi)最穩(wěn)的打法是先打通一條完整的生產(chǎn)線從采集、看板、到排產(chǎn)閉環(huán)跑通跑穩(wěn)再橫向復(fù)制。這樣每一期的收益是看得見(jiàn)的投入也更容易被認(rèn)可。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取