Phoenix Contact#PLCNEXT AXCF2152をAXL E PN IOL4/0 DIO8 M12 6M-LとProfinetで接続しよう

今回の記事ではPhoenix Contact PLCNEXT AXCF2152とPhoenix ContactのAXL E PN IOL4/0 DIO8 M12 6M-LをProfinetで接続する手順を説明します。また、こちらは今回使用するIO-LINKデバイスになります:

  • AXL E IOL DIO8 M12 3M
  • PSD-SC IOL S15 AE

さ、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

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

Reference Link

シーメンス#Phoenix ContactのAXL E PN IOL4/0 DIO8 M12 6M-LとProfinetで接続しよう
今回の記事ではシーメンスのS7-1500とPhoenix ContactのAXL E PN IOL4/0 DIO8 M12 6M-L...
シーメンス#LIOLinkライブラリで動的にAXL E PN IOL4/0 IO-Linkパラメータを書き換えよう
今回の記事では、シーメンス製 S7-1500 と Phoenix Contact 製 AXL E PN IOL4/0 DIO8 M1...

MEMORY_COPY

今回記事で使用するMEMORY_COPY関数はランタイムシステムのデータ領域間でデータをコピーする関数でコピー元(Source data area)からコピー先(Destination data area)へ、指定したバイト数のデータを転送します。

パラメータ説明

SRC

  • データ型:ANY
  • 説明:コピー元(ソース)のデータ領域
  • 注意
    • MyArray[5] のような配列要素指定は可能
    • ただし、その場合は配列全体の先頭ではなく、その要素単体を指す

SRC_OFF

  • データ型:ANY_INT
  • 説明:ソースデータ領域の先頭からのバイト単位オフセット
  • 条件:0 以上であること

DST

  • データ型:ANY
  • 説明:コピー先(宛先)のデータ領域
  • 注意
    • MyArray[5] の指定は可能
    • ただし、配列全体の開始位置ではなく、その要素のみを指す

DST_OFF

  • データ型:ANY_INT
  • 説明:宛先データ領域の先頭からのバイト単位オフセット
  • 条件:0 以上であること

CNT

  • 説明:コピーするバイト数

出力(OUT)

  • データ型:UINT
  • 説明:コピー処理のステータスコード

OUT値

内容

0

正常終了

1

SRC または DST の VAR_IN_OUT 記述子が不正(内部エラー)

2

SRC のサイズ不足、または SRC_OFF が不正(CNT が SRC – SRC_OFF を超えている)

3

DST のサイズ不足、または DST_OFF が不正(CNT + DST_OFF が宛先サイズを超えている)

12

CNT の値が範囲外

エラー動作(Error behavior)

  • OUT ≠ 0 の場合、エラーコードが返される
  • エラー発生時:
    • ENO = FALSE
    • コピー処理は失敗扱い

EN / ENO の動作

  • EN = TRUE:POU 実行
  • EN = FALSE:POU は実行されず、ENO = FALSE
  • 実行中にエラーが発生した場合も ENO = FALSE

Implementation

これからプロジェクトを作成していきましょう。

PLCNEXT 側

最初にPLCNEXT AXCF2152側から構築します。

PLCNEXTコントローラをスキャン

Project ICONをクリックします。

Project→Online Controllersで下記のICONをクリックし、ネットワークにあるデバイスを検索します。

Done!AXCF 2152を検索しました。そのAXCF 2152を右クリック→Add to Projectをクリックします

コントローラーの選択画面が表示されます。

今回記事で使用するのはAXCF 2152 の2025.6バージョンです。

OKをクリックします。

本体のAXCF 2152のUser nameとPassword入力します。

Done!

GDSMLのインポート

PLCNEXT EngineerツールからGSDMLをIMPORTするために、File→Import→Import GSDML Filesをクリックします。

先ほどDownloadしたGSDMLを開きます。

OKをクリックします。

Profinetネットワーク構築

次はProfinetネットワークを構築するために、Project→Profinetを開きます。

今回の記事で使用するAXL E PN IOL4/0 DIO8 M12 6M-Lを挿入します。

IPとデバイス名

次はAXL E PN IOL4/0 DIO8 M12 6M-Lのデバイス名を設定します。

下記で示した枠でAXL E PN IOL4/0 DIO8 M12 6M-LのIPアドレス・デバイス名を設定します。

次はAXL E PN IOL4/0 DIO8 M12 6M-LのPort1・Port2にある”Auto Negotiation”をNOに設定します。

また、AXL E PN IOL4/0 DIO8 M12 6M-LのPort2に接続するProfinetデバイスがないので、Port2の”Check MAU Type”をNoに設定します。

スロット

今度はAXL E PN IOL4/0 DIO8 M12 6M-Lのスロットを設定します。

下図の赤枠に示したのはAXL E PN IOL4/0 DIO8 M12 6M-Lの現在のスロット設定です。Default上ではPort1-Port4まではデジタル入力になっています。

次はPLCNEXT EnginnerからSlotに設定変更を行います。

