Project#Beckhoff TwinCAT3 x Siemens S210 Servo Drvie_Part5

前回はIdevices機能を使用しS71212FとBeckhoff IPC C6920とProfinetからデータを交換しました。今回は少しメイン制御から離れ、Beckhoff IPC のデータをWAGO PFC Controller 720-8215 Modbus TCP経由でWAGO CloudにUploadしようと思っています。

どうぞよろしくお願いします。

Thanks!

この記事が出来上がるのはベッコフ日本法人ベッコフオートメーション株式会社さま・Mana Design worksさま・WAGOジャパンさまから機材を貸してくださったおかけです。誠にありがとうございます。

ベッコフ日本法人ベッコフオートメーション株式会社

IPC6920-005はベッコフ日本法人ベッコフオートメーション株式会社さまが貸してくださったものです。Beckhoff Automationは1980 年会社設立、PCベースの制御技術をベースにしたオープンオートメーションシステム導入の先頭に立つドイツ企業です。

ベッコフ日本法人ベッコフオートメーション株式会社は、2011年に横浜に本社、2017年に名古屋オフィスを設立しました。

こちらはベッコフ日本法人ベッコフオートメーション株式会社様のホームページです。

どうぞよろしくお願いします。

https://www.beckhoff.com/ja-jp/

Mana Design Works

Siemens SINAMICS S210はMana Design Worksさまが貸してくださったものです。

Mana Design Worksは大阪に本社あるSiemensの正式なソリューション パートナーで、Siemens製のCPU・HMI・Drive・Motion Controller・SCADAから国産メーカまで常に最適な提案ができます。

こちらはMana Design Works 様のホームページです。

どうぞよろしくお願いします。

https://mndw.jp/

ワゴジャパン株式会社

PFC Controller750-8215はワゴジャパン株式会社さまが貸してくださったものです。WAGO は 1951 年に設立され、いままで端子台の技術で世界中の産業にずっと貢献してるドイツ企業、PUSH WIREやCAGE CLAMPの技術などで現場を支えてきました。他にWAGOさまにもPLC LINEUPがあり、オープン性と柔軟性に重点を置いた自動化ソリューションを提供しています。

ワゴジャパン株式会社は 東京都江東区に本社があります。

https://www.wago.co.jp/

Video

English Version

Part4

Beckhoff.TwinCAT3 x Siemens S210 Servo Drive part4 – Idevices Configuration.EN

Part3

Beckhoff.TwinCAT3 x Siemens S210 Servo Drive part3 – PLCOPEN to Control the Drive in TwinCAT.EN

Part2

Beckhoff.TwinCAT3 x Siemens S210 Servo Drive part2 – Shared Devices,Profisafe.EN

Part1

Beckhoff.TwinCAT3 x Siemens S210 Servo Drive part1.EN

Japanese Version

Part4

Beckhoff.TwinCAT3 x Siemens S210 Servo Drive part4 – Idevices Configuration.JP

Part3

Beckhoff.TwinCAT3 x Siemens S210 Servo Drive part3 – PLCOPEN to Control the Drive in TwinCAT.JP

Part2

Beckhoff.TwinCAT3 x Siemens S210 Servo Drive part2 – Shared Devices,Profisafe.JP

Part1

Beckhoff.TwinCAT3 x Siemens S210 Servo Drive part1.JP

Reference Link

Japanese Version

Project#Beckhoff TwinCAT3 x Siemens S210 Servo Drvie_Part4
Project#Beckhoff TwinCAT3 x Siemens S210 Servo Drvie_Part3

Project#Beckhoff TwinCAT3 x Siemens S210 Servo Drvie_Part2 |

Project#Beckhoff TwinCAT3 x Siemens S210 Servo Drvie_Part1

English Version

Project#Beckhoff TwinCAT3 x Siemens S210 Servo Drvie_Part2 |

Project#Beckhoff TwinCAT3 x Siemens S210 Servo Drvie_Part1 |

