Project#Start up your ATV320_Part5_CANOPENxBeckhoff EL6751 Basic Control

今回の記事ではBeckhoffのEL6751を使用しCANOPEN Masterを立ち上げ、Schneider社のATV320とCAN通信します。よろしくおねがいします。

EL6751?

EL6751はCANOPENのMasterもしくはSlave機能を揃えるTerminalで、EtherCATのネットワーク内にCANOPENデバイスと通信できます。 さらに、一般的なCANメッセージの送信・受信もアプリケーションプログラム上でしなくても済みます。

その便利なEL6751は以下の基本機能が揃えています:

  • すべてのCANopen PDO通信タイプに対応
    • event-controlled
    • time-controlled (event timer),
    • synchronous.
  • PCコントローラーのタスクサイクルと同期
  • 起動時、実行時のパラメータ通信(SDO)対応
  • Emergency message handling・guarding ・heartbeat対応
  • パラメーターと診断のインターフェースあり
  • オンラインバスの負荷表示

Layout

こちらはEL6751のLayoutやLEDの意味を説明します。

Wiring

こちらは配線です。Pin2はCAN-、Pin7はCAN+で、Pin3とPin6は内部でつながってるCAN Groundです。

CAN OPEN

CANopenは、ネットワークデバイス間の通信をobject dictionaries とobjectsで管理します。ネットワークデバイスは、process data objects(PDO)やservice data objects (SDO)を使って、他のデバイスのobject dictionaryからオブジェクトデータを要求したり、変更した値を書き戻すことができます。

PDOs (process data objects) 

プロセスデータをリアルタイムに伝送します。

SDOs (service data object) 

object dictionaryの読み書きができます。 

SYNC object (synchronization object) 

ネットワーク機器の同期をとります。

EMCY object (emergency object), 

デバイスやその周辺機器の信号エラーです。

NMT services 

ネットワーク制御する

NMT node guarding

ネットワークデバイスを監視します。

NMT heartbeat 

ネットワークデバイスを監視します。

Reference Link

Schneider#SoMove Installation
Project#Start up your ATV320_Part1_ Using M221ME16T CPU with DI1/DI2/AI1
Project#Start up your ATV320_Part2_Using M221ME16T CPU with Modbus IO Scanner
Project#Start up your ATV320_Part3_Using ctrlx to built a HMI
Project#Start up your ATV320_Part4_STO機能を設定する

CIA402

CIA402は、CANopenネットワーク上で動作するドライブ制御機能のプロファイルであり、Electrically Driven Machinery、EDMの制御を行うための標準規格です。このプロファイルは、CANopenオブジェクト辞書を定義し、制御命令やフィードバック情報の交換に必要なCANメッセージを規定しています。CIA402は、モーションコントロール用途に特化しており、モータの位置、速度、加速度、トルク制御などが可能です。

CIA402に準拠した制御機器は、同一のプロトコルであるCANopenを介して相互に通信できるため、異なるメーカーの制御機器を組み合わせても問題なく動作するという利点があります。また、規格に基づく設計により、制御機器の互換性が確保されるため、より柔軟な設計やシステムの拡張性が実現できます。

ATV320 Indexの主なパラメータは以下になります。()は該当するCANOPENアドレスで、例えばControlwordは6040、StatusWordは6041です。下図は、ドライブ操作のための制御図です:

以下速度制御モードでの簡略図です。

Index 6041 Statusword

  • Bit 0 : Ready to switch on、1=電源供待ち
  • Bit 1 : Switched on、1=Ready
  • Bit 2 : Operation enabled、1=Running
  • Bit 3 : Fault、1=エラー検知された
  • Bit 4 : Voltage enabled、1=電源供給中
  • Bit 5 : Quick Stop、0=Quick Stopが有効中
  • Bit 6 : Switch on disabled、1=電源供給してない
  • Bit 7 : Warning、1=Warningあり
  • Bit 8 : reserved
  • Bit 9 : Remote、デバイスがFieldbusから制御してるか
  • Bit 10:Target Reached、1=速度指令値に到達した
  • Bit 11 : Internal limit active
  • Bit 12-13 : reserved
  • Bit 14 : メーカー指定STOP Flag
  • Bit 15 : メーカー指定Direction Flag

