PLC只能算L1?PLC Coding五級(jí)能力模型解讀與工程師實(shí)戰(zhàn)指南)
最近工業(yè)自動(dòng)化圈子里聊得最熱鬧的話題不是哪家新出了旗艦PLC也不是誰(shuí)的伺服又把響應(yīng)帶寬拉高了幾毫秒而是AI到底能不能進(jìn)車間、能不能寫(xiě)PLC程序。我自己也拿市面上的幾款A(yù)I工具試過(guò)讓它寫(xiě)個(gè)電機(jī)正反轉(zhuǎn)、寫(xiě)個(gè)星三角啟動(dòng)看起來(lái)確實(shí)有模有樣注釋齊全格式規(guī)范甚至比不少入門工程師寫(xiě)得還整潔。但如果真讓我拿它生成的程序去帶一套產(chǎn)線我肯定不敢原因后面詳細(xì)說(shuō)。正好RealPLC那邊提了個(gè)說(shuō)法AI寫(xiě)PLC程序目前只能算L1配套還有一個(gè)PLC Coding五級(jí)能力模型。這套模型一出來(lái)我覺(jué)得終于有人把“AI寫(xiě)PLC到底行不行”這個(gè)模糊問(wèn)題給結(jié)構(gòu)化了。下面我就拿這套模型當(dāng)尺子把AI在PLC領(lǐng)域的現(xiàn)狀、以及一線工程師該怎么用它一次說(shuō)清楚。這個(gè)內(nèi)容適合三類人看一是正在糾結(jié)要不要用AI提效的PLC工程師二是帶團(tuán)隊(duì)做項(xiàng)目、想給新人定標(biāo)準(zhǔn)的技術(shù)負(fù)責(zé)人三是對(duì)工業(yè)自動(dòng)化和AI結(jié)合感興趣但還沒(méi)摸到門路的人。放心我不會(huì)只念概念我會(huì)把五級(jí)模型拆開(kāi)每一級(jí)對(duì)應(yīng)什么場(chǎng)景、現(xiàn)在的AI能做到什么程度、我們?cè)诂F(xiàn)場(chǎng)踩過(guò)哪些坑都拿出來(lái)講透。1. 先把這事放回一線現(xiàn)場(chǎng)AI寫(xiě)PLC到底意味著什么1.1 “能寫(xiě)代碼”和“能交付程序”之間的差距我去年帶過(guò)一個(gè)項(xiàng)目客戶要求把一臺(tái)老設(shè)備的繼電器邏輯改成PLC控制。團(tuán)隊(duì)里有個(gè)年輕同事覺(jué)得這活兒太簡(jiǎn)單了直接把控制要求丟給AI幾分鐘就生成了一段ST程序邏輯上看著完全對(duì)。但真到現(xiàn)場(chǎng)調(diào)試的時(shí)候問(wèn)題全冒出來(lái)了輸入信號(hào)抖動(dòng)沒(méi)做濾波急?;芈窙](méi)有按常閉點(diǎn)來(lái)設(shè)計(jì)氣缸到位信號(hào)比預(yù)設(shè)時(shí)間早退出了報(bào)警記錄也沒(méi)有。從“代碼正確”到“現(xiàn)場(chǎng)能跑”中間隔著的不是幾行邏輯而是十幾年才能攢下來(lái)的現(xiàn)場(chǎng)經(jīng)驗(yàn)。這就是為什么L1這個(gè)詞一出來(lái)很多老工程師直點(diǎn)頭。AI寫(xiě)出來(lái)的程序可能語(yǔ)法沒(méi)有錯(cuò)誤指令也都合法但它更像一個(gè)“答案正確但沒(méi)有過(guò)程分”的作業(yè)。PLC程序的本質(zhì)是“事件的時(shí)序控制”它要考慮掃描周期、信號(hào)的上升沿下降沿、通訊超時(shí)、故障停車順序、手自動(dòng)切換狀態(tài)——這些知識(shí)在現(xiàn)場(chǎng)老師傅腦子里根本不出現(xiàn)在任何一本編程手冊(cè)里。AI靠大模型能學(xué)到手冊(cè)和代碼倉(cāng)庫(kù)里的“標(biāo)準(zhǔn)答案”卻學(xué)不到設(shè)備交付后第127天才出現(xiàn)的偶發(fā)報(bào)警也學(xué)不到某個(gè)傳感器老化后信號(hào)變慢的微妙手感。所以別一看到AI能生成梯形圖就覺(jué)得天塌了也別覺(jué)得它就是個(gè)玩具。正確的態(tài)度是把它當(dāng)成一個(gè)“能力很強(qiáng)但缺乏現(xiàn)場(chǎng)常識(shí)的實(shí)習(xí)生”它寫(xiě)的代碼看著合理但你必須校核、必須試、必須替它兜底。1.2 為什么說(shuō)到“只能算L1”時(shí)大家反而覺(jué)得客觀我這個(gè)圈子里的朋友對(duì)AI寫(xiě)PLC的看法一直兩極分化。一方覺(jué)得AI早晚要取代一部分編程崗另一方覺(jué)得AI生成的程序就是垃圾完全不能用。但RealPLC這個(gè)五級(jí)模型一出來(lái)我發(fā)現(xiàn)兩邊居然都能接受“L1”這個(gè)定位。認(rèn)為AI行的那撥人點(diǎn)頭是因?yàn)長(zhǎng)1確實(shí)承認(rèn)AI能生成代碼了而且生成質(zhì)量在提升覺(jué)得AI不行的那撥人也點(diǎn)頭是因?yàn)槟P兔鞔_告訴你能寫(xiě)代碼只是最底層的能力距離交付一個(gè)可靠的控制系統(tǒng)還差得遠(yuǎn)。這種“分級(jí)”的處理方式把討論從“AI行不行”拉到了“AI到底行在哪一層、不行在哪一層”從情緒變成了標(biāo)準(zhǔn)。我做項(xiàng)目這些年最怕的不是技術(shù)問(wèn)題是預(yù)期管理問(wèn)題。老板以為AI能做到的事和AI實(shí)際能做到的事中間落差一大項(xiàng)目就難推進(jìn)了。有個(gè)老板拿著AI生成的程序去投標(biāo)他以為那就是完整方案我一看缺了十幾處聯(lián)鎖差點(diǎn)出事。所以一個(gè)清晰的能力分級(jí)對(duì)非技術(shù)出身的決策者同樣重要它能把“AI很厲害”這種空泛概念轉(zhuǎn)化為“它現(xiàn)在只能承擔(dān)這部分工作而且產(chǎn)出必須人工審核”的明確邊界。1.3 這套模型解決了我最頭疼的一個(gè)問(wèn)題該怎么評(píng)價(jià)AI以前有人問(wèn)我“AI寫(xiě)PLC到底行不行”我真的很難回答因?yàn)椤靶胁恍小边@個(gè)概念太寬了。你是問(wèn)它能不能寫(xiě)出一段語(yǔ)法正確的代碼還是問(wèn)它能不能完成一套設(shè)備從設(shè)計(jì)到交付還是問(wèn)它能不能在設(shè)備運(yùn)行三個(gè)月后根據(jù)數(shù)據(jù)優(yōu)化節(jié)拍這些問(wèn)題的答案完全不同。五級(jí)模型的價(jià)值就在于它給了我們一個(gè)坐標(biāo)軸L1代碼生成、L2代碼理解與維護(hù)、L3工藝方案設(shè)計(jì)、L4系統(tǒng)集成與優(yōu)化、L5自主工程與生命周期優(yōu)化。沿著這個(gè)坐標(biāo)軸你可以精確回答“AI目前在哪個(gè)位置”“我們團(tuán)隊(duì)該在哪一層用它”“用完之后要做什么樣的審核”。說(shuō)白了它把AI從“玄學(xué)”變成了“可以被管理和驗(yàn)收的工具”。我認(rèn)為這才是它最值得工程師關(guān)注的地方。2. PLC Coding五級(jí)能力模型一份寫(xiě)給工程師的分級(jí)標(biāo)準(zhǔn)2.1 五級(jí)模型總覽我按自己的理解把這套模型展開(kāi)了一下如果你去查RealPLC的原始發(fā)布材料表述可能有細(xì)微出入但遞進(jìn)邏輯基本是沿這個(gè)方向走的。先看總表等級(jí)能力定位典型產(chǎn)出物核心輸入交付可靠性L1代碼生成指令片段、功能塊、ST/梯形圖邏輯文字需求、IO點(diǎn)表語(yǔ)法可過(guò)邏輯需人工校核L2代碼理解與維護(hù)程序注釋、邏輯說(shuō)明、故障診斷、跨語(yǔ)言翻譯已有代碼/工程文件可輔助排查結(jié)論需驗(yàn)證L3工藝方案設(shè)計(jì)基于工藝時(shí)序的控制方案、報(bào)警/聯(lián)鎖清單、狀態(tài)機(jī)工藝流程、設(shè)備清單、安全要求可作為設(shè)計(jì)底稿需聯(lián)合評(píng)審L4系統(tǒng)集成與優(yōu)化多PLC協(xié)同、通訊配置、上位機(jī)映射、參數(shù)優(yōu)化建議完整系統(tǒng)和網(wǎng)絡(luò)描述可輔助實(shí)施關(guān)鍵配置需現(xiàn)場(chǎng)驗(yàn)證L5自主工程與生命周期優(yōu)化從方案到交付的完整工程實(shí)施含仿真驗(yàn)證、預(yù)測(cè)性維護(hù)需求文檔、歷史運(yùn)行數(shù)據(jù)需閉環(huán)驗(yàn)證手段當(dāng)前遠(yuǎn)未達(dá)到這套模型最巧妙的地方是把“能不能寫(xiě)代碼”放在了最低層級(jí)。你可能覺(jué)得奇怪編程編程寫(xiě)代碼不是核心嗎但在真實(shí)的PLC項(xiàng)目里寫(xiě)代碼只是很小一部分。需求確認(rèn)、IO分配、電氣原理圖核對(duì)、通訊調(diào)試、現(xiàn)場(chǎng)試車、寫(xiě)成操作手冊(cè)——這些環(huán)節(jié)的工作量都不低。AI如果只會(huì)生成代碼它解決的其實(shí)是“工作量占比較小、但又最容易被看見(jiàn)”的那部分。2.2 L1和L2的區(qū)別到底是什么我拿寫(xiě)文章來(lái)打個(gè)比方L1是一個(gè)能寫(xiě)出通順句子的人你給它一個(gè)題目它能寫(xiě)出一段話L2是一個(gè)能讀懂整篇文章并做批注的人你給它一篇亂七八糟的老文章它能告訴你每段在講什么、哪里有邏輯硬傷、哪里可以改。放在PLC領(lǐng)域L1就是“按下啟動(dòng)按鈕電機(jī)運(yùn)轉(zhuǎn)按下停止按鈕電機(jī)停止”AI能給你生成對(duì)應(yīng)的梯形圖或者ST代碼。但實(shí)際維護(hù)場(chǎng)景里工程師遇到更多的往往不是寫(xiě)新程序而是接手一套沒(méi)有圖紙、沒(méi)有注釋、邏輯亂成一鍋粥的老設(shè)備。圖紙丟了原設(shè)計(jì)人員走了只有PLC里躺著一段看不出頭緒的代碼。這時(shí)候L2能力就非常值錢把老程序?qū)С鰜?lái)讓AI逐段解釋邏輯、生成注釋、標(biāo)注聯(lián)鎖關(guān)系甚至幫你把三菱的步進(jìn)梯形圖“翻譯”成更容易理解的流程圖說(shuō)明。我剛?cè)胄械臅r(shí)候接過(guò)一臺(tái)老設(shè)備的維護(hù)任務(wù)光看懂那段階梯程序就花了一周。如果當(dāng)時(shí)有具備L2能力的AI這一周至少能壓縮到半天。所以我在帶團(tuán)隊(duì)的時(shí)候一直強(qiáng)調(diào)L1解決的是“從無(wú)到有”L2解決的是“從有到懂”而對(duì)絕大多數(shù)企業(yè)來(lái)說(shuō)存量設(shè)備的維護(hù)才是日常大頭L2的價(jià)值很可能比L1更高。2.3 為什么L3才是“懂工藝”的分水嶺L3的核心是工藝方案設(shè)計(jì)。到了這一層AI就不再是“你說(shuō)一句它寫(xiě)一行代碼”的助手而是要求它能根據(jù)一套完整的工藝流程自主規(guī)劃控制策略。舉個(gè)例子一條灌裝線L1的AI能生成灌裝閥、氣缸、電機(jī)各自的獨(dú)立控制代碼但L3的AI必須明白整體邏輯——啟動(dòng)后先快灌接近目標(biāo)重量時(shí)切換成慢灌稱重信號(hào)穩(wěn)定后才能讓壓蓋氣缸動(dòng)作前一段堵料時(shí)后一段必須聯(lián)動(dòng)停止報(bào)警出現(xiàn)時(shí)設(shè)備要停在哪一步而不是直接掉電。這就是所謂“懂工藝”。它需要的不只是編程語(yǔ)法知識(shí)而是大量行業(yè)know-how灌裝頭的機(jī)械特性、傳感器的穩(wěn)定時(shí)間、輸送線緩存區(qū)的作用、不同物料的起泡特性對(duì)灌裝速度的影響。這些東西不會(huì)寫(xiě)在PLC編程手冊(cè)里也不會(huì)完整出現(xiàn)在任何代碼倉(cāng)庫(kù)中它藏在工藝工程師的腦子里藏在一遍遍試錯(cuò)形成的習(xí)慣里。在我看來(lái)L3是這套模型中最難跨越的一道坎也是AI短期內(nèi)最不可能真正的突破點(diǎn)。2.4 從L4到L5AI要補(bǔ)的課不只是“寫(xiě)程序”L4開(kāi)始進(jìn)入系統(tǒng)層面。它要面對(duì)的不再是一臺(tái)PLC而是由多臺(tái)PLC、HMI觸摸屏、視覺(jué)相機(jī)、伺服驅(qū)動(dòng)器、變頻器、上位監(jiān)控系統(tǒng)組成的完整系統(tǒng)。就拿我自己做過(guò)的項(xiàng)目來(lái)說(shuō)臺(tái)達(dá)PLC作為485從站串口參數(shù)怎么配置、從站地址怎么映射、站號(hào)沖突怎么避免信捷PLC作為Modbus TCP服務(wù)器和??迪鄼C(jī)通訊寄存器區(qū)和相機(jī)數(shù)據(jù)格式怎么對(duì)齊康耐視Insight相機(jī)和西門子PLC做Profinet通訊GSD文件和IO設(shè)備組態(tài)怎么加西門子PLC里的VD200在Intouch上位機(jī)里對(duì)應(yīng)什么地址怎么保證兩邊數(shù)據(jù)類型一致。這些都不是單純的代碼問(wèn)題而是工程系統(tǒng)問(wèn)題。到了L5AI幾乎等于一個(gè)“虛擬自動(dòng)化系統(tǒng)集成商”它要能理解需求文檔、自動(dòng)完成方案設(shè)計(jì)、生成代碼、跑虛擬仿真、生成調(diào)試報(bào)告、再根據(jù)運(yùn)行數(shù)據(jù)做預(yù)測(cè)性維護(hù)和工藝自優(yōu)化。要走到這一步前提是得有大量項(xiàng)目數(shù)據(jù)灌回模型里。而工業(yè)數(shù)據(jù)恰恰是最難獲取的——設(shè)備型號(hào)雜、協(xié)議私有多、現(xiàn)場(chǎng)不允許隨便采集。所以我判斷L5在很長(zhǎng)一段時(shí)間內(nèi)都只能是標(biāo)桿不是現(xiàn)實(shí)目標(biāo)。3. 拿模型當(dāng)尺子現(xiàn)在主流AI在PLC領(lǐng)域到底到了哪一級(jí)3.1 先說(shuō)L1的真實(shí)體驗(yàn)實(shí)驗(yàn)室里能用車間里要謹(jǐn)慎我拿幾款主流大模型工具做過(guò)測(cè)試讓它生成一些典型邏輯星三角降壓?jiǎn)?dòng)、電機(jī)正反轉(zhuǎn)互鎖、氣缸往返動(dòng)作、定時(shí)器累積量統(tǒng)計(jì)。結(jié)論是簡(jiǎn)單的邏輯它完成得確實(shí)不錯(cuò)代碼結(jié)構(gòu)干凈命名也規(guī)范有些時(shí)候比剛?cè)胄械男氯藢?xiě)得還好。尤其是結(jié)構(gòu)化文本STAI生成的代碼可以直接復(fù)制到Codesys或博圖里編譯通過(guò)這一點(diǎn)是真的強(qiáng)。但問(wèn)題也出在這里。編譯通過(guò)不代表邏輯正確。我遇到過(guò)AI生成的正反轉(zhuǎn)互鎖程序里只做了軟件互鎖沒(méi)有考慮接觸器卡死導(dǎo)致的相間短路風(fēng)險(xiǎn)——這在現(xiàn)場(chǎng)是需要額外加硬件互鎖的。它還經(jīng)常忽略掃描周期對(duì)代碼的影響在一個(gè)掃描周期里同時(shí)讀取和修改一個(gè)寄存器導(dǎo)致現(xiàn)場(chǎng)怎么按按鈕都沒(méi)反應(yīng)。這些問(wèn)題在模擬器里測(cè)不出來(lái)因?yàn)槟M器的信號(hào)不像現(xiàn)場(chǎng)那么亂也不會(huì)有接觸器線圈斷電后的殘壓干擾。所以我的結(jié)論是L1的AI可以當(dāng)作“快速生成初稿”的工具但它產(chǎn)出的每一段代碼都得按現(xiàn)場(chǎng)的規(guī)矩過(guò)一遍省不掉。3.2 一上通訊和工藝AI就露怯L2到L3的現(xiàn)實(shí)瓶頸AI在純邏輯層面的表現(xiàn)還算亮眼但只要涉及到通訊配置和設(shè)備兼容性水平就急劇下降。我試過(guò)讓它給出“西門子S7-200 SMART作為Modbus RTU從站”的配置步驟它給出的寄存器地址映射倒是對(duì)的但忽略了主站輪詢周期長(zhǎng)短對(duì)數(shù)據(jù)實(shí)時(shí)性的影響也忽略了波特率不匹配時(shí)可能出現(xiàn)時(shí)通時(shí)斷而非完全不通的現(xiàn)象。這類問(wèn)題它不是不會(huì)“寫(xiě)”而是它沒(méi)見(jiàn)過(guò)“現(xiàn)場(chǎng)”。之前有個(gè)朋友遇到PLC報(bào)警link-100以為是程序邏輯問(wèn)題拿著報(bào)警碼去問(wèn)AIAI給了一堆“檢查通訊參數(shù)、檢查線路”的通用答案。實(shí)際上這個(gè)報(bào)警在特定品牌設(shè)備里代表的是Link區(qū)數(shù)據(jù)長(zhǎng)度配置錯(cuò)誤和程序邏輯沒(méi)有半點(diǎn)關(guān)系。沒(méi)有現(xiàn)場(chǎng)經(jīng)驗(yàn)的人看AI的回答覺(jué)得挺專業(yè)但真正干過(guò)的人一眼就知道它在“正確地說(shuō)廢話”。這就是AI在沒(méi)有足夠領(lǐng)域數(shù)據(jù)時(shí)的典型表現(xiàn)語(yǔ)法層沒(méi)問(wèn)題語(yǔ)義層湊合場(chǎng)景層基本靠猜。L3及以上要求AI理解工藝、理解設(shè)備物理特性指望大模型通過(guò)看文字描述就懂灌裝頭的水流慣性和稱重傳感器的穩(wěn)定時(shí)間我覺(jué)得還早。3.3 為什么大家都在等“仿真驗(yàn)證”這道閉環(huán)我一直覺(jué)得限制AI走向L5的最大瓶頸不是模型能力而是“數(shù)據(jù)閉環(huán)”缺失。想想自動(dòng)駕駛是怎么進(jìn)步的它靠的是海量真實(shí)路測(cè)數(shù)據(jù)喂給模型然后模型不斷迭代。AI寫(xiě)PLC也一樣如果它寫(xiě)完程序之后能自動(dòng)連接一個(gè)虛擬調(diào)試環(huán)境跑一遍仿真發(fā)現(xiàn)邏輯漏洞再自動(dòng)修正、再驗(yàn)證形成一個(gè)完整的“生成-驗(yàn)證-修正”閉環(huán)那進(jìn)步速度會(huì)非??膳?。但現(xiàn)在的問(wèn)題是市面上的PLCSIM、Factory I/O、各種HIL硬件在環(huán)仿真與ChatGPT這類大模型工具之間根本沒(méi)有打通。工程師寫(xiě)完程序后得手工導(dǎo)入仿真軟件、手工配置信號(hào)、手工判斷結(jié)果AI看不到這些反饋也就不知道自己寫(xiě)的代碼在仿真器里跑成什么樣。沒(méi)有這個(gè)閉環(huán)AI永遠(yuǎn)只能靠“猜”來(lái)提高進(jìn)步速度當(dāng)然慢。誰(shuí)先把這個(gè)閉環(huán)打通誰(shuí)就有機(jī)會(huì)把AI從L1拉到L3、L4甚至更遠(yuǎn)。3.4 現(xiàn)狀速查表AI在各等級(jí)的真實(shí)位置能力等級(jí)當(dāng)前AI表現(xiàn)主要阻礙L1能生成語(yǔ)法正確的代碼片段和簡(jiǎn)單邏輯缺乏掃描周期、信號(hào)沿、安全回路意識(shí)L2能解釋常見(jiàn)程序邏輯生成基礎(chǔ)注釋對(duì)特定品牌指令集細(xì)節(jié)理解不深容易想當(dāng)然L3能給出工藝邏輯框架但深度不夠缺少真實(shí)工藝的“試錯(cuò)經(jīng)驗(yàn)”缺乏物理世界反饋L4能給出通訊配置思路兼容性和診斷能力弱缺乏海量設(shè)備組合驗(yàn)證數(shù)據(jù)L5基本屬于概念標(biāo)桿沒(méi)有仿真驗(yàn)證閉環(huán)沒(méi)有高質(zhì)量領(lǐng)域數(shù)據(jù)回流這張表里L(fēng)1到L2之間其實(shí)是有一條比較清晰的線的——單點(diǎn)邏輯生成已經(jīng)比較可靠代碼理解和注釋生成也開(kāi)始有實(shí)用價(jià)值。但從L2往L3走難度陡然加大。因?yàn)長(zhǎng)3要求的不再是“懂代碼”而是“懂設(shè)備和工藝”這在本質(zhì)上是兩套知識(shí)體系。4. 工程師實(shí)戰(zhàn)把AI用起來(lái)順便往L2以上進(jìn)化4.1 提問(wèn)之前先把“工藝背景”喂給AI很多工程師用AI寫(xiě)PLC程序上來(lái)就丟一句“幫我寫(xiě)個(gè)灌裝程序”然后拿到結(jié)果覺(jué)得不靠譜。這不能全怪AI問(wèn)題出在需求本身就不完整。AI不是讀心機(jī)你給它多完整的上下文它就有多大幾率給出靠譜的答案。我習(xí)慣的提問(wèn)結(jié)構(gòu)分成三層第一層是設(shè)備信息PLC型號(hào)、IO點(diǎn)數(shù)量、執(zhí)行機(jī)構(gòu)類型第二層是工藝要求動(dòng)作順序、聯(lián)鎖條件、報(bào)警需求、手自動(dòng)切換邏輯第三層是輸出格式到底要ST代碼、梯形圖、SFC流程圖還是IO分配表加注釋說(shuō)明。我把一個(gè)實(shí)際項(xiàng)目的提示詞模板書(shū)在下面你可以直接抄背景一套單站灌裝設(shè)備PLC型號(hào)為匯川H5U。輸入點(diǎn)包括啟動(dòng)按鈕、急停按鈕、氣缸原位/到位檢測(cè)各一個(gè)、稱重穩(wěn)定信號(hào)、灌裝頭上升/下降到位檢測(cè)輸出點(diǎn)包括灌裝閥、氣缸電磁閥、輸送電機(jī)。 工藝要求 1. 按下啟動(dòng)后輸送電機(jī)先運(yùn)行檢測(cè)到空瓶到位后停止。 2. 灌裝頭下降到位后打開(kāi)灌裝閥先快灌接近目標(biāo)重量時(shí)切慢灌。 3. 稱重穩(wěn)定信號(hào)有效后關(guān)閉灌裝閥灌裝頭上升。 4. 任意急停觸發(fā)時(shí)所有輸出復(fù)位。 5. 支持手動(dòng)/自動(dòng)切換手動(dòng)模式下每個(gè)輸出可單獨(dú)測(cè)試。 請(qǐng)輸出SFC狀態(tài)圖的分步說(shuō)明、IO分配表、各步驟的聯(lián)鎖條件以及ST代碼框架。報(bào)警文本統(tǒng)一標(biāo)注不要省略安全回路。加了這些背景之后AI輸出的質(zhì)量會(huì)明顯上一個(gè)臺(tái)階。而且你會(huì)發(fā)現(xiàn)當(dāng)AI開(kāi)始問(wèn)你“急停按鈕用的是常開(kāi)還是常閉”“稱重信號(hào)是直接接入PLC還是通過(guò)儀表通訊上傳”這類問(wèn)題時(shí)說(shuō)明它已經(jīng)在往L2的理解層級(jí)走了這種AI的產(chǎn)出才值得你認(rèn)真對(duì)待。如果AI上來(lái)就直接噼里啪啦給代碼反而要提高警惕——它很可能在用通用模板填答案。4.2 拿到AI結(jié)果后的“三查三改”無(wú)論AI生成得多漂亮最后要到現(xiàn)場(chǎng)跑必須做一遍“三查三改”。這是我自己的土辦法但很管用。三查第一查地址AI經(jīng)常把不同品牌的地址規(guī)則搞混三菱是M、D、Y西門子是I、Q、M、DB臺(tái)達(dá)和信捷又有自己的映射方式。你把IO地址表明確寫(xiě)在提示詞里并要求“只準(zhǔn)使用表內(nèi)地址”能減少很多離譜問(wèn)題。第二查安全急停、安全門、光柵、過(guò)載保護(hù)這些回路絕對(duì)不允許被AI的“簡(jiǎn)化”邏輯優(yōu)化掉。我見(jiàn)過(guò)AI把急停程序里的常閉觸點(diǎn)邏輯“優(yōu)化”成了常開(kāi)差點(diǎn)造成安全事故這一點(diǎn)不能有任何商量余地。第三查時(shí)序特別是那些涉及多個(gè)掃描周期的動(dòng)作AI很容易把一個(gè)需要持續(xù)幾個(gè)周期的狀態(tài)判斷壓縮成一步完成導(dǎo)致現(xiàn)場(chǎng)動(dòng)作錯(cuò)亂。三改第一改封裝把AI生成的散亂代碼整理成標(biāo)準(zhǔn)FB塊加入合理的輸入輸出接口方便復(fù)用和后期維護(hù)。第二改報(bào)警AI生成的報(bào)警文本往往是“錯(cuò)誤”“故障”這種籠統(tǒng)詞你要改成“灌裝頭上升超時(shí)”“稱重?zé)o穩(wěn)定信號(hào)”“輸送電機(jī)過(guò)載”這種一看就知道在哪、怎么處理的描述。第三改注釋AI的注釋有時(shí)過(guò)于通用你要把現(xiàn)場(chǎng)設(shè)備的實(shí)際工藝名稱、對(duì)應(yīng)圖紙編號(hào)這些信息補(bǔ)進(jìn)去。我常說(shuō)AI生成的程序只是毛坯房三查三改之后才是可以入住的精裝房。4.3 把AI當(dāng)成“讀舊程序的助手”比讓它“寫(xiě)新程序”更香我在前面提過(guò)L2的價(jià)值這里展開(kāi)講講實(shí)操。我有一次接手一套老設(shè)備程序是用某國(guó)產(chǎn)品牌的老款軟件寫(xiě)的原工程師已經(jīng)找不到了圖紙只剩一半。我的做法是把PLC程序?qū)С龀芍噶畋砦谋救缓蠓侄蝸G給AI讓它“用中文把這段邏輯講清楚”再問(wèn)幾個(gè)具體問(wèn)題“這段是做什么的”“這個(gè)計(jì)數(shù)器什么時(shí)候清零”“這個(gè)跳轉(zhuǎn)是為了避免什么沖突”。結(jié)果讓我有點(diǎn)驚訝AI雖然沒(méi)有把整個(gè)工藝邏輯全部還原但它幫我在半個(gè)小時(shí)內(nèi)生成了一份帶注釋的邏輯流程圖把那些跳來(lái)跳去、不知所云的指令段梳理成了“啟動(dòng)條件-動(dòng)作輸出-結(jié)束條件”的結(jié)構(gòu)。我拿著這份圖去現(xiàn)場(chǎng)對(duì)照設(shè)備用了小半天就摸清了整臺(tái)設(shè)備的套路。換作以前純?nèi)斯た匆恢芷鸩竭€不一定看得明白。這套方法我現(xiàn)在已經(jīng)寫(xiě)進(jìn)團(tuán)隊(duì)的新人帶教流程里了新員工接手舊設(shè)備不許直接悶頭看程序先讓AI做一遍“翻譯”再拿翻譯結(jié)果去現(xiàn)場(chǎng)驗(yàn)證。4.4 從工具到工序把AI嵌進(jìn)現(xiàn)有開(kāi)發(fā)流程單個(gè)人用AI效率提升是好事但團(tuán)隊(duì)層面要真正受益不能只靠個(gè)人自覺(jué)得把AI納入現(xiàn)有開(kāi)發(fā)流程。我建議團(tuán)隊(duì)做三件事一是建提示詞模板庫(kù)把常用控制場(chǎng)景的提示詞沉淀下來(lái)比如電機(jī)控制、氣缸控制、模擬量處理、通訊協(xié)議配置新人和老人共用一套高質(zhì)量提示詞避免每個(gè)人從零開(kāi)始試驗(yàn)。二是AI輸出獨(dú)立審核任何由AI生成的代碼必須經(jīng)過(guò)一次人工評(píng)審評(píng)審要點(diǎn)就是前面說(shuō)的“三查三改”審核人要在程序里留記錄。三是不要把AI的命名規(guī)范直接用于現(xiàn)場(chǎng)每家客戶對(duì)變量命名的要求不一樣AI生成的變量名統(tǒng)一要改成符合項(xiàng)目規(guī)范的名字這一步不能省。我見(jiàn)過(guò)一些團(tuán)隊(duì)為了趕進(jìn)度AI生成什么就用什么最后交付的程序五花八門后期維護(hù)苦不堪言。工具的進(jìn)步不應(yīng)該降低工程標(biāo)準(zhǔn)反而應(yīng)該把人力從低效勞動(dòng)中解放出來(lái)去做更有價(jià)值的設(shè)計(jì)和審核工作。5. 翻車現(xiàn)場(chǎng)與排查實(shí)錄AI寫(xiě)PLC那些坑5.1 我踩過(guò)的幾個(gè)真實(shí)坑第一個(gè)坑是地址混亂。讓AI寫(xiě)一個(gè)臺(tái)達(dá)PLC作為485從站的通訊程序它把站號(hào)寄存器和數(shù)據(jù)寄存器用混了還用了三菱風(fēng)格的地址命名。如果我沒(méi)檢查就下載到PLC通訊要么起不來(lái)要么數(shù)據(jù)錯(cuò)位。第二個(gè)坑是安全邏輯被“優(yōu)化”掉。有一版AI生成的程序里急停信號(hào)被簡(jiǎn)化成了普通輸入取反中斷跳轉(zhuǎn)和輸出復(fù)位全被寫(xiě)成了常規(guī)邏輯。表面上看行為一樣但真到急停拍下那一刻掃描周期晚幾個(gè)毫秒都可能出事。這種“正確但危險(xiǎn)”的代碼最害人。第三個(gè)坑是掃描周期誤解。AI生成的一段邏輯里把多個(gè)需要按掃描周期順序執(zhí)行的動(dòng)作放在同一個(gè)條件判斷內(nèi)完成現(xiàn)場(chǎng)現(xiàn)象就是按了啟動(dòng)按鈕電機(jī)轉(zhuǎn)了0.1秒就自動(dòng)停了因?yàn)楹罄m(xù)條件在一個(gè)周期內(nèi)被當(dāng)成已滿足了。排查這種問(wèn)題最耗時(shí)間因?yàn)樗粫?huì)報(bào)錯(cuò)只是行為詭異。第四個(gè)坑是報(bào)警代碼的處理。前面提到的link-100報(bào)警AI把它當(dāng)普通變量名來(lái)解讀給出了完全跑偏的建議。這種特定設(shè)備、特定版本下的報(bào)警代碼沒(méi)有廠商資料打底AI就是在編。5.2 發(fā)現(xiàn)不對(duì)之后我是怎么定位的面對(duì)AI生成的程序出了詭異故障我建議用“逆向提問(wèn)法”比人工對(duì)著代碼干猜快得多。具體操作是這樣的把AI生成的代碼和現(xiàn)場(chǎng)故障現(xiàn)象一起貼回去然后讓AI自己“推演一遍”程序運(yùn)行過(guò)程問(wèn)它“按照你的代碼按下啟動(dòng)后第三個(gè)掃描周期各寄存器的值應(yīng)該是什么”“如果某個(gè)傳感器信號(hào)一直不變化程序會(huì)卡在哪一步”。為什么要這么做因?yàn)锳I生成代碼的時(shí)候是“正向構(gòu)造”它沿著需求往下推導(dǎo)但當(dāng)它推演自己的代碼時(shí)它會(huì)模擬運(yùn)行反而容易發(fā)現(xiàn)自己埋的邏輯漏洞。我試過(guò)幾次AI主動(dòng)承認(rèn)“按這個(gè)邏輯這個(gè)分支到不了”的比例相當(dāng)高。然后你再讓它給出修正方案再拿修正方案去現(xiàn)場(chǎng)驗(yàn)證這樣一輪下來(lái)效率極高。這個(gè)方法和調(diào)試?yán)铣绦驎r(shí)“大聲朗讀代碼”的習(xí)慣是一回事——把代碼念出來(lái)的時(shí)候自己經(jīng)常能發(fā)現(xiàn)哪里不對(duì)勁AI也是一樣。5.3 常見(jiàn)問(wèn)題速查表問(wèn)題現(xiàn)象常見(jiàn)原因處理方向生成的代碼地址溢出或沖突AI不了解品牌地址映射規(guī)則提示詞里附上地址表限定只能用表內(nèi)地址急停/安全門邏輯被省略或改變AI按“最簡(jiǎn)化實(shí)現(xiàn)”優(yōu)化明確聲明安全回路必須完整保留且不允許簡(jiǎn)化梯形圖結(jié)構(gòu)混亂不符合企業(yè)規(guī)范AI按通用模式生成用公司的程序模板做統(tǒng)一整理變量名重新規(guī)范通訊代碼沒(méi)有超時(shí)重連或診斷邏輯AI缺少現(xiàn)場(chǎng)總線故障場(chǎng)景要求AI補(bǔ)充總線診斷、超時(shí)重試、狀態(tài)監(jiān)控代碼報(bào)警文本過(guò)于籠統(tǒng)無(wú)法定位問(wèn)題AI沒(méi)有設(shè)備級(jí)信息把報(bào)警碼和對(duì)應(yīng)設(shè)備名稱、處理方式做成表喂給AI運(yùn)行順序與工藝要求不一致AI對(duì)多步驟時(shí)序理解不足改用SFC圖描述工藝再讓AI按狀態(tài)機(jī)生成代碼這張表我建議打印出來(lái)貼在工位上。它不是標(biāo)準(zhǔn)答案但至少能幫你把AI產(chǎn)出物的審核流程化減少低級(jí)錯(cuò)誤。好用順手補(bǔ)一句任何AI生成的代碼在下載到真實(shí)PLC之前都建議先在仿真環(huán)境里跑一遍。這一步不能省我吃過(guò)虧。5.4 什么時(shí)候我堅(jiān)決不用AI最后說(shuō)一個(gè)邊界問(wèn)題。AI雖然好用但有些場(chǎng)合我堅(jiān)決不用。第一類是純安全相關(guān)邏輯急停硬回路、安全繼電器邏輯、光柵連鎖、抱閘控制這些我不允許AI直接生成或修改最多讓它做解釋說(shuō)明和文檔整理。七分靠硬接線三分靠程序安全回路里哪怕邏輯上一個(gè)點(diǎn)出錯(cuò)賠上的可能是設(shè)備甚至是人。第二類是客戶有明確認(rèn)證要求的程序比如某些行業(yè)的第三方認(rèn)證要求特定代碼實(shí)現(xiàn)必須由具備資質(zhì)的人簽字負(fù)責(zé)AI生成的代碼沒(méi)有責(zé)任人根本過(guò)不了審。第三類是涉及高端工藝Know-how的核心控制算法比如某些獨(dú)特配方工藝的經(jīng)驗(yàn)參數(shù)曲線我不希望它進(jìn)入公共模型形成訓(xùn)練語(yǔ)料也不認(rèn)為AI能真正理解里面的門道。在這些場(chǎng)景里AI的角色止步于“解釋”和“記錄”不參與最終決策。工程師可以借它提高效率但不能把責(zé)任交給它。我個(gè)人的態(tài)度其實(shí)很明確五級(jí)模型最值錢的一點(diǎn)不是給AI發(fā)等級(jí)證而是幫我們把“AI寫(xiě)PLC”這個(gè)籠統(tǒng)的話題拆成了一個(gè)個(gè)可以討論、可以驗(yàn)收的環(huán)節(jié)。我自己現(xiàn)在的用法也變了——很少再讓AI直接出一整套站內(nèi)程序而是讓它幫我做兩件事一是把接到手的老程序快速“翻譯”成工藝說(shuō)明二是把模糊的設(shè)備需求整理成結(jié)構(gòu)化提示詞。這兩件事做完我再基于它的輸出做設(shè)計(jì)、寫(xiě)聯(lián)鎖、補(bǔ)報(bào)警效率反而提升了很多。最后再分享一個(gè)小技巧讓AI解釋舊程序時(shí)別只問(wèn)“這段是什么意思”要連著問(wèn)“這一段如果某個(gè)輸入掉了會(huì)怎樣”“上電順序如果反過(guò)來(lái)會(huì)怎樣”。多問(wèn)幾個(gè)“會(huì)怎樣”AI的答復(fù)質(zhì)量會(huì)有質(zhì)的提升你也會(huì)更早發(fā)現(xiàn)那些藏在老程序里的坑。這大概就是L2能力在一線最值錢的樣子。再過(guò)幾年等仿真閉環(huán)真正成熟L3、L4的AI可能會(huì)進(jìn)入項(xiàng)目但至少現(xiàn)在把它放在L1并認(rèn)真用好L1是我們最務(wù)實(shí)的選擇。