OTee#Virtual PLC_Part08_TURCK IO-LINKマスターと接続しよう

こちらは新しいシリーズで、OTeeというVirtual PLCを使用し様々な記事を展開します。第8話ではOTee Platform上でEthernet/IP Scannerを立ち上げ、TURCKのIO−LINKマスターと接続します。

また、これからはOTeeのVirtual PLCをBerghofのMC-Pi Proにインストールし、記事を展開します。

さ、FAを楽しもう。

前書き

いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。

技術は独り占めせず、届けるもの

私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。

また、もしあなたの現場で…

  • 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
  • 「EtherCAT通信でうまくいかない部分を検証してほしい」
  • 「新しいリモートI/Oを試したいけど社内に検証環境がない」

など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。

支援のかたち

現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。

メンバーシップ(ラジオの応援)

Fullさんとのラジオをより充実させるための支援プランです。

https://note.com/fulhause/membership/join

Amazonギフトリスト

コンテンツ制作に必要な機材・書籍をリストにしています。

https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share

Patreon(ブログ・動画活動への応援)

月額での小さなご支援が、記事の執筆・検証環境の充実につながります。

https://www.patreon.com/user?u=84249391

Paypal

小さな支援が大きな力になります。

https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP

知ってたら助かること、届けたいだけです

あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。

soup01threes*gmail.com

https://x.com/3threes2

技術はひとりじゃもったいない。

Referece Link

http://soup01.com/ja/category/otee/

http://soup01.com/ja/category/turck/

Implementation

Turck側

最初にTURCK側を構築します。

まずTURCK側から始めます。ChormeやFirefoxからTURCのIPアドレスを入力します。

こちらはTURCKのWeb serverになります。

パスワード

TURCKデバイスのDefault Passwordはpasswordです。

Default Passwordを実際の使い方によって変更するかを決めましょう。

エラー

もしTURCKモジュールがエラー発生した場合、LOCAL>Diagnosisに!の黄色マークがついてます。

ポート設定

次はTURCK IO-Link Masterの各Portを設定するため、LOCAL I/O>Parameterをクリックします。

各Portの設定画面が表示されます。

Read ボタンをクリックし現在IO-Link Portの設定を読み込みます。

OTee側

次はOTee 側を構築します。

Ethernet/IP設定を追加

OTeeのPlatformにアクセスし、プロジェクトの中にある+ボタンをクリックします。

新しい項目の追加画面が表示されます。

Drop-listからDriver Configを設定します。

次はDriverのDrop-listからEtherNet/IPを設定します。

Saveで設定を適用します。

クライアントを追加

次はEthernet/IPの設定画面を開き、”Add a Client”で新しいEthernet/IP Adapterを追加します。

Done!これで新しいEthernet/IP Adapterが追加されました。

リモートIPアドレス

Remote IP Address欄でBeckhoff TwinCAT3側で設定したIPアドレスに合わせてください。

Ethernet/IP Configuration

次はTURCK のIO-LINKマスターとEIP接続するための設定を行います。

今回記事で使用するInstanceは以下です。

  • Input Assembly:121
  • Output Assembly:150
  • Configuration Assembly:106
IP Address

IPアドレスはTURCKのDIPスイッチの設定などに合わせてください。

Module Config Instance

Modbule Config Instanceを106に設定します。

T→O

次はT→O側を設定します。

Assembly Instance

AssemblyのInstance番号を121に設定しましょう。

Data Size

データサイズは38Bytesです。

Tags

そして38BytesのデータにもTagsを定義します。

O→T

今度はO→T側です。

Assembly Instance

Assembly Instance番号150に使用します。

Data Size

Dataサイズは38 Bytesです。

Data Rate

Dataの交換周期はApplicationに合わせて設定しましょう。

Tags

そして38BytesのデータにもTagsを定義します。

Global

IOデータとMappingするGlobal変数を定義し、Linkしてください。