Operation State

ドライブの動作状態は、Control Wordが送信されるか、エラー発生などイベントが発生するかにより変化します。現在ドライブの状態は、Status Wordの値で特定することができます。

1 – Not ready to switch on

初期化が開始されます。通信ネットワークからに隠されてる過渡的な状態です。

2 – Switch on disabled

パワーステージがスイッチオンできない状態です。そのときはドライブがロックされ、モーターに電源が供給されいません。もし独立した制御ステージの場合、電源を供給する必要はありませんが、主電源コンタクター付きの独立した制御ステージの場合、そのコンセントは閉じていません。調整や設定のパラメータの変更が可能です。

3 – Ready to switch on

ワーステージはスイッチオンの準備ができており、パワーステージの主電源を待っている状態です。独立した制御ステージの場合、電源ステージを供給する必要はありませんが、そのあとにあるシステムは状態 4 – Switched onに移行するために電源ステージを供給することをまっています。

主電源コンタクタ付きの独立した制御ステージの場合、コンタクタは閉じていません。ドライブはロックされ、モーターに電力は供給されません。調整や設定のパラメータの変更が可能です。

4 – Switched on

​​パワーステージはスイッチオンになり、独立した制御ステージの場合、パワーステージに電源が供給されている必要があります。主電源コンタクター付きの独立した制御ステージの場合、コンタクターは閉じられます。そのときはドライブがロックされ、モーターに電源が供給されない。ドライブのパワーステージは動作可能な状態ですが、出力に電圧はまだ出力されていません。

調整や設定のパラメータの変更が可能で、変更された場合はState 2 – Switch on disabledに戻ります。

.

5 – Operation enabled

パワーステージが有効になっていて、ドライブはランニング状態になります。もし独立した制御ステージの場合は、電源ステージを供給する必要があります。主電源コンタクター付きの独立した制御ステージの場合、コンタクターは閉じられます。

そのときドライブのロックが解除され、モーターに電源が供給されます。

ドライブ機能が起動し、モーター端子に電圧が供給されます。

reference valueがゼロ、または停止コマンドの場合は、モータに電力が供給されず、トルクが発生しません。 [Auto tuning] を実行するには、ドライブが状態5 – 動作可能になっている必要があります。

調整パラメータの変更は可能ですが、設定パラメータの変更ができません。

6 – Quick stop active

ドライブは急速停止を行い、動作状態を6-Quick stop activeにロックされたままです。モーターを再起動する前に、動作状態2-switch on disabledに移行する必要があります。

ドライブが急速停止中、ドライブはロック解除されますが、モーターに電源が供給されます。設定パラメータを変更することはできません。

7 – Fault reaction

エラーが検知されてから8-Faultに移行するときになります。

8 – Fault

パワーステージが無効になって、ドライブがロックされ、モーターに電源が供給されない状態になります。

Index 6040 Controlword

  • Bit 0 : Switch on、Main Contactor制御する
  • Bit 1 : Enable voltage、AC 電源供給を承認する
  • Bit 2 : Quick Stop active、0=Quick Stop 使用中
  • Bit 3 : Enable operation、1=Runコマンド
  • Bit 4 – 6 : 予備
  • Bit 7 : Fault reset、立ち上げでFaultをリセット
  • Bit 8:Halt
  • Bit 9-10 : 予備
  • Bit11-15:メーカー指定

Command Example

  • ShutDown
    • 3-Ready to Switch Onに移行する
    • コマンド例:0006HEX
  • SwitchOn
    • 4-Switched Onに移行する
    • コマンド例:0007HEX
  • Enable Operation
    • 5-Operation enabledに移行する
    • コマンド例:000FHEX
  • Disable Operation
    • 4-Switched on に移行する
    • コマンド例:0007HEX
  • Disable voltage
    • 2-Switch on disabledに移行する
    • コマンド例:0000HEX
  • Quick Stop
    • 6-Quick Stop Activeや2-Switch on disabledに移行する
    • コマンド例:0002HEX
  • Fault Reset
    • 2-Switch on disabledに移行する
    • コマンド例:0080HEX

