ラインで複数箇所で操作しする場、従来は押し釦やパイロットランプ等を実配線で配線していましたが、この従来方法だと配線が複雑かつ冗長になります。
マイコンの発達により、シリアル通信の方法がとられるようになりましたが、このためには高価なシステムを組み込むか、自ら複雑なプロトコルを組んで動作させなくてはなりませんでした。

 「連枝」(れんり)のI2C通信やCAN通信によれば、Bが頭につくBリレーを使用すればその変化値が、自動的に他の連結CPUに送られます。複雑なプロトコルは全て「連枝」側でコンパイルしてくれます。
◎CANでは通信失敗の場合はPIC18F458の持つCAN機能の物理層によって自動的にリトライがなされるとともに、「連枝」(れんり)のソフトによってもACKが確認されます。
◎I2CではこのCPUの物理層の持つリトライの機能や、「連枝」(れんり)のソフトによるACKの確認はありませんが、ACKの発行や2つのCPUによる通信衝突の際のアービトレーション(振り分け調整)等の多くの機能が物理的に内蔵されていて自動的に実行されます。
 つまり、ユーザーとしてはBリレーを使用するだけの仕様です。他に16ビットのWメモリーもそれを回路中に使用するだけで送信されます。

 例として荷物用3階エレベータを、「連枝」(れんり)のCAN通信で操作する場合の回路の一部を次に示します(通常の回路は、DL版のサンプル中にあります)。




この時、6行目の出力のB07による3階ランプ点灯は各階で行わなくてはなりませんから、従来は実配線で各階に持っていかなくてはなりませんでした。
また7行目の1階行き押しボタンも各階に置かなくてはならないので、これも実配線で各階の押しボタンからの実配線が必要でした。
連枝ではそれらをすべて、接点Bとして制御盤において、あとは2本のCAN通信で各階の制御部分から持って来ればよいことになります。
3階の制御部の回路は以下のようになります。



 以上で全回路です。単純なI/Oだけの回路になります。
入力情報についてはI/Oの結果を接点Bに変えるだけで、その結果が各階に通信されます。
 2階も同様な回路になります。
本体制御盤と各階の通信によって、エレベータは動作します。2階と3階も通信を行っていますがこの場合、意味はありません。

 「連枝」はその他、Wメモリー16ワードも相互に通信します。
 これによって、各部所のアナログセンサーの値い等を、本体を始めとする各制御部に送ることができます。

 通信のプロトコル等はすべて「連枝」の変換ライブラリー(別売り)が構成してくれます.。


ハード回路構成上、PIC18F458(258)とMCP2551がメインのICになります。両方ともマイクロチップ社製ですが、後者はRS232C通信回路のMAX232にあたります。

 CAN通信の回路例を示します。         18F458・CAN回路例  
 (上記エレベータ回路ではありません)。
 I2Cの回路については、各々のCPUのSCLピンどうし、SDAピンどうしを接続するだけです。
 (SCLとSDAピンは18F452は18、23番ピン、18F252は14、15番ピンです)。


◎拡張

 同一PIC素子を使用する場合(応用命令に含まれる)

 拡張の接続


 PIC18Fシリーズすべてに摘要されます。

接続抵抗の抵抗値は0が原則です。

マスター、スレーブとも、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

チャンネル 0〜7ビット 8〜Fビット
メインCPU
カバー
スレーブCPU
カバー


スレーブ(拡張)側にはPIC18F452−LB使用の場合は¥8F5¥E08¥中のEXSLAV6.HEXを
 PIC18F4525−LB使用の場合は¥8F55¥E08¥中のEX55SLAV6.HEXを書き込んでください。

スレーブ(拡張)側はマスター側とI/Oのやり取りの動作のみをします。


 MCP23008(017)によるI/Oの拡張
 「連枝」(れんり)ではI/Oの拡張用素子としてMCP23008、MCP23017を使用し、ラダー図上でX、Yの各チャンネルの8〜F(23008)、0〜F(23017)を使用するだけで外部に接続された各々8ピン、16ピンのI/Oをアクセスすることができます。各ピンを入力(X)に使用するか出力(Y)に使用するかは任意です。

チャンネル 0〜7ビット 8〜Fビット
メインCPU
カバー
MCP32008−0 カバー
MCP32008−1 カバー
MCP32008−2 カバー
MCP32008−3 カバー
MCP32008−4 カバー
MCP23017−0 カバー
MCP23017−1 カバー
MCP23017−2 カバー

 拡張はI2Cと同じ回線を使用します。
 従ってこの回線を利用すれば、MCP23008またはMCP23017をロボットの端末として使用できます。足りなければ2つ以上を同一場所に使用してピン数を倍にすることもできます(これら拡張用素子を制御できるのは、1箇のCPUのみですが、I2C通信の性質上、拡張用素子は、図1のようにI2C通信ライン上であれば、どこにでも置くことができます。)
CPU・機能 MCP23008
MCP23017 使用
同一CPU
連結による拡張
I2C通信 CAN通信
PIC16Fシリーズ × × ×
PIC18Fシリーズ ×
PIC18F458(258)

註)PIC16F88は、MCP23008の拡張のみサポートしています。
註)PIC16Fシリーズは、MCP23008とMCP23017の拡張をサポートしていますが、この2種類を同時に使用することはできません。
  PIC18Fシリーズは、MCP23008とMCP23017の拡張を同時に使用することはできます。
  その結果、合計88(−2)ピンのI/Oの拡張ができます。
註)拡張、I2C、CAN通信を使用するのには別売りライブラリーが必要です
                                  表紙に戻る


 自動車産業では現在、殆どすべての車内の各機器の通信をCAN通信によっています。
 工具のボッシュ社の提案による方法で、通信のやり取りに関する複雑な殆どの部分をIC内部の物理層で解決する方法です。
  「連枝」(れんり)では、PIC18F458にこのCAN通信機能が内蔵されているのを利用して、接点(Bリレー)とメモリ(W)を、各機器相互に通信して共通の値いとして利用できるようにしました
 
  「連枝」ではI2CもCANも同じ仕様です。
 I2CとCANは通信規格が全く別のもので、一般的には前者は同一制御盤内で、後者は制御盤外の長距離の通信をします。
 しかし、「連枝」(れんり)にとっては接点(Bリレー)とメモリ(W)の変化を各CPU間に通信して、共通の値いとする仕様は全く同じです。
 
◎ユーザーはBリレーとWメモリを回路上で使用し、どちらの通信かを設定するだけでプロトコルについて何も考える必要はありません

 
目安としては、I2Cが50cM以内、CANが15M以内が考えれますが、その仕様はについては使用状況やそれぞれの規格が基準になります。
 CAN通信にはシリアル通信のMAX232にあたる周辺素子MCP2551の接続が必要ですが、I2C通信は各CPUのピンどうしの接続のみで、外部周辺素子は不要です。

   
    図1、CPU間の通信にI2C通信を使用し、さらに拡張用素子を接続した場合