ホーム > 校長☆副校長

校長☆副校長 Archive

第24回:プログラミング-サポートデスクに助けられ

こんにちは、宮元です。

付属のサンプルプログラムを使ってプログラミングを勉強している中で、嬉しいなと感じたことを紹介します。

前回の写真中、縦に8個並んでいるLEDを、1個ずつ順に上→下、下→上、上→下と点灯/消灯する動作を永久に繰り返す状態にしておきます。スイッチを押すことによってその動作を止めようというものです。それだけです。スイッチの押下を検知する方法が2つあって、それらをこのプログラムで実現しているのですが、本題から外れるのでこれ以上は説明しません。

サンプルプログラムを利用すると簡単にその動作を確認することができました。が、エンジニアとしてはまっさらの状態からプログラムを書いてみたくなるものです。そして、実際に同じ動作をするようにプログラムを書いてみました。
ところが、スイッチでLEDの点滅を止めるどころか、8個のLEDを順に点滅させることすらできないのです。

前回の写真でいうと、下の4個のLEDが点灯しないのです。サンプルプログラムと比較しても、書き方こそ違っているものの、論理的にはまったく同じです。前回の写真中、赤丸で囲んだプログラムは、サンプルプログラムと論理的に同じなのです。

点滅しない原因を探ってみたのですが、私の知識ではどうすることもできず、結局、このワンボードマイコンの開発・販売元(今は仮にH社としておきます)のサポート窓口に問い合わせることにしました。でも、そのときこんなことを考えました。
 ・H社は、BtoB なんだろうな。個人の質問なんかに答えてくれないんじゃないかな。
 ・でも、私にもワンボードマイコンを売ってくれたんだから、BtoC も大丈夫だろう。
 ・質問の内容がハードウエアについてじゃなくて、ソフトウエア(プログラム)だよ。

でも藁をも掴む思いで、とある日曜日、eメールで状況を説明してサポートをお願いしました。すると何ということでしょう。翌月曜日、仕事から帰宅すると、eメールで回答が届いていました。
嬉しかったのは、意図どおりに動作しない原因が丁寧に説明されているだけでなく、不明な点があったら、いつでもどんなことでも問い合わせてくれと、購入者の不安を和らげる内容の回答だったことです。

学生時代、初めてプログラミンの勉強をしたとき、よき先生が近くにいてくれました。独学でプログラミング言語Javaの勉強を始めたときもいい仲間と出会えました。今回も、分からないことがあったら助けてもらえるという安心感をもつことができました。こういうことって大切ですね。

ここで、H社の実名を紹介しておきます。札幌市にある「株式会社北斗電子」、マイクロプロセッサーを使ったハードウエアやソフトウエアの開発をしています。

第23回:プログラミング-こんな感じ

新年おめでとうございます。宮元です。

CANプロトコルの勉強もしなければいけませんが、ふと気づくと、2月から4月末に勉強したワンボードマイコンのプログラミングを忘れかけています。そこで、もう一度、サンプルプログラムを見直すことにしました。その断片を紹介します。

購入した2台のワンボードマイクロコンピューターのうちの1台は学習用キットと銘打っているものにしました。それだけに、LEDが8個ついていたり、スイッチがついていたり、超小型の液晶ディスプレイが接続できるコネクタがついていたりと、入出力のしかたが容易に勉強できるようになっています。

231

第19回で、4月末まではこのキットを使ってプログラミングの勉強をしていたと書きました。勉強にはこの学習キットと付属のサンプルプログラムを使うのが手っ取り早い方法です。
まず、日常使っているパソコンに、ルネサスエレクトロニクス(株)のホームページから統合開発支援ソフトをダウンロードしてインストールします。ルネサスエレクトロニクス社というのはこのマイコンボードに搭載してあるマイクロプロセッサーのメーカーです。

