【アイソレーション入力 / アイソレーション出力】《HW》

アイソレーションとは「電気的絶縁」を意味し、信号の接続を物理的に行わない入出力。つまり直接ケーブルや基板ランド、半導体などで物理的に接続した状態ではない状態で入出力を行うこと。
信号等はフォトカプラ等を使用しアイソレーションを行う。また、電圧変換などに使用されるトランスも1次側と2次側ではアイソレーションされている。

【アーキテクチャ設計】《SW設計》

アーキテクチャ設計は、技術者によって解釈が異なり明確に定義する事は難しいですが、次のように定義できます。分析で得られたシステムに求められる機能および非機能(性能、拡張性、信頼性等の要求)をどのように実現するのか、システム全体の設計戦略、方針を決定し、全体構造の設計、仕様を定めることです。
アーキテクチャ設計には、メカ、エレキ設計等の物理アーキテクチャ設計とソフトウェアアーキテクチャ設計があり、組込みシステムでは、物理アーキテクチャ設計とソフトウェアアーキテクチャ設計を協調設計することにより、最適なシステムを構築することができます。すなわち、ソフトウェアとハードウェアの役割分担を明確化することが重要です。
ソフトウェアアーキテクチャ設計の一例をあげますと、サブシステム分割、フレームワーク設計、レイヤ構造設計(プレゼンテーション層、ドメインロジック層、デバイス制御層等の分割)、並行性設計、使用するか非かを含めたOS選定、通信プロトコル設計、エラー処理メカニズム設計、メモリ管理方針決定等があります。
アーキテクチャ設計は、システムの大規模化、複雑化に伴い、非常に重要になってきており、アーキテクチャ設計の結果で、開発効率性、拡張性、変更容易性、性能、品質等に大きく影響します。
アーキテクチャ設計は、技術リスクを早期に解決するためにシステム開発の早い段階で実施しています。

【アキュムレータ(Accumulator)】《プロセッサ》

プロセッサ内のレジスタ。累算器ともいう。
プロセッサ内レジスタが少ない、もしくは演算器を特定のレジスタに限定するアーキテクチャにおいては、演算の対象となるレジスタを1ないし2に限定する。このようなアーキテクチャではこのレジスタをアキュムレータと呼ぶ。アキュムレータアーキテクチャでは演算の一方はアキュムレータに限定されるため、演算に伴いデータの移動が必要となる場合が多い。反面、命令形式のオペランド指定フィールドは短くすむため、命令長を短くできる。プロセッサ設計に利用可能なトランジスタ数に限りがあった1970年代近辺に設計されたマイクロプロセッサにはアキュムレータ方式を採用するものが多い。(たとえば、Z80, MC6800, MCS6502, i8086など)
命令形式(インストラクション)・オペランド・マイクロプロセッサを参照のこと

【アクチュエータ】《HW》 → Actuator

【アース】《HW》 → グランド

【アセンブラ】《ツール》 → アセンブリ言語

【アセンブラの得意な部分】《SW全般》

C言語に代表される高級言語のコンパイラが理想的なコード生成を行えば、特にアセンブリ言語を使う必要はありません。しかし現実にはコンパイラの生成するコードはCPUの持つ機能を100%使い切ったコード生成をしていない場合がほとんどです。そこにアセンブリ言語を用いて人手でコーディングする余地が生まれます。それがアセンブラの得意な部分となります。
このような経緯から、アセンブラの得意な部分は次の3つに大きく分けられます。

(1) コンパイラの使用しないCPUの機能を使える部分
(2) コンパイラ機能でまだ改良余地のある部分
(3) コンパイラがコード生成する際に情報として利用できない、静的な情報以外を活用できる部分

