モーション制御・停止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,rotatedobot_tcp(2).py:halt,stop,task_stop,get_motion_complete,wait_for_complete