Implementation-1

実際TwinCATと繋がる前にまえに、まずWago PFC ControllerのModbus TCP Slave機能を検証したほうが安心です。Modbus ScannerはCASの無料ソフトを使用します。

Reference Link

Wago#Let’s Start with WAGOCloud!
Wago#e!COCKPIT Installation
Wago#e!COCKPIT Your First Program!
Wago#Using E!COCKPIT to update the CPU Firmware

E!EOCKPIT Side

Interface configuration

前回のTutorialではPort1はIOT Portで、今回はPort2はデータを収集するPortだと設定します。

Define Variables

Program Structure Tabを開きます。

E!COCKPITはCodesysとほぼ同じの操作ができますので、Application>右クリック>Global Variable Listを作成します。

GVL名を入力し>Addします。

GVLが追加されました。

次はRegisterを定義します。

Hardware Configuration

Registerの変数を用意し終わったら次はHardware Configurationを構築します。

Add Modbus TCP

E!COCKPITをNetwork Viewに切り替え、Product CatalogからMODBUS TCPのFolderを開き、一番したまでScrollします。

Generic_Modbus_Masterがあり、そのままNetworkに追加します。

Modbus Masterが追加されました。

Connect it

次はPFC ControllerとGeneric_Modbus_Masterと繋がります。ETHERNET(ETHERNET)をクリックします。

Generic_Modbus_Masterにひっばります。

これでConnectionを確立しました。

Check Communication Relationship

念のために、Conenctionの灰色LINEをクリックし、Communication Relationのボタンをクリックします。

MasterがGeneric_Modbus_Masterで、SlaveはPFC Controllerだとわかります。

Configurator

次はPFC ControllerをクリックしModbus Slaveの設定を行います。

Configuratorボタンをクリックします。

Modbus Configuratorが表示されました。

Add Program variables

Program variablesを右クリック>Add From programを選びます。

いまE!COCKPIT プロジェクト内にある変数が表示されます。

GVL_ModbusDataをGVL選び>OKします。

Program variables Fieldsの中に3つの配列変数が追加されました。

Basic Settings

次はPFC Controllerを右クリックしSettingsからModbus Slaveの詳細設定を行います。

Unit-IDは1を設定し、Update VariablesはAlways updateを選択し、最後はTCP SettingsのTCP Portを502に構築します。

Downlaod

最後はNETWORK TabからConnectでProjectをDownloadします。

Run

CPUをRun Modeに切り替えましょう。

Check it

Modbus Slaveが立ち上がったので、次はModbus Scanner Softwareで接続を検証してみましょう。

Install tools

今回使用するのは無料Software、CAS Modbus Scannerです。

https://store.chipkin.com/products/tools/cas-modbus-scanner

EXE Fileを実行します。

Next>進みます。

ライセンス同意し、Next>します。

Install Pathを設定し、Installで進みます。

Done!

CAS Modbus Scannerが起動しました。

Scan it

最初はDiscover機能でWago Modbus Slaveを検索します。

ConnectionをTCP選択し、PFC ControllerのIPとPortを設定します。

Start Scanを開始すればOKです。

Add Connection

次はConnectionを追加してみます。

右クリック>Add Connectionします。

TCP ConnectionのFieldからIPとPortを入力し、”Add TCP Connection”でPFC Controllerを追加します。

次は先ほど追加したConnectionから右クリック>Add Deviceします。

Slave IDをE!COCKPIT 側で設定したUnit-IDと合わせましょう。

Slaveが追加されました。最後は読み取りのTaskを作成します。Slaveから右クリック>Add Taskします。

Function を04選び、Offset 1、Lenght4>Add Requestします。接続OKであれば30001から4 Byteのデータを読み取れます。

Implementation-2

E!COCKPIT Side

Connectionが確認したところで、今回はTwinCATがWago PFC ControllerにModbus TCP経由でデータを書き込みます。

Configuration