(1)は、例えばCPUのフラグを活用したプログラム(加算のキャリーを使った演算)、汎用的に用いられないCPUリソースを使ったプログラム(アキュムレータを使った積和演算や丸め演算)、また特定用途のCPU機能を活用したプログラム(例えばOSのユーザモードからスーバーバイザモードへの移行といったOS用の特殊機能やマルチメディア命令)などの場合です。また、ハードウェアとの機械命令によるインタフェース部分、あるいは割り込み関係や排他関連など特殊な機械命令を使うような場合も含みます。
(2)は、例えば最適化やレジスタ割付けなどでコンパイラの生成したコードに改良の余地が有る場合です。
(3)は、例えばあるif文での分岐の割合やループ回数など、実行時にしかわからない情報で、しかも一定の傾向が判明している場合に、分岐回数を少なくなるようにしたり、基本ブロックの配置や制御構造を変えるようにコードを変更したりする場合です。

【アセンブル】《ツール》

アセンブリ言語のプログラムから機械語を生成すること。

【アセンブリ言語(assemble language)】《ツール》

マイクロコンピュータの機械語を人間がわかりやすいように規則を決めて表現したもの。
通常、オペランドとニモニックから構成します。

【圧着】《HW》

互いに押し付け接合による接続を行うことを圧着接続といい、組込みをはじめとした電子機器では電気接続でよく用いられる。
例えばコネクタ(あるいはコネクタ電極)をケーブルに付ける際には、コネクタ側の導体でケーブルの導体を挟むか包んだ上で全体を押しつぶすという方法がよく取られるし、半導体チップ実装でのワイヤボンディングも圧着を利用している。
前者のケーブル接続の際には、圧着工具と呼ばれる専用の工具を使用する。
圧着作業はハンダ付けにくらべ熟練をそれほど必要としないが、注意しないとケーブルの絶縁被覆のはがしが不十分なために機械的に付いていても電気的には付いていない、というトラブルを発生させることがある。

【アドレスバス(Address Bus)】《プロセッサ》

バスマスタが『動作させたい、アクティブになって欲しい』デバイスを指定するための信号線である。ソフトウェアから見ると、番地を指定することで、どのデバイスにアクティブになって欲しいかを指示できる。ハードウェアの接続を見ると、アドレス線の一部が各デバイスのチップセレクトに入っていたり、アドレスをデコードした結果がチップセレクトに入っていたりする。これにより、アドレス指定で狙ったデバイスをアクティブにすることができる。

【アナログセンサ(Analog Sensor)】《HW》

光の量、色、重さ、歪、速度、加速度、雨量など現象に対応したアナログ信号を出力する機能部品のこと。重さや速度など基本的な現象の検出を行うセンサに加えて、最近は人の感情を検出するようなAI(人工知能)センサ、交差点の動きから歩行者の人数を推定するインテリジェントセンサ、出張先から自宅の室温を調べることのできるスマートセンサなど多くのセンサが考案、提案されている。
アナログセンサを利用する際には、センサが出す電気信号を増幅してデジタル信号に変換し、コンピュータに取り込むことになる。その方法には、ADC(アナログデジタルコンバータ)にアナログ信号をコンピュータに入力してスケーリングされたデジタルの値を得る方法、センサの出力に比例したデジタルパルス信号をコンピュータに入力して周波数からデジタル値を得る方法などがある。
いずれにしても、センサの出力と現実の物理量の関係を正しく換算しなければソフトウェアは外部の物理量を正しく把握できない。この部分の処理は、時間とも関係するので重要である

【アナログとデジタル】《HW》