各Portに接続してるIO-LINKデバイスに合わせてByteIN/OUT数を設定します。

Done!また最後のPORTはPhoenix ContactのAXL E IOL DIO8 M12 3M に設定しましょう。

IO-LINKデバイスパラメータ

また、各IO−LINK PORTにも接続されているIO-LINKデバイスに個別の初期パラメータを設定することが可能です。

DUT

プロジェクトに4Bytes・3Bytesと1Bytesの配列を定義します。

TYPE
udtArray4Bytes : ARRAY[0..3] OF byte;
udtArray3Bytes : ARRAY[0..2] OF byte;
udtArray1Bytes : ARRAY[0..0] OF byte;
END_TYPE

次はplc next engineerからGlobal変数を宣言するためにProject→IEC 61131-3をクリックします。

プロジェクトで必要な変数を定義します。

新しい変数を追加する場合は、右クリック→Add Variablesしてください。

fbshitbits

こちらのFBはxshiftの立ち上がりエッジで、ビットを左または右にシフトしながら積み上げるプログラムです。

変数

説明

xshift

BOOL

シフト実行トリガー

xdirection

BOOL

FALSE=左シフト / TRUE=右シフト

bValue

BYTE

ビットパターン出力

iCount

INT

シフト回数カウンタ

iresetOffset

INT

リセットまでの回数設定

fbR_TRIG

R_TRIG

立ち上がりエッジ検出

初期: 0000_0001

1回目: 0000_0011

2回目: 0000_0111

3回目: 0000_1111

リセット → 0000_0001

の動きになります。

fbR_TRIG(CLK:=xshift);

if fbR_TRIG.Q then
if not xdirection then
IF iCount < iresetOffset THEN
bValue := SHL(bValue, 1) OR byte#1;
iCount := iCount + 1;
ELSE
iCount:=0;
bValue:=1;
END_IF
ELSE
IF iCount < iresetOffset THEN
bValue := SHR(bValue, 1) OR byte#1;
iCount := iCount + 1;
ELSE
iCount:=0;
bValue:=1;
END_IF
end_If;
end_if;

MAIN

次はMAINプログラムを作成するために、PLC ENGINEER→右側→COMPONENTS→Programs→新しいプログラムを作成しましょう。

2つの異なる周期でビットシフトを行い、PROFINETデバイス(Axioline E I/O-Linkモジュール)へ出力するプログラムになります。

ビットパターンの変化に関しては:

wControlWord(0.1秒周期)- 流れるパターン:

0000_0000_0000_0001

0000_0000_0000_0010

0000_0000_0000_0100

↓ (1ビットが移動)

1000_0000_0000_0000

↓ リセット

0000_0000_0000_0001

bControlByte(1秒周期)- 積み上げパターン:

0000_0001

0000_0011

0000_0111

0000_1111

↓ リセット(4回到達)

0000_0001

fbTimer(in:=not fbTimer.Q,PT:=T#0.1s);
fbTimer2(in:=not fbTimer2.Q,PT:=T#1s);

if wControlWord=0 THEN
wControlWord:=1;
end_if;

if wControlWord.%X15 THEN
wControlWord:=1;
end_if;

if bControlByte=0 THEN
bControlByte:=1;
end_if;

if bControlByte.%X7 THEN
bControlByte:=1;
end_if;

if fbTimer.Q THEN
wControlWord:=SHL(wControlWord,1);

end_if;



uiCopyout:=
MEMORY_COPY(
wControlWord
,0
,axl_e_pn_iol4_0_dio8_2_2_OUT
,0
,2
);

fbshitbits(
bvalue:=bControlByte
,xdirection:=false
,xshift:=fbTimer2.Q
,iresetOffset:=4
);

axl_e_pn_iol4_0_dio8_2_5_OUT[0]:=bControlByte;
axl_e_pn_iol4_0_dio8_2_3_OUT[2]:=bControlByte;

プログラムをタスクに追加

次はプログラムをRuntimeに実装するように設定しましょう。ここでPLCnextをクリックします。

先ほど追加したプログラムをTaskに追加しましょう。

接続

今度はPLC ENGINEERとAXF2152と接続するために、PLCを選択し→右クリック→Connect/Disconnectします。

ダウンロード

次はWrite and start Project(With sources)をクリックしプログラムをAXF2152にDownloadしましょう。

結果

AXF2152のProfinet通信状態を確認するために、AXF2152のWeb Serverにアクセスし→Overviewを開きます。下図のようにBF-Cが赤ではなければ通信OKです。

また、Diagnostics→PROFINET→TREE VIEWからもPROFINETの通信状態を確認できます。

各Portの通信状態も正常です。

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

https://youtube.com/shorts/VYD2tp0OLcc

プロジェクトダウンロード

こちらのLINKから今回の記事のプロジェクトをDownloadしてください。

https://github.com/soup01Threes/PLCNEXT/blob/main/PROJECT_IOLINK_BasicConfiguration.pcweax

シェアする

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

フォローする