# 大型語言模型真的能解所有疑難雜症了嗎? 作者: Jack OmniXRI 2024/09/22 有學過可程式邏輯控制器(Programmable Logic Controller, PLC)的朋友應該都懂得階梯圖(Ladder)這種程式語言吧?甚至老一輩的還會拿手持式程式書寫器直接編寫指令,秀一下輸入手速,來讓徒弟們產生驚訝的表情。而通常入門的朋友一定會學到自保持迴路控制,就像學習電腦語言(Basic, C/C++, Java ...)一定會寫「Hallo World!」,玩嵌入式的朋友一定會寫「Blink」一樣。 所謂自保持迴路通常會用在馬達或大動力的設備的開始和停止供電。一般會有一個開始按鍵(X0)、一個停止按鍵(X1)和一個繼電器(Y0),當按下開始時令繼電器激磁(導通),當按下停止鍵時繼電器結束激磁動作。如果用階梯圖表示則會得到如下圖傳統自保持回路所示,這和傳統配電盤的接線幾乎相同,較受傳統機械和電機人員喜歡。 近年來由於受電腦程式語言影響,有些較高階用法會改用設置(Set)開啟和重置(Reset)關閉來改變繼電器的輸出狀態。這裡暫不討論此類用法。 ![self-holding circuit_01](https://hackmd.io/_uploads/B16e3HppA.jpg) 這兩年大家常說 ChatGPT(這裡泛指所有LLM大型語言模型)已可回答各式各樣的問題,但如果屬於網路上不容易收集或未被大量電子化的資料,此時就會力有未逮,開始胡說八道了。當然如果透過微調(Fine-Tuning)、擷取增強生成(RAG)還是有機會修正到大家可接受的範圍,這裡就先以標準公開的模型來進行測試。 以下就以相同提示句來詢問不同大型語言模型,包括Microsoft Copilot, Google Gemini, OpenAI ChatGPT, Claude, Perplexity ,看看會得到什麼結果。輸入內容為「**請使用階梯圖來產生一個自保持回路範例,其中包含二個輸入及一個輸出。**」 ## Microsoft Copilot 輸出結果 當然可以!以下是一個簡單的自保持回路範例,包含兩個輸入(Start 和 Stop 按鈕)以及一個輸出(馬達): ![self-holding circuit_05_Copilot1](https://hackmd.io/_uploads/HynrqUp6A.jpg) 階梯圖說明: 1. Start 按鈕:當按下 Start 按鈕時,馬達啟動並保持運行,即使釋放 Start 按鈕。 2. Stop 按鈕:當按下 Stop 按鈕時,馬達停止運行。 3. 自保持回路:利用 Start 按鈕的常開接點和馬達的常開接點來實現自保持功能。 階梯圖: ![self-holding circuit_05_Copilot2](https://hackmd.io/_uploads/S15cc8T60.jpg) * Start 按鈕:常開接點(NO) * Stop 按鈕:常閉接點(NC) * 馬達:輸出設備 當按下 Start 按鈕時,電流通過 Start 按鈕的常開接點,啟動馬達並使馬達的常開接點閉合,形成自保持回路。當按下 Stop 按鈕時,電流被切斷,馬達停止運行。 希望這個範例對你有幫助!如果有任何其他問題,隨時告訴我。 ## Google Gemini 輸出結果 好的,很高興能為您解答。 階梯圖(Ladder Logic) 是一種用於可編程式邏輯控制器(PLC)的程式設計語言,常被用來模擬電路中的開關和繼電器。 自保持回路範例:二個輸入、一個輸出 我們來建立一個簡單的例子,假設: 輸入 A: 啟動按鈕 輸入 B: 重置按鈕 輸出 C: 馬達 邏輯描述: 當按鈕 A 被按下時,馬達啟動。 一旦馬達啟動,即使鬆開按鈕 A,馬達也會持續運轉,直到按鈕 B 被按下。 階梯圖表示: |---| A ---| |---|---( )--- C | |---| |---| B ---| |---|---( )--- | |---| 解釋: 水平線: 代表匯流排,就像電路中的母線。 垂直線: 代表觸點,就像電路中的開關。 圓圈: 代表線圈,就像電路中的繼電器線圈。 A、B、C: 代表輸入和輸出。 運作方式: 啟動: 當輸入 A(啟動按鈕)為真(按下)時,第一個觸點閉合,電流流向線圈 C,使輸出 C(馬達)啟動。 自保持: 同時,線圈 C 的常開觸點閉合,形成一個迴路。即使輸入 A 變為假(鬆開),這個迴路仍然保持,輸出 C 繼續保持。 重置: 當輸入 B(重置按鈕)為真(按下)時,第二個觸點斷開,迴路斷開,輸出 C 變為假(馬達停止)。 總結: 這個簡單的階梯圖實現了一個自保持回路,一旦啟動,輸出將保持,直到被明確重置。這在工業控制中非常常見,例如: 馬達控制: 一旦馬達啟動,除非有故障或需要停止,否則會一直運轉。 警報系統: 一旦觸發警報,警報會持續響,直到手動重置。 注意事項: 觸點型態: 在階梯圖中,觸點可以是常開(NO)或常閉(NC)。 線圈型態: 線圈可以控制各種輸出,例如馬達、燈、閥等。 複雜邏輯: 實際應用中,階梯圖可以變得非常複雜,包含多個輸入、輸出和邏輯閘。 想了解更多嗎? 如果您想進一步了解階梯圖,我可以為您提供更深入的解釋,例如: 不同型態的指令 函數塊 程式結構 常見的應用案例 請隨時提出您的問題! 另外, 為了更準確地回答您的問題,您可以提供以下資訊: PLC的品牌和型號: 不同的PLC可能在階梯圖的語法和功能上略有差異。 具體的應用場景: 這樣我才能為您提供更具針對性的範例。 希望這對您有所幫助! ## OpenAI ChatGPT 輸出結果 請使用階梯圖來產生一個自保持回路範例,其中包含二個輸入及一個輸出。 自保持回路(也稱為自鎖回路)常用於控制系統中,實現開關的「啟動保持」功能,即當輸入條件滿足時,系統自動保持啟動狀態,即使輸入信號消失,系統仍能保持運作,直到遇到特定的「停止」信號。 階梯圖範例:自保持回路 輸入 X1:啟動按鈕 輸入 X2:停止按鈕 輸出 Y1:控制設備(如馬達、繼電器等) 階梯圖解釋: X1 (啟動按鈕):當按下時,接點閉合,輸出 Y1 得到啟動信號。 Y1 (自保持):一旦輸出 Y1 啟動,它會自我保持,即使 X1 按鈕釋放,Y1 依然保持啟動。 X2 (停止按鈕):當按下時,停止信號斷開自保持回路,輸出 Y1 停止。 階梯圖結構: ![self-holding circuit_02—ChatGPT](https://hackmd.io/_uploads/HkJxPI6TR.jpg) 第一行:按下 X1(啟動按鈕),Y1 獲得輸出,並且 Y1 的自保持觸點保持閉合。 第二行:Y1 自保持,使輸出繼續保持,即使 X1 釋放。 第三行:按下 X2(停止按鈕),斷開 Y1 的自保持,輸出 Y1 停止。 這是典型的二個輸入和一個輸出的自保持回路,廣泛應用於工業控制中。 ## Claude 輸出結果 好的,我會為您創建一個包含兩個輸入和一個輸出的自保持回路範例,使用階梯圖來表示。 ![self-holding circuit_03_Claude](https://hackmd.io/_uploads/SJokdL66A.jpg) 這個階梯圖展示了一個簡單的自保持回路,包含兩個輸入(I1和I2)和一個輸出(Q1)。以下是對圖表的解釋: L1和L2代表電源線路。 I1和I2是兩個輸入,可以是按鈕或其他觸發裝置。 Q1是輸出,它既是一個常開觸點,也是一個線圈。 工作原理: 當I1或I2被啟動時,電流通過Q1的線圈。 Q1的線圈通電後,它的常開觸點閉合。 即使I1和I2都斷開,Q1的常開觸點保持閉合狀態,維持電流通過線圈,這就是"自保持"的由來。 要斷開回路,需要另外的斷開裝置(未在圖中顯示)。 這種自保持回路在工業控制系統中很常見,例如用於啟動馬達並保持其運行,直到收到停止信號。 如果您需要更詳細的解釋或對圖表有任何修改建議,請隨時告訴我。 ## Perplexity 輸出結果 ![self-holding circuit_04_Perplexity1](https://hackmd.io/_uploads/S10QFLp6C.jpg) 要設計一個自保持回路的階梯圖範例,包含兩個輸入和一個輸出,可以參考以下步驟和示例。 自保持回路概念 自保持回路是一種控制邏輯,當某個開關被啟動後,即使開關被釋放,回路仍然保持在啟動狀態,直到另一個開關被觸發來關閉它。這通常用於馬達啟動和停止的控制系統中。 階梯圖設計 輸入和輸出定義 輸入1 (X1): 啟動按鈕(常開接點) 輸入2 (X2): 停止按鈕(常閉接點) 輸出 (Y1): 馬達或燈泡的控制 階梯圖示例 以下是自保持回路的階梯圖示例: ![self-holding circuit_04_Perplexity1](https://hackmd.io/_uploads/B1m2dLppC.jpg) 說明 第一行: 當按下啟動按鈕 (X1) 時,輸出 (Y1) 被激活,這會啟動馬達或燈泡。 第二行: 輸出 (Y1) 的狀態會反饋到回路中,使得即使 X1 被釋放,Y1 仍然保持啟動狀態。 第三行: 當停止按鈕 (X2) 被按下時,常閉接點會打開,從而切斷 Y1 的電源,使馬達或燈泡停止運作。 這種設計確保了系統能夠在不持續按住啟動按鈕的情況下保持運行,並且能夠通過停止按鈕隨時關閉。 ![self-holding circuit_04_Perplexity3](https://hackmd.io/_uploads/H194YITaC.jpg) ## 整體評比 * 所有答案對於二個輸入並未完整說明用途但都有理解到一個是開始鍵、一個是停止鍵。但產生階梯圖時仍將其當成二到三列程式來處理,不像標準一列就完成。 * 就階梯圖繪制方式,多數採文字模式給成,部份會格式會跑掉,造成難以理解,少數採直接圖示會較理想。 * 基本以上答案沒一個能繪出正確的傳統階梯圖,甚至給出的根本不是階梯圖而是流程圖,各LLM模型整體輸出內容較接近設置/重置的作法,但有經驗的PLC工程師應該都能看出這些階梯圖運行後是無法達到要求的。 * 只有 Perplexity 給出參考的網頁來源及接下去可能的問題,還有給出參考網頁中較可能的圖示。由於網頁多半是領域專家撰寫的所以正確性較為接近所需內容。 ## 小結 當然以上測試不是很精準,或許提示下的不好,也或者沒有使用付費版本所以輸出能力有限,但總結來說像這類自動控制的資訊在網頁數量相對一般生活常識或LLM經常評比的項目來說是非常少的,在Github或Stackoverflow等開放源碼或程式論壇中更是不常見,所以可想而知沒有資料集模型自然訓練不到或者不容易理解問題,同理可證,目前如果文件數位化不佳及公開程度較少的領域亦會遇到類似問題,相信未來在各專業領域會有更好的模型產生,自然對於應用者就會更加便捷了。 以上僅個人簡單測試及看法,提供大家參考一下。