タグ:BASIC
静電容量(比誘電率)の温度特性を自動測定するシステム(TCC)のBASICプログラムコードについて

0. はじめに

 

1980年代の後半から1990年代の初頭にかけて、誘電体材料の開発業務に携わったことがありました。
温度変化の少ない材料の開発を目的としていましたので、特に、材料の温度特性は主要な評価項目のひとつでした。

 

評価の方法としては、一般的に良く知られているように、材料を平行平板に加工し、その平板サンプルの両面に電極を形成して、キャパシタンスメータ等で静電容量(キャパシタンス)などを測定するというものです。

評価対象の誘電体材料をその周囲温度が制御できるように恒温槽の中にいれて、温度を変化させながらキャパシタンスの値を測定していきます。

静電容量(キャパシタンス)が測定できれば、そのサンプルの電極面積と平板の厚みから材料の比誘電率が計算できます。

 

しかしながら、この作業はとてもたいへんでした。なぜならば、材料の温度変化が一様ではないため、測定する温度を非常に細かくとらなければならないからです。

また、一度に測定するサンプルの数も、いくらロータリースイッチで切り換えながら測定するといっても、回路補正の問題もあり、多くはできません。例えば、温度を5度刻みで動かし、同時に4-5個程度測定するというのが限度でした。

 

そこで、これらの測定をコンピュータ制御で自動計測したいということになり、システムを構築することになりました。

 

当時は、コンピュータといっても、使えるものは16ビットのパソコンで、計測器のインターフェースがGP-IBと呼ばれるものでした。

 

システム自体は、コンピュータ、キャパシタンス(LCR)メータ(インピーダンスアナライザ)、恒温槽、熱電対、それとサンプルを恒温槽内で保持する治具類であって、GP-IBインターフェースがそれぞれに付属している、ごく一般的なものです。

 

問題は、これらを動かすソフトウェアです。適当なものがなかったため、自作することとなりました。

 

