このQ&Aは役に立ちましたか?
MCプロトコルで1ビットだけONする方法についての質問
2023/10/19 19:23
- MCプロトコル通信アプリを作成中。ワード単位書き込みはできているが、ビット単位の書き込み方法がわからない。
- MELSECプロトコルマニュアルを確認したが、ビット単位書き込みの方法についての説明がない。
- バイト配列にどの値を書き込めば1ビットだけONになるのかわからない。文字列連結からASCII変換する方法が良いかどうか知りたい。
MCプロトコル 1ビットだけONしたいとき
2018/05/07 08:05
お疲れ様です。
現在MCプロトコル通信アプリを作成しておりましてワード単位書き込みはできております。
文字列で連結させてアスキー変換する方法ではなく、
純粋にバイト配列を作って入れ込んでSocket の Write, Read をやる方法をとっております。
MELSECプロトコルマニュアルをみたのですが、
ビット単位書き込みのときは、データ列をビット列で並べるだけ、という解釈しかできません。
たとえば1ビットだけONしたいときは、バイト配列に書き込むやりかただと、どういう値を書き込めばよいのでしょうか。 &H1 (0x01) という値を書き込んでも何もなりません。
やはり文字列連結からASCII変換して送るやりかたのほうが賢明なのでしょうか?
ご教授いただければ幸いです。。
質問者が選んだベストアンサー
本件のMCプロトコルとは
三菱電機PLC通信プロトコルの事ですよね?
http://www.mitsubishielectric.co.jp/fa/download/index.html
MELSECコミュニケーションプロトコルリファレンスマニュアル Ver.AD
SH-080003 (6.63MB)
97/486ページ
ビット単位の一括書込み(コマンド: 1401)
ここに記載されてるけど
>データ列をビット列で並べるだけ
と、言う風には解釈できないけど?
>文字列で連結させてアスキー変換する方法ではなく
アスキーモードでなくバイナリモードの意味でしょうか?
>&H1 (0x01) という値を書き込んでも何もなりません。
例えばデバイスM100を1個だけとかの意味?
マニュアルをよく読みましょうね
0x0100ですね
0x01 00
↑ ↑
M100 M101
尚、通信系プログラムを作る時の鉄則として
データ読出し命令から作るベシ!
データ読出し命令が満足に動かないのに書込み命令は厳禁である
本件も読出し命令から先にプログラム&デバッグしていれば
悩むことなく完了した話でしょうね
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
その他の回答 (3件中 1~3件目)
プロトコル自体を作らないといけない
232Cで説明すると
今やってるのは
http://www.ee.fukui-nct.ac.jp/~yoneda/data/C/a_06.htm
このレベル
やらないといけないのは
http://www.picfun.com/serial22.html
このレベル
お礼
2018/05/08 19:51
ありがとうございます。
マイコンも難しいですね。SPIとか動かすのにとても苦労したことがあります。
こんばんは
このプロトコルは全く無知ですので、ほんの少し場違いかとは思いますが一言。
”たとえば1ビットだけONしたいときは、バイト配列に書き込むやりかただと、どういう値を書き込めばよいのでしょうか。 &H1 (0x01) という値を書き込んでも何もなりません。”
上記文章箇所のみについてです。
”1ビットのみON”にする為のバイト単位の書込では、0x01を書き込むとビット0のみ1としてビット1~7までを0という書込になります。
ビット0のみ1として他ビット1~7は普遍とするためには、直前に該当するバイトを読み出してそのバイトと0x01をORする必要があります。ORすればビット1~7は変化しません。
以上、
お礼
2018/05/08 19:52
0x01をORする必要があります。ORすればビット1~7は変化しません。
ビット演算ですね。ありがとうございます。
お礼
2018/05/08 19:51
ありがとうございました。
>データ読出し命令が満足に動かないのに書込み命令は厳禁である
参考にさせていただきます!