生成式 AI 如何簡化復雜的 PLC 編程?
發(fā)布時間:2025-04-03 作者:Anna Townshend
與許多其他行業(yè)一樣,機器制造商和系統(tǒng)集成商也在嘗試人工智能(AI)帶來的好處。生成式AI的普及和無處不在的特性也激起了原始設備制造商(OEM)和集成商工程師的興趣。AI為工程師代碼編程中的實際應用帶來了真正的好處,并被應用到日常工作流程中。AI工具在某些編程語言中更為先進,而真正的AI增強型可編程邏輯控制器 (PLC) 代碼需要高度定制的生成式AI。
生成式 AI 將如何影響控制編程?
生成式 AI 最有可能影響機器制造商和系統(tǒng)集成商的工作。無論是試驗生成式 AI,還是思考和規(guī)劃其在機器本身中的未來潛力,許多人都在從信息技術(shù)(IT)領域汲取靈感。
系統(tǒng)集成商和 CSIA 會員 A&E Engineering 公司新興技術(shù)發(fā)展總監(jiān) Chris Gibson 表示,“IT 行業(yè)長期以來一直在使用AI來提高程序員的工作效率。我們開始看到這一趨勢也延伸到了控制領域。”
生成式 AI 應被視為助手,而不是完全替代人工干預或編程工程師。DigiKey公司應用工程師Aaron Dahlen將這種關(guān)系描述為指揮家和音樂家的關(guān)系。“編程已經(jīng)成為一種混合活動,程序員充當指揮,AI 充當音樂家。”Dahlen說。
“在機器設計方面,我們看到工業(yè)控制器聯(lián)網(wǎng)以收集數(shù)據(jù)的持續(xù)趨勢。我們還注意到,一些設計師將數(shù)據(jù)移動到云或本地服務器,而另一些設計師則利用現(xiàn)代PLC的功能將計算能力轉(zhuǎn)移到機器的邊緣。”Dahlen 說,“在 DigiKey,我們已經(jīng)看到這一趨勢反映在我們不斷增長的工業(yè)產(chǎn)品銷售中。”
聊天機器人和生成式 AI 工具(如 OpenAI 的 ChatGPT 和谷歌的 Gemini等)越來越受到人們的關(guān)注。大型語言模型(LLM)是一種特定類型的生成式 AI,它使用深度學習模型在大量文本數(shù)據(jù)上進行訓練,這些模型使用自然語言處理(NLP)(AI 的另一個子領域)來生成文本。自然語言處理允許LLM通過編碼和處理數(shù)據(jù)來讀取人類語言。
E Tech Group 制造智能總監(jiān) Pradeep Paul表示,LLM可以被訓練并用于解決復雜的編程問題,但使用LLM進行控制編程將需要大量的代碼示例、代碼文檔,甚至是設計功能的自然語言描述。這些數(shù)據(jù)使模型能夠?qū)W習語法、常見模式以及代碼與其用途之間的關(guān)系。
通用LLM還必須針對特定自動化供應商平臺或協(xié)議的數(shù)據(jù)集進行微調(diào)或自定義。“這種微調(diào)使模型適應供應商獨特的指令集、庫和最佳實踐,”Paul 補充道,“這解決了專有函數(shù)庫的挑戰(zhàn)。”
最后,強化學習可以進一步完善模型。“工程師或自動化系統(tǒng)可以提供有關(guān)生成代碼的反饋,獎勵模型的正確和有效的解決方案,并懲罰錯誤。這個迭代過程提高了模型的準確性和處理復雜場景的能力。
如何在控件編程工作流程中構(gòu)建自定義AI模型?
經(jīng)過訓練后,AI 模型可以在復雜應用程序中節(jié)省大量開發(fā)時間,執(zhí)行代碼生成、自動文檔、代碼錯誤檢測和調(diào)試、代碼優(yōu)化和測試用例生成等任務。自然語言提示可以生成功能代碼塊,從而減少從頭開始編寫代碼所花費的時間。這對于重復性任務或復雜的邏輯特別有用。
E Tech Group已經(jīng)試驗了行業(yè)特定的生成式 AI 工具,如羅克韋爾自動化的 FactoryTalk Design Studio 和其他平臺,其工程師仍在學習如何最好地將它們整合到工作流程中,但潛力是巨大的。目前,該公司正在努力將生成式 AI 納入其標準編碼工作流程。“我們維護著一個強大的內(nèi)部代碼庫,通常可以滿足大約 80% 的項目需求,” Paul補充道,“為了完成部署,我們創(chuàng)建了 AI 驅(qū)動的內(nèi)部工具。”
這些工具擅長自動執(zhí)行重復編碼,例如為多個標簽進行模板編程。工程師可以上傳 CSV 文件,而不是手動逐個標簽進行開發(fā),使工具能夠快速生成和復制必要的編程邏輯,從而節(jié)省大量時間。
編碼文檔和調(diào)試:使用AI進行編程規(guī)范、測試和調(diào)查
生成式AI工具還可能有助于生成功能需求規(guī)范(FRS),這些規(guī)范是根據(jù)自動化項目的客戶需求開發(fā)的,然后 E Tech Group 從 FRS 構(gòu)建代碼。但是,定義詳細規(guī)范通常需要初步編碼以鞏固設計元素。
“有時,如果不做一些前期編碼來消除設計組件,就很難構(gòu)建你的功能規(guī)范。”Paul 說。使用 AI 工具,很容易為其提供一般輸入,它將為功能需求規(guī)范生成一個框架,其中包含所有必需的組件,而無需進行任何示例編碼。
AI 還可以幫助自動生成測試用例,確保更全面的測試并減少手動創(chuàng)建測試所花費的時間。在FRS之后,工程師編寫測試協(xié)議以測試功能要求和所有功能,AI可以幫助起草測試協(xié)議。
一般來說,文檔對工程師來說可能是一項乏味但必要的任務,而AI可以幫助從代碼本身生成所需的文檔。E Tech Group 還承擔其他公司啟動的項目或需要集成來自不同供應商和設備的系統(tǒng)的項目,這些項目可能不遵循與其工程師相同的編程實踐。
生成式 AI 有可能對當前代碼進行一些逆向工程,而不是讓工程師花費數(shù)小時試圖理解舊代碼背后的意圖。它至少可以生成一些文檔和代碼意圖的摘要。E Tech Group 的一些工程師正在使用生成式 AI 工具嘗試對代碼進行逆向工程。
編寫代碼后,AI可以再次介入以提供幫助。“可以訓練 AI 模型來識別代碼中的潛在錯誤,提出修復建議或突出顯示需要審查的區(qū)域。這可以大大減少調(diào)試時間。” Paul說,“AI 可以分析現(xiàn)有代碼,并針對性能、內(nèi)存使用或可讀性提出優(yōu)化建議。”
此外,生成式AI平臺也非常適合與 Python、SQL 或 .NET 等更傳統(tǒng)的編程語言一起使用。例如,E Tech Group還使用這些更傳統(tǒng)的語言為歷史數(shù)據(jù)庫和客戶應用程序編程接口 (API) 構(gòu)建接口。ChatGPT 或 Gemini 的基本免費版本非常擅長為那些廣泛使用的語言尋找代碼中的缺陷。
預計未來,這些工具將發(fā)揮更多作用,而不僅僅是錯誤檢測,并提供更好的代碼實踐和建議來改進格式。它已經(jīng)減少了用戶對更多主題專家的需求,并為年輕工程師提供了更多工具,以更快地提高他們的編碼技能。
生成式AI正在幫助年輕工程師磨練他們的編程技能并擴展他們的語言知識。他們可以使用FactoryTalk Design Studio 根據(jù)特定要求開發(fā)代碼結(jié)構(gòu),然后將其與內(nèi)部代碼庫進行比較,了解它們有何不同,以及為什么一個代碼庫比另一個代碼效果更好。
“我們使用了很多軟件和許多不同的平臺,每個系統(tǒng)都略有不同。” Paul 說,“這會使應用生成式AI進行 PLC 編程變得更加復雜。對于 PLC 編程,由于每個供應商都有自己不同的程序結(jié)構(gòu)和代碼模塊方法,因此很難有一個通用工具來實現(xiàn)這一點。這就是自定義AI 工具的用武之地,但這些工具需要大量時間來開發(fā)。”
RAG如何提升LLM在PLC編程中的表現(xiàn)?
不過,對于目前的任何LLM工具, Chris Gibson仍然建議謹慎使用,他認為:“在將生成式 AI 用于PLC編程時,謹慎是必不可少的,因為它可能會而且會產(chǎn)生幻覺,這意味著它可能會生成不正確或誤導性的信息。”他建議通過檢索增強生成(RAG)AI 系統(tǒng)來創(chuàng)建代碼來降低這種風險。
RAG 是一個AI框架,它與LLM配合使用,通過搜索更多外部數(shù)據(jù)源并在將信息和提示集成到LLM之前對其進行預處理,使其更加準確和相關(guān)。
“RAG 允許您使用特定知識訓練AI,本質(zhì)上是為其響應設置護欄。通過向其提供經(jīng)批準的庫和最佳實踐,您可以確保AI生成的代碼符合您的標準。”Gibson 說。借助RAG,AI可以學習機器規(guī)格和編碼實踐,以協(xié)助生成 PLC、HMI 和 SCADA 代碼。這種新興趨勢會不斷增長,將顯著減少繁瑣、易出錯和重復的編程任務。
傳統(tǒng)的AI基礎模型在離線狀態(tài)下進行預訓練,不包括訓練之后出現(xiàn)的數(shù)據(jù)或信息。RAG通過檢索外部數(shù)據(jù)和信息來彌補這些不足。RAG還利用這些信息來豐富提示,提取相關(guān)信息和數(shù)據(jù)并更新原始提示,然后將這個豐富的提示傳遞給LLM。
程序組織單元如何改進PLC編碼?
復雜性是所有編程語言的一個重要考慮因素,Aaron Dahlen表示,AI可以在這方面提供幫助,“將程序解析成較小的程序組織單元(POU)是當今PLC程序員的黃金標準。我們不再構(gòu)建100行的梯形邏輯圖,而是將代碼分解成更小、更易管理的部分。”
冗長而蜿蜒的代碼很難構(gòu)建、故障排除和維護。“這是一種糟糕的編程做法,在機器的整個生命周期內(nèi)會花費你大量的錢,”他補充道。
相反,如果代碼被分成幾個較小的 POU,每個 POU 都執(zhí)行一個專用功能,則代碼更容易構(gòu)建和故障排除。“這就是AI作為合作伙伴的優(yōu)勢所在,它可以幫助我們探索內(nèi)部工作和 POU 之間的界限,”Dahlen說。“知道任何給定的 POU 都很小,AI 通常可以在更大的程序中理解 POU 的功能和目的。”
借助此功能,程序員可以使用生成式AI來優(yōu)化單個POU或整個程序。他們可以闡明POU 的用途并優(yōu)化變量的范圍、結(jié)構(gòu)和名稱。使用已知的編程指標,AI還可以估計程序復雜性或確定降低 POU 復雜性的方法。對于任何給定的 POU,都可以通過測量決策點的數(shù)量、嵌套或分層排列以及運算符的總數(shù)來定義復雜性。
AI可以通過重構(gòu)或改進代碼幫助程序員使代碼更易于閱讀和維護。Dahlen說,“重構(gòu)的深度取決于具體的項目。有時,它就像更改變量名稱一樣簡單。在其他時候,程序員將做出一個關(guān)鍵發(fā)現(xiàn),從而改變整個項目的結(jié)構(gòu)。這可能是正式代碼審查的一部分,也可以是探索代碼的個人程序員。”
需要注意的是,在工業(yè)環(huán)境中重構(gòu)具有挑戰(zhàn)性,因為 PLC 代碼的更改可能需要進行廣泛的驗證測試才能找出意外的錯誤。有時,重構(gòu)以 TODO 語句結(jié)束,以識別將來應該更新的代碼。AI 可以協(xié)助完成此過程的許多步驟。
Dahlen表示,他更喜歡PLC的梯形邏輯編程,部分原因在于梯形邏輯圖是PLC排錯的最佳方法之一。然而,這些AI工具在結(jié)構(gòu)化文本(ST)上表現(xiàn)更佳。“如今,使用ST可以輕松完成這些任務,因為代碼可以在AI和PLC開發(fā)環(huán)境之間復制粘貼。未來,我們或許能夠使用梯形圖。” Dahlen 說,“想象一下,有一天我們可以與AI對話,然后看到更改被納入梯形邏輯圖中。”