State Digarm

CIA402のState Digarmです。

How to read it?

Implementation

Download EDS File

下記のLinkからATV320のEDS FileをDownloadしてください。

https://www.se.com/in/en/download/document/ATV320_CANopen_EDS_V2.9/

Configuration

Wiring

こちらはEL6751とATV320の配線です。

ATV320 Side

Process Data

最初のPDOは、デフォルトでCiA402のVelocity mode のPDO1になります。これは非同期で、2つのデータを含みます:出力のControl Word(6040 hex, CMD)と目標速度(6042 hex, LFRD)、入力のStatus Word(6041 hex, ETA)と現在速度値(6044 hex, RFRD)になります。

2番目のPDOセット(PDO2)はデフォルトで無効化されており、なおかつ設定可能です(1から4までのWord)。これは、調整用および追加の制御・監視機能用に使用いただけます。

第3PDOセット(PDO3)はデフォルトで非アクティブ化されており、設定や構成はできません:RPDO3(受信)、通信スキャナーの4つの出力ワードを含む(NC1〜NC4)、

TPDO3(送信)、通信スキャナーの4つの入力ワードを含む(NM1〜NM4)になります。

Parameters

Communicaions

まずはCan Openの通信設定を行います。下図のようにNST>ConF>FULL>CON>Cn0 のMenuに移動しましょう。

Address

ATV320のCANOPEN Slave アドレスを設定します。Adc0を開き>今回は2にします。つまりこのATV320のCAN OPEN Slaveアドレスは2です。

こちらAdのc0パラメータはModbusアドレス6051に該当します。

Baudrate

次はATV320のCAN OPEN通信速度を設定します。bdc0 Menuを開きます。今回は125に設定する。つまり通信速度は125kです。

こちらのbdc0パラメータはModbusアドレス6053に該当します。

Error Code

こちらのMenuは読み専用ですが、ErC0 Menuを開くと現在ATV320のエラーコードを確認できます。いまは0で、つまりエラーなしです。

こちらのErC0パラメータはModbusアドレス6056に該当します。

こちらはエラーCodeの一覧です。そしてCAN通信エラーが発生した場合、CoFは表示されます。

CodeDescription
0CANOPEN通信にエラーなし
1CAN Overun/Bus OFF
2Node Guarding error
3CAN Overrun
4Heartbeat エラー
5NMT states Chart error

Setpoint Reference

次はATV320のSetpoin参照値をCANOPENネットワークから参照するように変更します。下図のようにNST>ConF>FULL>CTL>Fr1 のMenuに移動し、Fr1の値をCAnに変更しましょう。

Scanner Inputs

8 BytesのCAN 入力データのMappingを確認や変更します。下図のようにNST>ConF>ICS-に移動しましょう。

rNA1

rNA1Menuを開き、現在値はETAです。ETAはCIA402 のState Registerに該当します。

rNA2

rNA2Menuを開き、現在値はrFrdです。ETAはCIA402 のState Registerに該当します。

rFrdはINT (Signed16)、現在のATV320の速度出力値になります。(-32767 rpm … 32767 rpm)

Scanner Outputs

8 BytesのCAN 出力データのMappingを確認や変更します。下図のようにNST>ConF>OCS-に移動しましょう。

nCA1

nCA1Menuを開き、現在値はCMDです。ETAはCIA402 のコマンドレジスタに該当します。

nCA2

nCA2Menuを開き、現在値LFrDは速度セットポイントです。LFrDはINT (Signed16)、ATV320の速度指定値になります。(-32767 rpm … 32767 rpm)

TwinCAT Side

Install the EDS File

先程のEDS Fileを以下のPathに移動します。

C:\TwinCAT\3.1\Config\Io\CANopen