Implementation-1で定義したRegisterの数を少し変更します。

。そしてModbus Editorから再Mappingを行います。

Program

POU_Upload2WagoCloud

WAGO CLOUD Tutorial第一話とあまり変わらないが、今回のプログラムは複数の変数を一つの配列にまとめてWAGO CLOUDに転送します。

PROGRAM POU_Upload2WagoCloud
VAR
S210_1:ARRAY[0..9]OF WagoAppCloud.typVariableDescription;
S210_1_Collections:WagoAppCloud.typCollection;
Logger:WagoAppCloud.FbCollectionLogger;
Status:WagoSysErrorBase.FbResult;
END_VAR

VAR RETAIN
tSampleInvTime :TIME:=T#1S;
tPublishInvTime :TIME:=T#1S;
END_VAR
VAR bError:BOOL; bOperational:BOOL; bNotMoving :BOOL;END_VAR
//ID1
S210_1[0].sUnit:=’mm’;
S210_1[0].pAddress:=ADR(GVL_ModbusData.RegsReal[0]);
S210_1[0].eValueType:=WagoAppCloud.VVT_REAL;
S210_1[0].sTag:=’ActPos’;
S210_1[0].dwTypeId:=1;

//ID2
S210_1[1].sUnit:=’mm’;
S210_1[1].pAddress:=ADR(GVL_ModbusData.RegsReal[1]);
S210_1[1].eValueType:=WagoAppCloud.VVT_REAL;
S210_1[1].sTag:=’ActVel’;
S210_1[1].dwTypeId:=2;

//ID3
S210_1[2].sUnit:=”;
S210_1[2].pAddress:=ADR(GVL_ModbusData.RegsWord[0]);
S210_1[2].eValueType:=WagoAppCloud.VVT_WORD;
S210_1[2].sTag:=’Error’;
S210_1[2].dwTypeId:=3;

//ID4
S210_1[3].sUnit:=”;
S210_1[3].pAddress:=ADR(GVL_ModbusData.RegsWord[1]);
S210_1[3].eValueType:=WagoAppCloud.VVT_WORD;
S210_1[3].sTag:=’Operational’;
S210_1[3].dwTypeId:=4;

//ID5
S210_1[4].sUnit:=”;
S210_1[4].pAddress:=ADR(GVL_ModbusData.RegsWord[3]);
S210_1[4].eValueType:=WagoAppCloud.VVT_WORD;
S210_1[4].sTag:=’ActStationo’;
S210_1[4].dwTypeId:=5;

S210_1_Collections.dwCollectionId:=1;
S210_1_Collections.dwVariablesCount:=5;
S210_1_Collections.sName:=’S210 Data’;
S210_1_Collections.pPublishInterval:=ADR(tPublishInvTime);
S210_1_Collections.pSampleInterval:=ADR(tSampleInvTime);
S210_1_Collections.pVariableDescriptions:=ADR(S210_1);


Logger(
pCollections:=ADR(S210_1_Collections)
,dwCollectionsCount:=1
,oStatus=>Status
);
bError:=GVL_ModbusData.RegsWord[0]<>0;bOperational:=GVL_ModbusData.RegsWord[1]<>0;bNotMoving:=GVL_ModbusData.RegsWord[2]<>0;

PLC_PRG

最後はMAIN のPLC_PRGからそのプログラムを呼び出します。

PROGRAM PLC_PRG
VAR

END_VAR

VAR RETAIN

END_VAR


POU_Upload2WagoCloud();

HMI

E!COCKPITに簡単な画面を作ってPFC Controllerに転送しましょう。

その画面はWAGO CLOUDにも同じように表示されます。

TwinCAT Side

Reference Link

Beckhoff#TwinCAT3 TF6250 Modbus-TCP Function

Add Library

PLC>References>右クリック>Add Libraryします。

Tc2_ModbusSrvを選び>OKします。

Programs

POU_Mainを追加し、そしてMainからCallします。

POU_Modbus