構造体

次は構造体を作成します。

dut_OMRON_E3A3_HL500lMN

こちらはオムロンのIO-LINKセンサーE3A3-HL500lMNです。

こちらはE3A3-HL500lMNのIO-LINK Process Data Mappingです。

dut_Murr_59719_Basic

こちらはMurrのIO-LINKデバイス59719の基本構造体です。

dut_Murr_59719

こちらはMurrのIO-LINKデバイス59719の入出力点数に合わせて作成した構造体です。

こちらは59719 IO-Link Hubの入力Process Dataになります。

Byte2とByte3はE0タイプのみで今回記事で使用した59719では適用しません。

こちらは59719 IO-Link Hubの出力Process Dataになります。

dut_Murr_5000_00501_1300001

こちらはMurrの5000-00501-1300001、アナログ→IO-LINKに変換するConverterです。

dut_OMRON_E2E_X3B4_IL3_2M

こちらはOMRON社のE2E-X3B4-IL3-2Mの入力データに合わせて作成した構造体です。

dut_NassSmartConnector_IN

こちらはNassmagnet社のSmart Connectorの出力データに合わせて作成した構造体入力データです。

dut_NassSmartConnector_OUT

こちらはNassmagnet社のSmart Connectorの出力データに合わせて作成した構造体出力データです。

dut_NassSmartConnector

こちらは先程定義したNassSmartConnectorの入出力に含めて再定義した構造体です。

dut_Murr_59607_Basic

こちらはMurrelektronik社の59607に合わせて定義した構造体です。

dut_Murr_59607

こちらはMurrelektronik社の59607の入出力に合わせて再定義した構造体です。

dut_Molex_IOLinkHub

こちらはMolex社のIOLink Hubです。

dut_Contrinex_SmartSensor

こちらはContrinex社のIO-Link Sensorの入力データに合わせて作成した構造体です。

FC

次はFCを作成します。

fcGetBitFromByte

こちらはByte変数から指定した位置の現在値TRUEとFALSEを返します。

case iPos of

0:

fcGetBitFromByte := (iByte AND 1) <> 0;

1:

fcGetBitFromByte := (iByte AND 2) <> 0;

2:

fcGetBitFromByte := (iByte AND 4) <> 0;

3:

fcGetBitFromByte := (iByte AND 8) <> 0;

4:

fcGetBitFromByte := (iByte AND 16) <> 0;

5:

fcGetBitFromByte := (iByte AND 32) <> 0;

6:

fcGetBitFromByte := (iByte AND 64) <> 0;

7:

fcGetBitFromByte := (iByte AND 128) <> 0;

end_case;

fcSetBitToByte

こちらはByte変数から指定した位置のBITをセットもしくはリセットします。

case iusiPos of

0:

if ixSetReset then

iobData := iobData OR 1;

else

iobData := iobData AND 254;

end_if;

1:

if ixSetReset then

iobData := iobData OR 2;

else

iobData := iobData AND 253;

end_if;

2:

if ixSetReset then

iobData := iobData OR 4;

else

iobData := iobData AND 251;

end_if;

3:

if ixSetReset then

iobData := iobData OR 8;

else

iobData := iobData AND 247;

end_if;

4:

if ixSetReset then

iobData := iobData OR 16;

else

iobData := iobData AND 239;

end_if;

5:

if ixSetReset then

iobData := iobData OR 32;

else

iobData := iobData AND 223;

end_if;

6:

if ixSetReset then

iobData := iobData OR 64;

else

iobData := iobData AND 191;

end_if;

7:

if ixSetReset then

iobData := iobData OR 128;

else

iobData := iobData AND 127;

end_if;

end_case;

fc2BytesToUINT

こちらのFCはBytesのデータを整数に合体します。

_uiTemp:=BYTE_TO_UINT(IN:=iByte1);

_uiTemp:=_uiTemp * 256;

