シーケンス制御講座
楽しく情報交換しましょう。分からない事は質問して、分かる方は答えてあげてください。ただし営利目的な書き込みは予告無く削除いたします。
レイアウトが崩れる場合は掲示板がSSLに対応していません。お手数ですがURLの"https"を"http"に変更してください。またはコチラから。
コミュニケーションユニット - nao
2017/10/18 (Wed) 23:37:22
三菱QタイプのシーケンサでコミュニケーションユニットQJ71C24NというのがありましてこちらからRS232Cで送信してパソコンのEXCEL VBAで受信するときにデータがASCIIコードとなっています。
QJ71C24Nが16ビットデータで送信しているのでEXCEL側でASCIIデータを10進数にしたいのですがうまくいきません。(8ビットならうまくいきます。)
EXCELの計算式を教えてもらえないでしょうか?
もしくはQJ71C24Nからの送信データをバイナリデータか10進数データで送信する仕様とかはないでしょうか?
Re: コミュニケーションユニット - take
2017/10/24 (Tue) 11:53:23
EXCELやVBAについては詳しくないので参考にならないかもしれませんが、まず受信はmscomなどのコントロールを使っていますか?
たしか受信したデータの型は文字列等の数値ではなかったと思うので、数値部分を抜き取って整数型に変換してみてはいかがでしょうか?
VBなどの言語は、ラダーとは違い変数の型などがありますので、たとえばCIntやCLng等で受信後にバッファから読み出した後変換してみてください。
もしくは8ビットならうまくいくのであれば、あらかじめラダー上でWTOBなどの命令で分離して送信してみてはいかがでしょうか?やりとりするデータがどのようなものか分からないのでなんともいえませんが、参考になればと思います。
Re: コミュニケーションユニット - nao
2017/10/25 (Wed) 23:50:07
ご回答ありがとうございます。
受信に使っているのはeasycommをダウンロードしてやっています。QJ71C24Nのほうは無手順で10進数のデータを送って送信データの最後に16進数で0A0Dを付けています。ちなみにMX COMPONENTは使用していません。
EXCEL上にASCIIコードでデータは上がってくるのですがそのデータを10進数に直すようなCODE関数を使ったりすると思うような数値になるときとならない数値がありうまく来ません。
現在はラダー上で強制的にBINDAという命令を使い10進数をASCIIに変換してEXCEL上に受信するようにしています。そうすると、うまくいくようになりました。