この記事ではWago CANOPEN Fiedbus CouplerとシュナイダーのTM241ECE24U CPUを使ってCANOPENネットワークを構築します。シュナイダーはMasterでCouplerはSlaveになります。よろしくお願いします!
Thanks!
この記事が出来上がるのはマナ・デザインワークスさまとワゴジャパン株式会社さまから機材を貸してくださったおかけです。誠にありがとうございます。
ワゴジャパン株式会社
CANOPEN Coupler750-347はワゴジャパン株式会社さまが貸してくださったものです。WAGO は 1951 年に設立され、いままで端子台の技術で世界中の産業にずっと貢献してるドイツ企業、PUSH WIREやCAGE CLAMPの技術などで現場を支えてきました。他にWAGOさまにもPLC LINEUPがあり、オープン性と柔軟性に重点を置いた自動化ソリューションを提供しています。
ワゴジャパン株式会社は 東京都江東区に本社があります。
Mana Design Works
今回の記事は内容は自体はシュナイダーですが、Mana Design Worksは大阪に本社あるSiemensの正式なソリューション パートナーで、Siemens製のCPU・HMI・Drive・Motion Controller・SCADAから国産メーカまで常に最適な提案できます。
750-347
こちらは今回使用する750-347 WagoのCanopen Couplerです。
Power Supply
電源は24v DCで、赤はプラス、青いはマイナスです。
Layout
こちらはWago 750-347実際のLayoutです。
LED
750-354 CANOPEN Couplerでは、モジュール状態を示すLEDがついています。
LED | Color | Description |
STOP | 赤 | CouplerはいまSTOP状態です |
RUN | 緑 | CouplerはRUNしているかを示します |
TX OVERFL | 赤 | CAN 送信 Buffer Overflowしてます |
RX OVERFL | 赤 | CAN 受信 Buffer Overflowしています |
I/O | 緑・緑・オレンジ | I/O 信号の現在状態 |
Fieldbus Connector
こちらは750-347のFieldbus Connector配線です。
Pin | Signal | Description |
1 | N.C | Reserved |
2 | CAN_H | CAN_H Bus Line |
3 | Drain Shield | CAN shield(Optional) |
4 | CAN_L | CAN_L Bus Line |
5 | GUD | CAN Ground |
Address switch
Couplerにある赤DIPスイッチはNode-IDを設定することできます。
たとえば、1,2もONであれば、このCouplerのNode-IDは3になります。
Baud Rate Setting
このDIPスイッチもBaud Rateを設定できます。
まずDIPスイッチをすべてOFFしてる状態でCouplerに電源を入れ、CouplerをConfiguration modeに入れます。暫く待つと、4つのLEDがSTOP(Switch1)、RUN(Switch2)、TX Overflow(Switch3)とRX Overflow(Switch4)に現在のBaud Rateを表示します。そしてDIPスイッチを変更する子よりBaud rateを変更できます。最後にSwtich8をONにして設定を適用します。
Communication Object support
750-347では以下のCommunication Objects Supportします。
- 5 Tx-PDOs
Input Data - 5 Rx-PODs
Output Data - 2 Server SDOs
Node StateのConfigurationデータ - SYNC
- Network management Objects
Module Control Protocols
Error Control Protocols
Bootup Protocol
Memory Space
256WordsはFieldbus CouplerのメモリにMappingされています。
Enable Analog Input Data
CAN BusのOverflowを予防するため、PDOs経由でAnalog InputデータはDefault 無効になって、つまり0x6423 (Analog input global interrupt enable)はDefault値Falseが格納しています。もちろん Start Remote Node コマンドからNodeをPRE-OPERATION からOPERATIONALに切り替えることでき、そしてPDOs経由でAnalog Inputデータを受信できます。
CANopen
State Diagram
こちらはCANOPENのState 図です。
Init
fieldbus Couplerが電源を入れ直したら自動的にINITIALIZATION状態に遷移します。その状態ではモジュール自身の機能をテストします。Process ImageやObject Configurationが生成され、そしてINITIALIZATION中にエラーがなければFieldbus CouplerがPRE-OPERATIONAL状態に変わります。エラーが発生したら、Fieldbus CouplerがSTOPPED状態に遷移します。
PRE_Operational
PRE-OPERATIONALに変わったFieldbus Couplerでは。SDOsからデータを取得することはできますが、PDOsはできません。その状態ではConfiguration ToolsからCouplerをパラメーターやIDなどを変更でき、新しいConfiguration FileはFlash Memoryに保存されます。
CouplerからNMT Services Start_Remote_NodeをもらったらOPERATIONAL状態に切り替えます。
OPERATIONAL
OPERATIONALではSDOsとPDOsからの通信も可能ですが、Configurationを変更することができません(たとえばCOB-IDを変えたりとか)。
CouplerからNMT Services Enter_Pre_OperionalをもらったらPRE-OPERATIONALにまた遷移します。
STOPPED
STOPPED状態ではいまモジュールがFAULTであることを示しています。NMT service Stop_Remote_Nodeが受信してたかや内部エラー発生したらSTOPPEDになります。(例えばI/O モジュールが取り去れたら)
その状態のモジュールではSDOsやPDOsも通信できなくなり、NMT servicesやNode-Grouarding/Heartbeatのみになります。
Network Management Objects
NMT Masterは複数のProtocolを使用しNMT Slaveの状態を制御します。状態は以下のように指定されています。
- INITIALIZATION
- PRE-OPERATIONAL
- OPERATIONAL
- STOPPPED
一括ですべてNodeの状態変更・Node指定の状態変更も可能です。
Start Remote Node
そのServicesはNMT SlaveをOperationalに切り替えます。もしNode ID=0ならすべてのNodeをOPERATIONAL状態に変更します。
Stop Remote Node
このServicesはNMT SlaveをSTOPPED状態に切り替えます。もしNode ID=0ならすべてのNodeをSTOPPED状態に変更します。
Enter Pre-Operational
このServicesはNMT SlaveをPRE-OPERATIONAL状態に切り替えます。もしNode ID=0ならすべてのNodeをPRE-OPERATIONAL状態に変更します。
Reset Node
このServicesはNMT Slaveをリセットします。もしNode ID=0ならすべてのNodeを
リセットします。
TM241CEC24U
CAN Interface
こちらはTM241CEC24UのCANOPEN Terminal配線です。
Pin | Signal | Description |
1 | Not Used | Reserved |
2 | CAN_H | CAN_H Bus Line |
3 | CAN_SHLD | CAN shield(Optional) |
4 | CAN_L | CAN_L Bus Line |
5 | CAN_GUD | CAN Ground |
Transmission Rate
- 1000 kbit/s for bus length of 20 m for CANopen
- 800 kbit/s for bus length of 40 m for CANopen
- 500 kbit/s for bus length of 100 m for CANopen
- 250 kbit/s for bus length of 250 m for CANopen
- 125 kbit/s for bus length of 500 m for CANopen
- 50 kbit/s for bus length of 1000 m for CANopen
- 20 kbit/s for bus length of 2500 m for CANopen
Implementation
Download EDS File
WagoのHPから750-347 CANOPEN CouplerのDevice DescriptionをDownloadします。
https://www.wago.com/global/i-o-systems/fieldbus-coupler-canopen/p/750-347#downloads
このようなZIP FileがDownloadされました。
解凍しますと、750-347のFolderがありますね。このFolderに今回Tutorialに必要なFileが入っています。
Configuration
Install 750-347 CANOPEN Coupler
まずEcoStruxure Machine ExpertにEDS FileをImportします。
Tools>Device Repositoryをします。
Installボタンをクリックします。
先程WAGOのHPからDownloadしたEDS Fileを選び>Openします。
Done!
Add CanOPEN Master
CAN_1(Canopen…)右クリック>Add Deviceします。
CANOpen>CANopenManager¥>CANopen Performanceを選び>Add DevicesでCANOPEN Masterを追加します。
CANOpen Masterが追加されました。
Add 750-347
次はWagoの750-347 CANOpen Couplerを追加します。
CANOpen_Performanceを右クリック>Add Deviceします。
VendorをWagoで選択します。
750-347m_V19を選び>Add Deviceします。
750-347 CANOPEN Couplerが追加されました。
Add 750-1417
Slot1に750-1417 8チャンネル デジタル入力を追加します。
右クリック>Add Deviceします。
1417を検索し>75x-1417を選択>Add Deviceします。
Slot1が750-1417 8チャンネル デジタル入力、追加されました。
Add 750-1516
Slot2に750-1545 8チャンネル デジタル出力を追加します。
右クリック>Add Deviceします。
1516を検索し>75x-1516を選択>Add Deviceします。
Slot2が750-1516 8チャンネル デジタル出力、追加されました。
Add 750-471
Slot3に750-471 4チャンネル アナログ入力を追加します。
右クリック>Add Deviceします。
\
471を検索し>75x-471を選択>Add Deviceします。
Slot3が750-471 4チャンネル アナログ入力、追加されました。
Add 750-597
Slot4に750-597 8チャンネル アナログ出力を追加します。
右クリック>Add Deviceします。
597を検索し>75x-597を選択>Add Deviceします。
Slot4が750-597 8チャンネル アナログ出力、追加されました。
Configure 750-347
次は750-347 CANOPEN Couplerを設定します。
Node ID
General TabでNode-IDを設定します。今回のCANOPEN CouplerのIDは3です。
Enable Analog
次はEnable AnalogにTrueを書き込みます。SDOs Tab開き>Add SDOをクリックします。
16#6423:16#00を選び、Okします。
Index16#6423:SubIndex16#00のSDOが追加されました。
ValueのFieldをクリックします。
16#1を変更すればOKです。
Program
次はプログラムを作成します。
fc_analog2Voltage
まずアナログ入力モジュールの入力値を電圧に変換するFunctionを作成します。
Application>Add Object>POUします。
Functionの名前を入力>Return TypeをRealに設定し>Addします。
Functionが追加されました。
中に簡単なプログラムを追加します。
FUNCTION fc_analog2Voltage : REALVAR_INPUT iValue :WORD;END_VARVAREND_VAR VAR CONSTANT cMaxRawValue :REAL:=32767.0; cMaxScaling :REAL:=10.0; cMinScaling :REAL:=0.0;END_VAR fc_analog2Voltage:= (TO_REAL(iValue)/cMaxRawValue) *cMaxScaling; |
fc_Setpoint2Analog
次はSetpointをアナログ出力モジュール値に変換するFunctionを追加します。
Functionの名前を入力>Return TypeをRealに設定し>Addします。
中に簡単なプログラムを追加します。
FUNCTION fc_Setpoint2Analog : WORD VAR_INPUT iSetPoint :REAL; END_VAR VAR cMaxRawValue :REAL:=32767.0; cMaxScaling :REAL:=10.0; END_VAR IF iSetPoint >=0.0 AND iSetPoint <=cMaxScaling THEN fc_Setpoint2Analog:= TO_WORD( (iSetPoint/cMaxScaling)*cMaxRawValue); ELSE fc_Setpoint2Analog:=0; END_IF |
GVL_750_354
次はGlobal Variable Listを作成します。
GVLの名前を入れ、Okします。
GVLが追加されました。
GVL内に各Slotに紐付けの変数を追加します。
Link Variable to 750-1516
GVLの変数をSlot1 750-1516と紐つけます。
Variableの…ボタンをクリックし、GVLのSlot1_750_1516を選び>Okします。
Link Variable to 750-1417
GVLの変数をSlot2 750-1417と紐つけます。
Variableの…ボタンをクリックし、GVLのSlot2_750_1417を選び>Okします。
これでOKです。
Link Variable to 750-471
GVLの変数をSlot3 750-471と紐つけます。
Variableの…ボタンをクリックし、GVLのSlot3_750_471を選び>Okします。
Link Variable to 750-597
GVLの変数をSlot4 750-597と紐つけます。
Variableの…ボタンをクリックし、GVLのSlot4_750_597を選び>Okします。
MAIN
最後はCouplerの出力を交代ON/OFFし、あとはアナログ入力・出力のデータをCheckするだけです!
PROGRAM SR_Main VAR Channel1_Value:REAL; Setpoint1:REAL; myTon:TON; istep:INT; END_VAR Channel1_Value:=fc_analog2Voltage(iValue:=GVL_750_354.Slot3_750_471[0]); GVL_750_354.Slot4_750_597[4]:=fc_Setpoint2Analog(iSetPoint:=Setpoint1); CASE istep OF 0: myTon(IN:=TRUE ,pt:=T#0.1S ); GVL_750_354.Slot1_750_1516:=16#0F; IF myTon.Q THEN GVL_750_354.Slot1_750_1516:=0; myTon(IN:=FALSE); istep:=10; END_IF 10: myTon(IN:=TRUE ,pt:=T#0.1S ); GVL_750_354.Slot1_750_1516:=16#F0; IF myTon.Q THEN GVL_750_354.Slot1_750_1516:=0; myTon(IN:=FALSE); istep:=0; END_IF END_CASE |