アナログとは連続的に変化する信号を無段階に表すことを指し、デジタルとはある値を離散的な数値によって表すことを指します。組み込み機器では一般に、アナログデータをセンサによって電流や電圧などに変換し、その変化をADC(アナログ-デジタル変換器)などでデジタルデータにして処理を行います。変換されたデジタルデータはデジタルのまま利用されたり、DAC(デジタル-アナログ変換器)などで再度アナログデータに変換したりします。
アナログシステムでは使用する部品の性能に誤差があるため、温度などの周辺の環境が変わっても同じような動作をさせるためには誤差を見込んだ設計や、機器生産時の調整や校正を行う必要があります。
これに対してデジタルシステムでは、安定した動作、高再現性、変更のしやすさなどのメリットがあり、最近の組み込みシステムではセンサからのアナログ出力をできるだけ早い段階でデジタルに変換して処理や制御に用いるケースが多くなっています。
しかしながら、デジタルシステムでは量子化時の誤差プロセッサの処理速度の限界などがあるため、システムのリアルタイム性や連続性、コストメリットなどを考慮すると要求仕様をアナログシステムで実現した方がよい場合もあります。

【RMA(Rate Monotonic Analysis)】《SW設計》 →RMA

【アルゴリズム】《SW全般》 → アルゴリズムとデータ構造

【アルゴリズムとデータ構造】《SW全般》

データ構造の定義は大きく分けて2通りあります。
第1番目は基本的なデータ構造と言われているもので、「複数のデータの間に定義された大小や順序といった数理的な関係である」とするものです。配列などは基本データ構造の例になります。第2番目は抽象データ型ともよばれるもので、「基本的なデータ構造と、その数理的関係を保持するように追加や削除などといったデータの操作をセットにしたものである」とするものです。スタックやキューなどは抽象データ構造の例になります。
データ構造の存在を前提とした場合のアルゴリズムとは、抽象データ型における操作のことであると定義することができます。しかし、データ構造の存在を前提としないで一般的にアルゴリズムを定義すると、「与えられた問題の解を必ず得るための機械的手続きである」とできます。有名なものとしてはユークリッドの互除法などをあげることができます。このように定義されるアルゴリズムは、各種コンピュータアーキテクチャや個々のプログラミング言語の記述法に依存するものではありません。
以上のことをまとめると、次のようになります。先ずアルゴリズムやデータ構造が存在もしくはこれらを設計し、それをプログラミング言語で記述することになります。その結果、実際にコンピュータで実行されるプログラムが得られることになります。従って、コンピュータプログラムの側から見るならば、アルゴリズムは抽象的な手続きであるといえます。

【移植性】《SW全般》

移植とは、ある環境で動作しているソフトウェアを別の環境で動作するように修正する作業のことです。その作業が容易なソフトウェアを「移植性が高い」と言います。
多くの組織ではソフトウェアを白紙の状態から開発することは稀で、ベースとなるソフトウェアを利用しています。通常はそれを新しい環境に移植した上で機能追加をすることで、新しいソフトウェアとしてリリースしています。
その際に移植性の高いソフトウェアであれば、極く一部の簡単な変更で作業が完了するのに対し、移植性の低いソフトウェアでは、膨大な量の書き換えが発生し、修正時間の長さや作業ミスの多さに悩まされることになります。その意味で、ソフトウェアの移植性は、その資産価値を決定する大きな要素であるといえます。
移植性に影響する主要因として、プログラミング言語、CPUの種類やクロック、コンパイラ、OS、周辺デバイス、表示用言語などが挙げられます。
まずプログラミング言語ですが、アセンブリ言語では移植の高いソフトウェアを記述することは極めて困難です。一方、Javaのように移植性の極めて高い言語もありますが、残念ながら組み込み用途ではまだ一般的ではありません。ここでは、現在最も一般的であるC言語を前提に説明いたします。
CPUが変わると、エンディアンや整数(int)のサイズが変わる場合があります。メモリ内の整数や構造体を、ファイルなどの外部メモリに読み書きする場合に注意が必要です。移植性を高めるにはバイト単位で並び方を固定して入出力する必要があります。また、CPUの種類が変わらなくても、クロックが早くなっただけで動作のタイミングが変わるので、周辺デバイスへの待ち時間を空ループで制御している個所などは要注意でしょう。空ループをやめてタイマーを使用する、あるいは空ループを一箇所に集めて、それを共通に利用する、などの工夫が有効です。
コンパイラが変わると、関数の呼び出し時のレジスタの使い方やスタックの消費量が変わります。アセンブリ言語で記述された個所との整合性や、タスクに割り当てるスタックのサイズを見なおす必要があります。また、コンパイラ特有の仕様を利用すると移植性を犠牲にする可能性が大きいので注意が必要です。
OSが変わると、利用できるシステムコールの種類やタスク・プロセスの考え方が大きく変わる場合があります。複数OSへの移植が想定される場合、共通な機能に限定して利用する設計が必要です。
周辺デバイスが変更された場合、その制御手段は大きく異なるのが普通です。デバイスの機能を直接利用せず抽象化して、何をさせるか(What)を明確にしたインターフェイスをつくって、どう制御するか(How)の部分は、別のモジュールとして分離する(ドライバといいます)ことで移植性が高まります。
最後に表示言語ですが、表示機能をもったソフトウェアであれば、出荷先の言語(アメリカなら英語、日本なら日本語)に合わせる場合があります。このような場合、文字列をプログラム中のいろいろな個所に分散させず、あらかじめ分離しておけば移植が容易になります。
以上をまとめますと、移植性を高めるためには、システム設計の際に想定される変動要因を洗い出し、それに依存する部分は抽象化・局所化し、変更箇所や方法を明確にしておくことが重要だといえるでしょう。

