• 検索結果がありません。

RS-232Cを介したパソコンによる多点温度計測制御システムの構築 利用統計を見る

N/A
N/A
Protected

Academic year: 2021

シェア "RS-232Cを介したパソコンによる多点温度計測制御システムの構築 利用統計を見る"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

RS-232Cを介したパソコンによる多点温度計測制御

システムの構築

著者

田畑 功

雑誌名

技術報告集

4 (1998年度)

ページ

25-30

発行年

1999-04

URL

http://hdl.handle.net/10098/7613

(2)

RS圃232C を介した

パソコンによる多点温度計測制御システムの構築

第二技術室化学計測技術班 田畑功

1

.はじめに 実験室や研究室では、しばしば温度制御を行う 必要性が生じる。これは、多くの化学量や物理量 が温度と何らかの相関があり、結果の再現性を高 めたり、あるいはエンタルビーなど温度相関その ものを計測するにも、温度制御が必要不可欠なた めである。 一方、パソコンの 08 には Windows が普及し、 それに応じてアプリケーションもイベント応答型 が主流になっている。このイベント応答型プログ ラムは、マウスを介してボタンなどのコントロー ルを操作することで所定の処理を行う形をとり、 これは、スイッチやボタンで操作する計測器と同 様なインターフェースを提供するものである。 そこで、本研修では、文献 1"'3 を参考にして、 Windows プログラミング技法を修得した後、 Windows から R8232C インターフェースを介し て温度計測制御ボードをコントロールする方式の、安価な多点温度計測制御システムを開発した。 表 1 HP-TCP の仕様 項目 仕様 電源電圧 +24V(2.0A) 温度入力事。ート数 4 点 測温体入力 K 型熱電対: 0",,+ 1200 0 C J 型熱電対: 0"'+7500 C 制御温度 K 型熱電対: 0"'+1000 0 C J 型熱電対: 0"'+5000 C 温度上限、 4 チャンネJ~分、 7ォトカアラ 下限信号 出力(絶縁) 制御出力 4 チャンネル分、 7ォトカ70 ラ 出力(絶縁) 外部入出力 ホ守ーレート 9600, RS232C 入 4800, 2400, 1200 設 出力 定可 データ長 8t" 'j卜、スト")70 t" 'j卜 1、 ハ。リティなし 周囲温度,湿度 0"'+500 C 、 85%RH 以下 測定精度 ::!::0.50 C::!:: 1digit 制御精度 ::!::0.5%FS::!::0.50 C サン70 リンク守時間 0.5"'128 秒 制御方式 PID 制御または ON/OFF 制御 制御周期 1. 024 秒"'64.512 秒 制御分解能 111024 2. 温度計測制御コントロールボード 本研修で使用したボードおよび電源は以下の通りである。 温度計測制御ボード

H

p

.

.

T

C

4

(ROM

Ver.2.01)、ハイピーテック(株) 電源

V

8

5

0

B

-

2

4

(

2

4

V

;

2A)、ネミック・ラムダ(株)

リレー G9H・ 2108-DC24~ オムロン(株) 本ボードのマニュアルに掲載されている仕様(オプション仕様は省略)並びにブロック図を、表 1 および図 1 に示す。このボードは、 K 型または J 型熱電対をセンサーとして 4 点までの温度計測・ 制御が可能である。またモニターコンソール(オプシヨン)を利用すると、ボードに直接制御コー ドを入力したり温度を表示したりできる。 ON/OFF 制御では、分単位での ON/OFF.しか出来ない が、 PID 制御では、最短で約 1 秒の制御周期となるため、比較的精度よい制御が可能である。

F o

n L

(3)

3. シリアル通信 Windows プログラムの 開発 Windows ソフトは、 OS を含めて多く のイベントに対応するため、イベントド リブン型のコーデイングスタイルをとる。 本研修では、 Visual

C++

Ver.6.0 と

MFC

(M

i

c

r

o

s

o

f

t

Foundation

Class)並び、 にシリアル通信用 Active X コントロー ルを使用した。以下に、 AppWizard を 利用したプロジェクト作成手順、並びに