fc2BytesToUINT:=BYTE_TO_UINT(

IN := iByte0

)+_uiTemp;

fcScaling

こちらはScalingするFCです。

rTemp:=rRawUpper-rRawLower;

if rTemp <= 0.0 then

rTemp:= 10.0;

end_if;

fcScaling:=(rInput-rRawLower)*((rEngUnitUpper-rEngUnitLower)/rRawUpper-rRawLower)+rEngUnitLower;

FB

今度は各IO-LINKデバイスに合わせてFBを作成します。

fb_OMRON_E3A3_HL500lMN

こちらはオムロンのIO-LINKセンサーE3A3-HL500lMNに合わせて作成したFBです。

VAR_IN_OUT

こちらは先ほど定義したdut_OMRON_E3A3_HL500lMNを入出力パラメータとして使用します。

VAR_INPUT

こちらはIOLink経由で入力した生データです。

Program

こちらはプログラムです。

_uiTemp:=BYTE_TO_UINT(IN:=iByte1);

_uiTemp:=_uiTemp * 256;

dutIO.uiDetectionValue:=BYTE_TO_UINT(

IN := iByte0

)+_uiTemp

;

dutIO.usiLightIntensityLevel:=BYTE_TO_USINT(

IN := iByte3

);

dutIO.xOutput0:=fcGetBitFromByte(iByte:=iByte3,iPos:=0);

dutIO.xOutput1:=fcGetBitFromByte(iByte:=iByte3,iPos:=1);

dutIO.xLightIntensityLevel:=fcGetBitFromByte(iByte:=iByte3,iPos:=2);

dutIO.xSufficientLightIntensity:=fcGetBitFromByte(iByte:=iByte3,iPos:=4);

dutIO.xWarning:=fcGetBitFromByte(iByte:=iByte3,iPos:=6);

dutIO.xError:=fcGetBitFromByte(iByte:=iByte3,iPos:=7);

fb_Murr_59719

こちらはMurrのIO-LINKセンサー59719に合わせて作成したFBです。

VAR_IN_OUT

こちらは先ほど定義したdut_Murr_59719を入出力パラメータとして使用します。

VAR_INPUT

こちらはIOLink経由で入力した生データです。

Program

こちらはプログラムです。

dutIO.stInput.xX0Pin4:=fcGetBitFromByte(iByte:=iByte1,iPos:=0);

dutIO.stInput.xX0Pin2:=fcGetBitFromByte(iByte:=iByte1,iPos:=1);

dutIO.stInput.xX1Pin4:=fcGetBitFromByte(iByte:=iByte1,iPos:=2);

dutIO.stInput.xX1Pin2:=fcGetBitFromByte(iByte:=iByte1,iPos:=3);

dutIO.stInput.xX2Pin4:=fcGetBitFromByte(iByte:=iByte1,iPos:=4);

dutIO.stInput.xX2Pin2:=fcGetBitFromByte(iByte:=iByte1,iPos:=5);

dutIO.stInput.xX3Pin4:=fcGetBitFromByte(iByte:=iByte1,iPos:=6);

dutIO.stInput.xX3Pin2:=fcGetBitFromByte(iByte:=iByte1,iPos:=7);

dutIO.stInput.xX4Pin4:=fcGetBitFromByte(iByte:=iByte0,iPos:=0);

dutIO.stInput.xX4Pin2:=fcGetBitFromByte(iByte:=iByte0,iPos:=1);

dutIO.stInput.xX5Pin4:=fcGetBitFromByte(iByte:=iByte0,iPos:=2);

dutIO.stInput.xX5Pin2:=fcGetBitFromByte(iByte:=iByte0,iPos:=3);

dutIO.stInput.xX6Pin4:=fcGetBitFromByte(iByte:=iByte0,iPos:=4);

dutIO.stInput.xX6Pin2:=fcGetBitFromByte(iByte:=iByte0,iPos:=5);