【イベント(Event)】《OS》

OS上でのソフトウェアの実行と同期しない関係で生じる事象のこと。OSを内部、アプリケーションプログラムと物理入出力を外部とみなした場合に、外部で生じるOSが関与すべき出来事を指す。イベントをOSが感知するための仕組みとしてハードウェア割込み、ソフトウェアトラップなどがある。
また、アプリケーションソフトウェアが自身の処理結果などをイベントとしてOSや他のアプリケーションに通知したい場合の手段としてOSはイベントフラグ機能を提供する場合がある。イベントフラグをセットする依頼をOSに発行するとOSは、それを外部イベントと同様な事象と捉えて、イベント待ちをしているタスクに伝達すると同時に待ちタスクの待ち状態を解除する。

【イベントドリブン】《OS》 → Event Driven

【イモハンダ、テンプラハンダ】《HW》

ともに不十分なハンダ付けを指す言葉です。ハンダがジャガイモのようになっている(温度が低くハンダが十分に溶けていない)、ハンダが天ぷらの衣のように表面だけ溶けていて肝心の中身が接合していない状態を指します。
センサの信号読み取りが不安定であるといった障害でハンダ付け不良が疑われるときは、ハンダ付け箇所をゆすってみましょう。イモハンダ、テンプラハンダの場合はぽろっと取れたりします。

【インスタンス(Instance)】《OO》

クラスで宣言と定義されたオブジェクトを生成すると実際の固有な振る舞いやデータ値を保持するインスタンスが生まれる。1つのクラスからは物理メモリの尽きるまで任意個のインスタンスが生成できるのが普通である。
インスタンスは、インスタンスに固有なデータ領域をそれぞれに持ち、個性を維持する。またクラスメソッドを利用して全インスタンスに共通なクラスデータにアクセスすることもできる。

【インストラクション】《プロセッサ》 → 命令

【インスペクション(Inspection)】《品質》

実施の手順や開始・終了の基準、役割などが全て決まっている公式なレビュー
公式なレビューの特徴は、開発プロセスの中に組み込まれている公式なアクティビティのひとつで、文書化された手順やルールに則って実施される。実施に当たっては、参加するメンバの役割と責任が決まっており、訓練されたモデレータが活動を主導する。一連の活動の目的は、作業成果物の欠陥を検出し、解決されたことを検証することにある。特に組込みシステムにおける作業成果物は、ハードウェアからソフトウェアまで多岐に渡るため、多角的な視点で欠陥の検出にあたる必要がある。また、活動の経過と品質データを記録し、活動自体の改善も目指す。
参照:ウォークスルーモデレータインスペクタデザインレビュー

