Straton#Part4_Ethernet/IP Scannerを立ち上げよう‐Generic EDS編

こちらは新しいシリーズの記事で、StratonというSoftware PLCを使って様々なテストを展開します。今回はStraton RuntimeにEthernet/IP Scannerを立ち上げ、Pilz社のIndustrialPIのCodesys RuntimeのEthernet/IP Adapterと接続する構築手順を1から説明します。

さ、FAを楽しもう。

Reference Link

http://soup01.com/ja/category/pilz/industrialpi/

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

前書き

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

現在、私達の活動はほぼ無償で続けており、より多くのコンテンツを提供するためには、皆様の温かいご支援が大変重要です。もし可能であれば、以下のリンクから応援していただけると大変嬉しく思います。

高橋クリスのメンバーシップ

こちらはFullさん(full@桜 八重 (@fulhause) / X)と共にやっているラジオにメンバーシップを登録いただけます。

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

AMAZON ギフトリスト

こちらは自分のブログのコンテンツ制作や設備の充実に大いに役立てさせていただきます。

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

Patreon

こちらは自分のブログのコンテンツ制作や設備の充実に対する小さな応援の気持ちのPatreonです。

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

皆様のサポートが、私たちの活動をより充実させる力となります。

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

メールアドレス(*=@)

soup01threes*gmail.com

X

https://x.com/3threes2

Function Block

今回の記事ではプロジェクト内に使用したFBのみを説明します。

eipReadAttr

このファンクション・ブロックは、1 つの CIP 属性を読み取るために、Explict Message(UCMM)をEthernet/IP アダプタに送信します。.

注意するのは、CIPインスタンス番号は16ビット[1 … 65535]までになります。

VAR_INPUT

変数名タイプ説明
SndBOOLこの入力の立ち上がりエッジで交換が始まる。 DONE 出力は交換の終了を知らせます。
SrvIPSTRINGEthernet/IPアダプターのIPアドレスになります。
ClassUINTCIPオブジェクトのクラス識別子になります。
InstUINTCIPオブジェクトのインスタンス識別子になります。
AttrUINTCIP属性の識別子になります。
Dataarray of USINT受信データを格納するバッファ。 実際の属性の長さがこの配列のサイズより大きい場合、値は読み込み時に切り捨てられます。

VAR_OUPUT

変数名タイプ説明
DoneBOOLこの出力は、交換が成功したか失敗したかにかかわらず、交換が終了する1サイクルの間、TRUEになります。
RevSizeUINTサーバーが回答したCIP属性の実際のサイズになります。 このサイズがDATA入力配列のサイズより大きい場合、値が切り詰められたことを示します。
ErrUINT主なエラー報告。 以下の値のいずれかを指定します:0 = エラーなし1 = 入力引数が無効2 = システムがビジー状態3 = 回答待ちのタイムアウト (タイムアウト値は3秒)4 = UCMMエラーがサーバーから返された。その他 = 内部エラー 
EmErrUINTUCMMエラーの場合、これはCIPの一般的なステータスエラーコードです。
EmErrExtUINTUCMMエラーの場合、これはCIP拡張ステータスエラーコードであります。

Implementation

それでは実際にプロジェクトを構築しましょう。

Codesys Side

最初にPizl社のIndustrialPIから構築します。

Add Pilz RevPI

Codesysに新しいプロジェクトを追加し、Pilz PIデバイスを追加するために右クリック>Add Deviceします。

CODESYS Control for Linux ARM64 SLを追加してください。

Add Etherent Adapter

次はEthernet Adapterを追加するため、右クリック>Add Deviceします。

Ethernet/IP > Ethernet Adapter>Ethernetを追加します。

Add Ethernet/IP Adapter

次はEthernet/IP Adapterを追加するためにEthernet/IP>EtherNet/IP Local Adapter>Ethernet/IP Adapterを追加します。

Add Etherent/IP Module

最後にEthernet/IP Moduleを追加します。

それでOKです。

Configure Ethernet IP Address

Codesys Runtimeに使用するEthernet Adapterを設定します。

General>Network Interface>Browseします。

今回eth0を使用します。

Add Assembly

Ethernet/IPのAssemblyを設定します。

Consuming Assembly

Consumingは入力データになります。+Addで新しいAssemblyを追加します。

今回は通信テストが目的なので、Data TypeをWORDに設定し、OKで設定を適用します。

Done!それでConsuming Assemblyを追加しました。

Producting Assembly

次はProducting Assembly(出力データ)を追加するため、+Addをクリックします。

先ほどと同じ操作でWORDタイプの変数を追加し、Okで進みます。

Done!それでProducting Assemblyを追加しました。

Add GVL

次はGlobal Variables Listを追加するために、Applicationに右クリック>Add Object>Global Variable Listをクリックします。

GVL名を設定します。

GVL内に2つのWORD変数を宣言します。