A

c

t

i

v

e

X コントロールを利用した通信用 メンバ関数をコーデイングするためのクラス(ここでは CRS232C クラス)の作成手順を示す。

3.

1 通信用プロジェクトおよびクラスの作成 制御出力 RS232C 通信用 ローカルパス 図 1

H

P

-

TC4 のブロック図

(

l

)

A

p

p

Wizard による新規プロジェクトの作成 ファイル/新規作成/プロジェクトで、 MFC

App

Wizard(EXE) を選び、適当なプロジェクト名 でワークスペースを作成する。作成ステップ 3 で、 Active X コントロールを有効にしておく。なお、 アプリケーションの種類は SDI、プロジェクトのスタイルは MFC 標準スタイルとする。 (2) プロジェクトへの Active X コントロールの追加 プロジェクト/プロジェクトヘ追加/コンポーネントおよびコントロールで、 Registered

ActiveX

Controls フォルダー内の Microsoft

Communications Control

,

v

e

r

s

i

o

n

6.0 を選択し、プロ

ジェクトに挿入する。この操作により、シリアル通信用 CMSComm クラスが ActiveX コントロー ルで自動生成される。

(

3

)

CForm

View 派生ダイアログの挿入と Active X コントロールの貼り付け

ダイアログの挿入でダイアログエディタを起動し、電話のマークの MSComm コントロールを貼 り付ける(コントロール ID のデフォルトは IDC_MSCOMMl) 。このダイアログのプロパティを以 下のようにする。 [スタイル]…[チャイルド] [境界線]…[なし] [可視]チェックボックス…オフ [タイトルパー]チェックボックス…オフ 今回作成する通信ソフトでは、メインウインドウ(ビ、ユー)にボタンを配置し、マウスによるクリ ック操作により計測・制御を開始したり、計測した温度をヒ、ユーに表示させたりする。このため、 上記ダイアログ上での右クリックのポップアップメニューから ClassWizard を起動し、新規クラス の作成で、基本クラスを CFormView とする。クラス名は、何でもよいが、ここでは CRS232C と する。

(

4

)

MSComm コントロール操作用メンバ変数の追加 引き続き、 ClassWizard のメンバ変数の追加画面で、 CRS232C クラスに含まれるコントロール ID、 IDC_MSCOMMl をダブルクリックし、メンバ変数名に適当な名前(ここでは m_comml) を 入れる。これにより、 CRS232C クラスに MSComm コントロールのメンバ変数 m_comml が追加

される。

GU

(4)