【インスペクタ(Inspector)】《品質》

インスペクション、またはレビュー実施時に、レビュー対象物の指摘を行う役。
インスペクション、またはレビュー実施時に、レビュー対象物の指摘を行う役。インスペクタ以外の参加者は、インスペクション実施時に指摘は行わない。
レビュー対象物は、レビュー開催前にチェックを行い、指摘事項リストを予め提出しておくことが必要。また、チェックに要した時間も記録し、あまりにもチェック時間のかかるものについては、インスペクションの分割、実施不可になる場合もある。
組込みソフトウェアにおいては、インスペクタとしてハードウェア設計などのソフトウェア担当以外が参加することが多く見られるため、レビュー対象物の用語は、用語辞書のようなもので定義し、関係者間の認識統一を図ることが望ましい。
参照:モデレータ

【インターフェース】《SW全般》

インターフェースとは2者間の接点や境界面のことで、「インターフェースを取る」というのは2者がうまく接続し動作するように約束を決めることである。こういった取り決めをインターフェース定義と呼ぶ。インターフェースは仕事を分割して進める場合に極めて重要になるため、その定義を明解な文書に残すことが大切である。文書で十分記述できない場合や理解を助ける目的で、補助として図を用いることも多い。

【インターフェース定義】《SW全般》 → インターフェース

【インピーダンス(Impedance)】《HW》

電気回路が交流信号に対して持つ抵抗のことをインピーダンスといいます。回路(伝送路)はなにかしらのインダクタンス(コイル要素)成分と容量(コンデンサ要素)成分を持ちますが、そのためインピーダンス値は交流周波数によって変化します。
3ステートにある「ハイ・インピーダンス」は、インピーダンス値が高いこと、つまり信号に対する抵抗値が非常に高く、実質的につながっていないのと同じ状態であることを意味します。
また、基板上のパターンや電線は信号に対してある特有のインピーダンス値を持ちますが、信号伝送の途中や末端でインピーダンスの値が乱れるとそれが信号の波形の乱れとして影響してきます。それゆえそのような信号波形の乱れを防ぐために伝送路が一貫して同じインピーダンス値を持つように設計・実装することがよく行われます。これを「インピーダンスを整合させる」と言います。

【隠蔽(Encapsulation)】《OO》

特定のデータとその構造をクラスの外部からは見えないようにクラスというカプセルで包むこと。システム工学のブラックボックス化と同様の概念であるが、オブジェクト指向開発では特にカプセル化と呼ぶ。
組込みソフトウェアの開発において複雑なデータ構造を持つ実体を扱う場合、同時多重割込みの発生で単一のデータへ非同期に多重アクセスが生じてデータが破壊されるケースが多い。こうした問題に対処するには、生データへのアクセスは、カプセル化された操作のみが許されるようにすることが良い解となる。

【インヘリタンス】《OO》 → 継承

【ウォークスルー(Walkthrough)】《品質》

実施の手順や開始・終了の基準、役割などが決まっていない非公式なレビューのひとつ。
演劇舞台などで行なわれる「立ち稽古」を語源とするように、作業成果物の作成者が活動を主導し、成果物の説明や質疑に対する応答を、その場で行なっていく。また作業成果物の欠陥検出だけに留まらず、解決策の提案や議論も臨機応変に実施する。作業成果物の完成度を上げるため積極的に実施するとともに、組込みシステム設計に必要とされる多角的な視点を身に付けるための活動として、プレゼンテーション能力やコミュニケーション能力も養っていく必要がある。
参照:インスペクションデザインレビュー

【ウォータフォール(Water Fall)】《SW設計》

