前回は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 様のホームページです。
どうぞよろしくお願いします。
ワゴジャパン株式会社
PFC Controller750-8215はワゴジャパン株式会社さまが貸してくださったものです。WAGO は 1951 年に設立され、いままで端子台の技術で世界中の産業にずっと貢献してるドイツ企業、PUSH WIREやCAGE CLAMPの技術などで現場を支えてきました。他にWAGOさまにもPLC LINEUPがあり、オープン性と柔軟性に重点を置いた自動化ソリューションを提供しています。
ワゴジャパン株式会社は 東京都江東区に本社があります。
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_Part2 |
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
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
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