モーション制御・停止APIのソース照合

この文書は提供された dobot_ctrl.py と dobot_tcp.py の実装を対象とする静的検証結果であり、MG400実機による試験結果ではない。

停止APIの区別

  • DobotCtrl.halt() は DobotTcp.halt() に委譲するが、後者は _unsupported("halt") を実行する。非常停止の代用として使用できない。

  • DobotCtrl.stop() は DobotTcp.stop() に委譲するが、後者は _unsupported("stop") を実行する。

  • DobotTcp.task_stop() も _unsupported("task_stop") を実行する。MG400固有の stop_script() と同義ではない。

  • DobotCtrl.hand_stop() はハンド機器の仕様が定まっていないため未実装である。

移動完了判定の区別

  • get_motion_complete() は busy_status に基づく。値が None の場合は False を返し、それ以外は not bool(running) を返す。移動指令の正常完了を保証する判定ではない。

  • wait_for_complete() は DobotTcp の Sync() を呼び、応答を検査した後に _motion_error_active("Sync", query_error_id=True) でエラーを確認する。応答成功だけでは先行モーションの正常終了と同義ではない。

  • DobotCtrl.wait_for_complete() は引数を受け取らない。DobotTcp.wait_for_complete(timeout=None, interval=0.02) の timeout と interval は使用されない。時間制限付き待機として案内してはならない。

制限

drive() は一部の軸移動処理に対応するが、path_blend の意味を保持する実装はない。MG400の物理軸に存在しないJ5/J6は駆動できない。rotate() の plane・angle・center を軌道コマンドに変換する処理は未実装である。

運用上の注意

ソフトウェア上の halt() や stop() を安全停止系に組み込まないこと。安全停止とリスクアセスメントは、MG400のメーカー安全資料と設備全体の安全設計に従う必要がある。

検証対象

  • dobot_ctrl(3).py: halt, stop, hand_stop, get_motion_complete, wait_for_complete, drive, rotate

  • dobot_tcp(2).py: halt, stop, task_stop, get_motion_complete, wait_for_complete