プログラミングの楽しさと厳しさ

以前、バリスタ(電子セラミック部品のひとつで電圧非直線抵抗素子のこと)の開発に携わったことを書いた。材料開発もそうだが、サンプルの特性をきちんと正確に評価できる測定技術もまた必要になってくるのである。

 

当時、まだパソコン(PC)は8ビットであって、マイコンとも呼ばれてもいた時代のことである。バリスタの特性評価のひとつに、一定の電流を流したときの電圧降下を測定するという操作がある。この測定制御をコンピュータ(PC)を用いて行おうというものであった。

 

定電流電源をソフトウェアで操作し、電圧計で電圧を測定するのであるが、その値は数千ボルトにも達する場合がある。安全装置をつけて、しかも十分な接地を行なって、万が一にも感電事故などが起こらないようにしなくてはならない。

 

この測定制御プログラムを作成したときのことを少し書いてみようとおもう。

 

バリスタのサンプルは、例えて言えば、セラミックの円板の上下に電極を取り付けた形状であって、これらを銅板の上に整列させて並べておき、電源の接地側に接続しておく。

 

電源の高圧端子側を絶縁体でうまく絶縁して、ハンドリングできるようにし、プロッタのペンのかわりに取り付けて、ソフトウェアで、指定したX座標、Y座標の位置に動かし、サンプルの上部に取り付けた電極に接触させる。そして、定電流電源を駆動させて、一定の電流を流し、電圧計に表示された値を読み込む。そして、電流値を変えるか、X、Y座標を指定し直して再度測定するか、という操作を繰り返す、というシーケンスである。

 

このような内容のコーディングを行なったのである。

 

問題点は多くあったが、いちばんの問題は、コンピュータの誤動作であった。

 

8ビットマイコンは、一応、BASICという言語でソフトのコーディングができた。いろんな処理をサブルーチンに書き上げて、メインのプログラムから呼び出し処理をするのであるが、ときどき、誤動作でフリーズすることがあった。

 

原因は、ノイズだとおもわれた。端子が接触し数千ボルトのON/OFFをするときに、ノイズが発生するのか、それとも外来のノイズだったのか、とにかく途中で止まってしまう。

 

どこで止まるのかを観察していると、測定制御プログラムのメインルーチンからサブルーチンに制御が移り、実行処理の後、メインルーチンに戻れなくなっている。ノイズで、コンピュータのメモリのスタック領域が壊れているのだと気づいた。

 

そこで、重要な処理はすべてメインルーチンに書くようにした。簡単な計算などはサブルーチンに書いてもよいが、安全に行うべき高電圧のON/OFFやデータの読み込みなどは、メインルーチンに書くようにしたのである。

 

ようやく、誤動作せずに測定系が正常動作したときは、正直ほっとしたのであった。

 

もちろん、現代は、コンピュータも32ビットや64ビットが主であり、コーディングソフトウェアも進化しているはずなので、こんなことは滅多にないとおもわれる。

 

プログラミングは楽しい面もあるが厳しい面もある。こんな経験をさせてもらったことも、いまでは懐かしい想い出のひとつになっている。

 

(2010-1-21)