この統合開発支援ソフトがなかなかの優れものです。今回のように、ワンボードマイコン用のプログラムを書くためには、マイクロプロセッサーごとに異なっているハードウエアの仕組みをプログラムに置き換える必要があります。しかし、これがまた無茶苦茶むずかしくて面倒なのです。そこで統合開発支援ソフトの登場となります。マイクロプロセッサーの型番を指定するだけで、その面倒なプログラムを自動的に用意してくれます。こうして私たちは面倒な作業から少し解放されて、本来私たちがコンピューターにさせたいことをプログラムする作業に集中できるというわけです。

この統合開発支援ソフトを起動するとこんな画面が現れます。サンプルプログラムを読み込ませて、ある操作をするとワンボードマイクロコンピューターで動くプログラムができる仕掛けになっています。こういう作業を通じて、8個のLEDを点滅させるには、スイッチのON/OFFを調べるためにはどういうふうにプログラムすればいいのかを学習するわけです。

232_CS+

サンプルプログラムを読み込ませるとこんな具合です。

233_CS+

赤丸の部分がさせたい動作を記述したプログラム群で、青丸の部分が、そのために統合開発支援ソフトが用意してくれたプログラム群です。黄丸の部分に赤丸部分の中の1つを表示しています。LEDの点滅をスイッチで制御したい、ただそれだけでも、こんなにたくさんのプログラムが必要です。

大切なことは、8個のLEDを点滅させて喜ぶことではなくて、入出力ポートと呼ばれるコンピューターと外部とのインターフェースの仕組みとその使い方を理解することなのです。学ぶべきことは山ほどあります。でも、全部を細かく理解する必要はないでしょう。ポイントを押さえることです。

なんて知ったふうなことを言っていると・・・・

第22回:CANによるECU間通信実験のイメージ

こんにちは。宮元です。

再び、EUCに見立てるために購入した2台のワンボードコンピューターです。

221_CanCan

これまでにも言ってきたように、これら1台1台を自動車に搭載されているECUとみなします。今回違うのは、2台のコンピューターをケーブルでつないでいることです。このケーブルを、自動車内のあらゆることころに張り巡らされていると思われる通信ケーブル(「CANバス」といいます)とみなします。残念ながらまだ車内の通信ケーブルは見たことがないので「思われる」と書きました。近い将来、自動車工学科の教員にお願いして見せてもらいます。

ECU間通信実験で使う主要ハードウエアは以上なのですが、これではディスプレイモニターがないので、中で何が起こっているのか確かめようがありません。そこで、写真のAとBの先にそれぞれUSBケーブルでパソコンとつなぎます。それぞれのパソコンでは「ターミナルソフト」と呼ばれるソフトウエアを使ってワンボードコンピューターに命令を出したり、送信データを送ったり、受信したデータを見たりしようというわけです。

とは言いながら、5月のステイホーム以降ずっと、Raspberry Piでのプログラミングにのめり込んでしまって、ECU間通信のほうは置き去りにしていました。ようやく、Raspberry Piプログラミング初級の勉強は終えたかなと感じたので、本来のほうに戻ってきました。

主としてハードウエア周りの準備、プログラム開発のための支援ソフトの準備をして、購入物に付属していたサンプルプログラムが動くところまでは確認できました。これに正味2日ほどかかりました。

このあとは、CANによるECU間通信のアプリケーションプログラムの勉強となるのですが、その前に、CANプロトコルを勉強しなければなりません。これには時間がかかりそうです。ブログ更新の間隔も長くなるかもしれません。

では、年末年始、どうぞ健やかにお過ごしください・・・・

第21回:ECUに見立てるワンボードコンピューター

こんにちは、宮元です。

第19回目で、ECUに見立てるために購入したコンピューターを紹介しました。下の写真はそのうちの1台と別途用意したノートパソコンです。左のワンボードコンピューターで動かすプログラムを右のWindowsパソコンを使って書いているところです。

ノートパソコンには、ワンボードコンピューターで動くプログラムを作るための支援ソフトをインストールしています。先の融雪用散水機制御システムでいうと、ノートパソコンがACOSに、そのノートパソコンで動いているのがACOSで使ったクロスアセンブラーに相当します。

211_Rene_whole

