• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:RS232C通信(PC⇔PLC))

PCとPLCでのRS232C通信における通信規約とは?

このQ&Aのポイント
  • PCとPLCでシリアル通信を行っています。通信間隔が短い場合に処理開始指令コマンドが受信できない問題があります。ウェイトを設けずに通信する方法はあるでしょうか?
  • シリアル通信では通信規約が定められている場合があります。PLCとPCの通信規約について教えてください。
  • PLCは三菱シリアルコミニケーションユニット QJ71C24N-R2を使用しています。PCはWinXpSP2、COMポート、VisualBASIC6.0のCommイベントを使用してデータ受信を行っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答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

kyabanock
質問者

お礼

ご回答ありがとうございます。 申し遅れましたが、当方では下記の通り記述しています。示していただいたサンプルよりも 設定項目は少ないですが、ボーレートやパリティ以外は基本的に同じだと思います。いかが でしょうか? また、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

その他の回答 (1)

回答No.2

僕とあなたのコードの違いは RTSを出しているか否かですから、 ハードウエアハンドシェークを使っていなければ 動作に違いはありません。(試しました) 解析は通信モニターなどで行いますが PCでも、見ることが出来るので 他のPCを接続してモニターしてみたら いかがでしょうか? プログラムはどこかから探してもいいし、 ほとんど先のコードでいいと思います。 PLCの代わりにPCを繋いで見るのも いいかもしれません。

kyabanock
質問者

お礼

ありがとうございます。度々すみません。 >動作に違いはありません。(試しました) ウェイトなしで動作しましたでしょうか? >一度PCを繋いで見るのもいいかもしれません。 PCもしくは232Cラインモニタで確認してみます。

関連するQ&A