• 締切済み
※ ChatGPTを利用し、要約された質問です(原文:RS232CのデータをEXCELに取込みたい)

RS232CデータをEXCELに取込みたい

このQ&Aのポイント
  • RS232Cを経由してパソコンのEXCELに計測データを取り込む方法を教えてください。
  • 10個の計測器から同時にRS232Cを通じてデータを取り込み、EXCELでデータ収集したいです。
  • Windows XPを使用しており、通信ソフトやVBAでソフトを作成する方法があれば教えてください。

みんなの回答

noname#230359
noname#230359
回答No.4

1:1なら簡単ですが1:10となると、232Cでは単純に無理でしょう。 232Cは1:1が基本ですから電気的接続がまず無理です。 すべての機器を485に変換して送信側が局番を添付するプロトコルに変換する必要があると思うけど 計測器側は変更できないだろうから、485変換を単純にしても無理でしょう。 たとえばPLCの通信増設ユニットが10ch可能なものがあれば 各chに1:1で計測器を接続し、PLC内部で送信するプログラムをPLC側で作成し エクセルで受信すれば、何とかなると思います。 エクセル側はフリーでありますが、10個のデーターを受信した順番で 縦に並べるだけになるので簡単ではありません。 PLC内部でデーターを整列させて秒単位のバッチで出すとか 使用するPLCメーカーによって作りかたが変わります。

参考URL:
http://www.vector.co.jp/soft/win95/hardware/se216073.html
noname#230359
noname#230359
回答No.3

やり方はいろいろ有りますが 回答2のようにVBを使うのが一番簡単そうです VBで収集 収集したデータを テキストで保存 エクセルで テキストを読む エクセルのVBAから読み出すには APIを駆使しなければなりません http://spectrum123.at.infoseek.co.jp/vb/vb_menu.htm ↑ VBからAPIを呼び出していますがVBAからも同じ手法で読み出せます http://spectrum123.at.infoseek.co.jp/vb/vb_3/vb_3.htm リンク先より抜粋 'シリアルポートのオープン関数の定義 Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long 'シリアルポートのクローズ関数の定義 Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 'シリアルポートの設定関数の定義 Declare Function SetCommState Lib "kernel32" (ByVal hCommDev As Long, lpDCB As DCB) As Long 'タイムアウトの設定関数の定義 Declare Function SetCommTimeouts Lib "kernel32" (ByVal hFile As Long, lpCommTimeouts As COMMTIMEOUTS) As Long 'データの送信関数の定義 Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Long) As Long 'データの受信関数の定義 Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Long) As Long ↑ APIの宣言 ' DCB構造体の定義 Type DCB     DCBlength As Long     BaudRate As Long     fBitFields As Long     wReserved As Integer     XonLim As Integer     XoffLim As Integer     ByteSize As Byte     Parity As Byte     StopBits As Byte     XonChar As Byte     XoffChar As Byte     ErrorChar As Byte     EofChar As Byte     EvtChar As Byte End Type ' COMMTIMEOUTS構造体の定義 Type COMMTIMEOUTS     ReadIntervalTimeout As Long     ReadTotalTimeoutMultiplier As Long        ReadTotalTimeoutConstant As Long        WriteTotalTimeoutMultiplier As Long        WriteTotalTimeoutConstant As Long    End Type ↑ 構造体の宣言 したの プログラムの記述(フォームモジュール) を参考にしてプログラムは組んでください サンプルで付いている LHZはVBAでは使えないはず ただ、通信プロトコルは自分で考えないといけませんよ

noname#230359
noname#230359
回答No.2

↓辺りでマクロ機能付きで且つファイルダウンロード機能付きを選べば可能です http://www.vector.co.jp/vpack/filearea/win/net/term/ どれが使えるのかはご自分で試して下さい 但し、通信は出来ても実用になるかどうかは別問題です (実用とは実プラントで無人運転で使うと言う意味で) 恐らくは、オペレータが専属で付きっきりでないと通信しないだろうから しかも、受信したファイルはエクセルで開けると言うだけで それがそのまんまデータとして有効かどうかは別問題ですし それでも良ければ問題ありませんが 常識的にVB http://www.microsoft.com/japan/msdn/vstudio/express/ Visual Basic 2008 Express Edition(無料です) エクセルに付属してるVBAにはRS232Cアクセス機能が無かったと思う VBExpressには気前よく標準で付属してます >設定時間ごとに10個の計測器から同時にRS232Cを経由してパソコンの 回答(1)さんのように単純にポートを増やすか さもなくばマルチプレクサを使うか http://www.gpnet.co.jp/Japanese/CATALOG/GPNETmpx.htm http://www.data-link.co.jp/products/products-01/DMX900.htm http://www.leccompany.co.jp/mp.htm http://sacom.adsmarket.jp/item_list.html?m=USB&s=USBMPREXS 最近の流行はイーサネット-シリアル変換 http://sine.ni.com/nips/cds/view/p/lang/ja/nid/12350 http://japan.moxa.com/product/Serial_to_Ethernet_Products.htm http://fpc.misumi.co.jp/catalogue/vol9/html/v9q20.html

関連するQ&A