• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PCとNCの通信シークェンスについて教えてくださ…)

PCとNCの通信シークェンスについて

このQ&Aのポイント
  • PCとNCの通信シークェンスについて教えてください。ソフトウェア開発者です。現在ファナックのコンソールにフロッピードライブがRS-232C接続されています。これをPCからの直結に置き換えたいということで、ソフトウェアを新しく作りました。
  • NC側でREADを行った後、PC側から送信すると、送信はされるものの受信されず、READのままで止まっています。試しに、PC側でXONコード(0x11)を受け取った時点で送信を開始する、というロジックにしたところ、無事に通信が開始され、PC-PC間ではこのロジックで良さそうです。
  • 工場稼働中のため、実際にNCと接続できる時間があまりありません。このロジックで良いのでしょうか?ご存じの方がいらっしゃいましたらよろしくお願い致します。

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

  • ベストアンサー
noname#230359
noname#230359
回答No.3

先の書き込みしたようにファナックのシステムが不明なので古いタイプで記載しました。ファナック3M(T)、6M(T)、0M(T)などは、取説に記載されていると思います。昔はNC>PCでNC側の処理が早く問題が少なかったのですが、最近ではNC<PCで処理が悪いとNC側のアラームが発生します。(短いデータなら問題少ない) DC3はISOとEIAで信号が違います。 ISOは0x93 EIAは0x13 補足 テストする前に、他の方が作成した通信ソフトで通信する事をお勧めします。 通信出来る環境にしてから、自作ソフトの検証をされた方が、通信出来ない場合に、疑う所が限定されると思います。 ソフト完成させる為にアドバイスなど必要で有れば、私の掲示板にでも書き込みください。(資料なども添付可能なので) 注意: フロッピードライブとNCコンソールをつないでいるケーブルを使用するのは危険です。フロッピードライブの電源供給をRS232Cで行っているのでしたら、やめた方がいいと思います。

その他の回答 (3)

noname#230359
noname#230359
回答No.4

 またまた迅速な回答をありがとうございます。  ファナックのコンソールが制御しているのはアマダのタレパンで、その説明書はあるものの、ファナック自体の説明書は何もないので困っています。とりあえず来週、機器銘版を見てきます。  ケーブルの件は、フロッピードライブがRS-232Cから電源を供給されているので、私も危ないとは思っていました。タレパンですので、送信するデータは小さく、数100bytesから最大でも20Kbytes程度です。ですので、DC3制御が発生することは希だと思っているのですが…  他の通信ソフトによる検証は来週いろいろやってみるつもりです。現在は間に合わせ的にパソコン通信ソフトKmTermXを使って調べています。(昔開発援助に携わったことがあるので…)  竜の子さまの掲示板にもお邪魔させていただきます。

noname#230358
質問者

お礼

 アドバイスをいただいた皆様、ありがとうございました。  無事に通信が確立でき、データの送信ができるようになりました。その後、作成したソフトに都合の良いようにサーバへデータを転送するソフトをもう一本作り、さらにLINUX専用サーバの構築も行って準備完了となりました。  今日、急に指示が出て、来週から稼働を始めたいとのことで、今度はLANケーブルやRD-232Cケーブルの取り回しなど、SE業務になりそうです。

noname#230359
noname#230359
回答No.2

 さっそくのお返事ありがとうございます。  紹介いただいたページも参考にして、コード0x11を受信したら送信を開始するように作りました。これで大丈夫と思ったところ、PC側は全データを送信してしまいますがNCコンソールは反応しませんでした。そこで、汎用の通信ソフトを接続してどうなっているか調べたところ、確かにREADを行うと0x11が帰ってきていました。ですので、ロジックは正しいと思います。あと疑わしきはケーブルでしょうか? 20年ほど前に同じようなプログラムをN88BASICで書いた時にはケーブルを作ったような記憶があります。竜の子様のサイトにあるようなケーブルを自作するしかないですね。と、ここで、現在フロッピードライブとNCコンソールをつないでいるケーブルで試してみればよかったと気付いた… こちらは来週週明けに試してみます。  それと、DC3コード(0x13でいいと思いす)を受信した時には10キャラクタ以内に送信を停止、とのことですが、これだとキャラクタ単位の転送しかできないのでしょうか? 現在はDelphiで書いていますが、RS232Cはコンポーネント化されていて、行単位でTransString(String)のようにしています。これだとDC3コードを受信した時に停止させても1行は送られてしまうことになります。試しにキャラクタ単位での転送を作り、DC3コードを受信したら停止するようなコードを書いてみましたが、やたらと遅くて困っています。

noname#230359
noname#230359
回答No.1

ファナックであれば、おおよそは合っていると思います。 ファナックのシステムが分かれば、詳細説明できます。 ISOコードとEIAコードで若干違いがあります。 1.NC機よりDC1信号を受けてPCはデータの転送を開始します。 2.NC機側で処理が間に合わない場合、DC3信号をPCに送ります。 PCは10キャラ以内に停止させます。 3.NC機側で処理が終わると再開のDC1信号をPCに送ります。 PCは続きからデータ転送を行います。 「リーダをAUTOモードにしてREADを行えば読み出しできる」とは、NC機側のメモリが少ないため、PCからデータ転送しながらNC機が動作する機能です。 通常は編集モードにてREADを行い、NC機のメモリに記憶する方が一般的です。 私も通信ソフトを数点作成し、HPに掲載しています。通信関連についても説明していますので参考にしてください。

参考URL:
http://www5a.biglobe.ne.jp/~NCPRO/