ソフトウェア開発プロセスモデルの一つである。企画から仕様策定、設計、実装、試験、保守という一般的な工程順序で開発が進み、工程間は特有のドキュメントを渡すことで明確に特徴付けられるというモデル。個々の工程とドキュメントの引き渡しの様子が川と滝をイメージさせることからRoisによりウォータフォールモデルと名づけられたという。
このプロセスを額面どおりに実施すると、仕様策定が完了して正式仕様がドキュメント化されない限り設計作業が開始できないという問題が生じる。また、全部の工程成果物をドキュメントで規定すると開発期間が長くなり不都合が生じるといった問題も生じる。
このために、ウォータフォールモデルの改良としてスパイラルモデルやイテレーションモデルなど各種のプロセスモデルが提案された。

【ウォッチドッグ】《プロセッサ》 → Watch Dog

【SADT】《SW設計》 → Structured Analysis Design Technique

【エッジトリガ】《HW》 → 信号検出方式

【エンディアン(Endian)】《プロセッサ》

メモリ上のデータ配置の方式。バイトアドレッシングのプロセッサにおいて16ビット以上のワードをメモリ上の配置する場合に、データの重みとアドレスの関係は一意に決まらず、アーキテクチャ依存となる。この配置の方針をエンディアンと呼び、アドレスの小さい順から重みの小さなバイトを配置する方式をリトルエンディアン、アドレスの小さい順から重みの大きなバイトを配置する方式をビッグエンディアンと呼ぶ。また、プロセッサの動作モードによってリトルエンディアン・ビックエンディアンを切り替え可能なプロセッサをバイエンディアンと呼ぶこともある。
過去、16ビットワード内はリトルエンディアンで32ビットロングワードを16ビット単位のビッグエンディアンとしたマシン(DEC PDP-11)があるように、メモリ配置はアーキテクチャ設計者に強く依存している。
エンディアンが異なるとメモリ上のデータ配置が異なることから、メモリマップIOやunion、structなどの扱いに注意を有する。通信やマルチプロセッサなどで、エンディアンが異なるプロセッサ同士の通信を行う場合には、エンディアンの違いを意識したコーディング(もしくはネットワーク向けの関数参照など)が必要となる。
リトルエンディアン・ビッグエンディアンは、スウィフトの「ガリバー旅行記」の小人国における「太端派(ビッグエンディアン)」「細端派(リトルエンディアン)」を由来とする。

【応答(Response)】《SW全般》

プログラムを実行した時にその結果が返ってくること、あるいは通信で相手にコマンドを送信した時に通信相手から反応が返ってくることを指す。ハードリアルタイムシステムの場合、プログラムを実行した時に、どのような状況でも規定された時間内の応答がある必要がある。また通信の場合は、応答が一定時間で返ってこない場合に、通信相手に再度コマンドを送信するか、タイムアウト処理を行うか、通信路を再度初期化するか等、様々な対応が考えられるので、通信プロトコルとして規定しておく必要がある。

【OSを使うか使わないか】《OS》

OSを使った場合のメリットを下記にあげます。

デメリットとして考えられるのは次の項目です。

構築しようとするシステムに対して、上にあげたメリットが多ければOSを採用することになります。しかし、OSとCPUの性能は日進月歩で向上しており常に最新の情報を取り入れながら判断することが必要です。
最後に、OSにもバグはありますから、必ず評価し、必要な信頼性が確保できることを確認することが大切です。
参照:オペレーティングシステム

【OO(Object Oriented)系言語の原則】《OO》

執筆募集中!

【OODの技法】《OO》

執筆募集中!

【オシロスコープ】《HW》

主に電気信号を時間に沿って表現する計測装置のこと。
センサからのアナログ信号の時間波形観測やクロックに同期したデジタル制御信号の動作確認など組込みソフトウェア開発では用途の多い計測機器である。
横軸に時間経過、縦軸に信号強度(単位は電圧)をとって観測中の信号の時間変位をトレースする仕組みになっている。信号表示のタイミングを別の入力(トリガチャネルと呼ぶ)から得て表示する機能や時間で横軸を振らずに横と縦にそれぞれデータ信号を入れてX-Y表示をするという機能もある。
信号をアナログ的に処理してCRTにベクトル表示する従来型と高速にデジタルサンプリングした上でラスター表示するDSO型の2種類がある。

