ーーーーーーーーーーーーーーーーーーーーーーーーーーー
FA電気設計屋の技術倉庫は、下記、スポンサーの提供で記事を作成しております。
■ つよぽん@制御設計 https://x.com/kubisu_taka21
■ ドラフター|東大阪機械制御 https://x.com/drafter_san
東大阪機械制御 | 関西で制御設計を任せるなら東大阪機械制御
■ 箱入り https://x.com/hakomussu
https://hakoden.jp/
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
シリアル通信を行っておりますと、受信バッファが意図せず溜まってしまうことがあります。
これは、相手からの信号、つまり相手からの送信データを取りこぼしてしまったり、こちら側の電源がオフしているが送ってきてしまった場合など、様々な要因でデータが溜まってしまうことがあります。
シリアル通信で完全同期は不可能なため、このような現象が発生します。
また、受信バッファを取り除く方法としては、リセットやクリアなども効かず、受信バッファをクリアするには、自ら受信バッファが空になるまで受信する必要があります。
つまり、原点復帰といいますか、受信バッファの先頭出しを行う必要があり、これをすると必ず受信バッファが空になります。
これを行わないと、一つ前、二つ前のデータを読出ししてしまい、誤判定を基準にしてしまう可能性があり非常に危険です。
キーエンスKV-8000のシリアル通信の受信バッファ先頭出し方法について紹介します。
シリアル通信受信バッファ先頭出しとは
シリアル通信の受信バッファ先頭出しとは、こちらのシリアル通信ユニットと、相手機器のシリアル通信機器の状態をまっさらにしようということで、つまり、お互いに送受信データ情報がないことを意味します。
シリアル通信は、受信バッファにある情報を読み出しておかないと、その情報を保持しているため、相手が送ってきた情報がずれてしまう可能性があります。
それを防ぐために先頭出しをすると、安定して通信を行うことが可能になります。
受信バッファ先頭出し方法
受信バッファの先頭出し方法についてですが、簡単にいいますと、こちらが送信していないタイミングで相手からの受信データがある場合に、受信データを読み出すように要求をする方法になります。
受信データを読み出して、さらにまた、受信データがあるようなら読出しを行い、受信データが無くなったのを確認して動作完了とします。
これが受信バッファ先頭出しの方法です。
プログラム例
プログラム例は今後、載せますので、少々お待ちください。
ただ、プログラムの方法とすると、こちらから送信要求をしていない状態で受信要求が立っているようであれば、空受信のフラグとして、処理を実行するようにします。
まとめ
・受信バッファ先頭出しを行うことによって、安定してシリアル通信を行うことが可能になる。・送信要求をしていない状態で受信要求がオンしていれば受信バッファ先頭出しのフラグとして扱う。