マイコン制御を学ぶ前に その構成を知ろう
マイコン制御の登竜門として、さまざまな分野で使用されているRXマイコンを例に、IO制御、タイマ制御、A/D変換などについて具体例を交えて紹介します。また、製造現場で多く使われている空気圧シリンダやモータの制御を、誌上実験によって検証しながら解説します。
マイクロコンピュータ(マイコン)を利用して機械制御するには、プログラムのつくり方だけではなく、マイコンのハードウェアやメモリに関する知識が必要です。第1章ではマイコンを構成するハードウェア、アドレス空間、バスなどの基本的な事項について解説します。
解説1-1 マイコンの基本構成とCPUの動作
マイコンの動作マイコンは図1―1―1に示すように、入力部、CPU(制御装置と演算装置で構成)、出力部、メモリで構成されます。これは汎用パソコンでも同じ構成になっています。汎用パソコンではキーボード、マウス、モニタなどが入出力機器になりますが、マイコンによる機械制御では、入力装置はスイッチやセンサなどの検出装置になり、出力装置はリレーやモータなどの負荷装置となります。
記憶装置である内蔵メモリには、ROMとRAMがあります。ROMはプログラム実行中には書き込みができない読出し専用のメモリで、RAMはプログラム実行中でも読み書きができるメモリです。制御プログラムは専用のアプリケーションをインストールしたパソコン上で開発し、プログラミング言語にはアセンブリやC言語が使われます。つくられた制御プログラムはJTAGと呼ばれるインターフェイスを利用したデバッガを使ってROMに書き込まれ、CPUによって実行されます。RAMはプログラム実行中に一時的にデータを保存する領域として利用されます。
CPUで制御プログラムを実行するときの動作は図1―1―2のように、システムクロックに同期してROMから命令を取り出し(fetch)、CPU内で取り出した命令の解読(decode)を行い、必要なデータがあればメモリ内から読み込みます。そして命令を実行し(execute)、結果をメモリにデータ保存(write back)します。
解説1-2 CPUとメモリ、I/Oレジスタとの接続について
CPUと周辺装置の接続マイコンで機械装置を制御するには装置のスイッチやセンサなどをマイコンの入力部に接続し、リレーやLEDを出力部に接続します。この入力部と出力部の信号の読み書きにはI/Oレジスタを使います。
CPUはメモリやI/Oレジスタにアクセスし、その内容を読んだり、書いたりすることができます。装置の入出力信号が格納されているI/Oレジスタのアドレスを指定してデータの読み書きを実現するために、CPUとメモリ、I/Oレジスタは図1―2―1に示すように、バスで接続されています。バスとは、メモリやI/Oレジスタの場所を指定してデータを読み書きするための共通信号線のことを言います。バスの種類にはアドレスバス、データバス、制御バスの3種類があり、アドレスバスはメモリとI/Oレジスタのアドレスを指定するために使い、データバスはメモリとI/Oレジスタとのデータの読み書きのために使います。メモリやI/Oレジスタにデータを書き込むか読み込むかの選択をするために制御バスが使われます。
例えば、図1-2-1のLEDがI/Oレジスタの0000 0001h番地(hは16進数という意味)の0ビット目に出力ポートを通して接続されているものとします。LEDを点灯させるためには、まずCPUがアドレスバスを使用してI/Oレジスタの0000 0001h番地を指定します。このレジスタには書込みを行うため、制御バスにWrite信号を与え、0ビット目に1を書き込むためにデータバスの0ビット目にはHを、それ以外はLにすることでデータを転送します。すると、LEDが接続されている0 ビット端子にHレベルが出力され、LEDが点灯します。
次に入力ポートの動作を見てみましょう。同図のようにスイッチ(SW)をI/Oレジスタの0000 0000h番地の0ビット目に入力ポートを通して接続しておくと、スイッチのON、OFFによってレジスタの値が変化するようになります。スイッチのON、OFFの状態を確認する命令を実行すると、CPUがアドレスバスを使用してI/Oレジスタの0000 0000h番地を指定して、データバスを使って値を読み込むことになります。このレジスタの値の読込みを行うため、制御バスを使ってRead信号を与えると、レジスタの値がデータバスを通して転送されるようになります。スイッチがOFFのときはスイッチが接続されている端子がHレベルになるため、入力ポートを通して0ビット目に1が格納されている状態となっています。逆にスイッチがONのときには0 ビット目に0 が格納されている状態となります。このようにスイッチのON/OFFによって対応するI/Oレジスタの値が0/1に変化するので、CPUがI/Oレジスタの値を読み込めばプログラムの中で入力信号の値を使うことができるようになります。このようにI/Oレジスタによる入力と出力の機能を使うことによって、入力ポートと出力ポートに接続されている装置の入出力信号を使った制御ができることになります。
解説1- 3 アドレス空間について
メモリマップ解説1-2で説明したように、CPUはアドレスが割り当てられている場所を指定することによって、メモリやI/Oレジスタにアクセスして、そのアドレスにあるデータの内容を読み込んだり、書き込んだりします。CPUがアクセスできる場所を総称して「アドレス空間」と呼んでいます。アドレス空間は論理的な空間であり、このアドレス空間とメモリの実体が対応するようにマッピングされています。さらにアドレス空間にI/Oレジスタもメモリの一部として配置される方式を「メモリ・マップドI/O方式」と呼んでいます。
図1―3―1に本特集で使用するRX621マイコンの「メモリマップ」を示します。メモリマップとはアドレス空間上のどのアドレスにROMやRAM、I/Oレジスタが配置されているかを示すマップです。例えばこの図では、内蔵ROM(プログラムROM)は16進数のアドレスFFF8 0000h~FFFFFFFFhにマッピングされていることがわかります。これはマイコンで実行するプログラムを、FFF8 0000hから配置できることを意味します。プログラムの実行中はメモリマップ上のアドレスを指定することで、メモリやI/Oレジスタ内のデータの読み込みや書み込みをします。例えば、メモリマップ上の0008 C002hに割り当てられているI/Oレジスタの8ビットに0010 0001(21h)を出力する場合、プログラムで0008 C002hを指定して、そこに21hを出力します。つまりメモリマップ上のアドレスを直接指定することで、任意のメモリやレジスタの書き込みや読み込みができるようになっているのです。レジスタにアクセスするプログラムのつくり方については第3章で解説します。
解説1- 4 ワンチップマイコン
組込みシステムで使われるマイコン1 つのシリコンチップ上に制御に必要な一通りの機能を備えたマイコンをワンチップマイコンと呼んでいます。ワンチップマイコンには図1―4―1のようなCPU、メモリ、入出力を行う汎用I/Oなどの機能が備わっていて、周辺機能回路としてはタイマやA/D変換器などの機能が実装されています。組込みシステムの制御装置は、家電や自動車などの機器に組み込まれることを前提としているため、図1―4―2のようなワンチップマイコンを使うことが主流になっています。周辺機能回路を制御する場合もメモリマップに割り当てられているアドレスを基に制御することになります。
ただし、開発にあたっては、ワンチップの形で使うことはできません。電源の配線やクロック振動子、負荷装置などの接続が必要です。詳細については第3章で解説します。
トピックスマイコンはさまざまな用途で使用されています。例えば、製造現場で使われているロボットやNC工作機械、PLC(Programmable Logic Controller)の中にもマイコンが使用されています。機械制御で使用するPLCはプログラミングのしやすさ、保守性、耐環境性、信頼性など多くのメリットがありますが、ハードウェアやソフトウェアの変更がないなどの条件によってはマイコンに置き換えることでコストの低減、省スペースの実現なども可能となります。最近ではブラシレスモータ制御を行っているマイコンに学習済のAIモデルを組み込むことで、1つのマイコンでモータ制御とAIによる故障検知を行うことも可能になってきています。これによりメンテナンス時期の予想や故障箇所の特定などに活用ができます。身近な例では、ほとんどの電化製品にはマイコンが組み込まれており、自動車は多いものでは100個程度のECU(Electronic Control Unit)と呼ばれるマイコンが搭載されています。
著者略歴
新興技術研究所 熊谷 英樹
高齢・障害・求職者雇用支援機構 高度ポリテクセンター 戸川 敏寿、駒路 建
雑誌紹介
雑誌名:機械設計2022年1月号
判型:B5判
税込み価格:2,035円
内容紹介
機械設計 2022年1月号 Vol.66 No.1【特集1】見て触れてわかる! 実機で検証するマイコン制御入門
【特集2】VRを活用した設計・モノづくり手法