- ベストアンサー
WIN XPでのRS232C送信について
- パソコンWIN XPからハイパーターミナルを使用してRs232C通信、送信相手はPLC(シーケンサ)を行おうと試みていますが、送信動作をすると”無効なメッセージ形式”と出て送信出来ません。
- パソコンにはCOMポートが無いので、USBをシリアル変換ケーブルを使用して通信しています。RS232Cの配線(クロス)、通信設定、COMポート選択に間違いが無いかも確認していますが、問題ないと思っています。
- USBシリアル変換ケーブルが原因かとも思いますが、”無効なメッセージ形式”なので、送信するデータ形式に問題があるのではと考えていますが、正しくはどの様な形式のものをファイルの送信にすれば宜しいでしょうか。またファイルの送信設定で、色々なプロトコル選択があります。どれを選べば宜しいでしょうか。通信ポートの設定は9600,N,8,1です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
回答No.3です >1)改行コードは付けていません。 > PLC側では受信文字数を固定数として設定して受信としています。 と、言う事はPLC側は無手順モードですか? で有るならば話は難しくない ハイパーターミナルのキーボードから適当に文章を書くだけ ハイパーターミナルはリアルタイムでキーボードのコードを送信します 例えば"A"のキーボードを押すと[41h]が即送信されます "ABC"[Enter]と押せば 41h,42h,43h,0Dh,0Ahと5文字送信されます PLCラダーを少し変更して(テスト用) (何かのボタンを押したら強制的に固定テキストを送信するように) 44h,45h,46h,0Dh,0AhとPLCから送信すれば "DEF"とハイパーターミナルに表示されます もしボーレートや7/8ビット等のパラメータが違っていれば "41h"が"42h"とかに化けてます ポートが開いて電線が繋がってさえ居れば文字化けするかも知れませんが 何らかの表示されます(制御コードは無視される場合もありますが) PLCの機種にもよりますが所謂エンディアンの問題で http://e-words.jp/w/E38393E38383E382B0E382A8E383B3E38387E382A3E382A2E383B3.html "41h"が"14h"になったり"4142h"が"4241h"になってたりします こうしたくだらない仕様の不一致によるバグとは言えないバグは ハイパーターミナルで見つける事はほぼ不可能に近い だからHEXデータでモニタする必要があります
その他の回答 (4)
テキストファイルを送りたければ、「テキストファイルの送信」を使ってください。Z-modemやX-modemを使うとエンコードされてしまい、PLCが理解できなくなります。PLCが理解できないから、エラー応答をよこすので、それが無効なメッセージ形式という現象につながっているのでは? Z-modem等はテキストしか流せない回線にバイナリファイルを送信するためのプロトコルで、エラー訂正とハンドシェークを行っているため、そのプロトコルを使えるもの同士でないとだめです。PLCは大抵、べたテキストしか理解できませんから、そういうプロトコルを使用してはいけません。 それと、ハイパーターミナルでうまくいかない、あるいは制御コードを使うためやりにくい場合は、別にツールを用意する方がいいです。フリーソフトでもありますよ。(参考URL) プリアンブルとポストアンブルですが、データのヘッダとフッタみたいなものです。[プリアンブル]データ本体・チェックサム[ポストアンブル]のような形で使用します。ありがちなのはプリアンブルにSTX(02h)、ポストアンブルにETX(03h)をつけるパターンです。これらは思いっきりバイナリ値なので、メモ帳では作成できませんが、参考URLのようなツールであれば対応できます。
- lumiheart
- ベストアンサー率47% (1141/2405)
ハイパーターミナルでも全ての信号がアスキーであれば可能ですが 出来れば専用のプロトコルアナライザかラインモニタを使うべき http://miechan.jp/hmrmz1.htm ベクターにもラインモニタが有ります http://search.vector.co.jp/search?query=%83%89%83C%83%93%83%82%83j%83%5E PLCのメーカ及び機種は何でしょう? 三菱A&Qなら不可能ですよ 何故ならハイパーターミナルから[ENQ](05h)[ETX](03h)を出力する事はできませんから >”無効なメッセージ形式” このメッセージはハイパーターミナルが出したエラーメッセージでしょうか? 憶測ですがPLCが送信した[NAC](15h)を受信したのではないでしょうか? ハイパーターミナルではこうした制御信号のモニタはできませんので 16進モニタ機能のあるラインモニタを使いましょう 会社支給のPCでソフトを自由にインストール出来ないと言う事情が有るかも知れませんが ちゃんと許可を取れば大抵は許可は降ります 「これが無いと出来ません」と、言い切ったもん勝ち
補足
ご回答有難う御座います。 ラインモニタが必要ですか。。。 PLCは三菱ではありません。機種は申し上げられません。すみません。 ”無効なメッセージ形式”はハイパーターミナル側で表示されるメッセージです。PLCからは送信はしておりません。 ”無効なメッセージ形式”の発生原因(意味)が分かればと思いますが。
コマンドのフォーマットが解らないので、一般論になりますが、もしプロトコルがあっているとしたら… 1)改行コードは正しいか? 2)チェックサムが必要ではないのか?つけている場合、計算は正しいか? 3)プリアンブル、ポストアンブルでデータを挟む必要はないのか? といったあたりが気になります。もし2)3)が原因だと、テキストに制御コードを埋め込む必要があるので、メモ帳+ハイパーターミナルでは対処しきれないかも知れません。 ところで、無効なデータ形式と言ってきているのはPLCですか?
補足
ご回答有難う御座います。 1)改行コードは付けていません。 PLC側では受信文字数を固定数として設定して受信としていま す。とりあえず5文字固定とし、5文字受信できたら受信完了とな ります。(なる筈です。) 2)PLC受信側はチェックサムは無しで設定していて問題ないと思っ てます。PLC側の計算も受信したら自動的にデータレジスタに入 力させる仕組みになっていて問題ないと思います。 2)プリアンブル、ポストアンブルの具体的な意味が分かりません。 例などで教えて頂けたらと思います。 無効なデータ形式の表示はパソコン側で表示されます。 以上です。
- memphis
- ベストアンサー率40% (975/2395)
シーケンサとパソコン側の通信設定が合っていないからでは?
補足
ご回答有難う御座います。 通信設定は双方合っています。何度も見直しました。
お礼
お世話になります。 送信出来ました。まさか直接入力すれば送信出来るとは思いませんでした。ASCII設定でローカルエコーにすれば入力した文字が画面に表示します。 これでPLCのシリアル通信のソフト作成、デバックが出来ます。助かります。色々アドバイス有難う御座いました。