Wago#750-8215 And E!COCKIT As a CANOPEN Master

今回の記事では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だとイメージしたらこうなります。

IndexSub-IndexData TypeDescription
1000h0UNSIGNED32Device Type
1001h0UNSIGNED8Error Regisiter
1008h0UNSIGNED8=4、SubIndexの数と同じになります。
1008h1UNSIGNED32Vendor ID
1008h2UNSIGNED32Device Code
1008h3UNSIGNED32Revision Number
1008h4UNSIGNED32Serial 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データ)になります。

まとめになりますと、

TPDORPDO
Transit PDOReceive PDO
TPDO 1-512RPDO 1-512
SubIndex0=MappedされたEntries数SubIndex0=MappedされたEntries数
SubIndex1-n=ItemのIndexSubIndex1-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図視点です。

PinDescription
1プログラムPinで、使用しないでください
2電源24v
3GND/CAN_GND
4CAN_H
5CAN_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

BitErrorDescription
0Generic ErrorHardware問題
1EEPROM ErrorCAN SensorにEEPROMデータ書き込み失敗(Hardware問題あり)
4Communication Error通信エラー
5Alarm 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度ですね。

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする