こちらの記事ではWago Profinet Coupler 750-375の構築方法を説明します。Profinet IO Controller側はBeckhoff C6920 とTwinCAT3・Codesys Runtime内蔵してるPixsys CPUを使用します。
よろしくお願いします。
Thanks!
この記事が出来上がるのはベッコフ日本法人ベッコフオートメーション株式会社さま・ワゴジャパン株式会社さま・Pixsysさまから機材を貸してくださったおかけです。誠にありがとうございます。
ベッコフ日本法人ベッコフオートメーション株式会社
IPC6920-005はベッコフ日本法人ベッコフオートメーション株式会社さまが貸してくださったものです。Beckhoff Automationは1980 年会社設立、PCベースの制御技術をベースにしたオープンオートメーションシステム導入の先頭に立つドイツ企業です。実際Beckhoffが関わる分野はIPCだけではなく、Motion・Vision・Iot・ロボットなど様々な分野に常に新たなイノベーションを生み出してます。
ベッコフ日本法人ベッコフオートメーション株式会社は、2011年に横浜に本社、2017年に名古屋オフィスを設立しました。
こちらはベッコフ日本法人ベッコフオートメーション株式会社様のホームページです。
どうぞよろしくお願いします。
https://www.beckhoff.com/ja-jp/
ワゴジャパン株式会社
Profinet Coupler750-375はワゴジャパン株式会社さまが貸してくださったものです。WAGO は 1951 年に設立され、いままで端子台の技術で世界中の産業にずっと貢献してるドイツ企業、PUSH WIREやCAGE CLAMPの技術などで現場を支えてきました。他にWAGOさまにもPLC LINEUPがあり、オープン性と柔軟性に重点を置いた自動化ソリューションを提供しています。
ワゴジャパン株式会社は 東京都江東区に本社があります。
Pixsys srl
Pixsys は1990年代初頭に設立、プロセス制御および産業オートメーション用の計器を設計および製造しています、製品範囲は現在、インジケータ、PID コントローラ、信号コンバータ、PLC、HMI、およびパネル PCなど多彩です。そして生産ライン、キャリブレーション システム、高度に自動化されたテスト設備を備え、ハードウェアとソフトウェアの設計から電子アセンブリまで、生産サイクルを内部に保つんです。
https://www.pixsys.net/en/home
Video
TwinCAT
English Version
Japanese Version
Codesys
English Version
Japanese Version
Wago Side
Download the GSDML File
https://www.wago.com/global/i-o-systems/fieldbus-coupler-profinet-io/p/750-375#downloads
Firmware Confirm
From Web Server
方法1まずWago Profinet CouplerをIPに割り当て、Web Serverを有効にします。
Username:admin
password:wago
Informationのところに現在のFirmwareを確認できます。
From Part-Number
方法2はCouplerの右側にあるFA/PD/AZ記載です。手書きでそのModuleのFirmwareを書いています。
FA=生産Order番号
PD=生産日付、WWJJのFormatで、WW=何週目で、JJ=年
AZ=Module情報です。FWHWFLのFormatで、FW=Firmware Version、HW=Hardware Version、FL=Firmware Loader Versionになります。
なので、2019年の9周目で、Firmware Version=06、Hardware Version=01、Firmware Loader Version=04になります。
*注意するのはそのFirmwareは更新する場合がありますので、必ず最新ではありません。
Support Profies
750-375 Pofinet Couplerは以下のProfileにもSupportします。
- PROsafe V2.4
- iPar-Server V1.0.1
- PROFienergy V1.0
Power Supply
DC24 Vで、24V と+端子台は+側、0vと-端子台は-側になります。
LED
750-375はLEDがついており、Couplerの運転状態を確認することができます。
Fieldbus Status
LED | Color | Meaning |
RUN | 緑 | Profinet Coupler現在の状態やPROFIengryの運転状況 |
BF | 赤・緑 | BF=Bus Fault,赤は現在PROFINET Controllerと接続してない、緑はデバイスIdentifier機能を使用してること |
DIA | 赤 | CouplerのConfigurationと実物が違うことを示してます |
Node Status
LED | Color | Meaning |
I/O | 赤・緑・オレンジ | オレンジ=Coupler Startup中・緑=Coupler稼働中・赤はエラー発生 |
Supply Voltage
LED | Color | Meaning |
A | 緑 | Operation Systemの電源状態(Coupler本体) |
B | 緑 | Power Jumperの電源状態(I/O電源など) |
DIP Switch
CouplerにあるDIP SwitchはProfinet Couplerのデバイス名を設定でき、スイッチの場所により2つの英文字の変換ができます。他にもProfinet CouplerをFactory Resetする機能も可能です。
注意するにはDIP Switchの設定変更したら電源を入れ直す必要があり、Couplerが稼働中の状態で変更しないでください。
Operation
DIPスイッチの組み合わせによって動作も異なります。
DIP | Action | Description |
8 | Station名の決め方法 | OFF=Memoryに保存されたStation名を使用します。ON=DIP1-7のON/OFF状態によりStation名を設定 |
7 | Station名のPredefined 設定 | OFF=wago-750-375ON=wagox750x375 |
6 | Factory Reset | DIP Switchは6以外はすべでONになったらFactory Resetを行います。 |
1-6 | Station名の可変部分の設定 | Station名の”x”という文字の設定。例えばDIP1,2がONだけなら、x=3。 |
Default
こちらはDefaultでWago 750-375 CouplerのDevice名です。
wago-750-375になります。
Configure with DIP
例えばこちらの例ですが、DIP7,8,3,4はONになっています。
DIP8=ONなのでDIP1-6の設定からStation名を設定します。
DIP7=ONなのでwagox750x375からStation名始めます。
DIP3,4=ONなのでStation名はwagox750x375x12になります。
Done!
Process Data
Basic Stucture
Wagoでは各Node(今回の例ではCoupler)をアナログ・デジタル・特別機能を混在して稼働できます。INPUTとOUTPUTのProcess ImageはIOCと通信確立に成功したときリアルタイムFrameを使用し交換します。
Process Imageは最大512Bytesです。
Allocation
こちらはPROFINET IOのデータ分配の例になります。Process DataはPROFINET IO Controlelrから制御しデータ交換を行います。
- Output Dataでは周期でProcess data (IOPS、IOCS)をIO ControllerからFieldbus Couplerに転送します。
- Input Dataでは周期でInput data (IOPS、IOCS)をFieldbus CouplerrからProfinet IO Controllerに転送します。
Fiedbus Node(今回の例では750-375 Wago 製Coupler)はSlotベースで、構築は実物のSlotに100%合わせる必要があります。該当するSlotの設定(750-375なら隣にインストールしてる入力モジュールなど)はすべてGSD Fileの中に記載されています。
Process Data Qualifiers
One Byte IOxS Process Data Qualifiers
1 ByteのProcess Data qualifiersはProfinet IOに存在しており、IO Controller側(IOPS)
かIO Device側(IOCS)に含まれています。もし該当するIO ControllerやIO Deviceが出力や入力データのみならリアルタイムのデータサイズは絶対Submodules の合計サイズより1 Byte多くなります。
Two Byte IOxS Process Data Qualifiers
2 ByteのProcess Data qualifiersはProfinet IOに存在しており、IO Controller側(IOPS)
とIO Device側(IOCS)に含まれています。もし該当するIO ControllerやIO Deviceが出力データと入力データが混在してる場合、リアルタイムのデータサイズは絶対Submodules の合計サイズより2 Byte多くなります。
PROFINET IO
現在のIndustrial Automation技術では上位System(例えばPLC)とRemote I/Oとデータ交換するにはETHERNET-baseを採用するケースが日々増えています。ETHERNET-baseを採用することによりPLCとRemote I/Oだけではなく、マネジメントレベルでデバイス間のデータ交換も可能になります。
PROFINETはおそらくいま世界のProcess Field Networkの中でTop3のシェアになってる実績豊富なIndustrial Protocolです。
PROFINETはPROFIBUSベースで開発されたETHERNET-base Protocolで、ETHERNET標準に準じます。ETHERNET標準のProfinetは、転送速度は12 Mbit/s Half duplex、100Mbit/s Full Duuplexができます。
PROFINETデバイスの設定・構築・診断するにはUDP Protocolを使用しています。他にPROFINETはIT STANDARDと少々異なりますが、SafeyアプリケーションやDriveアプリケーションに最適化されたProtocolでもあります。
PROFINET IOではIO devices(Slaves)はIO Controller(Master)と接続します。今回記事で紹介するWAGO PROFINET Couplerが IO Devicesの役割になります。
PROFINETネットワークを構築するにはGSD Filesが必要です。GSD Fileは必ずメーカーから提供していますので、各メーカーのHomepageにDownloadし、IO ControllerのエンジニアリングツールにImportしてください。(今回の記事ではTwinCATとCodesysになります。)
PROFINET IOはRT(Real-time)で効率よくデータを交換します。実際のアプリケーションによりIRT(Isochronous Real Time)を採用する場合もございます。(たとえばMotion制御するのDriveアプリケーション)
PROFINET IOではStar・Tree・Line・RingのTopologyにも対応可能です。
それ以外に、PROFINET IOがちょっと面白いのが各IO Devices個別の更新周期(Send Cycles)をアプリケーションに合わせて設定できます。
Cabling
PROFINET IOはETHERNET baseで、普通のLANケーブルにも対応可能です。
Class
PROFINET IOではデータのやり取りをProvider/Consumerモデルから始めます。
ProviderがProcess DataをCosumer提供し(PLCやIO Controller)、反対側も同じです(IO ControlerがOutput DataをIO Deviceに提供する)。
PROFINET IOでは3つのデバイスClassに分かれています。
- IO Supervisor
- IO Controller
- IO Device
IO Supervisor–>IO Controller
1つ目のルードIO Supervisor PCからIO Controller PLCの方向では最初にエンジニアリングツールがインストールされたパソコンからPROFINET IO ControllerにプロジェクトをDownloadすることを示してます。
今回の記事ではIO SupervisorはBechoff TwinCAT3やCodesys IDEになり、IO ControllerはIPC C6920やPixsysのCPUになります。
もしくは、HMIからデータを表示させたり、PCから診断情報をとったりするときもそのルードになります。
IO Controller<–>IO Device
2つ目のルードIO ControllerとIO Devivcesの方向を示してます。IO Controllerの役割はPROFINET IO NetworkにあるIO Devicesをデータ交換するために構築します。
IO ControlelrはHigh-Level Controllerのことを示しており(今回の記事ではBeckhoff C6920やPixSys Codesys CPU)、中で装置を制御するプロジェクトが稼働しています。
IO DeviceはリモートIOのことを示しており(今回の記事ではWago Profinet Coupler 750-375)、PROFINET Networkでは最低限1つのIO Devicesが存在しています。
IO Supervisor<–>IO Device
3つ目のルードはIO SupervisorとIO Devicesの方向を示してます。
IO Supervistorは各IO Devicesのパラメータを持つことができ(iPar)、なおかつIO Devicesの診断やStatusを取得できます。
Addressing
PROFINET Networkは基本的にMAC アドレスに沿ってIO Devicesを認識します。IO Devicesでは各Portにも自分のMAC アドレスがあり、なので2 PortのField devicesには3つのMACアドレスを持っています。
PROFINET ではLLDP Protocolを使用しTopologyを認識し、IO ControllerはDCP Protocolを利用して各IO Devicesに”Device名”を振り分けます。Device Nameは各IO DeviceのNon-volatile メモリに保存されています。
そしてIO ControllerはそのDevice名によりIPを割り付けます。
Data Traffic
PRFOFINET ではいくつかのデータ送受信タイプがあります。
Cyclic real-time traffic(RT/IRT)
RT/IRT通信では、I/O Data ProviderとConsumerが周期的にデータを交換します。通信状態を監視する機能もあり、周期メッセージが通信失敗するとき、自動的にConnectionを切り離します。
Acyclic real-tiem data traffic (RTA)
各I/O Moduleには様々な診断情報がついており、例えば短絡・電圧低すぎるなどのアラームはIO ControllerとIO devices間でこのような情報を交換しています。
Data corss traffic
PROFINET IO で1つProviderが複数のNodeにデータを周期で提供する方法です。
Multicast Communication Relation(MCR)といいます。
Reading and writing data sets(records)
最後のRecordsでは該当するProfinetデバイスのパラメータ・情報・診断を読み取る通信方法です。PROFINET IO ではRPC protocolを使用します。
Communication Connection
PROFINET ではIO Controller(Master)とIO Devices(Slave)の通信を確立させるには、”Communication Path”というものがあります。
そのCommunication PathはIO Controllerが起動したときに、Controller内のProject データによって確立します。すべてのデータ交換は”Application Relation”(AR)ベースで、ControllerとDevicesの間でその”AR”から接続を結びます。
AR,CR
AR=Application Relationship、CR=Communication Relationshipです。
IO Controllerはシステムを起動するとき、まずARを初期化し、すべての通信パラメータなどをIO DevicesにLoadします。同時に周期・非周期通信(IO Data CR・Record Data CR)・アラーム(Alarm CR)・Multcast Communicaton Relationship(MCR)も構築されます。
ARの中で、CR(Communcation relationships)はデータ交換するために確立する必要があり、ConsumerとProvider間で独自のCommunication Channelが指定されます。
Implementation-1
Implementation1ではBeckhoff IPC6920とTwinCATからProfinet IO Controllerを立ち上げ、Wago Profinet Couplerと接続します。
Install the GDSML File
GDSML FileをTwincat/3.1/Config/Io/ProfinetのDirectoryに貼り付けます。
Add PN Controller
I/O>Devices>Add New Itemします。
Profinet>Profinet I/O Controller[RT]を選び>Okします。
Configure the Adapter
Adapter Tabで正しいNetwork Interface設定したかもう一度確認しましょう。
Task
次はTask TabからPNIO 専用のたTaskを追加します。
Task名を入力しOkします。
Done!
Add the Wago 750-375 Coupler
次はWago750-375 Profinet Couplerを追加します。Device1>Add New Item>右クリックします。
先程GSDMLをインストールしましたので、WAGO>I/O>WAGO-I/O-SYSTEM 750/753を選び>Okします。
750-375 V02.05xx[FW 08](今回使用してるCoupelrのFWは08なので)を選び>OKします。
Done!Wago 750-375 Couplerが追加されました。
IP/Device Name Configuration
次はCouplerのIP・Device名を設定します。
Device TabでIP Configurationを設定でき、Station Nameで現在設定したDevice名を確認も可能です。
Add Slots
API>右クリック>Add New Itemで新しいSlotを追加します。
Device Configuration画面が表示され、この画面から現物のCouplerにインストールしたModuleと同じように設定します。
Slot1 750-1417
DI>750-1417 8DIを選択しダブルクリックしIO Moduleを追加します。
Slot2 750-1516
DOで750-1516を選択しダブルクリックしIO Moduleを追加します。
Slot3 750-597
AOで750-597を選択しダブルクリックしIO Moduleを追加します。
Slot4 750-471
最後はAIで750-471を選択しダブルクリックしIO Moduleを追加します。
これで設置OKです。
Configuration
アナログ入力モジュールSlot4 750-471は入力は電圧か、電流か、それともScalingする範囲もTwinCATから設定できます。
下図のように、Slot4をダブルクリックしParameterize ModuleのTab>Index 0x2000を開くと様々なパラメータ設定ができます。AI Instance 1 at connection 1 and 5はつまりモジュールの接点”1”と接点”5”の設定項目だと示しています(Channel1)。
今回使用したいのはChannel2なので下にScollしていきます。
AI Instance 2 at connection 2 and6が表示され、ここからはChannel2の設定になります。
中にSignal typeという項目があり、Offline Valueではいま0-10vだと示しています。
実際自分のアプリケーションにあ合わせて設定してください。
Add PLC
PLC>右クリック>Add New Itemします。
Standard PLC Projectを選び>Okします。
DUT
右クリック>Add>DUTします。
8BIT ChannelのモジュールにまとめるDUTを作成します。
TYPE DUT_8DI : STRUCT c1,c2,c3,c4,c5,c6,c7,c8:BIT; END_STRUCT END_TYPE |
Add GVL
次はWago750-375 Profinet CouplerとMappingする変数をGVL内に定義します。
Slot1-4に必要な変数を定義します。
{attribute ‘qualified_only’} VAR_GLOBAL Slot1 AT %I*:DUT_8DI; Slot2 AT %Q*:DUT_8DI; Slot3 AT %Q*:ARRAY[1..8]OF INT; Slot4 AT %I*:ARRAY[1..4]OF INT; END_VAR |
MAIN
PROGRAM MAIN VAR TON1 :TON; SetPoint :INT; IntputData :REAL; END_VAR FOR i :=0 TO 19 DO GVL.Outputs[i]:=INT_TO_BYTE(i+10); END_FOR TON1(IN:=GVL.Slot1.c1 AND GVL.Slot1.c3,PT:=T#1S); GVL.Slot2.c4:=TON1.Q; GVL.Slot3[5]:=SetPoint; IntputData:=(INT_TO_REAL(GVL.Slot4[2])/32727.0) *10.0; |
Build
Build>Build Solutionでプロジェクトをコンパイルします。
Mapping
750-1417 8DI Slot1
Term 2(750-1417 8DI)>Inputs>Digital Inputs 0-7を選択し>右クリック>Change Linkします。
データサイズが同じであれば一括Mappingできます。
750-1516 8DO Slot2
Term 3(750-1516 8DO)>Outputs>Digital Outputs 0-7を選択し>右クリック>Change Linkします。
750-597 8AO Slot3
Term 4(750-1417 8DI)>Outputs>Outputs>Analog Output Channelを一括選択し>右クリック>Change Linkします。
データサイズが同じであれば一括Mappingできます。
750-471 4DI Slot4
データサイズが同じであれば一括Mappingできます。
Activate
Activate ConfigurationでHardware ConfigurationをDownloadします。
TwinCATを再起動します。
Login
LoginでUser programをDownloadします。
Start
Start でUser programを起動します。
Result
こちらのLinkから動作確認できます。
Implementation-2
Implementation2ではCodesys Runtime内蔵してるイタリアメーカーPixysysからProfinet IO Controllerを立ち上げ、Wago Profinet Couplerと接続します。
Install the GSDML File
CodesysからTools>Deice Repositoryします。
InstallでGSDMLをインストールします。
WAGO HPからDownloadしたGSDMLを開きます。
Done!GSDML Fileがインストールされました。
Add the Ethernet Interface
Ethernet Interfaceを追加するためにDevice>右クリック>Add Deviceします。
Profinet IO >Ethernet Adapter>Ethernet を選びます。
Configuration
Ethernet>General TabからNetwork Interfaceに”Browse”ボタンをクリックします。
Add the PN Controller
次はProfinet IO Controllerを追加します。
Ethernet>右クリック>Add Devicesします。
Fieldbus>Profinet IO>Profinet IO Master>PN-Controllerを追加しましょう。
これでProfinet IO Controllerが追加されました。
Add the Wago 750-375 Coupler
PN Controllerから右クリック>Add Deviceします。
検索のところで375を入力し>今回記事で使用する750-375 V02.05.xx(FW08)を選び>Add Deviceで追加します。
Wago Profinet Couplerが追加されました。
Configuration
まずSettingsのところでWebserver (TCP Port 80)のValueを1にします。
この設定により750-375のWeb Sever機能が有効になります。
次はWago Profinet CouplerのIPアドレスですね。
Add Slot1-750-1417
Wago Profinet Couplerを右クリック>Add Deviceします。
検索のFieldから1417を検索し750-1417 8DIを追加します。
Add Slot2 750-1516
検索のFieldから1516を検索し750-1516 8DOを追加します。
Add Slot3 750-597
検索のFieldから597を検索し750-597 8AOを追加します。
Add Slot4 750-471
最後は検索のFieldから471を検索し750-471 4AIを追加します。
Modules Parameters
最後はパラメータの設定を行います。今回の記事で特に設定必要なのはSlot4のアナログ入力です。
_4AI_INT16_4_1をクリックします。
General TabのところにParametersの項目があります。
AI Instaance2 at connection 2 and 6のところで、Signal Typeを0-10vに変更します。
そうすると、Channel2の検知タイプが0-10v電圧になります。
Program
GVL
Slot1-4に必要な変数を定義します。
{attribute ‘qualified_only’} VAR_GLOBAL Slot1 :ARRAY[0..0]OF BYTE; Slot2 :ARRAY[0..0]OF BYTE; Slot3 :ARRAY[1..8]OF INT; Slot4 :ARRAY[1..4]OF INT; END_VAR |
MAIN
PROGRAM PLC_PRG VAR TON:TON; setPoint:INT; CurrentValue :REAL; END_VAR TON(IN:=GVL.Slot1[0].0 AND GVL.Slot1[0].2,PT:=T#1S); GVL.Slot2[0].3:=TON.Q; GVL.Slot3[5]:=setPoint; CurrentValue:= ( TO_REAL( GVL.Slot4[2])/32767.0)*10.0; |
;
Mapping
Process IOとUser ProgramのMappingを忘れずに。
Result
ProjectをDownloadし、Runtimeをスタートします。
よし、すべては緑で、つまり通信OK。
こちらのLinkから動作の確認できます。