よくあるご質問

ご質問

No.
FAQ-30281

MP3000シリーズで、今回指令値-前回指令値が正となり、正方向へ動作を続けた場合、目標値が整数型の最大値になる部分で負方向の最大値になりますので今回指令値-前回指令値が負となりますが、正方向へ動作を続けるのでしょうか。

回答

今回指令値-前回指令値が負とはならず、正方向へ動作を続けます。通常コンピュータは16ビット演算や32ビット演算を実行する場合、負の最大値から正の最大値を引くと答えは+1となります。これはMP3000シリーズだけでなく一般的なマイコンでも同様です。16ビットで説明しますと、負の最大値-32768から正の最大値32767を引くと答えは1になります。コンピュータの計算では、8000H(-32768) - 7FFFH(+32767) = 1 となります。32ビットでも64ビットでも同様です。ただし、MP3000シリーズでは符号が反転する演算の場合、あえてエラーにする処理を入れていますので通常の加算命令では16ビットレジスタの32767に1を加算すると-32768にせずエラーとする処理を入れています。通常のコンピュータ的演算(上記エラー処理なし)をする拡張加算を使用すれば加算でき、32767に1を拡張加算すると-32768になります。MP3000シリーズの目標位置はコンピュータ的演算なので正方向へ動作を続けることができます。