本稿ではMG400のI/Oの読み取りのタイミングが意図した場所とずれてしまう問題について、原因と対処法を案内しています。
1. 原因
MG400のプログラムでは、MG400にコマンドを送信後すぐに次のブロック(行)を実行してしまいます。このため、MG400の動作が完了する前にI/Oの読み取りが実行されてしまい、意図した動作を行わない場合があります。
2. 対処法
同期命令を追加することで、MG400の動作が完了するまでプログラムを停止することが出来ます。
DobotStudioPro ver.2.3.1以降をお使いの方
※2023/3/6追記
DobotStudioProはver2.3.1を境に同期命令のブロックが変更されました。
対象のバージョン以降のStudioProでBlocklyをお使いの皆様はこちらをご参照下さい。
・Blocklyの場合
I/Oの読み取りの前に”Sync at this point”ブロックを追加する
「Move」カテゴリの一番下にございます。
また、「Move Arguments」カテゴリは「Posture」へ変更されました。
実際のプログラム例は以下のようになります。
「sync at this point」を用いることでアームの動作が終わってからDOの動作を行うことができるようになっています。
・Scriptの場合
I/Oの読み取りの前にSync()関数を追加する。
※DobotStudioProのアップデート方法は[MG400] アップデート方法 – TechShare FAQをご参照ください。
現行の最新バージョンは2.6.1(2023/3/6現在)となります。
DobotStudioPro ver.2.2.0以前をお使いの方
・Teach&PlayBackの場合
I/Oの読み取りの前に”Sync”コマンドを追加する。
・Blocklyの場合
I/Oの読み取りの前に”Stop at this point”ブロックを追加する。
・Scriptの場合
I/Oの読み取りの前にSync()関数を追加する。
その他プログラムに関してご不明点がございましたらお気軽にdobot@techshareまでご連絡ください。