8ビットのパソコンの時代には、BASIC(beginner's all-purpose symbolic instruction code)と呼ばれる対話型の言語が主流でした。パソコンの電源を入れるとROM(メモリ)に入れてあるBASICが直ぐに立ち上がったものでした。16ビットの時代は、MS-DOSというオペレーテイングシステムの上でBASICを動作させることが一般的でした。

 

というわけで、これらのソフトフェアはBASICで記述してあります。

 

こんなものをいまさら公開しても実際にはそのままでは使えないのですが、記録として残しておきたいとおもい、この記事を作成しています。これを改良して、あるいは、現代風に他の言語に変換して使ってくださる方がおられるならば望外の喜びです。

 

 

1. コンデンサ・誘電体材料の容量温度特性自動測定・データ処理プログラム

 

主要なハードウェアの構成は、次のとおりです。なお、これらは1980年代の後半から1990年代初頭の当時のものですので、現在(2020年)時点の状況は確認していません。

 

(1) 計測用コントローラ(パソコン) J3100SL002 + INTEX2070-GPIBボード
または PASOPIA1600(TS-300E) + GPIBインターフェースボード

(2) データ処理用コントローラ J3100SL002 / J3100GT021 / PASOPIA1600(TS-300E)
または MSX2+

(3) 恒温槽 MC81(GPIBインターフェース付き)

(4) LCRメータ(キャパシタンスメータ) YHP4192A / YHP4274A / YHP4275A のいずれか一つ

(5) マルチメータ TR-6843 / TR-2114H (MC81を使わない場合)

(6) プリンタ (デュアルモードプリンタ)

(7) プロッタ MP3300(MPコマンド使用)

(8) スキャナー HP3495A

 

以上のような構成ですが、すべてを同時に使うのではなく、必要に応じて組み合わせて使いました。

 

オペレーテイングシステムOSと基本ソフトウェアは、次のようなものでした。

 

(1) J3100SL002 / J3100GT021 の場合は、MS-DOS VERSION 3.1 上で BASIC を動作させる

(2) PASOPIA1600(TS-300E) の場合は、MS-DOS VERSION 3.1 上で T-BASIC86 と GPIB driver を動作させる

(3) MSX2+ の場合は、データ処理のみなので、MSX-DOS2 VERSION2.0 上で MSX-BASIC VERSION 3.0 を動作させる

 

という具合でした。

 

基本的に、温度特性の測定は非常に時間がかかるものであったので、測定スケジュールとしては、夕方に測定スタートし、翌日朝までに修了するというようにプログラム全体を構成しました。

 

一方で、恒温槽以外のシステムを利用して、コンデンサ・誘電体材料のインピーダンス特性やバイアス電圧特性、耐電圧特性などは、比較的簡単に測定できるのですが、これらも自動でデータ取得できるように計測のシステムとプログラムを作成しました。

 

 

2. 対話型のBASICプログラムコード

 

BASIC言語は、対話型のインタープリターです。すなわち、質問に答える形で回答(パラメータ)を入力していき、確認してから実際の測定動作を開始します。

 

BASIC言語は、行番号がそれぞれの命令文の先頭についていますので、プログラムコードは基本的には番号順に実行されます。ですので、流れを追うことが比較的容易です。

 

■最初の設定画面の一例

 

file name (6 letters)? ← ファイル名をつける

       electrode diameter(1)/area(2) ? ← 電極面積を計算する

       area (cm2) ? ← 面積の数値をそのまま入れるか

diameter(mm) ? ← 円の直径を入れて計算させるか を選択する

sample name ? ← サンプルの名前を入れる

thickness(mm) ? ← サンプルの厚みを入れる

select reference temperature. ← 基準とする温度を選択する

        (1)25'C(EIA,MIL) (2)20'C(JIS,EIAJ) ?

lower temperature limit ('C) ? ← 測定する下限の温度を設定する

upper temperature limit ('C) ? ← 測定する上限の温度を設定する

Are you ready(Y/N)? ← 上記の入力事項が問題なければ測定開始する

 

こんな感じで、パラメータを設定していきます。

 

なお、ファイル名の付け方ですが、当時のMS-DOSでは、8文字+拡張子3文字の制限がありました。
このうち、6文字分は測定したい人が自由に設定してもらい、残りの2文字+拡張子3文字はシステム制御に使いました。

 

 

3. 作成するファイルはシーケンシャルファイル

 

測定データは、測定の都度、ファイルに追記していく形であり、次のような構造にしました。

 

■測定データファイルの構造

 

サンプル名

電極面積

サンプル個数(N)

測定する温度のポイント数(NT)

           サンプルの名前(1)

           サンプルの厚み(1)

           ・・・

           サンプルの名前(N)

           サンプルの厚み(N)

基準温度

           測定温度(1)

           静電容量(1,1)

           誘電損失(1,1)

           ・・・

           測定温度(NT)

           静電容量(N,NT)

           誘電損失(N,NT)

 

いわゆるシーケンシャルファイルです。これらはFDD(フロッピーティスク)に書き込みするようにしました。(当時はハードディスクはまだ存在していませんでした。)

 

 

 

4. 実際のBASICプログラムコード

 

プログラムコードは基本的には番号順に実行されます。ですので、流れを追うことが比較的容易です。
そのため、ここではプログラムコードの詳細説明は省略いたします。

 

基本的には、メニューから該当するプログラムを呼出しして実行します。
次のようなものがありました。

 

・メニュープログラム

・測定プログラム(いろんな計測器の組み合わせあり)

・データ表印刷プログラム

・データ作図プリント(ハードコピー)プログラム

・データ作図プロットプログラム

・データ修正プログラム

・テータSYLK(Symbolic Link file)変換プログラム(当時の表計算ソフトMultiplanで読み込み可能な形式に)

 

 

5. 測定プログラムの動作

 

いくつか作成しましたが、代表的なものの動作は次のような項目になります。

 

(1) パラメータの設定

ファイル名、サンプル個数、サンプル名、電極面積、厚み、下限温度、上限温度、測定温度間隔、などを設定します。

 

(2) 最初の測定温度に状態を変更

温度を下限温度まで下げるように、恒温槽に指令を出して制御します。

 

(3) 最初の測定温度でのサンプルの静電容量、誘電損失の測定

温度が最初の測定温度である下限温度まで到達したら、温度ゆらぎが0.1度以内になるまで待って、設定温度、実際の温度、静電容量、誘電損失を測定します。プリンタに印字すると同時に、測定ファイルの末尾に書き込みます。

 

(4) 次の測定温度への状態を変更

次の測定温度である温度、通常は2.5度高い温度、に恒温槽に指令を出して制御します。

 

(5) 次の測定温度でのサンプルの静電容量、誘電損失の測定

温度が次の測定温度である温度まで到達したら、温度ゆらぎが0.1度以内になるまで待って、設定温度、実際の温度、静電容量、誘電損失を測定します。プリンタに印字すると同時に、測定ファイルの末尾に書き込みます。

 

(6) 温度制御と測定の繰り返し

上記の(4)と(5)の動作を、上限温度に達するまで繰り返します。ただし、恒温槽は-70℃から+150℃までの広い範囲を扱っているのですが、50℃を超える温度においては、恒温槽のコンプレッサを動作させないようにします。

 

(7) 測定修了

設定した上限温度でのサンプルの測定が終わったら、データを書き込み、プログラムを終了させます。

 

 

6. 作図プログラム、その他

 

作図に関しては、当初、プロッタをパソコンに接続して、セントロニクス仕様のインターフェースを自作し、プロッタで描画していました。ただし、プリンタとプロッタをつなぎかえる手間があり、また、プリンタに測定数値が印字されるので、同じプリンタに作図したいとの要望もあったので、ディスプレイ画面にグラフを作図表示して、ディスプレイのハードコピーをプリンタに印刷する、という方法も実施しました。

 

当時、表計算ソフトとしては、マルチプランMultiPlanというものがありました。これはSYLK形式(Symbolic Link file)のデータを読み込みできるものだったので、測定したデータをSYLK形式のファイルに変換するというようなものも作成しました。

 

測定データは、すべてFDD(フロッピーディスク)に保存していましたが、FDDも当初の5インチサイズから3.5インチサイズに時代とともに移り変わりがあり、5インチFDDを有するパソコン(PASOPIA)と別の3.5インチFDDを有するパソコン(J3100)との間で、RS-232Cというインターフェースを用いてデータ転送するプログラムも作成しました。

 

 

7. 温度特性測定から他の測定への応用展開

 

誘電体材料の温度特性は材料開発を行う上での主要な評価項目のひとつでしたが、これ以外にもあります。

 

キャパシタンスメータやLCRメータ、インピーダンスアナライザといった計測器をコンピュータ制御し、パソコンで自動測定することができれば、便利です。
これらの計測器は、GP-IBインターフェースで制御できるので、上記のプログラムコードを部分的に使用して、いくつかの応用プログラムを作成してみました。

 

・コンデンサ・誘電体材料の静電容量・誘電損失の温度特性をDCバイアス下で測定するプログラム

・コンデンサ・誘電体材料の静電容量・誘電損失を室温で連続測定するプログラム

・コンデンサ・誘電体材料の耐電圧の測定プログラム

・コンデンサ・誘電体材料の周波数特性の測定プログラム

 

これらについては、BASICプログラムコードの説明は省略しますが、特に、耐電圧の測定に関しては、充分な安全上の注意が必要だったことを申し添えておきます。

 

 

8. 終わりに

 

コンデンサとそれに使われる誘電体材料の温度特性をパソコン(当時は16ビット)と計測器、恒温槽等の環境機器を用いて自動測定するBASICプログラムコードの概要を紹介しました。
なお、実際のBASICプログラムコードについては、こちらをごらんください。

 

→  コンデンサとそれに使われる誘電体材料の温度特性測定プログラムの例

 

→    BASICプログラムコード

 

 

(2020-8-10) archives2020tccprog .

 

 

 

 

  • 体験
コンピュータとの関わり - PETからWindows7まで

いまや、コンピュータは身近な道具として普及しており、これなしでは仕事ができないといった状況になっているところも多い。私は、これまで、職場や自宅でコンピュータを使ってきているが、今回は、このコンピュータとの関わりについて、書いてみようとおもう。

 

いまは、Windows XP や Vista (ビスタ)、7 (セブン) が全盛であるが、たしか、私が「コンピュータ」と呼べるものに初めて直に触ったのは、1977年のことだった。

 

当時は、T社のセラミック材料の開発を行っている部門に移ったばかりのときであった。そこで、酸化亜鉛のセンサの開発をしているグループがHP社のマイクロコンピュータを導入した。空き時間に少しばかり触らせていただいたのだが、キーボートは、英文タイプライターとほぼ同じ配列で、それ以外に、ファンクションキーがいくつかついているという、いまとそれほど変わらない入力方法であるが、表示は、発光ダイオードで一行のラインを文字表示させるディスプレイのみであった。特殊なBASICみたいな言語を走らせる。記録はこれも特殊なカセットテープに書き込み読み込みするものだった。ソフトの内容は、パラメータを与えて測定データを取得し、記録するという単純なものではあるが、それを自動的に実行するという点に惹かれた。ここで、データファイルのつくりかたやコンピュータへの入力のしかたなど、見よう見まねで覚えたものであった。

 

次に、その二年後くらいだろうか。米国コモドール社製の8ビットの「PET」といわれるものが導入された。これは、表示が40文字×25行くらいの白黒のブラウン管ディスプレイで、BASICという言語でプログラムを自作し、XYプロッタなどの機器の制御やデータ収集に使用していた。記録装置として使っていた5インチのフロッピーディスクドライブはよく読み込みエラーを起こし、プログラム自体もたまに暴走するという信頼性に欠けるものであった。

 

その後、日本のN社がPC8001というマイコン(バソコンとも呼んでいたが)を市場に売り出しした。これは、当時、国産品としてかなり普及したらしい。信頼性は格段に向上したが、価格は一式で80万円くらいした。もちろん、まだまだとても個人で買えるものではなかった。この頃は、酸化亜鉛を用いた半導体の開発に携わっていた時期になる。ようやく、表示が80文字×25行で、カラーのブラウン管がディスプレイとして使えた。このときは、長時間の測定データを収集するために使用していた。

 

1980年代前半はまだ8ビットマイコンが残っていたが、16ビットが主流の時代になった。5インチや3.5インチのフロッピーディスクが使えるようになった。しかし、現在のように市販されているパッケージソフトウェアはまだなくて、職場では、まだ、BASIC言語でプログラミングをしていた。だが、メーカー各社の仕様が統一されていなくて困ったものである。

 

仕様統一のきっかけとなったのが、MSXの登場であった。MSXは1983年ごろ登場し、価格が安く4万円から6万円くらいで本体が買えて、家庭のテレビに簡単に接続でき、BASIC言語でプログラムを自作できるほかに、ソフトメーカーからもMSX仕様のソフトウェアが売り出された。ここにきて、ようやく個人でコンピュータが持てる時代になったのであった。

 

当時、私は、職場では16ビットのコンピュータで、家では8ビットのMSXで、同じフロッピーディスクを持ち運びして仕事を処理していたことを覚えている。たしか、開発品のレポートや報告書などを書いていたようにおもう。自宅でMSXを使い、趣味でいわゆるパソコン通信なるものをはじめたのも、この頃のことであった。

 

その後、1995年を境に32ビットの時代になり、OS(オペレーティングシステム)もWindows (ウィンドウズ) 3.1、95、98、2000と変化していった。記録装置もハードディスクというものが使えるようになり、データの量も増えていった。扱うソフトウェアも、測定、データ処理、CAD、プレゼンテーションと、多岐にわたっている。また、電子メールも使いやすくなり、いまでは、コンピュータは私にとって道具となっている。

 

いままで、個人で購入し、自宅で使用したコンピュータを数えてみると、MSX(8ビット)、MSX2(8ビット)、Dynabook(16ビット)、Libretto(32ビット)、ThinkPad(32ビット)と、また使った言語も、初期のBASICから、FORTRAN、C、VisualBasicなど、様々であり、それぞれに歴史と想い出がある。

 

いま、私の職場では、64ビットのコンピュータが使用されはじめている。Windows 7 (ウィンドウズセブン) というもので、使い慣れた32ビットのものと少し使い勝手が異なるのだが、これもそのうち慣れていくに違いないとおもっている。

 

(2012-04-01)

 

 

正確にいうと、MS-DOS、DOS/V、MSX-DOS、MSX-DOS2 といった異なるOperation System が、共通のメディア(フロッピーデイスク)上で、同じファイルフォーマット(形式)で取り扱えるようになったことが、普及のひとつの側面としてあげられるのではないだろうか。それにしてもMSXは懐かしい。

 

(2012-06-30追記)

 

  • 体験
C言語の習い始めと「最小自乗法」

これも、いまでは表計算ソフトのExcelやCalcなどで簡単にできるとおもうのだが、およそ25年ほど前はまだそれほど便利ではなかった。ちょっとした実験データを整理するのに使った「最小自乗法」のコードは、自分でコードを書いて使っていた。

 

その当時は、パソコンも8ビットから16ビットへの移行の時期で、プログラミング言語はもちろんBASICがメインであった。

 

当時、作成したコードの一部をご紹介しよう。

 

測定するデータとして、x と y の組を何個か(n組としよう)を準備し、いわゆる y=ax+b の係数 a と b を求めるものであり、直線への回帰の度合いを r^2 という指標で表すものである。

 

これをBASIC言語で記述すると、次のような感じになる。

 

=====(ここから)=====

1 ' file"LSQL"

10 ' least square method (linear)

20 'SCREEN 0:CLS:CLEAR:KEY OFF

30 DIM X(30),Y(30),Z(30),W(30),V(30)

40 PRINT"formula Y = A X + B":PRINT

45 PRINT

50 INPUT"quantity of set ( N ) =";N

60 PRINT:PRINT

70 FOR I=1 TO N

75 PRINT I;

80 INPUT" ( X , Y ) =";X(I),Y(I)

85 IF X(I)=-1 THEN I=I-1:GOTO 75

90 NEXT I

100 FOR I=1 TO N

110 Z(I)=X(I)*Y(I):W(I)=(X(I))^2:V(I)=(Y(I))^2

120 NEXT I

130 Z1=0:X1=0:Y1=0:W1=0:V1=0

140 FOR I=1 TO N

150 Z1=Z1+Z(I):X1=X1+X(I):Y1=Y1+Y(I):W1=W1+W(I):V1=V1+V(I)

160 NEXT I

170 A=(Z1-(X1*Y1)/N)/(W1-(X1)^2/N)

180 B=Y1/N-A*(X1/N)

190 R1=(Z1-(X1*Y1)/N)^2

200 R2=W1-(X1)^2/N

210 R3=V1-(Y1)^2/N

220 R=R1/(R2*R3)

225 PRINT:PRINT

230 PRINT" A =";A

240 PRINT

250 PRINT" B =";B

260 PRINT

270 PRINT" R^2 =";R

280 PRINT

290 END

=====(ここまで)=====

 

BASICはインタプリターとよばれるものであって、一行ずつ解釈しながら実行する。そのため、スピードは遅い。これに対して、コンパイラとよばれるものは、一度機械語に変換してから実行するので速い。

 

C言語のコンパイラが16ビットパソコンで使えるときき、なんとかしてBASICで書いたコードをCに変換できないかを考えたものであった。

 

C言語のコンパイラは、当時、LSI-C86試食版ver3.30 というものが、たしか、雑誌の付録で無償提供されていたのであった。

 

そんなとき、街中の本屋さんで偶然みつけたのが、科学技術関係のフリーソフトを納めたCD-ROMであり、その中におもしろいものがいくつかあった。

 

そのひとつが、「B to C」という変換ソフトで、BASIC言語のコードをC言語に強制的に変換するものであった。変換後の多少の手直しは必要だが、そのときは、とても便利であった。たとえば、上述の「最小自乗法」のコードは、次のようになる。

 

=====(ここから)=====

/**** Least Square Method by Osamu Furukawa ****/

#include"stdio.h"

#include"math.h"

#include"string.h"

#include"stdlib.h"

unsigned char _s0[256],_s1[256],_s2[256];

float a;

float b;

int i;

int n;

float r;

float r1;

float r2;

float r3;

float v[31];

float v1;

float w[31];

float w1;

float x[31];

float x1;

float y[31];

float y1;

float z[31];

float z1;

main()

{
extern float a;

extern float b;

extern int i;

extern int n;

extern float r;

extern float r1;

extern float r2;

extern float r3;

extern float v[31];

extern float v1;

extern float w[31];

extern float w1;

extern float x[31];

extern float x1;

extern float y[31];

extern float y1;

extern float z[31];

extern float z1;

putchar('\n');

printf("Least Square Method \n");

putchar('\n');

printf(" formula Y = A X + B\n");

putchar('\n');

printf(" quantity of set ( N ) ="" ?");

scanf(" %d",&n);

putchar('\n');

for(i=1;i<=n;i+=1){

l_75: ;

printf(" %d",i);

printf(" ( X , Y ) ="" ?");

scanf(" %f, %f",&x[i],&y[i]);

if(x[i]==-1){

i=i-1;

goto l_75;}

}

for(i=1;i<=n;i+=1){

z[i]=x[i]*y[i];

w[i]=pow((x[i]),2);

v[i]=pow((y[i]),2);

}

z1=0;

x1=0;

y1=0;

w1=0;

v1=0;

for(i=1;i<=n;i+=1){

z1=z1+z[i];

x1=x1+x[i];

y1=y1+y[i];

w1=w1+w[i];

v1=v1+v[i];

}

a=(z1-(x1*y1)/n)/(w1-pow((x1),2)/n);

b=y1/n-a*(x1/n);

r1=pow((z1-(x1*y1)/n),2);

r2=w1-pow((x1),2)/n;

r3=v1-pow((y1),2)/n;

r=r1/(r2*r3);

putchar('\n');

printf(" A = %g\n",a);

putchar('\n');

printf(" B = %g\n",b);

putchar('\n');

printf(" R^2 = %g\n",r);

putchar('\n');

}
=====(ここまで)=====

 

と、こんな感じになるのであった。もちろん、むだの部分も多いとおもうが、計算処理は速くできたのであった。

 

このようなきっかけが、私のC言語の習い始めであった。ただ、その後、表計算ソフトが発達し、DOSベースでのLotus1-2-3や、Windows3.1 ベースでExcelなどが簡単に使えるようになってからは、この「C言語」との関係はだんだん薄くなってしまった。

 

だが、これも私にとっては貴重な良い経験であった。

 

(おそらく、読者の皆さんのなかには、この記事をごらんになって、自分だったらもっとスマートにコーディングできるのにと思われる方もおられるとおもう。なにしろ、あくまでも、当時の私の経験したことなので、ご寛容を願いたい。)

 

(2010-9-12)

 

 

(追記)

 

もっとスマートにコーディングするとしたら、こんな感じになるでしょうか。

 

(2010-9-12)

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

(2010-1-21)

 

時の流れを感じるとき

十年一昔(じゅうねんひとむかし)というが、時の流れを感ずる。

 

というのも、これまで、仕事や趣味で携わってきたコンピュータの移り変わりを思い出してみると、よくわかる。

 

いまは、ウィンドウズXPやビスタが全盛であるが、私がコンピュータに直に触れたのは、1978年頃、当時の米国コモドール社製の8ビットのもので、BASICという言語でプログラムを自作し、機器の制御やデータ収集に使用していた。

 

5インチのフロッピーディスクはよく読み込みエラーを起こし、プログラム自体もたまに暴走するという信頼性に欠けるものであった。

 

その後、日本のN社がPC8001というマイコン(バソコンとも呼んでいたが)を市場に売り出しした。信頼性は格段に向上したが、価格は一式80万円くらいした。もちろん、まだまだとても個人で買えるものではなかった。

 

1980年代前半はまだ8ビットマイコンが残っていたが、16ビットが主流の時代になった。しかし、まだ、BASIC言語でプログラミングしていたが、メーカー各社の仕様が統一されていなくて困ったものである。

 

仕様統一のきっかけとなったのが、MSXの登場であったとおもっている。MSXは1983年ごろ登場し、価格が安く4-6万円くらいで本体が買えて、家庭のテレビに簡単に接続でき、BASIC言語でプログラムを自作できるほかに、ソフトメーカーからもMSX仕様のソフトウェアが売り出されていた。

 

ここにきて、ようやく個人でコンピュータが持てる時代になったのであった。その後、32ビットの時代になり、OSもウィンドウズ3.1、95、98、2000と変化していった。

 

いままで、自宅で個人で購入し、使用したコンピュータを数えてみると、MSX、MSX2、Dynabook、Libretto、ThinkPadとそれぞれに想い出がある。

 

 

ことしの一月にパソコンのOSを入れ替えた。それまでウィンドウズ98を使用していたのだが、ウィンドウズ98用のウイルス対策ソフトがもうサポートされないことになってしまったため、やむなくXPを入れることにした。それでも、もういまはビスタの時代になってしまった。

 

時の流れははやいものである。

 

(2008-9-20)

 

 

(追記)

 

正確にいうと、MS-DOSというオペレーションシステムが先にできていた。これは16ビットのコンピュータ用のものであった。MSXは8ビットのコンピュータであるが、MSX-BASIC というものが先に共通仕様化されてできていた。16ビット用のMS-DOSと同じように8ビット用として作られたのが MSX-DOS であった。フロッピーディスクの形式は2DDが主流であったが、MS-DOS上でもデータの読み書きができる優れたものであった。

 

 

当時、私は、職場では16ビットのコンピュータで、家では8ビットのMSXで、同じフロッピーディスクを持ち運びして仕事を処理していたことを覚えている。

 

(2008-10-18 追記)