• ベストアンサー

古い計量機器からのrs232cを使用したデータ入力について

知り合いが現在、15年以上たった計量器を利用してましてPCの入れ替えを機会に、この計量器からデータを取り込めないかと相談を受けました。計量器メーカーからは手書きのコネクタ配線図を入手しましたが 計量器側のコネクタ=フルピッチ50ピン pin1LSB~16MSB(バイナリ出力) 17~25(なし) 26~50(GND) コンピュータ出力  トランジスタ・オープンコレクタ  負論理、バイナリ と言う内容だけでした。 この出力から現在のPCへrs-232c入力として25ピンか9ピンへ取り出すためにはどのような結線のケーブルが必要でしょうか?私は16ピンからバイナリ出力では9ピンに入力不可能な気がします。今ある情報は全て書きましたがこの情報だけでの判断は難しいでしょうか? ちなみに、入力データ処理についてはvbで作成予定です。 よろしくお願いします。

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

  • ベストアンサー
  • matyrcry
  • ベストアンサー率47% (101/213)
回答No.9

仕様にある通りなら、16本ともデータラインでストローブライン(読むタイミングを 指示する信号)はありません。 更新周期毎にデータを書き換えるタイミングがあり、そのときにごく短時間ですがデータを 読み損ねるタイミングがあります。 慣れた(金と手間を惜しまない)設計者なら、確実な手順を決めてデータを保証する と思いますが、通信に時間がかかり、操作をコーディングする手間もかかり、取り合いのた めに双方向のIOを用意しないといけない(=信号の電源確保の問題が出るかも)ので、 連続して複数回読んで、一致すれば取り込む(いわゆる2回一致読み込み)で逃げているこ とが多いのではないでしょうか。 データ更新中か、データホールドの取り合い信号が用意されてなければ、そういう方法で 取り合うものとして設計されているのだと思います。 うちの古い製品(なぜか”計量器”だったり)もそういうのが多いです。

marokun
質問者

補足

ありがとうございます。 垂れ流しデータの取り込みロジックが分かってきました。 中盤ではあきらめかけてましたが、やる気になってきました。実際の作業はまだ1ヶ月ほど先になりそうですが、その時にはまたよろしくお願いします。

その他の回答 (8)

  • Pesuko
  • ベストアンサー率30% (2017/6702)
回答No.8

通常のパラレル転送の場合通信データの取りこぼしが無いようにするのが普通です。 これをパラレルの ハンドシェイク といいます。 例えば  (1)計測器がIOデータ 例1111111100000000 を出して保持 (2)計測器が ストローブ信号を 出す (3)PCが ストローブ信号を受信するまで待つ。 (4)PCが ストローブが立ち上がればIO信号をデータとして読み込む (5)PCが データを2バイト読み込んでストアする。 (6)PCが 読み込み完了信号(ACK)をだす。 (7)計測器が ACKを受信するまでストローブ・データを保持する (8)計測器が ACKを受信すると ストローブをOFFする。 (9)計測器が ストローブをOFFすると (1)に戻り次の1ワードデータ転送に移行する。  つまりPC側でOUTがひとつ必要なのです。 貴方が言うように 計測器が垂れ流しの場合データがまともに受信できません。 ひとつの方法として ストローブのタイミングを固定時間で出す場合もありますが、受信側がストローブタイミングより 十分早い処理が可能で無いといけませんし、何処かでタイミングがずれると修復不可能になるので通常しません。 また(2)でストローブが必要なのは (1)で出力した16Bitデータが電気的に全て出力されるのにμsecオーダーで ばらつくのです。 したがって 全てが正常に出力されたタイミングでストローブが出てきます。(出力機器により時間が違います) このストローブ出力タイミングが機器ごとに違うために、同期が取れないので受信完了としてACK(アック)を帰してます。 PS 私が最初に書いた開発環境とはPLCの開発環境です。 一番単純な ハンドシェイク http://www.picfun.com/parallel01.html プリンタポート(8bit)の割り付け http://www.picfun.com/parallel02.html 計測器に良く使われる GP-IB(パラレル)規格 http://www.orixrentec.co.jp/tmsite/know/know_gpib.html