Mapping

次はプロジェクトに定義した変数をMappingするためにEthenret IP Moduleをクリックします。

Ethernet/IP Module I/O Mappingを開きます。

Input変数にある…ボタンをクリックします。

先ほど定義したwInput変数を選択します。

次はEthernet/IP Adapterの出力変数をMappingするために…ボタンをクリックします。

先ほど定義したwOutput変数を選択します。

Program

こちらはEthernet/IP Scannerから受信したデータをそのまま出力します。

GVL_EIP.wOutput:=GVL_EIP.wInput;

Download

最後はプログラムをDownloadしましょう。

Straton Side

次はStraton Runtime側を構築します。

Fieldbus Configuration

Straton RuntimeにEthernet/IP Scannerを構築するには、Fieldbus Configurationをクリックします。

次はInsert>Insert Configurationをクリックします。

こちらはStratonのFieldbus追加画面になります。

Ethernet/IP(ODVA)>Ethernet/IP IO Scanner(Client)をクリックし、Okで進みます。

Ethernet/IP Scannerとして稼働するIPアドレスを設定します。

今回はMini PCのIPアドレスに設定し、OKで進みます。

Done!それでEthenret/IP Scannerが追加されました。

Insert Ethernet/IP Adapter

次はCodesysのEthernet/IP Adapter接続を追加するため、Insert>Insert Master/Portします。

こちらはEthernet/IP Adpaterの接続設定画面になります。

Address

Address欄はPilz社のIndustrialPIのIP設定アドレスになります。

Configuration Instance

ConfigurationのInstance欄はEthernet/IP接続するときに使用するAssemblyで、今回は使いません。

Configure T→O

Ethernet/IPの入力データ(T→O)を設定します。

こちらはEthernet/IPのIO Object設定画面になります。

InstanceはCodesysの16#65に合わせて101を設定し、サイズは2Bytesにします。

Configure O→T

次はEthernet/IPの出力データ(O→T)を設定します。

InstanceはCodesysの16#64に合わせて100を設定し、サイズは2Bytesにします。

Done!

Define Global Variables

次はGlobal変数を定義するため、Global Variables>右クリック>Add Variableします。

Done!新しいGlobal変数が追加されました。

変数名を変更し、TypeをWORDに設定しましょう。

それでEthernet/IP経由でCodesysとデータ交換する変数を宣言しました。

  • EIPInputWord:Codesysから受信したデータ
  • EIPOutputWord:Codeysに送信するデータ

Mapping

今度はプロジェクトの変数と通信するデータをMappingします。先程のI/O Driversの画面を開き、Connectionを右クリック>Insert Variableをクリックします。

こちらは変数のMapping画面になります。

Symbol欄にある…ボタンをクリックします。

先程Global変数に定義した変数を選択します。

Done!

次はData ExchnageにOffset ・Bitなどの設定を行います。

今回のEthernet/IP接続にある変数はWORD1だけなので、Offsetは0のままに、Formatを変更します。

Drop-Listから16Bit – Signedを設定します。

それでOKです。

Done!Straton Runtime→Codesysに送信するデータをMappingしました。

Result

先ほどと同じ操作でTarget→Originatorの変数もMappingしましょう。

Insert Diagnostic Variables

次はEthernet/IPの診断用変数を追加するため、Variables>Diagnostic/Control>Server OKなどの変数を追加してください。

Done!

Insert ST Program

今度はSTプログラムを追加するため、Programs>Insert New Programします。

Programs>ST Programを選択し、Nextで進みます。

Execution ModeをMain Programに選択し、OKで進みます。

Program

こちらは現在RuntimeのCycle 数を取得し、またxSndをTrueにすると、Pilz社のIndustrialPIのCodesys RuntimeにExplictメッセージを送信します。

myCounter:=myCounter+1;

info:=_SYSINFO_CYCLECOUNT
;
ReturnData:=
GetSysInfo(info);

EIPOutputWord:=EIPOutputWord+1;

if xSnd then
    SrvIP:=’192.168.250.200′;
    Class:=16#1;
    Inst:=16#1;
    Attr:=16#1;
    if Inst_eipReadAttr.Done then
        xSnd:=False;
    end_if;
end_if;

Inst_eipReadAttr(
    xSnd(*Snd: BOOL*)
    , SrvIP(*SrvIP: STRING*)
    , Class(*Class: UINT*)
    , Inst(*Inst: UINT*)
    , Attr(*Attr: UINT*)
    , Data(*Data[]: USINT*)
    );

Download

最後はProject>OnlineでプロジェクトをRuntimeに転送しましょう。

Result

Ethernet/IPの通信が確立できるまで、Server OKとI/O ConnectionOKもFALSEです。

Ethernet/IPが通信確立したいServerOKとI/O Connection OKにもTrueになります!

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

シェアする

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

フォローする