Add EtherCAT Master

I/O>Devices>Add New Itemで新しいデバイスを追加します。

EtherCAT>EtherCAT Masterを選び>Okします。

いま接続してるEtherCAT NetworkのLAN CARDを選び>Okします。

Add EK1101

次はEK1101を追加します。Device1>右クリック>Add New Itemします。

EK1101を選び>Okします。

よし、EK1101が追加されました。

Add EL6751

EL6751 CAN Master Terminalを追加します。Term1(EK1101)を右クリック>Add New Itemします。

EK6751を選び>OKで進みます。

Done!

Add CanOpen Master

DeviceからCanopen Masterを追加します。Devices>右クリック>Add New Itemします。

CANopen Master EL6751,EtherCATを選び>Okで進みます。

EL6751が追加され、EtherCATのFieldが自動的にTerm 2(EL6751)になります。

もし複数のEL6751 Terminalがある場合、SearchボタンでリングさせたいTerminalを選択できます。

Baudrate

Baudrateを実際のCAN Networkに合わせて設定してください。

Add ATV320

次はSchneider社のATV320を追加します。

Schneider Electric>ATV320_V3.5..を選び>Okで進みます。

ATV320のCAN Slaveが追加されました。

Configuration

ATV320が追加されたら自動的にCAN Node設定画面が表示されます。

Address

CAN NodeのIDをATV320の設定に合わせましょう。

Add PLC

PLC>右クリック>Add New Itemします。

Standard PLC Project>Addで新しいPLCプロジェクトを追加します。

Program

次はプログラムを作成します。

Interfaces

ITF_ATV320_Basic

こちらはATV320を制御するFunction BlockのInterfaceです。

DUT

次は構造体を定義します。

DUT_ATV320_NC1_CMD

ATV320 Control wordの構造体になります。

TYPE DUT_ATV320_NC1_CMD :
STRUCT
b00SwitchON :BIT;
b01EnableVoltage :BIT;
b02QuickStop :BIT;
b03EnableOperation :BIT;
b04,b05,b06 :BIT; //Reserved
b07FaultReset :BIT;
b08Halt :BIT;
b09,b10 :BIT; //Reserved
b11,b12,b13,b14,b15 :BIT; //Manufacturer specific assignable
END_STRUCT
END_TYPE
DUT_ATV320_NW1_ETA

ATV320 Status wordの構造体になります。

TYPE DUT_ATV320_NW1_ETA :
STRUCT
b00Ready2SwitchON :BIT;
b01SwitchON :BIT;
b02OperationEnabled :BIT;
b03Fault :BIT;
b04VoltageEnabled :BIT;
b05QuickStopped :BIT;
b06SwitchONDisabled :BIT;
b07Warning :BIT;
b08 :BIT;
b09Remote :BIT;
b10TargetReached :BIT;
b11InternalLimitActive :BIT;
b12,b13 :BIT;
b14StopKeyFromManufacturer :BIT;
b15DriectionFromManufacturer  :BIT;

END_STRUCT
END_TYPE
e_ATV320_OperationState

ATV320の状態を表す構造体です。

{attribute ‘qualified_only’}
{attribute ‘strict’}
TYPE e_ATV320_OperationState :
(
None :=0
,NoReady2SwitchOn :=1
,Switched2Disabled :=2
,Ready2SwitchOn :=3
,SwitchedOn :=4
,OperationEnabled :=5
,QuickStoppedActivate :=6
,FauleReactionActivate :=7
,Fault :=8
);
END_TYPE
u_ATV320_NC1_CMD

UNIONタイプでControl wordとUINTを同じMemory offsetになるように定義します。

TYPE u_ATV320_NC1_CMD :
UNION
raw :UINT;
CMD :DUT_ATV320_NC1_CMD;
END_UNION
END_TYPE
u_ATV320_NW1_ETA

UNIONタイプでStatus wordとUINTを同じMemory offsetになるように定義します。

