Problem Solving · 01

先把問題說清楚

遇到陌生問題時,第一步不是立刻猜原因,而是先確認實際發生了什麼。 問題描述得越清楚,後面需要檢查的範圍就越小。

先描述現象,不要先猜原因

「程式不能用」、「機器怪怪的」或「訊號沒有反應」, 都還不是足夠明確的問題描述。這些說法只表示結果不符合預期, 但沒有說明到底是哪個部分出了什麼狀況。

在開始修改程式、設定或接線之前,可以先回答下面幾個問題:

  • 原本預期發生什麼?
  • 實際發生了什麼?
  • 問題每次都會發生,還是只有特定條件下才會發生?
  • 問題發生前,改過哪些程式、設定、接線或操作方式?
先不要寫: 「應該是程式有問題」、「可能是感測器壞了」。 這些是可能原因,不是實際觀察到的現象。

模糊描述和具體描述的差別

例如,下面這句很難讓人繼續判斷:

按下啟動後,手臂沒有動。

比較有用的描述會是:

按下啟動按鈕後,控制器有收到啟動 DI,程式已進入執行狀態,但執行到第一個移動指令時,手臂沒有動作。目前伺服已開啟,示教器上也沒有顯示警報。

第二種描述仍然沒有直接說出原因,但已經排除「控制器沒有收到啟動訊號」、 「程式沒有開始執行」和「伺服尚未開啟」等可能性。

接下來可以把檢查範圍集中在程式停留的行號、運轉模式、速度倍率、 HOLD 與安全訊號、移動指令的點位,以及目前選用的 Tool Frame 和 User Frame, 而不是從啟動按鈕到整支程式全部重新確認。

把問題縮小到可以測試

描述問題的目的,不是把文字寫得很長,而是讓問題變得可以驗證。 一個好的問題描述,應該能讓自己或其他人知道下一步要先檢查哪裡。

當預期結果、實際現象和發生條件都整理清楚後, 下一步就可以沿著訊號流向,逐層確認問題發生在哪一個環節。