tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル受信バッファのクリア
記事No15337
投稿日: 2011/09/25(Sun) 16:09
投稿者Boon
VB6です。
PC1-変換器-PC2と接続しておいて、
PC1よりデータを変換器経由でPC2へ送信し、
PC2は受信データを変換器経由でPC1へ返信する・・・ということをしています。
VB6でMSCommを使って、PC1、PC2側の送受信プログラムを作りました。

PC1-変換器-PC2の電源をONしておいて
(PC1,PC2のプログラムを起動する前に)
変換器の電源のみ、ON/OFFを何回か繰り返すと
PC2の受信バッファに何かゴミが貯まるようです。

これ自体はしかたないことですが、
PC1,PC2のプログラムを起動したら、最初に
mscPort.OutBufferCount = 0  '--- 送信バッファのクリア。
mscPort.InBufferCount = 0   '--- 受信バッファのクリア。
としてもゴミをとることができません。

PCのシステムとして
MSCommのバッファ、通信ICのバッファとあると思うので
MSCommのバッファのクリアをしても
通信ICのバッファ内にゴミが残っているのかな?
と想像しているのですが・・・。

完全にゴミをとる方法を教えてください。

オシロで見ると、
PC1がAという1バイトを送信するとPC2には正しくAを送信されているのですが
PC2はxAとという2バイトを返信します。
このxがゴミと思われるのです。
この動作を1回したあとは、全く正常に送信、返信されています。

[ツリー表示へ]
タイトルRe: 受信バッファのクリア
記事No15339
投稿日: 2011/09/26(Mon) 10:59
投稿者オショウ
> 完全にゴミをとる方法を教えてください。

  PC間の場合、PCのハードウェア的な電気的要因がノイズとして
  乗ってしまうことは十分あるので、完全にソフトウェアで対応でき
  るとは言えません。

  ケーブルやPCの電源を含めたノイズ対策が必要かと・・・

  ソフトウェア的にノイズによる異常データの除去については、ポー
  トのオープンと、送受信を切り離し、送信側では、送信の直前に送
  受信バッファのクリアを行う。
  受信側はどうにもできないですが、受信したデータを折り返して送
  信しているということなので、こちらも送信側に送信する直前に送
  受信バッファのクリアをしてから送信する。

  と言う風に、あくまで送信のタイミングで送受信バッファのクリア
  を入れてやれば、軽減できるのではないでしょうか。

※ 20年以上FA関係でソフトウェア組んでますが、シリアル通信での
  ノイズの問題は、他の器機の影響も受けることから、完全に除去で
  きないです。異常データの受信が発生したら、再送要求する・・・
  と言うプロトコルを自前で実装しないといけないです。

以上。参考まで

[ツリー表示へ]
タイトルRe^2: 受信バッファのクリア
記事No15341
投稿日: 2011/09/26(Mon) 15:32
投稿者Boon
回答ありがとうございます。

>   ケーブルやPCの電源を含めたノイズ対策が必要かと・・・
電源ON後の1回を除けば全く正常なのです。

>   と言う風に、あくまで送信のタイミングで送受信バッファのクリア
>   を入れてやれば、軽減できるのではないでしょうか。
プログラムの起動時にそうしているのですが、ダメです。

[ツリー表示へ]
タイトルRe^3: 受信バッファのクリア
記事No15342
投稿日: 2011/09/26(Mon) 20:00
投稿者オショウ
> プログラムの起動時にそうしているのですが、ダメです。

  私はその方法で再発したことは無いんですがネ〜

  PCの筐体アースをちゃんと落とせば、無くなるとか?
  もしくは、2台のPCの電源のアース側接地が浮いて
  いるとか?

  なんか、ハード面での問題のように思いますが。

※ 2台のPC間でアース側の電位差があれば、発生する可能性
  は高いと思います。

※ 2台のPCをシリアルケーブルで繋いだ場合、漏電してませ
  んか?PCの筐体触ったら感電するとか・・・
  経年したPCなら、そういうことあります。

以上。参考まで

[ツリー表示へ]
タイトルRe^4: 受信バッファのクリア
記事No15343
投稿日: 2011/09/27(Tue) 14:08
投稿者Boon
回答ありがとうございます。

>   なんか、ハード面での問題のように思いますが。
私もそのとうりだと思っています。
とくにUART(ICチップ)の問題だと思っています。
変換器の電源OFF時の過渡的な電圧変化は送信波形とは程遠いものですが
それでも受信としてOnComm割込みが発生してしまう・・・というような実験結果も
あります。
ノイズの問題ではありませんし、このことを問題視して質問していません。

