PCとPLCでシリアル通信を行っています。PLCからPCへステータス受信要求し、PCから正常アンサーがあればPLCからPCへ処理開始指令コマンドが出力されるというプロトコルです。実際には、PC側ステータス正常の場合、PLCへの正常アンサーを出力するところまでは行くのですが、その直後にPLCから送信されているはずの処理開始指令コマンドを受信することができません。一連のコマンド送信・受信の間隔が狭すぎるのかと思い、PLC側で処理開始指令コマンド送信前に10msecのウェイトを設けるとPC側で受信することができました。(PLC側の送信が悪いのか、PC側の受信に問題があるのか不明ですが、、、)
シリアル通信では、上記のような問題が発生しないように送受信の間隔等なんらかの規約が定められているのでしょうか??ウェイトを設けることなく通信を行いたいのですが、考えられる対処法を教えていただけませんでしょうか。よろしくお願い致します。
なお、通信機器の仕様は以下の通りです。
PLC:三菱シリアルコミニケーションユニット QJ71C24N-R2
PC:WinXpSP2、COMポート、VisualBASIC6.0のCommイベントによりデータ受信(10msecウェイトなしでは、処理開始指令コマンド送信時にCommイベントが発生しませんでした。)
※アスキー文字、PLC・PCともに送信終了コード(CR+LF)でバッファデータ読込み
No.1ベストアンサー
- 回答日時:
>シリアル通信では、上記のような問題が発生しないように・・・
そんなことはありません。
まあ、ウエイトもプロトコルと言えばプロトコルでしょうが、
そういう問題ではないと思います。
COMポートのオープン処理はこんな感じ
strBps = "9600,N,8,1" '9600bps、パリティなし、8ビット、ストップ1
MSComm1.CommPort = p_PortNo 'ポート番号の指定
MSComm1.Settings = strBps 'オープンパラメータ
MSComm1.InputLen = 0 'バッファ全体を読み取るようにする
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True 'ポートをオープン
MSComm1.NullDiscard = False
MSComm1.Handshaking = comNone
MSComm1.RTSEnable = True
MSComm1.RThreshold = 1
COMの割り込みイベントはこんな感じ
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
varDatas = MSComm1.Input
End Select
End Sub
ご回答ありがとうございます。
申し遅れましたが、当方では下記の通り記述しています。示していただいたサンプルよりも
設定項目は少ないですが、ボーレートやパリティ以外は基本的に同じだと思います。いかが
でしょうか?
また、MSCommイベント自体発生していないので、Private Sub MSComm1_OnComm()以下の
記述が違っていることは関係ないと思います。再度ご返信・アドバイスいただければ幸いです。
Private Sub Form_Load()
’COMオープン
' 入力文字列用バッファ。
Dim Instring As String
' COM1 を使用します。
MSComm1.CommPort = 1
' 19200bps、偶数パリティ、データ長 8 ビット、およびストップ ビット長 1。
MSComm1.Settings = "19200,E,8,1"
' Input プロパティ使用時に、バッファ全体を読み取るように設定します。
MSComm1.InputLen = 0
' ポートを開きます。
MSComm1.PortOpen = True
MSComm1.RThreshold = 1
End Sub
Private Sub MSComm1_OnComm()
Dim RS_Buff As String
RS_Buff = MSComm1.Input
End Sub
No.2
- 回答日時:
僕とあなたのコードの違いは
RTSを出しているか否かですから、
ハードウエアハンドシェークを使っていなければ
動作に違いはありません。(試しました)
解析は通信モニターなどで行いますが
PCでも、見ることが出来るので
他のPCを接続してモニターしてみたら
いかがでしょうか?
プログラムはどこかから探してもいいし、
ほとんど先のコードでいいと思います。
PLCの代わりにPCを繋いで見るのも
いいかもしれません。
ありがとうございます。度々すみません。
>動作に違いはありません。(試しました)
ウェイトなしで動作しましたでしょうか?
>一度PCを繋いで見るのもいいかもしれません。
PCもしくは232Cラインモニタで確認してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
高校生はアルバイトするべきだろうか?賛成だったら「賛」、否定だったら「否」を文頭においてあなたの意見を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
PLCとPCの通信
Visual Basic(VBA)
-
RS232Cストレートとクロスケーブルについて
その他(パソコン・周辺機器)
-
三菱GOTの画面切り替えについて
その他(プログラミング・Web制作)
-
-
4
RS232、RS232C、シリアルポート
その他(パソコン・周辺機器)
-
5
PCとシーケンサが通信できない
その他(コンピューター・テクノロジー)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
WriteFile()でのデータ送信がで...
-
シリアル通信の出力バッファと...
-
「スイッチングハブのバッファ...
-
winsockでソケット通信の開発を...
-
バイナリデータ受信時のデータ順
-
WinsockAPIのrecvfromの受信デ...
-
socket: recvはいつ,どれだけ...
-
VB2005でWin32APIを用いてRS-23...
-
Connection reset by peer
-
ソケット通信内 read関数について
-
SerialPortのDataReceivedイベ...
-
Linuxでのシリアル通信について...
-
シリアル通信エラー
-
再現性の無いバグ
-
SocketのSend関数でのCLOSEの検...
-
メールを数日後に自動返信
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
バックグラウンドのプロセスの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
WriteFile()でのデータ送信がで...
-
winsockでソケット通信の開発を...
-
シリアル通信の出力バッファと...
-
Linuxでのシリアル通信について...
-
ソケット通信内 read関数について
-
シリアルポート通信
-
シリアル通信エラー
-
RS-232Cでバイナリデータを受信...
-
RS232C通信(PC⇔PLC)
-
SocketのSend関数でのCLOSEの検...
-
rs232cでの受信データ(mscomm)...
-
recv関数の受信結果について
-
socket: recvはいつ,どれだけ...
-
「スイッチングハブのバッファ...
-
SerialPortのDataReceivedイベ...
-
UDP処理のエラーについて
-
ClearCommError呼び出し時のCE_...
-
winsockの動作について。
-
waveIn、waveOutでの音声録音・...
おすすめ情報