下の写真は、ノートパソコンとワンボードコンピューターをUSBケーブルでつないで、ノートパソコンで作ったプログラムをワンボードコンピューターに転送しているところです。プログラムを転送してくれるのも、開発支援ソフトの一部です。融雪用散水機制御システムのときのように、プログラム修正のたびにROMに書き直して実機まで持って行くのとでは作業効率が全然違います。

212_transf

ここ重要です。Raspberry Piでは「Raspberry Pi OS(Windowsと同じ働きをするソフトウエア)」が動いていて、キーボードもマウスもディスプレイモニターもつなぐことができるので、Raspberry Pi単独でプログラム作りができます。

ところが、ワンボードコンピューターの中には今回購入したもののように、単独ではプログラム開発ができないものがあるのです。これも融雪用散水機制御システムのときのように、8080Aマイクロプロセッサーのためのプログラムを手書きして、ACOS上のクロスアセンブラーでアセンブルというのと方法・手段は違いますが考え方は同じです。家電製品や機械に組み込まれるコンピューターはそうなっていると思います。

第20回:Raspberry Pi

こんにちは。宮元です。

キーボードもマウスも接続できず、ディスプレイモニターですら普通のパソコンのようにはつなげない、Windowsのようなソフトウエアも搭載していないワンボードコンピューターのためのプログラムを書く。理解しなければならないことが多すぎて、心が折れそうになったとき目についたのがRaspberry Pi でした。

201_RasPi

LANケーブル、キーボードにマウス、ディスプレイモニターと電源ケーブルがつながっています。赤いケーブル、透明のアクリル板、冷却ファン、ACアダプター等々、全部で1万5千円ほどでした。その全容はこうです。

202_RasPi_whole

本体は小さいですが立派なコンピューターです。ディスプレイモニターにはWindowsパソコンで見られるようなものが見えます。このRaspberry Piで動かすプログラムを書いているところです。ここ重要です。
このコンピューターで動かすプログラムは、キーボードもマウスもディスプレイモニターもつながっていて、Windowsのようなソフトウエアも動いているこんな小さなコンピューターで作ることができるのです。

ところが一方、・・・・

第19回:CANが動くワンボードマイコンをゲット

こんにちは。宮元です。

私たちがインターネットに接続するにあたって、前回紹介したTCP/IPプロトコルに従った通信制御のプログラムを書いたりしませんね。誰かがそれを提供してくれていて、PCやスマホといった通信端末の中でこっそり動いているから、私たちは難しいことを考えることなくネットワークを利用できるのです。

CANプロトコルに従って通信制御をするプログラムを書く技術は私にはありません。そこで、前々回紹介したPICのようなワンボードマイコンに、CANプロトコルに従って通信を制御する機能を搭載したものがあればいいのに、と思い始めました。買える範囲なら買ってもいいな・・・・ そう思ってインターネット上を探しました。そして見つけました。写真の2台を買いました。合わせて5万円でした。2020年1月末のことです。

191_hokuto

ワンボードコンピューター2台ですが、それぞれがCANプロトコルに従って通信する機能をもっているので、それぞれをECUとみなしケーブルで接続してECU間通信(CAN通信)を体験してみようというわけです。

しかしその前に、これら2台のコンピューターのためのプログラムはどういう環境で書いて、そのプログラムをどうやってこれらコンピューターに移すのか、具体的なことを何も知りませんでした。あとでもう一度お話ししますが、これらにはキーボードもマウスも接続できません。ディスプレイモニターですら、普通のパソコンのようにケーブルさえつなげば使えるようにはなっていません。
そこで、週末に時間を見つけて、そのあたりのことの勉強を始めました。4月の下旬まではそうしていたのですが、そこにRaspberry Pi(ラズベリー・パイ)が割り込んできたのです。

今回はここまで。

第18回:背中を押したもの -その2- CAN(ECU間通信)

こんにちは。宮元です。

2、3年前、自動車工学科の教員を含む自動車関係者と話をしていて「ECU」ということばがよく出てくることに気づきました。アルファベット3文字で表されることばが大変多いなか、何か新しい3文字ことばに出会うと、自分が身を置いてきた世界に関係することばで読み替えようとします。