質問は、
私のVBのレベルでは
送信、受信バッファをクリアするぐらいしか手が無い、
それしか思いつかないので
他に、VBからゴミを除去する方法がありましたら
教えてください・・・ということです。

[ツリー表示へ]
タイトルRe^5: 受信バッファのクリア
記事No15344
投稿日: 2011/09/27(Tue) 14:54
投稿者shu
受信内容の以上はプログラム上で判断出来るのでしょうか?
だとしたら正常になるまでダミー送受信(または再送)をする
仕様にしてみてはどうでしょう?

[ツリー表示へ]
タイトルRe^6: 受信バッファのクリア
記事No15345
投稿日: 2011/09/27(Tue) 15:23
投稿者Boon
回答ありがとうございます。

> だとしたら正常になるまでダミー送受信(または再送)をする
> 仕様にしてみてはどうでしょう?

ご指摘のように目的によっては、色々な方法があると思います。

しかし、本件は
「変換器が完全にノーミスである」ことを確認するためのチェックプログラムなので
無理なのです。

[ツリー表示へ]
タイトルRe^7: 受信バッファのクリア
記事No15346
投稿日: 2011/09/27(Tue) 15:38
投稿者shu
> しかし、本件は
> 「変換器が完全にノーミスである」ことを確認するためのチェックプログラムなので
> 無理なのです。

発生している今回の件はそのノーミスの範囲(変換器の仕様)であると考えられるわけですか?だとするとそれはゴミデータとして捨ててしまっては駄目なのでは?

[ツリー表示へ]
タイトルRe^8: 受信バッファのクリア
記事No15347
投稿日: 2011/09/27(Tue) 15:55
投稿者Boon
回答ありがとうございます。

> 発生している今回の件はそのノーミスの範囲(変換器の仕様)であると考えられるわけですか?だとするとそれはゴミデータとして捨ててしまっては駄目なのでは?

電源ON後、PC1が送信してからのデータを問題にします。

送信前に貯まっていたゴミは除去したいという質問です。

[ツリー表示へ]
タイトルRe^9: 受信バッファのクリア
記事No15348
投稿日: 2011/09/27(Tue) 16:15
投稿者shu
> 回答ありがとうございます。
>
> > 発生している今回の件はそのノーミスの範囲(変換器の仕様)であると考えられるわけですか?だとするとそれはゴミデータとして捨ててしまっては駄目なのでは?
>
> 電源ON後、PC1が送信してからのデータを問題にします。
>
> 送信前に貯まっていたゴミは除去したいという質問です。

送信される前に受信バッファにはないデータなんですよね?
ということはそれは変換器内に残っているデータと思われます。
PC1から送信されたときに残っていたデータが一緒に送られるということなのでは?
そのときPC2は異常を検知されるとおもうので、PC1はNGをうけとるのですかね?
そのNGのときに初回だけとか再送してチェックするのでは駄目なんですか?
変換器の仕様によるものだと思うので単純にデータを無視するのではなく処理を行わないと本当のNGが取得出来なくなりますよ。

[ツリー表示へ]
タイトルRe^10: 受信バッファのクリア
記事No15349
投稿日: 2011/09/27(Tue) 17:45
投稿者Boon
回答ありがとうございます。

> ということはそれは変換器内に残っているデータと思われます。
変換器そのものは電圧のレベルコンバータです。

変換器そのものにデータの蓄積やデータの編集等の機能があれば
まず変換器を疑うべきであって、
この質問自体をしていません。

[ツリー表示へ]
タイトルRe: 受信バッファのクリア
記事No15350
投稿日: 2011/09/27(Tue) 18:53
投稿者オショウ
> PC1-変換器-PC2の電源をONしておいて
> (PC1,PC2のプログラムを起動する前に)
> 変換器の電源のみ、ON/OFFを何回か繰り返すと
> PC2の受信バッファに何かゴミが貯まるようです。

  話がそれているのが、主眼としなければならない話が
  別にあるのか・・・

  変換器のメーカー・型式は?
  まずそこからでは?

  電源の投入順序として、最後に変換器をオンにしても
  ゴミが溜まるのであれば、回避のしようがありません。

  所謂、チャタリングノイズでしょう。
  それをPC2があたかも受信データかのように受信してし
  まうのは回避のしようがありません。

  変換器では、変換器を制御するようなコマンドは無い
  のでしょうか?(なのでメーカー・型式が必要)

  無いなら、シリアルケーブルや変換器の電源にフェラ
  イトコアを入れてみるとか・・・

以上。参考まで

[ツリー表示へ]