こちらはWago PFC ControllerのMODBUS TCP Slaveと通信するためにあるプログラムです。bStart がTrueになると通信開始>まずはReal Registerを書き込み・そして16Bit整数 Registerを書き込み>戻すの無限Loopです。

PROGRAM POU_Modbus
VAR

_MBWriteRegs :FB_MBWriteRegs;
bStart :BOOL;
RealRegister :ARRAY[0..3]OF REAL;
R_TRIG:R_TRIG;
bBusy,bError:BOOL;
nErrorID:UDINT;
TONs: ARRAY[0..2]OF TON;
iStep:INT;
END_VAR

CASE iStep OF
0:
IF bStart THEN
_MBWriteRegs.nMBAddr:=32000;
_MBWriteRegs.nQuantity:=SIZEOF(GVL_Modbus.RealRegister)/2;
_MBWriteRegs.cbLength:=SIZEOF(GVL_Modbus.RealRegister);
_MBWriteRegs.pSrcAddr:=ADR(GVL_Modbus.RealRegister);

iStep:=10;
END_IF
10:
IF _MBWriteRegs.bError OR _MBWriteRegs.bBusy THEN
iStep:=20;
END_IF
20:
TONs[0](IN:=TRUE,PT:=T#0.2S);
IF TONs[0].Q THEN
TONs[0](IN:=FALSE);
iStep:=30;
END_IF
30:
IF bStart THEN
_MBWriteRegs.nMBAddr:=32008;
_MBWriteRegs.nQuantity:=SIZEOF(GVL_Modbus.WordRegister)/2;
_MBWriteRegs.cbLength:=SIZEOF(GVL_Modbus.WordRegister);
_MBWriteRegs.pSrcAddr:=ADR(GVL_Modbus.WordRegister);

iStep:=40;
END_IF

40:
IF _MBWriteRegs.bError OR _MBWriteRegs.bBusy THEN
iStep:=50;
END_IF
50:
TONs[0](IN:=TRUE,PT:=T#0.2S);
IF TONs[0].Q THEN
TONs[0](IN:=FALSE);
iStep:=0;
END_IF
END_CASE


_MBWriteRegs(
sIPAddr:=’192.168.3.17′
,bExecute:=iStep = 10 OR iStep=40
,nTCPPort:=502
,nUnitID:=16#FF
,bBusy=>bBusy
,bError=>bError
,nErrId=>nErrorID
);

MAIN

MAINが先ほどのPOU_ModbusをCallする、あとはS210・S71200のデータをReal Registerと16Bit 整数Registerに転送するプログラムです。

PROGRAM MAIN
VAR
Axis :AXIS_REF;
END_VAR

VAR
PNController :FB_PNController_Status;
PNDevices_S210 :FB_PnDevices_Status;
PNDevices_S71200:FB_DataFromSiemens;
S210 :FB_MyS210;
Mode :eDUT_Mode;
autocmd:BOOL;
autosst :DINT;
istep:DINT;
TON :TON;

END_VAR


IF NOT PNDevices_S71200.STOOK THEN
istep:=0;
GVL_SystemHMI.PB.AutoStart:=FALSE;
autosst:=0;
END_IF


GVL_SystemHMI.PL.ModeAuto:=GVL_SystemHMI.PB.Mode = eDUT_Mode.Auto;
GVL_SystemHMI.PL.ModeManual:=GVL_SystemHMI.PB.Mode = eDUT_Mode.Manual;
GVL_SystemHMI.PL.Reset:=GVL_SystemHMI.PB.Reset;
GVL_SystemHMI.PL.PowerOn:=S210.qStatus.Operational;
GVL_SystemHMI.PL.AutoStart:=istep<>0;


IF GVL_SystemHMI.PL.ModeAuto THEN
Mode:=eDUT_Mode.Auto;
ELSIF GVL_SystemHMI.PL.ModeManual THEN
Mode:=eDUT_Mode.Manual;
END_IF;



IF Mode=eDUT_Mode.Auto THEN

CASE istep OF

0:
TON(IN:=GVL_SystemHMI.PB.AutoStart,PT:=T#1S);
IF TON.Q THEN
istep:=10;
TON(in:=False);
END_IF
10:
autosst:=1;
IF S210.qActualStation = 1 THEN
istep:=15;
autosst:=0;
END_IF
15:
TON(in:=TRUE,PT:=T#1S);
IF TON.Q THEN
TON(in:=FALSE);
istep:=20;
END_IF;
20:
autosst:=2;
IF S210.qActualStation = 2 THEN
istep:=10;
autosst:=0;
END_IF
END_CASE

ELSE
istep:=0;
autosst:=0;
END_IF


PNDevices_S71200.Reset(Execute:=GVL_SystemHMI.PB.Reset);

S210.iPNComOK:=PNController.Ready
AND PNDevices_S210.Ready
AND PNDevices_S71200.Ready

;

S210(
iEnable:=TRUE
,bServoON:=GVL_SystemHMI.PB.PowerOn
,bReset:=GVL_SystemHMI.PB.Reset
,Mode:=Mode
,bILAbs:=TRUE
,bILJog:=TRUE
,bILAbs:=TRUE
,bAutoAbsCmd:=autocmd
,iAutoStationCmd:=autosst
,Hmis:=GVL.Hmis
);


GVL_Modbus.RealRegister[0]:=S210.qActualPosition;
GVL_Modbus.RealRegister[1]:=S210.qActualVelocity;
GVL_Modbus.WordRegister[0].0:=S210.qStatus.Error;
GVL_Modbus.WordRegister[1].0:=S210.qStatus.Operational;
GVL_Modbus.WordRegister[2].0:=S210.qStatus.NotMoving;;
GVL_Modbus.WordRegister[3]:=UDINT_TO_WORD(s210.qActualStation);



POU_Modbus();

Wago Cloud Side

WAGO CLOUDからPFC Controllerの画面を表示できるようにするには、少しPlug-inをインストールする必要があります。

Download Package

まず下記のLinkをアクセスし、個人情報入力しSubmitします。

https://www.wago.com/global/requestDirectDownload?downloadFile=swreg_remote_access

画面が変わり、Download ButtonでSoftware PackagesをDownlaodしてください。

.もしくはメールからもDownload Link届いていくので、こちらでもDownload可能です。

このようなZip FileがDownloadされました。

解凍すると、各PFC Controller FirmwareのSoftware Packagesが入っております。

Install Software

次はSoftware PackagesをPFC Controllerにインストールしましょう。PFC ControllerのWBMをアクセスします。

Software Update>Software Fileをクリックします。

自分のPFC ControllerはFirmware20以上なので、FW20UPのSoftware Packagesを選択します。

InstallボタンでSoftware Packagesをインストールします。

しばらく待ちます…

Done!

Restart

最後はWago PFC Controllerを再起動しましょう。

Result

Status

もし接続がなければ、StatusがCritialになり、丸い部分も赤くなります。

接続OKならば、ConnectionがOnlineに変わりますね!

Collection

S210 DataもCollectionの中にまとめていますね。

Dashboard

Dashboardにも現在SpeedやError状態が見えますね!

時間列のデータを一覧したいなら、DashboardのTitleからクリック>Inspect>Dataします。

HMI

最後はHMIですね。Remote AccessからWeb VisualizationとWeb-based Managementの”Connect” Buttonが緑になりました!

まずPFC ControllerのWeb Visualizationをみてみましょう。

OKで進みます。

User nameとPasswordはWBMと同じです。

Done!

PFC ControllerのWeb Browserにも見えますね。つまりWago CloudからPFC Controllerの設定を変更することが可能です。

Video

Source Project Download

https://github.com/soup01Threes/TwinCAT3/blob/main/TwinCAT%20S210-part5.zip

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

シェアする

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

フォローする