ロボット製作をはじめとする機械の制御に、C言語による方法がもてはやされていますが、果たしてC言語は機械コントロールに向いているのでしょうか。もともとC言語は、ミニコン(小型電子計算機)上でデータ処理をするためのUNIXから発生したもので、機械についてなど全く考えてもいないものなのです。CにとってはI/Oって何だったけ?といいたいくらいで本来I/Oとは無縁なものです。
 Cはパソコン中の、アドレスが固定されていない任意のRAM上を走るのが前提になっているため、固定した少ないROM、RAMしか持っていない基板上で走らせようとすると、そのための相当面倒で複雑な手続きが必要です。また、データ扱いの命令が主流になっていて、I/O制御に便利なビット命令は持っていません。

 Cを究極の言語と考えるのなら、それでは何故、ホ−ムページ作成の言語がCではなく、HTMLやPerl/CGIなのでしょうか?
 HPの画面作りにはCでは不便で仕方がないから、必要にせまられてこれらの言語を作ったのです。
 HP作りと機械設計とどちらがCに近いでしょうか?明らかに画面上のことだけである前者の方がCにとって得意なことのはずです。本来、機械設計の方がCから遠い存在なのです。
 マイコンによる機械制御についてはこの日本に相当な責任があるはずです。それなのに全く機械制御に向いていないCにしがみつき、他の言語の作成または利用を考えないのは、なんと融通がきかない人たちだといわれても仕方がないと思います(WINDOWS上で走っているEXEファイルである「連枝」はすべてCで書かれています。便利だからです。(念のため!))。

 実際的にI/Oに関する命令とか、タイマ割り込みのタイマ設定とかはCで書いても、その部分は、アセンブラもしくは非常にアセンブラに似た、そのコンパイラ固有のCの特殊関数によって書かなくてはなりませんし、素子の基本動作の性質を決めるCONFIGEについても、まったくアセンブラと同等の思考と手続きととらなくてはなりません。
 Cを使用するメリットと言えば、アセンブラ言語自体を詳細に記憶する必要がなく、少しこぎれいのように見えるプログラムができることくらいでしょうか。それも割込みなどでアセンブラとのリンクが必要な場合は、ほとんど完璧に近い特殊レジスター等のハード部分のの習得が必要です。
 命令が多様すぎてアセンブラの扱いがわずらわしいH8とか、バンクの設定が複雑なPICの8ビット素子や、特殊レジスタのアクセス方法がレジスタのアドレスによって違う命令を使わなくてはならないatMEGA(AVR)などは、一応そんなことはCコンパイラの方にまかせて、自分ではそれにかかわらないで書くことができることにメリットがあるとも考えられますが、PIC18F452のようなPIC16ビット素子については、バンクやページの問題が、95%くらい解決されていて、すべてのメモリーをROM、RAMの区別だけで同一命令でアクセスできます。
 PIC18F452について言えば、ただ命令をそのまま書いていけば、何の問題もなく(?)プログラムができあがります。
 私には、それを何故、またCで書いてアセンブラとリンクするなどという複雑な方法を取るのか、まったく理解できません。
 アセンブラによるプログラムのバグは、まさにその中にあるのであって、絶対にリンクの方法やCのアセンブラへの展開具合によるものではありえないのです。あれか、これかなどと考える必要がないのは大きなメリットと考えます。
 参照サイト
 ラダーも言語の一つなのです。シーケンス回路そのものを高級言語とすれば、そのマスターは極めて簡単です(C言語のマスターとは比較にならないくらいです)。また組み込み部分は、すべてそのコンパイラである「連枝」(れんり)が書いてくれますのでユーザはそれについて考える必要がありません。

 シーケンサではライン上のいろいろな動作を同じラダー上に書くだけで、普通に並列動作を行っています。並列動作はマイコンのプログラムでいえばマルチタスクの動作になりますが、Cでマルチタスクの動作を書こうとすれば、タイムシェアリングの方法を使ったり相当な困難をともないます。
 また、ライン上の機械動作を行うためにはたくさんのタイマーを使用しますが、シーケンサでは簡単に挿入できるタイマーも、C言語では、アセンブラーにより割込みのサブルーチンを書いてリンクするという手続きが必要になります。タイマーが数多くなるとその複雑さは半端でないものになります。本来、C言語はタイマ割込みを始めとする割り込みは本来的に扱わないものなのです。
 マイコンボードの大きな問題である耐ノイズ性も、シーケンサではオンディレータイマをリレー動作の前に入れることによって簡単に得ることができます。


 Cやアセンブラによるマイコン基板とラダー回路によるシーケンサのシェアの比較は、機械の分野のとり方にもよりますので、困難な面もあります。例えば、自動販売器にはもうリレー回路やシーケンサは使用されていません。しかしいわゆる工場の機械と呼ばれるものの制御では圧倒的にシーケンサの方が多く使用されているのではないでしょうか。シーケンサのメーカーは10社以上ありますが、シーケンサ関連の年間売上だけで一社で数千億円を優に越える会社が複数あるくらいですから、金額から考えても充分に大きなシェアを確認できます。
 「連枝」ではL(ラダー言語)がCを越えた!としていますが、機械制御に関してはマイコン誕生以来の35年の歴史を見ると、少なくともシェアの面だけみれば、CはL(ラダー言語)を抜けなかった!とするのが正確な評価だと思います。

 シーケンス回路のもとになっているのは、リレー回路です。
 ( シーケンサーはそれをマイコン化して、設計、書き込み、動作、デバッグ等をシステム化したものです。)

 「
連枝」(れんり)ではリレー回路そのものを、高級言語のL言語としています。
 現代もてはやされているC言語によるソフトと、リレー回路によるソフトを比較して見ましょう。

 リレー回路の特長をあげると、次のようになります。

 ) 設計が簡単です!
 2) 補足やメンテナンスが容易!!
 3) マイコン動作における比較                        
  
   ソフトとしてのリレー回路に優秀な面が多いことがお分かり頂けたでしょうか? 
                                      

 関連事項
・ 岩井君のシーケンス教室−T
  割込み回路の応用例                     表紙に戻る