dutIO.stInput.xX7Pin4:=fcGetBitFromByte(iByte:=iByte0,iPos:=6);

dutIO.stInput.xX7Pin2:=fcGetBitFromByte(iByte:=iByte0,iPos:=7);

_xTemp:=fcSetBitToByte(iusiPos:=0,ixSetReset:=dutIO.stOutput.xX0Pin4,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=1,ixSetReset:=dutIO.stOutput.xX0Pin2,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=2,ixSetReset:=dutIO.stOutput.xX1Pin4,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=3,ixSetReset:=dutIO.stOutput.xX1Pin2,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=4,ixSetReset:=dutIO.stOutput.xX2Pin4,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=5,ixSetReset:=dutIO.stOutput.xX2Pin2,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=6,ixSetReset:=dutIO.stOutput.xX3Pin4,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=7,ixSetReset:=dutIO.stOutput.xX3Pin2,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=0,ixSetReset:=dutIO.stOutput.xX4Pin4,iobData:=oByte0);

_xTemp:=fcSetBitToByte(iusiPos:=1,ixSetReset:=dutIO.stOutput.xX4Pin2,iobData:=oByte0);

_xTemp:=fcSetBitToByte(iusiPos:=2,ixSetReset:=dutIO.stOutput.xX5Pin4,iobData:=oByte0);

_xTemp:=fcSetBitToByte(iusiPos:=3,ixSetReset:=dutIO.stOutput.xX5Pin2,iobData:=oByte0);

_xTemp:=fcSetBitToByte(iusiPos:=4,ixSetReset:=dutIO.stOutput.xX6Pin4,iobData:=oByte0);

_xTemp:=fcSetBitToByte(iusiPos:=5,ixSetReset:=dutIO.stOutput.xX6Pin2,iobData:=oByte0);

_xTemp:=fcSetBitToByte(iusiPos:=6,ixSetReset:=dutIO.stOutput.xX7Pin4,iobData:=oByte0);

_xTemp:=fcSetBitToByte(iusiPos:=7,ixSetReset:=dutIO.stOutput.xX7Pin2,iobData:=oByte0);

fb_Murr_5000_00501_1300001

こちらはMurrのIO-LINKセンサー5000-00501-130001に合わせて作成したFBです。

VAR_IN_OUT

こちらは先ほど定義したdut_Murr_5000_00501_1300001を入出力パラメータとして使用します。

VAR_INPUT

こちらはIOLink経由で入力した生データです。

Program

こちらはプログラムです。

udtIO.uiRawValue:=fc2BytesToUINT(iByte0:=iByte0,iByte1:=iByte1);

udtIO.rScaledValue:=fcScaling(

rInput:=UINT_TO_REAL(IN := udtIO.uiRawValue)

,rRawLower:=rRawLower

,rRawUpper:=rRawUpper

,rEngUnitLower:=rEngUnitLower

,rEngUnitUpper:=rEngUnitUpper

);

fb_OMRON_E2E_X3B4_IL3_2M

こちらはオムロンのIO-LINKセンサーE2E-X3B4-IL3-2Mに合わせて作成したFBです。

VAR_IN_OUT

こちらは先ほど定義したdut_OMRON_E2E_X3B4_IL3_2MNを入出力パラメータとして使用します。

VAR_INPUT

こちらはIOLink経由で入力した生データです。

Program

こちらはプログラムです。

dutIO.xControlOuput :=fcGetBitFromByte(iByte:=iByte0,iPos:=0);

dutIO.usMonitorOutput:=BYTE_TO_USINT(

IN := iByte1

);

fb_Nass_Connector

こちらはNassのIO-LINK Smart Connectorに合わせて作成したFBです。

VAR_IN_OUT

こちらは先ほど定義したdut_NassSmartConnectorを入出力パラメータとして使用します。

VAR_INPUT

こちらはIOLink経由で入力した生データです。