TYPE u_ATV320_NW1_ETA :
UNION
raw :UINT;
ETA :DUT_ATV320_NW1_ETA;
END_UNION
END_TYPE

Function Block

FB_ATV320_Basic

次は基本制御のFunction Blockを作成しましょう。

FUNCTION_BLOCK PUBLIC FB_ATV320_Basic IMPLEMENTS ITF_ATV320_Basic
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
_OperationState :e_ATV320_OperationState;
_MaxHz :REAL:=50.0;
_MaxRPM :REAL:=1500.0;
END_VAR

//Process IO
VAR
//INPUTS
NW1 AT%I* :u_ATV320_NW1_ETA;
NW2 AT%I* :INT;
//OUTPUTs            NC1 AT%Q* :u_ATV320_NC1_CMD;
NC2 AT%Q* :INT;
END_VAR

VAR CONSTANT
_c_ETAMask :WORD:=16#006F;
END_VAR
METH_CmdDisableOperation

DisableOperationコマンドを発行するためb03EnableOperationをFalseします。

METHOD METH_CmdDisableOperation : BOOL
VAR_INPUT
iTrigger : BOOL;
END_VAR


METH_CmdDisableOperation:=FALSE;
IF iTrigger THEN
NC1.CMD.b03EnableOperation:=FALSE;
METH_CmdDisableOperation:= TRUE;
NC2:=0;
END_IF
METH_CmdDisableVoltage

DisableVoltageコマンドを発行するためControl wordを0にリセットし、なおかつ速度命令値を0に置き換えます。

METHOD METH_CmdDisableVoltage : BOOL
VAR_INPUT
iTrigger : BOOL;
END_VAR

METH_CmdDisableVoltage:=FALSE;
IF iTrigger THEN
NC1.raw:=16#0;
METH_CmdDisableVoltage:=TRUE;
NC2:=0;
;
END_IF
METH_CmdEnableOperation

EnableOperationコマンドを発行するためb03EnableOperationをTrueします。

METHOD METH_CmdEnableOperation : BOOL
VAR_INPUT
iTrigger : BOOL;
END_VAR

NC1.CMD.b03EnableOperation:=iTrigger
AND (Prop_OperationState = e_ATV320_OperationState.SwitchedOn
OR Prop_OperationState = e_ATV320_OperationState.OperationEnabled);
;
METH_CmdFaultReset

FaultResetコマンドを発行するためb07FaultResetをTrueします。

METHOD METH_CmdFaultReset : BOOL
VAR_INPUT
iTrigger : BOOL;
END_VAR

METH_CmdFaultReset:=FALSE;
NC1.CMD.b07FaultReset:= Prop_OperationState = e_ATV320_OperationState.Fault AND iTrigger;
IF NC1.CMD.b07FaultReset THEN
METH_CmdFaultReset:=TRUE;
NC2:=0;
END_IF
METH_CmdQuickStop

QuickStopコマンドを発行するためControl wordを2にリセットし、なおかつ速度命令値を0に置き換えます。

METHOD METH_CmdQuickStop : BOOL
VAR_INPUT
iTrigger : BOOL;
END_VAR

IF iTrigger THEN
NC1.raw:=16#02;
NC2:=0;
;
END_IF

METH_CmdDisableVoltage(Prop_OperationState = e_ATV320_OperationState.QuickStoppedActivate);

METH_CmdQuickStop:=Prop_OperationState = e_ATV320_OperationState.Switched2Disabled;
METH_CmdShutDown

ShutDownコマンドを発行するためControl wordを6にリセットし、なおかつ速度命令値を0に置き換えます。

METHOD METH_CmdShutDown : BOOL
VAR_INPUT
iTrigger : BOOL;
END_VAR

METH_CmdShutDown:=FALSE;
IF iTrigger THEN
NC1.raw:=16#06;
METH_CmdShutDown:=TRUE;
NC2:=0;
END_IF
METH_DriveRun

速度命令値をiSetPointに上書きします。

METHOD METH_DriveRun : BOOL
VAR_INPUT
iTrigger : BOOL;
iSetPoint : INT;
END_VAR