「ECU」もコンピューターに関係したことばだろうと、勝手に「Electronic Control Unit(電子制御ユニット)」などというふうに読み替えます。これはそのとおりだったわけですが、今では100個以上のECUを搭載した自動車も珍しくないと雑誌、たとえば「インターフェース2020年9月号」にあります。

同雑誌によると、ECUは「パワー・トレイン系」「シャシ系」「ボディ系」「マルチメディア系」「運転支援系」の5系統に分けられるのだそうです。私には詳細を説明できる知識がありませんので、これ以上の説明はご容赦ください。ただ驚くべきことは、これら多数のECU同士が車載ネットワーク回線を介して通信をする。すべてのECUが全体として一つの車載コンピューターシステムを構成しているというのです。1台の自動車の中にコンピューターネットワークが形成されているのです。どんな具合に通信しているのだろうなどと興味を駆り立てられませんか。

スマホ、タレット、PC・・・・、私たちがこれらをインターネットにつないで通信を楽しんでいるときは、意識していませんが、いつでもTCP/IPという通信規約(通信プロトコルといいます)に則っています。ECU同士も通信プロトコルに従って通信するわけですが、そのプロトコルとして「CAN(Controller Area Network)」が広く採用されているようです。

私たちが自動車に乗り込んだ瞬間からエンジンを止めて降りるまで、CANによるECU間通信に支えられていることになります。そこで、CANによるECU間通信がどんなものか試してみたい。そんな興味が沸々と湧きあがってきたのです。これが「調べてみようか・・・・、はまってしまいそう」の原因なのです。
では、次回・・・・

第17回:背中を押したもの -その1- ワンボードマイコン

こんにちは。宮元です。

マイクロプロセッサーとはそれ以降30年間くらい無縁となってしまいます。当時私が勤めていた会社にはマイクロプロセッサーに関連した仕事を請け負う部署がありましたが、私は配属されず、従来の汎用コンピューターを使ったシステム開発部門で働くことになりました。その後、勤め先はいくつか変わりましたが、状況は同じでした。

もちろん趣味としての楽しみ方もあったのですが、なかなか踏み切れませんでした。何だか手を出したらのめり込んでしまいそうで怖かったのです。ただでさえ仕事で忙しいのに、また別のことに時間を割くなんてとんでもないと考えてしまうんですね。でも、ずっと後になって、この考えは取り越し苦労だと気づきます。人間って、本当にしたいことがあったら何とかして時間をねり出すものなのです。

この間何回か「電子工作」のブームはあったように思います。帰宅途中、時間が取れるときは必ず書店に立ち寄るのが習慣になると、「科学」のコーナーにやたら分厚い雑誌が並ぶときがありました。「マイコン」が、付録とは呼べないようなものが付録として付いている雑誌を目にしたときは、買おうかと思ったものですが、そこはぐっとこらえて通り過ごしてきました。

ところが、私もここ1年くらいで認識したことなのですが、1980年代には世に出ていた「PIC(Peripheral Interface Controller)」に加えて、この15年くらいの間に、「Arduino」とか「Raspberry Pi」というようなワンボード(シングルボード)コンピューターが安価で提供されるようになりました。合わせて、周辺のエレクトロニクス機器も安価で手に入るようになって、エレクトロニクス好きにはたまらない環境が整ってきたように思います。

171_マイコン
 (左から、PICマイコン、Arduino、Raspberry Pi (いずれもgoogle検索した結果からの転載))

第1回目のこの欄に「最近、はまってしまいそうなことに出くわした」と書きました。コンピューターは人間が創り出した最高傑作の一つと思っているとも書きました。パソコンは1984年に初めて購入して以来、買い替えながらずっと使っていますが、その心臓部だけを取り出したようなワンボードコンピューターにはパソコンとは違った美しさを感じます。はまってしまいそうな予感にはもちろんこのことが大きく影響しているのですが、実はもう一つ、お話しておきたいことがあるのです。それは次回以降で・・・・

第16回:納品

こんにちは、宮元です。

ACOSの扱いにも、クロスアセンブルの方法にも慣れて、アセンブル段階でのエラーはなくなりました。ここからが問題です。このプログラムが正しく動くことを確かめるためには、電子機器メーカーが作った”融雪用散水機制御システム”のハードウエア(実機)を使ってテストする必要があるのです。しかし、それは工場にしかありません。

