2005年05月21日

FX2N-232IFではまりかけたこと

先日、FX-2NにRS-232Cを繋いで、上位のPLCと無線を通して通信する時にはまったこと。

ターミネータを「CR+LF」にして無手順で通信する必要があったのでFX2N-232IFを使うことに。なんか、 試験中から挙動が不審。っで、結論からいうと、

こんな風に、受信データにターミネータは正しくついているが、 続いて次のデータが送られてきてしまうとFX2N-232IFはうまく受信できません。このインターフェースブロック、 バッファメモリはちゃんとありますが、受信バッファはないんです。ですから、1個目の「CR+LF」を受信した段階で、 受信完了のフラグは立ちますが、それを見て、シーケンサがバッファメモリからデータを転送して、新たに受信可の状態にしても時すでに遅し、 後半のデータは途中まで読み捨てられてしまっています。運がよく、 データが長くてスターとビットが読めれば頭のちぎれた後半のデータが読めますが、 スタートビットの認識がずれればフレーミングエラーになってしまいます。

ようは、受信バッファがないので、シーケンサが受信可のフラグを立てないと受信ができないというのが仕様なんだそうです。 メーカー氏に聞きました。っで、おまけに受信完了フラグで受信完了フラグリセットをしようとしても、 受信完了フラグが立ったままになるという状況も発生してしまいます。

対処法としてメーカー氏はターミネーターを使用せずに、受信バイト数とタイムアウトを使って受信してくださいと言われましたが、今回、 私はこんな風にデータが繋がってくるのは途中に挟まっている無線機の応答のデータなんで、読み捨てました。 フレーミングエラーも無視しました。受信完了リセットをしても受信完了がOFFしない時には強制的にOFFしました。っで、とりあえず、 うまく動いています。

捨てているのは無線機の応答データで、コマンドが正しいか?とか、送信できたか?という応答を読まないことにしてしまいました。まあ、 どのレベルでデータのエラーチェックをするのかというの別の問題にはなるのですが。

FX2N-232IFを使う時は確かに全2重通信できるようになっているようですが、 完全なピンポン伝送じゃないとちょっと使いにくいかなという印象です。かならず、 1スキャン以上の隙間の開いたデータを受信するという保証がないと。

計算機リンクのプロトコル4形式なんかをしゃべらして、他のPLCのデータを吸い出したりするのには問題ないと思います。 吸われるだけなら、増設アダプタや機能拡張ボードで十分ですし。あと、 データは必ずCR+LFをターミネータにするときはアスキーコードのデータにして下さいとメーカー氏に言われました。

私は、ピンポンじゃ無しに、勝手にデータを送り返してくる無線機も行儀が悪い気がするんですけどね。

#上記内容は保証するわけでもなんでもありません。経験を書いただけです。FX2N-232IFに於いても改良がなされ、 状況が変わる場合は十分にあります。

posted by 金銀堂 at 08:53| 兵庫 ☁| Comment(0) | TrackBack(0) | 電気、電機、電器 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック