今回の記事では750-8215 Controller PFC200がCANOPENのMasterとして立ち上げ、ZILA社のCANOPEN Sensor TSR-CAN-03と通信します。どうぞよろしくお願いします。
Youtube Video
Wago 750-8215 CAN Interface
Wagoの750-8215でCAN Masterを立ち上げるには、X4 9-Pin Male Portを使用します。
X4 Pin Assignment
こちらはX4 のPin図です。
Resistor
CAN Nodeに124Ohmの終端抵抗をいれてください。
LED-CAN
Wagoの720-8215 CPUにCANのLEDがあり、現在のCAN Bus通信状態を示しています。
赤はエラーあり、緑は通信中、OFFはCAN BUS有効してません。
Proess IO Max
最大のProcess IOは2000 Wordsまでです。
CANOPEN?
以下のLinkから参照しています。
https://monoist.itmedia.co.jp/mn/articles/0903/06/news125.html
CANは、自動車のECU(Electronic Control Unit:電子制御装置)のネットワーク制御のために開発された通信規格です。ISO(International Organization for Standardization:国際標準化機構) 11898として国際規格化され、世界中の自動車メーカーが車両ネットワークの制御に使用しています。
Version
CANOPENは CAN2.0 AとCAN2.0Bがあり、そしていまCAN FDのさらに進化バージョンがリリースされますが、ここでは触れません。
- CAN2.0Aでは11BitのNode ID、8 ByteデータとSpeedは1Mbpsまでです。
- CAN2.0Bでは11/29BitのNode ID、8 ByteデータとSpeedは1Mbpsまでです。
- CAN FDでは11/29BitのNode ID、64 ByteデータとSpeedは10Mbps+です。
Hardwareを選定してるときに該当するNodeデバイスはどっちのVersionをSupportしてるかを必ず確認してください。
そして現在の工業ProtocolではCANベースで発展されるものが多く、例えば工業I/Oでよく使われているDeviceNet、CANOPEN、CANOPEN FDなどです。
Data Definition
CAN データはBitからByteまで、CANOPENはLittle Endianを使用します。対応できるData Typeは;
- UNSIGNED8・UNSIGNED16・UNSIGNED32
- INTEGER8・INTEGER16・INTEGER32
- FLOAT・TIME・STRING
- などなど…
Data Addressing
CANOPENのData Typeを理解した上で、次はAddressingのコンセプトを話したいと思います。CANOPENではDataをObjectで管理します。それだけではイメージしづらいのでExcelのTableだと思ってください。そのTableは16Bit Index・8Bit Subindex・24Bit データの構造であり、Indexの範囲によってデータの使い道を切り分けます。
- 1000hからはCANOPEN パラメタ
- 2000hからはメーカ指定
- 6000hからはDevice Profileから定義する
になります。
ExcelのTableだとイメージしたらこうなります。
Index | Sub-Index | Data Type | Description |
1000h | 0 | UNSIGNED32 | Device Type |
1001h | 0 | UNSIGNED8 | Error Regisiter |
… | |||
1008h | 0 | UNSIGNED8 | =4、SubIndexの数と同じになります。 |
1008h | 1 | UNSIGNED32 | Vendor ID |
1008h | 2 | UNSIGNED32 | Device Code |
1008h | 3 | UNSIGNED32 | Revision Number |
1008h | 4 | UNSIGNED32 | Serial Number |
Nodes & Network
CANOPENでは最大127NodeでIDが重複できません。
もしネットワーク上でNodes数がさらに増やしたいであれば、GatewayやBridgeの増設によりネットワークの拡張で最大255までが可能です。
Network Management
CANOPENはネットワーク内のすべてのNodeから基本の情報を取得できます。たとえば、
- Boostup message
- NodeがPower UpしてるときやResetされたらCANOPEN MasterにそのBoostup messageに送ります。
- Heatbeat Message
- Emergericies
そしてCANOPEN Masterが各Nodeに対してリセットやOperation状態の変更などの操作ができます。
Service & Data Access Protocol
CANOPENではいくつかのServicesやData Accessの方法を提供しています。
- SDO/USDO(Service Data Object/Universal Data Object)
- SDOはNodeのパラメータにすべてアクセスできます。
- RequestとResponseベース通信
- Node 診断
- Node設定
- PDO(Process Data Object)
- 最適化されたモデルからNodeに必要な情報を取得できます。
- 周期通信・Base On Event・Base On Changeなど。
Process Data Object(PDO)
今回の記事ではPDOだけの通信なので、PDOのことをもう少し話しますね。PDO(Process Data Object)はUserがNodeの中の複数のDictionary Entriesからデータを取得し一つのメッセージとしてまとめることができます。そうなりますと、メッセージの中にはByteだけのデータになります。
では、以下の例でPDO Mappingのコンセプトを説明します。
このPDOでは:
- 0Byte目はIndex6000hのSubIndex1の8チャンネル入力1です。
- 1Byte目はIndex6000hのSubIndex2の8チャンネル入力2です。
- 2-3Byte目はIndex6400hのSubIndex1のアナログチャンネル入力1です。
- 4-5Byte目はIndex6400hのSubIndex2のアナログチャンネル入力2です。
最後はNodeがいくつ違うDictionary EntriesのデータをまとめてMasterに送信します。
PDO Mappingはそれでも少しイメージしつらいならプログラム言語のPointerだと思ってください。このPointerは32Bitの構造で、
- 16Bit Index
- 8Bit Subindex
- 8Bit Data Length
が含まれています。
話が少し先になりますが、例えば今回使用するZILA社のEDS Fileからみますと、
PDO 1A00Sub1ではDefault Valueは0x71300110になります。
このように0x71300110では、0x7130はIndexで、01=SubIndex、10=Data Length(10進数で16、つまり16Bitデータ)になります。
まとめになりますと、
TPDO | RPDO |
Transit PDO | Receive PDO |
TPDO 1-512 | RPDO 1-512 |
SubIndex0=MappedされたEntries数 | SubIndex0=MappedされたEntries数 |
SubIndex1-n=ItemのIndex | SubIndex1-n=ItemのIndex |
Profies Available
CANOPENを使用する一つ大きなメリットはDevice ProfileがSupportすることです。そのDevice Profileは該当するNodeに対して必要なパラメータ・データ通信もすべて記述されています。例えば、
- CiA401 Generic I/O
- CiA402 Drives And Motion Control
- CiA406 Econder
などなどです。
Summary
CANOPENの話が長くなりましたが、ここで簡単なまとめをします。CANやCAN FDがHigher Layerの実装がないとCANのメリットを100%引き出すことができなく、そこにDeviceNET/J1939や今回話してるCANOPENが実装されることでCANの機能を引き出せます。
CANOPENにはPDOとSDOがあります。
SDOはMax 4Byte リクエスト・8Byte Segmentです。
PDOは最大PDO 8Byteです。
そしてCANOPENはデータ通信Protocolであり、NodeIDは重複できなく、SDOはNodeデータやパラメータをFullアクセスできます。PDOは最適化されたData Protocolです。
最後にCANOPEN
ではDevice And Application ProfiesがSupportします。
ZILA Sesnor Side
下図は今回の記事で使用するZILA 社の温度計です。SensorはCANopen 2.0 A Supportし、検知できる温度は -40…+80 °Cまでになります。
Pin assignment
こちらはSensorからのPin図視点です。
Pin | Description |
1 | プログラムPinで、使用しないでください |
2 | 電源24v |
3 | GND/CAN_GND |
4 | CAN_H |
5 | CAN_L |
PDO Mapping
Byte 0-1 temperature measurement
Byte1(LSD) + Byte2(MSB)に合わせて温度のPV値になります。例えば00F2hは10進数242なので24.2になります。
Byte2-3Not Used
Byte2-3は使用しない、常に0です。
Byte4-5AD Value
Bye4-5は温度検知のAnalog値です。
Byte6-SDO object 6600h alarm status
0=アラームなし、1=アラームあります。
Byte7-SDO object 1001h Error Register
Bit | Error | Description |
0 | Generic Error | Hardware問題 |
1 | EEPROM Error | CAN SensorにEEPROMデータ書き込み失敗(Hardware問題あり) |
4 | Communication Error | 通信エラー |
5 | Alarm Error | いま現在値は1つ以上Alarm値に超えた |
E!COCKPIT Version
Implemenation
Wiring
以下は配線図です。
Configration
これからE!COCKPITからCANOPEN Networkを構築しますね。
Import EDS
まずはeds file をimport します。Product Catalog をクリックします。
一番下にあるImport Deviceボタンをクリックします。
メーカからのeds file を選択しopen だimport します。
Scan Your CPU
次はCPUをScanします。NETWORK>Settingsをクリックします。
Settingsがあってるかを確認してください。
NETWORK>ScanクリックしCPUを検索します。
しばらく待ちます…
Apply allでCPUをProjectに吸い出します。
Insert the CANBus Sensor
次はCANBus のNodeを追加します。
右側にあるProduct Catalogに”CAN”を検索し>先にImportしたTSL-CAN-03 Nodeを選び>Network Viewに引っ張ります。
しばらく待ちます。
TSL-CAN-03 のNodeが追加されました。
Connect to the CPU
TSL-CAN-03 NodeとWago PLC 750-8215を繋がります。
このような操作です。
これでCANOpen Networkが構築しました。
Node Setup
Nodeを設定します。右クリック>Settingsします。
右にSettings画面が表示されます。
隣にあるCAN ICONをクリックします。
Node ID
まずはNode IDを実機のデバイスに合わせて設定ください。
Configurator
Configuratorボタンをクリックするとさらに詳しい設定ができます。
たとえばGuard TimeやVendor ID Checkするかなどの細かい設定ができます。
Mapping
基本設定が終わったところで次はNodeをダブルクリックしMapping設定を行います。
Mapping画面で該当するNodeのSDOsの追加やPDO Mappingの機能があります。
CANopen I/O MappingのTabを開くとUser Programの変数と紐付けできます。
Create Variable
では、User ProgramにPDOとMappingする変数を作成します。
まずはDUTを作成します。このStepはMustではないが、単なる自分のやり方です。右クリックし>DUTをクリックします。
DUTの名前を入力>Addします。
中に先程のMappingに合わせてPV/FV/Alarm/Errorの変数を定義します。
Program
次はUser Programを作ります。
同じDUTの変数を2つ定義します。
そしてUser Program内で転送するプログラムを作成します。
Link it
最後はMappingのところに紐付けます。
Master Setup
Mappingも終わったところで次はMaster側を設定します。CPUをダブルクリックします。
Basic
CAN ICONをクリックし、Baud rateを実機に合わせてください。
Interface Settings
Interface Settingsボタンでさらに詳しい設定ができます。
たとえばCANOpen Manager自動起動するか、Node-IDかなどの細かい設定あります。
Download
設定が全部終わったらNETWORK>ConnectでProjectをCPUにDownloadします。
もし実機が他のプロジェクトであれば、以下のPop-upが表示されます。OKで上書きしてください。
しばらく待ちます…
User nameとPasswordを入力しOKします。
YESします。
実機のCPUにあるCAN LEDが緑になります。
Run it
最後はRUNボタンでCPUをRUN状態に切り替えます。
Result
変数をMonitorするとPV/FVがCAN OPEN Sesnorから現在値が返答されます。
これは自分の手で温度計を握ってるときPVとFVも上げてるとわかります。
PVはだいたい33.1くらいで33.1度ですね。