VAR_OUTPUT

こちらはIOLink経由で出力する生データです。

Program

こちらはプログラムです。

(*Input Data*)

udtio.in.xValveState:=fcGetBitFromByte(iByte:=iByte0,iPos:=0);

udtio.in.xShortCircuit:=fcGetBitFromByte(iByte:=iByte0,iPos:=1);

udtio.in.xOpenCircuit:=fcGetBitFromByte(iByte:=iByte0,iPos:=2);

udtio.in.xOverHeat:=fcGetBitFromByte(iByte:=iByte0,iPos:=3);

udtio.in.xOverCurrent:=fcGetBitFromByte(iByte:=iByte0,iPos:=4);

udtio.in.xCounter1OverRun:=fcGetBitFromByte(iByte:=iByte0,iPos:=5);

udtio.in.xCounter2OverRun:=fcGetBitFromByte(iByte:=iByte0,iPos:=6);

(*Output Data*)

(*PWM*)

oByte0:=USINT_TO_BYTE(

IN := udtio.out.usiPWM

);

oByte0:=

SHL(

IN := oByte0,

N := 1

);

(*Valve ON/OFF*)

_xTemp:=fcSetBitToByte(iusiPos:=0,ixSetReset:=udtio.out.xValueON,iobData:=oByte0);

fb_Murr_59607

こちらはMurrのIO-LINKセンサー59607に合わせて作成したFBです。

VAR_IN_OUT

こちらは先ほど定義したdut_Murr_59607を入出力パラメータとして使用します。

VAR_INPUT

こちらはIOLink経由で入力した生データです。

VAR_OUTPUT

こちらはIOLink経由で出力する生データです。

Program

こちらはプログラムです。

dutIO.stInput.xX0Pin4:=fcGetBitFromByte(iByte:=iByte1,iPos:=0);

dutIO.stInput.xX1Pin4:=fcGetBitFromByte(iByte:=iByte1,iPos:=2);

dutIO.stInput.xX2Pin4:=fcGetBitFromByte(iByte:=iByte1,iPos:=4);

dutIO.stInput.xX3Pin4:=fcGetBitFromByte(iByte:=iByte1,iPos:=6);

dutIO.stInput.xX4Pin4:=fcGetBitFromByte(iByte:=iByte0,iPos:=0);

dutIO.stInput.xX5Pin4:=fcGetBitFromByte(iByte:=iByte0,iPos:=2);

dutIO.stInput.xX6Pin4:=fcGetBitFromByte(iByte:=iByte0,iPos:=4);

dutIO.stInput.xX7Pin4:=fcGetBitFromByte(iByte:=iByte0,iPos:=6);

_xTemp:=fcSetBitToByte(iusiPos:=0,ixSetReset:=dutIO.stOutput.xX0Pin4,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=2,ixSetReset:=dutIO.stOutput.xX1Pin4,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=4,ixSetReset:=dutIO.stOutput.xX2Pin4,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=6,ixSetReset:=dutIO.stOutput.xX3Pin4,iobData:=oByte1);

_xTemp:=fcSetBitToByte(iusiPos:=0,ixSetReset:=dutIO.stOutput.xX4Pin4,iobData:=oByte0);

_xTemp:=fcSetBitToByte(iusiPos:=2,ixSetReset:=dutIO.stOutput.xX5Pin4,iobData:=oByte0);

_xTemp:=fcSetBitToByte(iusiPos:=4,ixSetReset:=dutIO.stOutput.xX6Pin4,iobData:=oByte0);

_xTemp:=fcSetBitToByte(iusiPos:=6,ixSetReset:=dutIO.stOutput.xX7Pin4,iobData:=oByte0);

fb_Molex_IOLinkHub

こちらはMolexのIO-LINK Hubに合わせて作成したFBです。

VAR_IN_OUT

こちらは先ほど定義したdut_Molex_IOLinkHubを入出力パラメータとして使用します。

