- ベストアンサー
PCとPLCでのRS232C通信における通信規約とは?
- PCとPLCでシリアル通信を行っています。通信間隔が短い場合に処理開始指令コマンドが受信できない問題があります。ウェイトを設けずに通信する方法はあるでしょうか?
- シリアル通信では通信規約が定められている場合があります。PLCとPCの通信規約について教えてください。
- PLCは三菱シリアルコミニケーションユニット QJ71C24N-R2を使用しています。PCはWinXpSP2、COMポート、VisualBASIC6.0のCommイベントを使用してデータ受信を行っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>シリアル通信では、上記のような問題が発生しないように・・・ そんなことはありません。 まあ、ウエイトもプロトコルと言えばプロトコルでしょうが、 そういう問題ではないと思います。 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
その他の回答 (1)
- otto0001otto
- ベストアンサー率25% (64/249)
僕とあなたのコードの違いは RTSを出しているか否かですから、 ハードウエアハンドシェークを使っていなければ 動作に違いはありません。(試しました) 解析は通信モニターなどで行いますが PCでも、見ることが出来るので 他のPCを接続してモニターしてみたら いかがでしょうか? プログラムはどこかから探してもいいし、 ほとんど先のコードでいいと思います。 PLCの代わりにPCを繋いで見るのも いいかもしれません。
お礼
ありがとうございます。度々すみません。 >動作に違いはありません。(試しました) ウェイトなしで動作しましたでしょうか? >一度PCを繋いで見るのもいいかもしれません。 PCもしくは232Cラインモニタで確認してみます。
お礼
ご回答ありがとうございます。 申し遅れましたが、当方では下記の通り記述しています。示していただいたサンプルよりも 設定項目は少ないですが、ボーレートやパリティ以外は基本的に同じだと思います。いかが でしょうか? また、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