IF iTrigger AND Prop_OperationState = e_ATV320_OperationState.OperationEnabled THEN
NC2:= iSetPoint;
END_IF
METH_Hz2RPM

HZの設定値をRPMに変換します。

METHOD METH_Hz2RPM : INT
VAR_INPUT
iData : REAL;
END_VAR

METH_Hz2RPM:=
REAL_TO_INT(
(iData/_MaxHz)*_MaxRPM);
METH_RPM2Hz

PRMの現在値をHZに変換します。

METHOD METH_RPM2Hz : REAL
VAR_INPUT
iData : INT;
END_VAR

METH_RPM2Hz:=

INT_TO_REAL(iData)/_MaxRPM*_MaxHz
METH_SwitchOn

こちらのMethodはb01EnableVoltage、b02QuickStop、b00SwitchON、b03EnableOperationの順番にTrueします。ATV320状態がReady2SwitchOnからOperationEnabledまでに移行し、Stateの移行には1sのDelayがあります。1s以上経っても状態を移行できなければStep=999になり、b01EnableVoltage、b02QuickStop、b00SwitchON、b03EnableOperationをリセットします。

METHOD METH_SwitchOn : BOOL
VAR_INPUT
iTrigger : BOOL;
END_VAR
VAR_INST
R_TRIG :R_TRIG;
TON :TON;
State :e_ATV320_OperationState;
Step :INT;
END_VAR



TON.PT:=T#1S;
METH_SwitchOn:=FALSE;

R_TRIG(CLK:=iTrigger);

IF R_TRIG.Q THEN
Step:=5;
END_IF


CASE Step OF

5:
NC1.CMD.b00SwitchON:=FALSE;
NC1.CMD.b01EnableVoltage:=FALSE;
NC1.CMD.b02QuickStop:=FALSE;
TON(IN:=FALSE);
Step:=10;

10:
NC1.CMD.b01EnableVoltage:=TRUE;
NC1.CMD.b02QuickStop:=TRUE;
Step:=15;
15:
TON(
IN:=NOT Prop_OperationState = e_ATV320_OperationState.Ready2SwitchOn
);
IF TON.Q THEN
Step:=999;
END_IF
IF Prop_OperationState = e_ATV320_OperationState.Ready2SwitchOn THEN
TON(IN:=FALSE);
Step:=20;
END_IF
20:
NC1.CMD.b00SwitchON:=TRUE;
Step:=25;
25:
NC1.CMD.b00SwitchON:=TRUE;
TON(
IN:=NOT Prop_OperationState = e_ATV320_OperationState.SwitchedOn
);
IF TON.Q THEN
Step:=999;
END_IF
IF Prop_OperationState = e_ATV320_OperationState.SwitchedOn THEN
Step:=30;
TON(IN:=FALSE);
END_IF
30:
NC1.CMD.b03EnableOperation:=TRUE;
Step:=40;
40:
NC1.CMD.b03EnableOperation:=TRUE;
TON(
IN:=NOT Prop_OperationState = e_ATV320_OperationState.OperationEnabled
);
IF TON.Q THEN
Step:=999;
END_IF
IF Prop_OperationState = e_ATV320_OperationState.OperationEnabled THEN
Step:=50;
TON(IN:=FALSE);
END_IF
50:
METH_SwitchOn:=TRUE;

999:
NC1.CMD.b00SwitchON:=FALSE;
NC1.CMD.b01EnableVoltage:=FALSE;
NC1.CMD.b02QuickStop:=FALSE;
NC1.CMD.b03EnableOperation:=FALSE;
Step:=0;

END_CASE
PROPERTY Prop_MaxHz : REAL GET

現在のMaxHz設定を取得します。

Prop_MaxHz:=_MaxHz;
PROPERTY Prop_MaxHz : REAL SET

現在のMaxHz設定を設定します。

_MaxHz:=Prop_MaxHz;
PROPERTY Prop_MaxRPM : REAL GET