VAR_INPUT

こちらはIOLink経由で入力した生データです。

Program

こちらはプログラムです。

dutIO.x00:=fcGetBitFromByte(iByte:=iByte1,iPos:=0);

dutIO.x01:=fcGetBitFromByte(iByte:=iByte1,iPos:=1);

dutIO.x02:=fcGetBitFromByte(iByte:=iByte1,iPos:=2);

dutIO.x03:=fcGetBitFromByte(iByte:=iByte1,iPos:=3);

dutIO.x04:=fcGetBitFromByte(iByte:=iByte1,iPos:=4);

dutIO.x05:=fcGetBitFromByte(iByte:=iByte1,iPos:=5);

dutIO.x06:=fcGetBitFromByte(iByte:=iByte1,iPos:=6);

dutIO.x07:=fcGetBitFromByte(iByte:=iByte1,iPos:=7);

dutIO.x08:=fcGetBitFromByte(iByte:=iByte0,iPos:=0);

dutIO.x09:=fcGetBitFromByte(iByte:=iByte0,iPos:=1);

dutIO.x10:=fcGetBitFromByte(iByte:=iByte0,iPos:=2);

dutIO.x11:=fcGetBitFromByte(iByte:=iByte0,iPos:=3);

dutIO.x12:=fcGetBitFromByte(iByte:=iByte0,iPos:=4);

dutIO.x13:=fcGetBitFromByte(iByte:=iByte0,iPos:=5);

dutIO.x14:=fcGetBitFromByte(iByte:=iByte0,iPos:=6);

dutIO.x15:=fcGetBitFromByte(iByte:=iByte0,iPos:=7);

fb_Contrinex_SmartSensor

こちらはContrinexのIO-LINKセンサーに合わせて作成したFBです。

VAR_IN_OUT

こちらは先ほど定義したdut_Contrinex_SmartSensorを入出力パラメータとして使用します。

VAR_INPUT

こちらはIOLink経由で入力した生データです。

Program

こちらはプログラムです。

_uiTemp:=fc2BytesToUINT(iByte0:=iByte0,iByte1:=iByte1);

dutIO.rMeasureValue :=fcScaling(

rInput:=UINT_TO_REAL(IN := _uiTemp)

,rRawLower:=0.0

,rRawUpper:=16383.0

,rEngUnitLower:=0.0

,rEngUnitUpper:=110.0

);

dutIO.xOSS1 :=fcGetBitFromByte(iByte:=iByte2,iPos:=0);

dutIO.xOSS2 :=fcGetBitFromByte(iByte:=iByte2,iPos:=1);

dutIO.xTSS :=fcGetBitFromByte(iByte:=iByte2,iPos:=2);

dutIO.xSSC1 :=fcGetBitFromByte(iByte:=iByte2,iPos:=3);

dutIO.xSSC2 :=fcGetBitFromByte(iByte:=iByte2,iPos:=4);

dutIO.xALR1 :=fcGetBitFromByte(iByte:=iByte2,iPos:=5);

dutIO.xALR2 :=fcGetBitFromByte(iByte:=iByte2,iPos:=6);

dutIO.xALR3 :=fcGetBitFromByte(iByte:=iByte2,iPos:=7);

dutIO.bScaledValue:=iByte3;

OB_IOLINKMaster

(**)

(*0.2 ON->OFF Timer*)

fbTON(

(* Inputs *)

IN := NOT_BOOL(

IN := xfbTONq

),

PT := T#0.2s,

(* InOuts *)

(* Outputs *)

Q => xfbTONq

);

(*0.2s UP*)

fbR_TRIG(

(* Inputs *)

CLK := xfbTONq,

(* InOuts *)

(* Outputs *)

Q => xR_TRIGq

);

(*Port1*)

(*FB*)