【オーバーヘッド】《SW全般》

オーバーヘッドとは一般的な費用を指し、組込みシステムでは「この方法はオーバーヘッドが大きい」というように用いて「この方法を用いると無駄あるいは余分なコストやCPU性能がかかる」こと表す。アルゴリズムやデータ格納方法の検討等の際に処理性能の観点から評価する際に良く用いる。

【オブジェクト(Object)】

1. 《SW全般》コンパイラやアセンブラによって、コンピュータ上で実行可能な形式に変換されたプログラム(オブジェクトプログラム)のこと。

2. 《OO》オブジェクト指向開発方法論に基づくソフトウェアの単位概念のこと。
オブジェクトという用語そのものが指すものは、文脈によって意味が変わるので注意が必要。

こうしたケースにはオブジェクトという用語を用いて聞き手に判断を委譲するケースが多い。
UMLでオブジェクト図という場合には、インスタンスを四角形で表現した図を意味し、クラスを四角形で表現した図はクラス図と呼ぶ。ツールによっては混在を許すものもある。

【オブジェクト指向開発(Object Oriented Development)】《OO》

ソフトウェア開発方法論の一つ。
CPUの動作にもとづいてプログラムの手続きを規定することがソフトウェア設計の歴史的な始まりであった。これに続いて機能を中心にしてソフトウェア構造を捉える構造化分析・設計の技術が開発された。さらには、機能にそれが扱うデータを内包させる分析と設計技術としてオブジェクト指向技術が発達した。
組込みソフトウェア開発にとっては、オブジェクト指向の動的性質が組込みの要求する決定論的な性質に適合しない、同一機能の実装に対して構造化などよりも実行資源が多く必要であるという問題がある。このためオブジェクト指向技術の取り込みは、今のところソフトリアルタイムで資源の豊富な応用分野に限定されているが、実行時に依存しないOO技術は組込み開発でも多用される傾向にある。
参照:クラスオブジェクト隠蔽インスタンス継承メソッドライフタイム

【オープンコレクタ】《HW》

デジタルデバイスの出力回路でよく用いられている回路形式。出力トランジスタのコレクタ端子に負荷を接続するのであるが、そのコレクタ端子が何も繋がっていない状態(Open状態)となっていることからオープンコレクタと呼ばれる。
この回路は、デジタルセンサの出力部でもよく使われている。
Fig.1はNPN型トランジスタを使用したオープンコレクタ回路の例である。またオープンコレクタ出力で発光ダイオード(LED)を駆動する回路例をFig.2に示す。出力トランジスタはちょうどスイッチとして動作する。


この出力トランジスタは扱うことのできる電流の上限が定められている(詳しくはデバイスのスペックシートを参照のこと)。それ以上の電流値でON/OFFをしたい場合には、オープンコレクタで一旦リレーを駆動し、リレーの接点で最終負荷を駆動するといった回路構成をとる。

【オペレーティングシステム(Operating System)】《OS》

組込みアプリケーションプログラムの起動停止といった管理及び入出力、通信などアプリケーション共通機能を提供してくれるソフトウェアのこと。製品固有のソフトウェアを応用ソフトと呼ぶのに対して、オペレーティングシステムは基本ソフトと呼ばれる。
パソコンなど汎用コンピュータでは、開発するプログラムの規模に関わらずWindowsやLinuxなどのOSの上で動作するソフトウェアを開発する。しかし、アセンブラとC言語を利用して機械語を作成してメモリに書きこむような小規模組込みソフト開発の場合は、オペレーティングシステムは使用しない。ただし、組込みソフトウェアの規模が大きい、複数のプログラムを並行に開発したり、並列実行させたいなどの場合にはITRONなどに代表される組込みOSを使う。