本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

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

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

2023/10/16 11:33

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

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

2008/04/06 21:57

設定時間ごとに10個の計測器から同時にRS232Cを経由してパソコンの
EXCELに計測データを取込みデータ収集したいと考えています。
PC環境はWINDOWS XPを使用しています。

10個のデータを通信ソフト(ハイパーターミナル以外でも可)を経由して
EXCELに取込むソフトがありましたら教えてください。

またEXCEL VBAでソフトを作成できるソースプログラムをお持ちで
したらこれを改造すればいいという指摘でもありがたいです。

宜しくお願いします。

回答 (4件中 1~4件目)

2008/05/25 13:42
回答No.4

1:1なら簡単ですが1:10となると、232Cでは単純に無理でしょう。
232Cは1:1が基本ですから電気的接続がまず無理です。
すべての機器を485に変換して送信側が局番を添付するプロトコルに変換する必要があると思うけど
計測器側は変更できないだろうから、485変換を単純にしても無理でしょう。

たとえばPLCの通信増設ユニットが10ch可能なものがあれば
各chに1:1で計測器を接続し、PLC内部で送信するプログラムをPLC側で作成し
エクセルで受信すれば、何とかなると思います。

エクセル側はフリーでありますが、10個のデーターを受信した順番で
縦に並べるだけになるので簡単ではありません。

PLC内部でデーターを整列させて秒単位のバッチで出すとか
使用するPLCメーカーによって作りかたが変わります。

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する
2008/04/07 09:10
回答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では使えないはず

ただ、通信プロトコルは自分で考えないといけませんよ

2008/04/07 00:49
回答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

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。