fbTurckIOLINKPort1(

(* Inputs *)

iByte0 := gbEIPTurckRawInput6,

iByte1 := gbEIPTurckRawInput7,

iByte2 := gbEIPTurckRawInput8,

iByte3 := gbEIPTurckRawInput9,

(* InOuts *)

dutIO := stOMRON_E3A3_HIL500IMN

(* Outputs *)

);

(*Port2*)

(*FB*)

fbTurckIOLinkPort2(

(* Inputs *)

iByte0 := gbEIPTurckRawInput10,

iByte1 := gbEIPTurckRawInput11,

iByte2 := gbEIPTurckRawInput12,

iByte3 := gbEIPTurckRawInput13,

(* InOuts *)

dutIO := stMurr59719,

(* Outputs *)

oByte0 => gbEIPTurckRawOutput8,

oByte1 => gbEIPTurckRawOutput9,

oByte2 => gbEIPTurckRawOutput10,

oByte3 => gbEIPTurckRawOutput11

);

(*Port3*)

(*FB*)

fbTurckIOLinkPort3(

(* Inputs *)

iByte0 := gbEIPTurckRawInput14,

iByte1 := gbEIPTurckRawInput15,

rRawLower := 0.0,

rRawUpper := 32511.0,

rEngUnitLower := 0.0,

rEngUnitUpper := 11.7,

(* InOuts *)

udtIO := stMurr5000_00501_1300001

(* Outputs *)

);

(*Port4*)

(*FB*)

fbTurckIOLinkPort4(

(* Inputs *)

iByte0 := gbEIPTurckRawInput18,

iByte1 := gbEIPTurckRawInput19,

(* InOuts *)

dutIO := stOMRON_E2E_X3B4_IL3_2M

(* Outputs *)

);

(*Port5*)

(*FB*)

fbTurckIOLinkPort5(

(* Inputs *)

iByte0 := gbEIPTurckRawInput22,

iByte1 := gbEIPTurckRawInput23,

(* InOuts *)

udtio := stNassSmartConnector,

(* Outputs *)

oByte0 => gbEIPTurckRawOutput20,

oByte1 => gbEIPTurckRawOutput21

);

(*Port6*)

(*FB*)

fbTurckIOLinkPort6(

(* Inputs *)

iByte0 := gbEIPTurckRawInput26,

iByte1 := gbEIPTurckRawInput27,

iByte2 := gbEIPTurckRawInput28,

iByte3 := gbEIPTurckRawInput29,

(* InOuts *)

dutIO := stMurr59607,

(* Outputs *)

oByte0 => gbEIPTurckRawOutput24,

oByte1 => gbEIPTurckRawOutput25,

oByte2 => gbEIPTurckRawOutput26,

oByte3 => gbEIPTurckRawOutput27

);

(*Port7*)

(*FB*)

fbTurckIOLinkPort7(

(* Inputs *)

iByte0 := gbEIPTurckRawInput30,

iByte1 := gbEIPTurckRawInput31,

iByte2 := gbEIPTurckRawInput32,

iByte3 := gbEIPTurckRawInput33,

(* InOuts *)

dutIO := stMolexIOHub,

(* Outputs *)

oByte0 => gbEIPTurckRawOutput28,

oByte1 => gbEIPTurckRawOutput29,

oByte2 => gbEIPTurckRawOutput30,

oByte3 => gbEIPTurckRawOutput31

);

(*Port8*)

(*FB*)

fbTurckIOLinkPort8(

(* Inputs *)

iByte0 := gbEIPTurckRawInput34,

iByte1 := gbEIPTurckRawInput35,

iByte2 := gbEIPTurckRawInput36,

iByte3 := gbEIPTurckRawInput37,

(* InOuts *)

dutIO := stContrinexSmartSensor

(* Outputs *)

);

ダウンロード

最後はプロジェクトをOTee RuntimeにDownloadしてください。

結果

こちらの動画で動作確認できます。

シェアする

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

フォローする