marokun
質問者

補足

詳しい説明ありがとうございます。 計量器の仕様を見るとストローブの発信とackの受信ができそうにないので、なんとか垂れ流しを受信できるようにしようと思います。最悪受信に失敗してもpc側で修正可能な仕様にするつもりですし、そこまで重要データでもありませんので。 詳しいお教えのおかげで少しやる気になってきました。 pc側のアプリを作ってから挑戦しようと思います。 コンテックのボードも準備しなくちゃ。

  • matyrcry
  • ベストアンサー率47% (101/213)
回答No.7

パラレルIOを操作した経験はおありでしょうか? '1' を伝えるのに、 シリアル伝送では1本の信号線をON/OFF状態を一定時間毎に00110001のように 変化させて伝えますが、 パラレル伝送では8本の信号線のON/OFF状態を同時に00110001のようにして 伝えます。(受ける側も8本を同時に読んで解釈します) 信号を読むタイミングは別の信号を1本使って伝えることが多いですが、ない場合 もあります。(使う人が勝手に決めます) シリアル伝送は232Cならスタートビットで始まりストップビットで終わるなど 大半で伝送の規則が定義されていますが、パラレルの場合は規則なしで自由に使わ れることが多く、対象器物の動きに合うように自分で信号線を操作してするのが普 通です。 USBやイーサのようなシリアルと違って運用規則自体が曖昧なので、単純な変換 アダプタのようなものはないですよ。

marokun
質問者

補足

パラレルIOの操作経験はありません。 シリアル・パラレルの動作を理論では分かってるつもりですが、パラレルが規則なしで使われていることが多いのは知りませんでした。 そこでデジタル入出力IFが必要になるんですね。 おかげで今、必要なことが理解できました。 デジタル入出力IFが私に扱える程度のものか確認してから導入可否を決めようと思います。

  • Pesuko
  • ベストアンサー率30% (2017/6702)
回答No.6

ごめんなさい、ストローブとか少しoutも必要でしたね。 とりあえず コンテックPIO-32/32L 35000円 32点カード http://www3.contec.co.jp/B2B/ConIWCatProductPage_B2B.process?Merchant_Id=1&Section_Id=2&pcount=0&Catalog_Id=2&Selected_CatalogMaster_Id=&Product_Id=715

参考URL:
http://www3.contec.co.jp/B2B/ConIWCatProductPage_B2B.process?Merchant_Id=1&Section_Id=2&pcount=0&Catalog_Id=2&Selected_C
marokun
質問者

補足

計量器からの垂れ流しデータのpcへの入力のみと考えてましたので、outは必要ないと思います。 だとしたら入力のみ16のIFでよいでしょうか。 あと、開発環境と言われましたが、pcとソフト類だけじゃだめなのでしょうか。ある程度は自宅で作成して現場で調整テストを考えてます。

  • Pesuko
  • ベストアンサー率30% (2017/6702)
回答No.5

marokunさん 市販のパラレル<>シリアル変換を使用とおっしゃってますが、市販品の多くはプリンター用の8bitパラレルのはずです。 今回16BITのワード転送になりますから、無理ですよね。 私がPLCを使うといったのはコンテックさんなどのPIOボードがかなり高額なためもあります。 開発環境をお持ちなら安い高速PLCですと数万円で済みます。 PLCがパラレル<>シリアル変換機として作動するわけです。 またPLCを使用しました場合、ACK等が特殊タイミングでもプログラムで組んで変更できるから柔軟なんです。 marokunさんがVBでハンドラを作成可能ならPIOボードだけで済みますからそのほうが安いかもしれません。 例えばコンテックの PI-32L が定価23000円 in32点 