現在のMaxRPM設定を取得します。

Prop_MaxRPM:=_MaxRPM;
PROPERTY Prop_MaxRPM : REAL SET

現在のMaxPRM設定を設定します。

_MaxRPM:=Prop_MaxRPM;
PROPERTY Prop_NW1 : UINT GET

現在の速度(RPM)を取得します。

Prop_NW1:=NW1.raw;
PROPERTY Prop_OperationState : e_ATV320_OperationState GET

Status wordから現在ATV320の状態をEncodeします。

VAR
StateAfterMasked :UINT;
END_VAR


StateAfterMasked:=Prop_NW1 AND _c_ETAMask;

//Init
Prop_OperationState:=e_ATV320_OperationState.NoReady2SwitchOn;

CASE StateAfterMasked OF

16#0040:
  Prop_OperationState:=e_ATV320_OperationState.Switched2Disabled;

16#0021:
  Prop_OperationState:=e_ATV320_OperationState.Ready2SwitchOn;

16#0023:
  Prop_OperationState:=e_ATV320_OperationState.SwitchedOn;

16#0027:
     Prop_OperationState:=e_ATV320_OperationState.OperationEnabled;

16#0007: Prop_OperationState:=e_ATV320_OperationState.QuickStoppedActivate;

16#002F: Prop_OperationState:=e_ATV320_OperationState.FauleReactionActivate;

16#0008,16#0028:
Prop_OperationState:=e_ATV320_OperationState.Fault;


END_CASE
FB_ATV320_Basic_withHMI

こちらのFunction BlockはFB_ATV320_Basicの拡張になり、HMIの機能が追加されます。

FUNCTION_BLOCK FB_ATV320_Basic_withHMI EXTENDS FB_ATV320_Basic
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
_HMI :DUT_ATV320_Basic_HMI;
END_VAR
METH_HMIUpdate

こちらのMethodはHMIのコマンドから各MethodをTriggerし、ATV320の状態をHMIに表示します。

METHOD PUBLIC METH_HMIUpdate : BOOL

METH_CmdFaultReset(iTrigger:=_HMI.PB.bReset);
METH_SwitchOn(iTrigger:=_HMI.PB.bSwitchON);
METH_DriveRun(
iTrigger:=Prop_OperationState = e_ATV320_OperationState.OperationEnabled
,iSetPoint:=_HMI.PB.iSetPoint
);
METH_CmdDisableOperation(iTrigger:=_HMI.PB.bDisableOperation);
METH_CmdDisableVoltage(iTrigger:=_HMI.PB.bDisableVoltage);
METH_CmdQuickStop(iTrigger:=_HMI.PB.bQuickStop);
METH_CmdShutDown(iTrigger:=_HMI.PB.bShutdown);

_HMI.PL.rCurrentHz:=METH_RPM2Hz(iData:=NW2);
_HMI.PL.rCurrentRPM:=NW2;
_HMI.PL.State:=Prop_OperationState;

MAIN

最後はFB_ATV320_Basic_withHMI Function BlockのInstanceを作成、METH_HMIUpdate() Methodを呼び出せばOKです。

PROGRAM MAIN
VAR
ATV320_1 :FB_ATV320_Basic_withHMI;
END_VAR


ATV320_1.Prop_MaxHz:=50.0;
ATV320_1.Prop_MaxRPM:=1500.0;
ATV320_1.METH_HMIUpdate();

HMI

次はTF1800を使って簡単なHMIを用意します。

Result

最初はState=Switched2Disabledですね。

Switch ON Buttonをクリックすると、State=OperationEnabledに移行します。

Setpointを変更し速度命令値をATV320に発行しましょう。現在HZ値と現在RPMも表示されます。

最後はDisable VoltageボタンでATV320をSwitched2Disabledに移行しましょう。

Download

Githubから記事のプロジェクトをDownloadしてください。

https://github.com/soup01Threes/TwinCAT3/blob/main/Project_EL6751_ATV320_CANOPEN_Part1.tnzip

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

シェアする

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

フォローする