今だと、アセンブルに使ったコンピューター①と融雪用散水機制御システム②をUSBケーブルでつないで、①から②へひょいとコピーすればテスト準備OKとなるところですが、当時、そうはいきません。
①でできたプログラムをROMライターというものを使ってROMという半導体メモリに書き込んで、これを②まで持って行って装着します。これで②が、私が書いたプログラムに従って動くことを確かめられます。ただ、この確認作業は電子機器メーカーの担当者の役割となっていました。確認結果は、一定時間後に私のところに届くという段取りです。

161_ROM
(“read only memory”でgoogle検索した結果からの転載)

ここがうまく動かないという指摘があると、プログラムの該当部分を確認します。バグ(プログラムエラー)だったら、プログラムを修正して、ACOSでクロスアセンブル、ROMを書き直して実機でテスト。これの繰り返しです。この作業、割とうまくいきました。そして、この作業の最終段階は「受入れテスト」と呼ばれていた最終試験でした。

この受入れテストにパスするということは、発注元から「テスト中のプログラムはこちらが要求する仕様をすべて満たしています。」と認めていただいたということになります。これをもって私個人的にはプレッシャーから一旦解放されました。実際にはこの後、現地でのテストがあったのですが、その対応は電子機器メーカーの担当者がしてくださいました。ここで重大な問題が発覚した場合はもちろん対応する約束になっていましたが、大きなトラブルは出ませんでした。

この仕事のことをことさら覚えている理由は、学生時代に趣味でやっていたことが社会人一年目で実践で使えたからです。こんな面白くない大学なんて辞めてしまおうかとまで考えたことがあったのに、いくつかの幸運との出会いもあってこんなにいい経験ができたと感じ、無茶苦茶うれしかったからです。

ではまた。

第15回:仕事から得るもの

こんにちは、宮元です。

ACOSでアセンブルしてどうして8080Aで動く機械語プログラムに変換できるのかという疑問を解決しなければいけなかったのですが、スケジュールどおりにプログラムを完成させるのが優先で、それは後回しにしていました。

かつては「コンピューターダイジェスト」という名前の月刊誌があって、いろいろな新聞からコンピューターに関係した記事だけを抜き出して雑誌にしたものでした。入社当時は情報だけでも頭に入れておかなくてはと思って購読していました。
あるとき、その記事の中に”クロスコンパイラー”という言葉を見かけ、「あれっ、どこかで読んだぞ!」 今だとネットで検索すればすぐに分かることですが、当時はそんなものはありません。探し回った結果、情報処理技術者試験の参考書に書いてありました。初めて読んだときにしっかり理解していたら、今回の疑問はたやすく解けたのですが・・・・

二つのコンピューターAとBがあるとします。コンピューターAを使って、FORTRAN(フォートラン)言語で書いたプログラムを普通のFORTRANコンパイラーで翻訳すると、翻訳してできる機械語プログラムはコンピューターA用です。コンピューターAでしか動きません。

ところがこのとき、普通のFORTRANコンパイラーではなくて”クロスFORTRANコンパーラー”を使うと、A自身ではなくコンピューターB用の機械語プログラムに翻訳できるのです。
「クロスコンパイラーというものがあるんだったら、クロスアセンブラーもあるはずだ。」と考えるのが普通ですね。

実はそのとおりだったんです。アセンブリー言語で書いたソースプログラムを、ただのアセンブラーでアセンブルすると、できる機械語プログラムはACOS用です。ところが、8080A用のクロスアセンブラーでアセンブルすると、ACOSを使っているのに8080A用の機械語プログラムができるのです。

書籍だけで勉強していると、分かったようで分かっていないなと思うことがよくあるのですが、こうやって実務の現場で出くわすと、否が応でも分からされて(?)しまいます。こういうふうに、生きた知識が増える、生きた技術が身に付く。これも仕事から得る喜びです。

ホーム > 校長☆副校長

検索
Feeds

Return to page top