参考URL:
http://www2.contec.co.jp/products/products.cgi?HTML=DTL&KATA=PI-32L(PCI)H
marokun
質問者

お礼

なるほど、それでシリアル-パラレル変換器は36ピンだったのですね。 PLCやPIOとなるとちょっと敷居が高そうな気が…。 ハンドラ作成にどの程度手間が掛かるかも分かりません。コンテックのサイトで情報を集めて出来そうか考えてみます。

  • matyrcry
  • ベストアンサー率47% (101/213)
回答No.4

PCベースでのPIO取り合いは経験が無いのであま り参考にならないかもしれませんが... 16 オープンコレクタ PC ボード くらいでGoogleで検索かけると拡張ボードの紹介記事 が結構ヒットします。 自分なら三菱かキーエンスあたりの小さいPLCを使 うんですが、PLCの準備環境がないならインターフ ェースあたりのPIOボードを付けて処理したほうが、 質問主さんの分野的に楽そうと思います。 省配線の分野で232C(かイーサ)で操作するリモ ートIOなんかどっかありそうな気もするんですが、 ちょっと見つからなかったです。

marokun
質問者

補足

お答えありがとうございます。 PIOボード?検索して見てみましたがピンと来ません。 どうも私のよく分からないところまで来てしまいました。 ケーブル結線とパラレル-シリアルコンバータで、後はソフトで何とかと思ってましたがそんな簡単な話じゃないんでしょうか? ある程度は調べて実行する覚悟がありますが、あまりに時間とお金が掛かりそうなら断念しようかと思います。

  • Pesuko
  • ベストアンサー率30% (2017/6702)
回答No.3

まあ通常の処理なら早いPLCが妥当だと思います。 16Bitのパラレルで、多分ストローブが1chでしょうか? IOをストローブでワード転送し、データがバイナリーならそのままDTエリアに転送して、レジスタをストローブ毎にシフトすればいいと思います。 データ量が大量なら100ワード単位でバッチ処理的にPCへデータ転送をかけて行き、転送処理が終わった所から初期化するようなイメージでしょうか。 うちの課がすごく得意な部分ですが、ここでは受注活動も出来ないので・・・・

marokun
質問者

補足

お答えありがとうございます。 うーん、PLCが必要な程のことではないと思ってました。 ストローブ?トリガとなる出力があるのか入手した資料からは分かりませんでした。(質問に載せたのが現在の全資料です) データ量はごく少量です。計量した重量最大6桁程度までの数値のみです。 ケーブルは加工が必要なようですね。 フルピッチ50から16本をシリアル・パラレルコンバータの36ピンに繋いでシリアルデータとして取り出す。でも、36ピンのピン配列も分かりません。ネットで調べて何とかなるのかなあ。 制御系のプログラミング経験はありませんがフリーのシリアル通信モジュールもあるので何とかなるかと考えてました。本当に出来るんでしょうか? 仮に発注できるほどの仕事でもありませんしね。 予算は6桁行かない位なので。

  • c80s3xxx
  • ベストアンサー率49% (1631/3289)
回答No.2

出力は16ビットのパラレルデータなので, そのままでは当然 RS232C では取り込めません. ピン数の問題ではなく,ポートの仕様の問題です. 解決策は,シリアルエンコーダを作るとか買うとかするか, パラレルインタフェースボードを PC につけるかでしょう. パラレルインタフェースボードは,汎用品がいろいろな 会社から出ています.値段はピンキリですが, けっして安いものではありません. VB でアプリを作るなら,インタフェースボードを 操作するための ocx なりがボードに付属している事を 確認してから買うようにしましょう. プログラミングの手間がまるで違うので. それはそれとしても,計量器側の信号のタイミングとか そういう情報がないと,やっかいですね. たとえば,データが書き換わったときにそれを知らせる 信号端子とかもなにもないわけですか. プログラム側で,取り込み時にラッチとか考えないと 誤動作しそうです.