(5)CRS232C クラスのビュークラスへの関連付け ドキュメントテンプレートを{吏って、 CFormView クラスから派生したクラス CRS232C をビ、ユ ークラスに関連付ける。

(

6

)

CRS232C クラスに OnDraw 関数のオーバーライド

CRS232C クラスにビュー用の OnDraw メンバ関数をオーバーライド。この関数内で、背景の 表示や温度を表示するコードを記入する。 (7) CRS232C クラス GetDocument 関数を実装 本プログラムでは、ドキュメントクラスを介して HP・TC4 制御パラメータ読み書き用関数にア クセスするため、通信用関数を書き込む CRS232C クラスからもドキュメントクラスのメンバ変数 にアクセスできる必要がある。このため、ビュークラスである CRS232C クラスに GetDocument 関数を実装する。

3.

2 通信用メンバ関数 作成した CRS232C クラスに通信用メンバ関数を用意する。代表的な通信用メンバ関数をリスト 1 に示す。 PortOpen 関数で設定している通信条件は、 シリアルポート:

COMl

通信速度: 9600bps、パリティなし、データ長 8 ビット、 ストップビット長 1 である。また、シリアルポートよりデータを受け取る ReceiveData 関数では、 CR コードを受け取るまで受信を続け るコードとなっている。実際のボードとの通信では、送受信コ ードのエコーパック(ハンドシェイク通信)があるため、その 対応を行う必要がある。

3

.

3 ボード制御用パラメータの管理 本プログラムでは、設定温度、上・下限アラーム温度、有効 チャンネルなどの設定パラメータとその読み書き用メンバ関数 を、全て、 CParameter クラス内で定義し、この CParameter クラスをドキュメントクラスのフレンドクラスとした。また、 ドキュメントクラス内で CParameter クラスのポインタ変数 m_param をメンバ変数として定義した。これにより、先に示 した通信用クラス CRS232C 内からドキュメントクラスの m_param を介して制御パラメータの読み書きができる。また、 CParameter クラスをシリアライズ可能クラスにすることで、 複数のメンバ変数の形で定義されている制御パラメータを一度 にファイルヘ読み書き出来るようにした。

3

.

4 通信ワーク関数のスレッド化 i且度の計測や制御を行っている聞も、マウスクリックによる ボタンからのメッセージを受け付けることが出来ると、ボタン のクリックで測定を終了したり別のチャンネルでの測定を開始

-27-リスト 1 通信用メンバ関数 BOOL CRs232c::PortOpenO CString str="9600,n,8, 1"; m_comm I.SetCommPort( (short) 1); m_comm I.SetSettings(str); m_comm 1.SetPortOpen(TRUE); return m_comm 1.GetPortOpenO;

BOOL CRs232c::PortCloseO

m_comm 1.SetPortOpen(FALSE); if(m_comm 1. GetPortOpenO==TRUE) return FALSE; else return TRUE; voidCRs232c・ :SendData(CStringstr) COleVariant var; var=str; m_comml.SetOutput(var); CString CRs232c::ReceiveDataO COleVariant var; CString str; while(str.Find("¥r")==ー 1){ var=m_comm 1. GetInputO; str+ニvar.bstrVal; return str;

(5)

図 2 設定画面 したりすることが自由に出来るため、実際の 計測器と同様な操作感覚となり便利である。 これを実現するには、計測・制御を行う関数 をスレッド関数にしてパックグラウンドで動 作するようにすればよい。本プログラムでは、 MFC の MxBeginThread 関数を使って計 測・制御関数からなるスレッドを生成させた。

3.

5 プログラムの操作手順と実行画面 図 3 メイン画面 本プログラムの設定画面を図 2 に、温度計測・制御中のメイン画面を図 3 に示す。今回作成した 計測制御プログラムは、 ポートのオーフ・ン→ボードとのボーレートの一致→制御パラメ ータの設定とボードへのパラメータ送信→計測・制御スタート の操作手順をとる。測定モードには、複数チャンネルの同時計測・制 御モード、およびチャンネル個別計測・制御モードがあり、個別モー ドでは、チャンネルごとに用意したスタート、ストップボタンにより、 任意のチャンネルの計測・制御が行える。また、オートチューニング ボタンを押すと、 PID 値のオートチューニングを開始し、終了後は、 そのまま PID 制御を続けるか温度計測に移行するかのメッセージを 表示させ、同時にチューニングにより得た PID 値を CParameter ク ラスの該当変数に保存する(図 2 ・②)。 測定した温度データは、経過時間(秒)およびチャンネル 1"-'4 の 温度をタブ区切りで並べたテキストファイルの形で保存する。チャン 5 16.5 0.0 23.5 0.0 10 16.5 0.0 23.0 0.0 15 16.5 0.0 23.5 0.0 20 17.0 0.0 23.5 0.0 25 16.5 0.0 23.5 0.0 30 16.5 0.0 23.5 0.0 35 16.5 0.0 23.5 0.0 40 17.0 0.0 23.5 0.0 45 17.0 0.0 23.5 0.0 50 17.0 0.0 23.5 0.0 55 17.0 0.0 23.5 0.0 60 17.0 0.0 23.5 0.0 65 17.0 0.0 23.5 0.0 70 17.0 0.0 23.5 0.0 75 17.0 0.0 23.5 0.0 80 17.0 0.0 23.5 0.0 85 16.5 0.0 23.5 0.0 90 16.5 0.0 23.5 0.0 95 17.0 0.0 23.5 0.0 100 17.0 0.0 23.5 0.0 ネル 1 と 3 で計測を行った場合のデータファイルの内容を、図 4 に示 図 4 温度データファイルの例 す。

(6)

-28-3.

6 安全対策 温度制御を行う場合、ヒーターの加熱による不慮の事故に備える必要がある。物理的な対策とし ては、 (1) 水などの熱媒体が何らかの原因で異常に少なくなりヒーターが空だき状態になった場合にも、 ポリ容器などの可燃物に接しないように、ヒーターを浮かせた状態にする。

(

2

)

ヒータ一過熱に対処するため、ヒーターの近くに温度ヒューズを設ける o (3) 電気回路にヒューズを設け、漏電など異常電流に対処する。 などが考えられる。また、ソフトウェアにて対処できる安全対策としては (1) 上限・下限アラーム温度を設定し、過熱およびセンサーが液面から離れた場合の過冷却対策を 行う。 (2) センサー断線の検知機能を設ける。 などが考えられる。 今回使用した計測制御ボードには、センサー断線、ボードの異常、あるいは上限アラーム温度を 越えたり下限アラーム温度を下回った場合に、エラーフラグを立てた後ブザーが鳴るようになって いる。一方、今回作成した通信プログラムでは、適時ボードのエラーフラグを調べ、エラー発生時 にはエラー内容をメッセージボックスの形で画面に表示させる。また、ウインドウがアクティブに なっていない場合に備え、タスクパーのウインドウアイコンを点滅させると同時にビープ音を鳴ら し、ユーザーにエラーを知らせるようにした。このビープ音は、パソコンの音量ボリュームを上げ ることで、ボードのブザーよりもかなり大きな音にできるため、ユーザーに注意を促すのに好都合 である。 4. 本システムを用いた温度制御の実例 イじ学系実験室では、水や油などを熱媒体とした恒温槽を用いて、反応や物理化学計測を行うのが 一般的である。そこで、今回作成した温度計測制御システムの性能を調べるため、以下の条件で温 度制御を行なった。 熱媒体:水 3L 、撹枠装置:プロペラ付きモーター ヒーター: 300W 投げ込みパイプヒーター 温度センサー :K 型熱電対 設定温度を 300 C、 500 C 、 700 C とし、水温約 200 C からオート チューニングを行いチューニング終了後はそのまま PID 制 御を続けた結果を図 5 に示す。 PID 制御により一定温度に液 温が保たれているのが分かる。 PID 制御中に計測した温度を 調べると、設定温度 300 C では 30"""'320 C、設定温度 500 C では

4

9

.

5

"

"

"

'

5

0

.

50 C、設定温度 700 C では 69.

5

"

"

'

"

70.50 C の温度範囲で、 温度制御が行われていることが分かつた。 300 C では、他の温 度よりも制御精度が低く、温度も高めになっているが、これ は、用いたヒーターの容量がこの液量、この温度での制御に 対し大きすぎるのと室温に近いためと思われる。

-29-80 υ 。\ 60 n u A守 ・円回目。ド

o

20 40 60 80 100 T 泊le/ m泊 図 5 温度制御結果

(7)

次に、標準水銀温度計を用いて、このシステムで計測さ れる温度の絶対誤差を調べた。 200 C から 900 C まで 100 C 間 隔で調べた計測温度と標準温度計の読み、並びに両者の差 を表 2 に示す。標準温度計と比較した場合の誤差は、平均 2.80 C であり、本システムでは、高めに温度が表示されるこ とが分かった。この測定誤差は、ボードが使用している周 囲温度センサーの誤差や、メーカーによる検定時のボード の状況と購入後に電源周りを配線してセンサーを取り付け た状況とが異なるためと思われる。 表 2 計測精度 本システム 標準温度計

[

O

C

]

[

O

C

]

2

2

.

0

2

0

.

0

3

2

.

5

3

0

.

5

4

1

.

0

3

8

.

0

5ο.5

4

7

.

7

61

.

0

5

8

.

2

71

.

0

6

7

.

7

81

.

0

7

7

.

9

8

9

.

5

86.

4

差刀 400088311 誤れ一 22322333 5. まとめ 今回の研修では、 RS232C 通信機能を有する温度計測制御コントロールボードを使った Windows パソコンによる多点温度計測制御システムの構築を行った。研修内容としては、制御用ボードの電 源周りを含めた取り扱い方法の修得、並びに Windows プログラムおよび通信プログラム開発方法 の修得が挙げられる。 RS232C を介した通信自体は、市販の通信プログラムや、 Visual C++ にサン プルとして付属する VCterm などを使用することで可能であるが、その場合、制御コードをキーボ ードで一つ一つ入力する必要があり、実際の制御に使用するには非常に不便である。今回、温度計 測制御ボード専用のアプリケーションを作成したことで、簡単なマウス操作で温度制御や計測を行 えるようになった。 これまで、このような計測には DOS で動作する古いパソコンが使用されてきたが、その背景に は Windows プログラミングが煩雑であり、またハードウェア制御が簡単には出来ないという状況 があった。しかし、近年、 Windows プログラム開発環境も改善され、共通仕様のフレームは自動生 成されるようになった。また、 ActiveX コントロールを利用することで、シリアルポートやI10 ポ ートにアクセスするアプリケーションも比較的容易に作れるようになった。 本研修で明らかにした、シリアル通信 Windows プログラムの作成方法、並びに安価に多点温度 計測制御 Windows システムを構築するための情報は、 RS232C を介して機器制御を行いたい人や 温度コントロールを必要とする多くの研究者にとって非常に有用であると思われる。 謝辞 東京工業大学大学院理工学研究科制御工学専攻の田中正行君のホームページ http://www­

k

o

b

a

y

a

s

h

i

.

c

t

r

l

.

t

i

t

e

c

h

.

a

c

.

j

p

/

-

m

tanakal に記載されている íMicrosoftCommControl 用いた RS232C の制御方法」が、本システムを開発する上で参考になりました。貴重な情報を公開されている同氏 に敬意を表します。 参考文献 1) 桜田幸嗣、田口景介共著;

V

i

s

u

a

l

C++5.0 プログラミング入門,アスキー (1997) 2) 田中ひろゆき著;

V

i

s

u

a

l

C++6.0 の応用 50 例,ソフトパンク (1998) 3) 田嶋孝行;

V

i

s

u

a

l

C++実践プログラミング,工学社 (1999)

図 2 設定画面 したりすることが自由に出来るため、実際の 計測器と同様な操作感覚となり便利である。 これを実現するには、計測・制御を行う関数 をスレッド関数にしてパックグラウンドで動 作するようにすればよい。本プログラムでは、 MFC の MxBeginThread 関数を使って計 測・制御関数からなるスレッドを生成させた。 3.  5 プログラムの操作手順と実行画面 図 3 メイン画面 本プログラムの設定画面を図 2 に、温度計測・制御中のメイン画面を図 3 に示す。今回作成した 計測制御プログラムは、

参照

関連したドキュメント

測定結果より、凝縮器の冷却水に低温のブライン −5℃ を使用し、さらに凝縮温度 を下げて、圧縮比を小さくしていくことで、測定値ハ(凝縮温度 10.6℃ 、圧縮比

9/21 FOMC 直近の雇用統計とCPIを踏まえて、利上げ幅が0.75%になるか見 極めたい。ドットチャートでは今後の利上げパスと到達点も注目

 Whereas the Greater London Authority Act 1999 allows only one form of executive governance − a directly elected Mayor − the Local Government Act 2000 permits local authorities

調査の結果を反映し、IoT

計画 設計 建築 稼働 チューニング 改修..

計画 設計 建築 稼働 チューニング 改修..

In the main square of Pilsen, an annual event where people can experience hands-on science and technology demonstrations is held, involving the whole region, with the University

toursofthesehandsinFig6,Fig.7(a)andFig.7(b).A changeoftangentialdirection,Tbover90゜meansaconvex