marokun
質問者

お礼

やはり、この情報では機器から16ビットのパラレル出力されるって事ですよね。パラレルインターフェースボードを少し調べてみます。しかし機器+開発コストが6桁以上掛かるならあきらめようかと思います。 機器側にしても、出力タイミングは機器のあるボタンを押した時らしいですが、メーカーの事情で詳細情報がこれ以上得られるか不明です。手探りでの作成になりそうなのでリスクが大きそうならやめておいた方が無難に思います。何しろ昭和の時代の機械ですし、出力ポートが生きているかどうかも分かりません。 的確なアドバイスありがとうございました。

noname#65504
noname#65504
回答No.1

プログラミングについては詳しくないのですが、私の所では、 RS-232C → USB 変換ケーブルを用いています。 これではだめでしょうか?

参考URL:
http://www.iodata.jp/prod/mobile/serial/2003/usb-rsaq2/index.htm
marokun
質問者

お礼

お答えありがとうございます。 usbもシリアル入力なので無理だと思われます。 やはりパラレル-シリアル変換が必要なようです。

関連するQ&A

  • RS-232C機器との結線方法

    No. 114606と関連した質問です。 PC-9801を使って、RS-232Cポートを持つ実験装置(温度コントローラー)の制御を行いと考えております。 温度コントローラーのRS-232Cポートには3つの端子があり、それぞれ 1. Signal Ground 2. Transmit Data 3. Receive Data となっております。温度コントローラーとPC-9801とを繋ぐケーブルを自作するにあたって、これら3つの端子とPC-9801のD-SUB 25ピン端子との、結線方法を教えていただきたく存じます。 どうかよろしくお願い致します。

  • シリアルRS-232出力機器からのデータ取り出し

    古い計測機器を用いており,これまで測定データの出力は付属していたプリンターで行っていたのですがプリンターが不調でプリントアウトが出来なくなってしまいました。 そこで,この機に測定データをそのまま取り出してPCで直接データを扱うことが出来るようにしたいのですが何が必要で,どのようにすればよいでしょうか? 素人なので至らない点があると思いますがよろしくお願いします。 計測機器出力 RS-232 9ピン 出力先 windowsXPに出力したいと思っています(不可能なら別のPCでも)

  • オークマLH35-N、RS232C結線について

    初めまして、お世話になります。 機械は触ったことがある程度で、電子工作は素人レベルです。 ・オークマLH35-N ・NCはOSP5020L ・PCはWinXP端末 ・ソフトウェアはDnet ・USB Type-AはD-sub9ピンに変換(SANWA USB-CVRS9HN) 上記のような環境でPCとNC間の通信を行いたいです。 D-sub9ピン〜D-sub25ピンのケーブルがあればPCとNC間を接続して①NC→PC、②PC→NC双方向で通信が行えると考えていたのですが、市販のクロスケーブル(SANWA KRS-9F25F02KとKRS-005-15N)の組み合わせではうまく通信ができないようでした。 ①のNC側エラー「2128 RS232C 端末ノットレディ エラー'入力'」 ①のPC側のDnetではメッセージ受信中のまま何も変化なし こちらでの過去事例を参考にさせていただきました。 https://okbizcs.okwave.jp/mori.nc-net/qa/q9475401.html https://okbizcs.okwave.jp/mori.nc-net/qa/q9643875.html https://okbizcs.okwave.jp/mori.nc-net/qa/q9452276.html https://okwave.jp/qa/q9623570.html 試したが変わらなかったこと ・PC側のUSB変換ケーブル差し込み口を変更 ・PC側のポート設定をDnetの設定に合わせる ・ボーレートやパリティなどの設定項目を変更 ・D-sub9ピン〜D-sub25ピンケーブルを違う市販ケーブルに変更 おそらく特有の結線になっているケーブルが必要と思われるのですが、どのようなケーブルを用意すればよろしいでしょうか? 上記の過去事例ほかネットの関連情報を漁ってみたのですがそのものズバリというものが見つからず、またそもそも機器が古いためオークマの方でも推奨されるケーブルについての図面は持ち合わせていないようでした。 機器のマニュアルなどを元にしますと、以下のような結線ではないかと考えているのですが、、、 D-sub9ピン(PC側)  D-sub25ピン(NC側) 1:CD  ーーーーーー 1:FG 2:RXD ーーーーーー 2:TXD 3:TXD ーーーーーー 3:RXD 4:DTR ーーーーーー 6:DSR 5:GND ーーーーーー 7:GND 6:DSR ーーーーーー 20:DTR 7:RTS ー┐  ┌ー 4:RTS 8:CTS ー┘  └ー 5:CTS ただ、ネットでは似ているようで若干違う結線図がいくつか出てくるため、この環境では何が正しい情報なのかが掴めず困っております。 https://www.godo.co.jp/all-products/com_protocol/ →たとえば上記URLの「4-5ショートケーブル」のように、D-sub9ピン(PC側)の1ピンは4ピン、6ピンに短絡&D-sub25ピン(NC側)の8ピンは6ピン、20ピンに短絡しなければならないのでしょうか? お詳しい方、ご存知でしたら助言いただけますと大変助かります。 ※OKWAVEより補足:「技術の森( 機械加工)」についての質問です。

  • RS-232Cでバイナリデータを受信する方法

    2台のPCを使用しバイナリファイルをRS232Cを使用し1台目のPCは送信専用、2台目のPCは受信専用で、送信側のPCから出したデータを受信側PCでデータの内容を判断し集計するプログラムを作ろうとしています。 送信側のPCでは、"AAB9AAC2AACC01D8AAE2・・・”といった内容のバイナリファイルの内容を1バイトずつ読み込み、それをMsCommを用いてバイナリモードで送信させて、EOFになるまで永遠とそれを繰り返します。 問題は受信側で、たとえば上記のデータの中の"AAB9"ならばカウントを1つ上げる、"AACC01D8"ならばカウントを1つ下げ、それを表示するといったような処理をリアルタイムで行いたいのですが、どうしてもデータの取りこぼしが発生します。 また、データの意味合いとしては、必ず"AA"という1バイトのデータから始まり、それに1バイトから5バイトまでのデータが可変長で付いてきて次の"AA"までが1つの意味となります。 通信パラメータは9600、8ビット、ストップビット1、パリティなしで、その他の制御線は一切使用しないという条件です(要するにRxD、GND線のみの最低限の条件) 受信側のバッファは1024バイトで、MSComm1.RThreshold = 1でOnCommを発生させています。また、送信側のファイルの大きさは1kバイトほどです 正直なところ、このようなことが可能なのかどうかもわからない状況なのですが、現状ではデータを数バイト取りこぼしているだけのようなのでできないことはないのではないか?と考えています。 どなたか、参考文献、ホームページ、プログラム、考え方等を何でもかまいませんん!ぜひ、ご教授願います!!また、現在はVBにて開発中ですが、最悪、言語は問いません。よろしくお願いいたします。

  • RS232Cの特殊な信号処理について

    海外製のポータブルの計測機器で、RS232C出力のみ(垂れ流し)出来る機器があります。 仕様は、出力はイアホンジャックで、センターピンは、PC側D-SUB4ピン接続、シールドは D-SUB2ピン接続,D-SUBの2ピンと5ピンは2.2KΩで接続となっています。 PC側は、RS-USB変換ケーブルを用いて接続し、WINXPのハイパーターミナルを起動しますと 確かに、計測のデータが読み取れてきます。 質問:この仕様で、どうして受信が可能なのでしょうか? ご存知の方、ご教授いただきたく。

  • スキャナーを接続するには?

    以下の環境です。 スキャナー・・EPSON GT-8500 接続PC・・・・EPSON Endeavor AT-800C OS・・・・・・・・Windows98SE スキャナー側の背面にはパラレルI/FコネクタとSCSIコネクタ(50ピン) がありますが、PCはSCSIボードはありません。 しかしSCSIボードを購入する予定はなく、パラレルにて接続したいのですが 嘗てのNEC製PCであった接続口(フルピッチ50ピン?見分けたかがわかりません) 、なので直接接続できません。 このような場合、フルピッチ50ピン(だとしたら)から変換できるコネクタ はあるのでしょうか? また、PC側のどこに差し込めばいいのでしょうか? シリアルポート?それともプリンタポートでもOK? よくわかりませんのでご教授願いたいのです。 よろしくお願いいたします。

  • D SUB25 ピン AES/EBU YANAHA/TASCAN のGNDの接続

    D SUB25 ピン AES/EBUの変換ケーブルでYANAHA/TASCAN(ProTools)を (参考、タックシステムの「 DDAES-3WY 」http://www.tacsystem.com/products/tacsystem/cable/のようなケーブル)自作しようとおもっています。この場合片方のGNDともう片方のGNDのピン数の数が違いますが、GNDはそれぞれのコネクターの中で全てを1つに結線して片方のGNDのどれかに結線して良いのでしょうか?GNDの理屈などがさっぱり解っていないのですが、どうか宜しくお願い致します。

  • デジタルIC74HC14APの使用方法

    PICマイコンを立ち上がりの遅い電源で起ち上げなければならないのですが、起ち上がり不良で誤動作を起こしてしまうので74HC14を使用して以下のような回路を考えました。これでOKでしょうか?  12V電源 GND   VDD  |     | レギュレータ7805  |     | GND   VDD         |        ●-74HCのVDD        |        ●-74HCの1番ピン(入力)          |       |        |  74HCの2番ピン(出力)        |       |             | 74HCの3番ピン(入力)          |       |        | 74HCの4番ピン(出力)        |       |         PIC   抵 抗   GND          |     |     | トランジスタ  コレクタ  ベース  エミッタ (NPN)             ICのスレッショルドレベル以下を0、以上を1とみなす性質を利用してPICに5V以上の電流しか流さないようにと考えた物です。 これなら「じわぁっ」と立ち上がる電源でもマイコンへの電源供給をきちんとできるのではないでしょうか? ちなみにトランジスタではPICのGND側をON、OFFするようになるのでPICのGNDは他の部分のGNDとは独立させています。 疑問点 ・74HCの出力に直接PICを繋いで駆動させる事は可能なのでしょうか?可能であればトランジスタは不要だと思うのですが。 ・74HC14の1番3番への入力に抵抗は不要でしょうか?                             

  • 富士通の液晶モニターを再利用したい

    型名LV-17DWX5のモニターをほかのPCにつなぎたいのですが、コネクターが特殊な30ピンになっています。15ピンD-subのコネクタに付け替えることはできるでしょうか。可能であれば結線図も教えてください。

  • RS232Cからの出力で日本語が化けてしまいます。

    測定装置のRS232Cからパソコンにデータを入力したいんですが、ハイパーターミナル経由では日本語が化けてしまいます。数字・英語・カタカナは大丈夫です。先日Tera Termというソフトを紹介して頂きさっそくためしてみましたが上手くいきません。入力データをシフトJISやJISに変えても全く同じ様にに出力されてきます。変更できそうなところは色々変えてみたんですが駄目でした。日本語は例えば!c%]%s%W$NN.NL@_DjCM!dの様に表示されます。 何とか認識させたいんですが、どう言うところを気をつけたらいいでしょうか?後は化けたものは変換できないんでしょうか?出力は25ピンからパラレルで出ていることも考えられるのでしょうか?