EXOR#Part_10 Beckhoff とADS接続とReciple機能を使用しよう

今回の記事ではEXORのパネルとBeckhoff TwinCAT PLCをADS通信しデータ交換や基本的な考え方を説明し、なおかつレシピ機能を紹介します。

さ、はじめよう!

ADS

ADSプロトコル(ADS: Automation Device Specification)は、TwinCATシステム内のトランスポート層で、異なるソフトウェアモジュール間のデータ通信のために開発されました。

このプロトコルは、TwinCAT内のどこからでも他のツールとの通信を可能にし、別のPCやデバイスと通信する必要がある場合は、TCP/IPの上にADSプロトコルを使用します。ネットワーク化されたシステム内では、どのポイントからでもすべてのデータにアクセスできます。

Device concept

TwinCATシステムアーキテクチャでは、ソフトウェアの個々のモジュール(TwinCAT PLC、HMIなど)を独立したデバイスとして扱うことができます。

各タスクには、ソフトウェアモジュール(”サーバ “または “クライアント”)があります。

システム内のサーバは、ソフトウェアの形で実行中の”デバイス”であり、その動作はハードウェアデバイスとまったく同じです。

クライアント “は、”サーバ “のサービスを要求するプログラムであり、例えばビジュアライゼーションや、プログラム形式の “プログラミングデバイス “も含まれる。カムシャフトコントローラ、オシロスコープ、PIDコントローラなどのタスクのために、常に新しいサーバとクライアントを追加できるのもTwinCATは成長し続けてる証拠です。

これらのオブジェクト間のメッセージは、”message router “によってADS(Automation Device Specification)インターフェースを通して交換される。message router “は、システム内およびTCP/IP接続上のすべてのメッセージを管理・分配します。

また、TwinCATの”message router “は、すべてのTwinCATデバイス上に存在します。

これにより、すべてのTwinCATサーバープログラムとクライアントプログラムがコマンドとデータを交換し、メッセージの送信やステータス情報の転送などを行うことができます。

Reference Link

EXOR#Part01_JSMARTパネルを開封します!
EXOR#Part02_Siemens S71200 OPC UA Serverと繋がろう
ctrlX#OPC UA Server Appsを使ってみよう
EXOR#Part03_VNC Viewerを有効しましょう
EXOR#Part04_Codesysを入れよう
EXOR#Part05_CORVINA Cloudサービスを使ってみよう
EXOR#Part06_三菱IQRと接続とトレンド表示
EXOR#Part07_キーエンスKV8000接続とアラーム作成
EXOR#Part08 OPC UA Server機能を有効しよう

Implementation-1

最初にEXOR PanelとBeckhoff TwinCATを繋がるには必要なmessage router設定を行い、接続テストをします。 

EXOR Side

Add Protocol

Configuration>ProtocolsからDroplistでProtocolを設定します。

Drop-ListからBeckhoff ADSを設定しましょう。

EXORのBeckhoff ADS通信設定画面が表示されます。

Panel AMS Net ID

Panel AMS Net IDはEXORパネル自身のAMS Net IDになります。

設定FormatはPanel IP.1.1になります。

Panel AMS Port

パネルで使用するAMS ポート番号を指定します。

  • TwinCAT2を使用する場合、デフォルトのパネルAMSポートは32976です。
  • TwinCAT3を使用する場合、デフォルトのパネルAMSポートは32844です。

Target IP Address

Beckhoff IPCのIPアドレスを定義します。

Taget TCP Port

Beckhoff TwinCAT RuntimeのTCP Portを設定します。

Defaultでは48898ですが、32768から65535まではADS Clientの接続用の予約Portです。

Target AMS Net ID

Target AMS Net IDはTwinCAT RuntimeのAbout TwinCAT System画面から確認できます。

How can you find it?

AMS Net IDを確認するにはTwinCAT RuntimeがインストールされたIPCにAbout TwinCATを開きます。

About TwinCAT Systemの画面からAMS Net Idを確認できます。

Target AMS Port

TwinCAT システムのAMS Portを設定します。

  • TwinCAT2を使用する場合、デフォルトのターゲットAMSポートは801です。
  • TwinCAT3を使用する場合、デフォルトのターゲットAMSポートは851です。

PLC models

接続する機器に対応するモデルを選択します。機種選択は正しく設定するために非常に重要です。

Summary

こちらはEXOR側のBeckhoff ADS接続設定になります。

Beckhoff Side

Add Routes

Beckhoff Controllerでは、HMIデバイスからの接続を許可するために、いくつかの特別な設定が必要です。TwinCAT3 XAEからStatic Routingを設定する必要があります。

まず、TwinCAT3システムをConfigu Modeでリセットします。

Project>SYSTEM>Routesを開きます。

Routes画面が表示されます。

Static Routes 画面を開きます。

左下にあるAddボタンでRoutesを追加します。

Add Route Dialog画面が表示されます。

Advanced SettingsでRouteの設定を行います。

先程と比べれば設定できる項目がかなり増えました。

Route Name

Route Name(target)を接続するClientの名前を入力します。

AmsNetId

AmsNetIdはTwinCAT Runtimeに接続するADS ClientのAms Net Idになります。

今回の場合はEXORの192.168.5.236.1.1です。

Transport Type

Transport TypeはTCP_IPにしてください。

Address Info

Address InfoはTwinCAT Runtimeに接続するADS ClientのIP アドレスになります。

Target Route

Target RouteはStaticで結構です。

Add Route

最後はAdd RouteでRouteを追加しましょう。

Secure ADS のCheckboxを外しOKで設定を保存します。

Done!Static RoutesにJMOBILE のルートが追加されました。

Current Routesも同じです。

Add Data

通信確認するためのデータを追加します。

中に実数の配列を定義します。

MAINプログラムを開きます。

中にINTの配列も定義しましょう。(注意するには%I*は必須ではありません)

Compile Configure

次はプロジェクトをコンパイルする設定を変更します。PLCのプロジェクトをクリックします。

Settings>Target fileのところにTMC FileとTPY FileもCheckboxを入れます。

Target Files

Target Filesグループボックスでは、ターゲットシステムでブートプロジェクトを作成する際に、どの情報を”\Boot\Plc  “フォルダに転送するかを設定できます。

TMC File

TwinCAT Module Classの略です。

TPY File

TPYFileにはプロジェクト情報、ルーティング情報、コンパイラ情報、ターゲットシステム情報などが含まれています。

Build

プロジェクトをビルドするためBuild>Build Solutionします。

コンパイルされたプロジェクトに.ptyというFileが生成されました。

Back to EXOR Side

ベッコフシステムのデータはタグに基づいていて、コントローラの内部メモリの構成は固定ではなく、開発時にユーザーが設定されています。それらのデータ項目はTagと呼ばれる文字列で識別できます。

TwinCAT開発環境は、アプリケーションの設定において、各コントローラ用に作成されたタグのリストを生成します。

EXORのプロジェクトは、開発時にTwinCAT PLC制御プログラミングソフトウェアで割り当てられたタグ名を参照する必要があります。Designer Tag Editorは、ベッコフソフトウェアで生成されたタグファイルの直接インポートをサポートしています。

Add Tag

Configuration>Tags>先程追加したBeckhoff Protoclを選び>Import Dictionaryします。

TwinCAT V1.0を選び>OKで進みます。

先程の.tpy FileをImportしましょう。

TagをImportするとき、.tpyファイルからすべてのTagをImportするか、またはTagのサSubsetのみをImportするFilterを適用するかを選べます。

Done!今回はImport Allなので.tpyの中にあるTagを全部プロジェクトにImportできます。

中に必要なTagをプロジェクトに生成しましょう。

Filter?

次はEXORのFilter例を説明します。例えば下記のFunction Blockとプログラムを作成しました。fbMotor2のInstanceのみがHMIという文字がついています。

FUNCTION_BLOCK FB_Motor

VAR_INPUT

bStartMotor: BOOL;

bReset: BOOL;

END_VAR

VAR_OUTPUT

bMotorOn: BOOL;

bAlarm: BOOL;(* HMI Thermal alarm *)

END_VAR

VAR

sData: STRING;

bResetStatistics: BOOL; (* HMI Reset statistics *)

END_VAR

VAR PERSISTENT

stStat: ST_MotorStats; (* HMI Motor statistics *)

END_VAR



Function block instances declaration:

VAR

fbMotor1: FB_Motor;

fbMotor2: FB_Motor; (* HMI only show Motor 2!! *)

END_VAR

FilterのところにHMIを入力しOKをします。

以下のTagのみImportになります。

MAIN/fbMotor2/bAlarm
MAIN/fbMotor2/bResetStatistics
MAIN/fbMotor2/ST_MotorStats

Result

Done!WiresharkからAMSの Protocolがありました。

それはADS ProtocolのPacketです。

Recipe Implementation

次はEXORのレシピ機能を使用します。

レシピは、特定のアプリケーションの要件で編成されたタグ値のCollectionsです。

たとえば、午前、午後、夕方に部屋の変数(温度と湿度)を制御する必要があるとしましょう。あなたは3つのセット(午前、午後、夕方)を作成し、適切なタグ値を設定します。

レシピの各要素をタグに関連付け使用すれば、メモリに制限のあるコントローラの機能をレシビ機能として拡張することができます。そのレシピデータにはすべてのコントローラデータアイテムが含まれますが、データはコントローラから直接読み込まれるのではなく、HMIデバイスの関連するレシピエレメントから読み込まれます。

レシピデータはJMobile Studioに設定し、Userはデータレコードの各要素のデフォルト値を指定できます。JMobile HMI Runtimeでは、データを編集して新しいデータファイルに保存することができ、レシピデータの変更はディスクに保存されます。

EXOR Side

Insert Recipe

Recipe>右クリック>Insert recipeします。

新しいRecipeが追加され、ダブルクリックしRecipe画面を開きます。

こちらはRecipeの編集画面です。

Add Recipe Elements

+ButtonでRecipe 要素を追加します。

レシピ要素と接続するTagを設定します。

今回は先程Beckhoff TwinCAT プロジェクトに追加されたGVL/datasという実数配列を使用しましょう。

Done!Index=0はElement0で、使用するTagはBeckhoffのGVL/datas[0]になりました。

同じの操作で4つのレシビ要素を追加しましょう。

Storge Device

こちらのICONでレシピの保存場所を設定できます。

DefaultではLocalになります。

注意するにはレシピ設定ファイルはプロジェクト保存時に自動的に作成され、プロジェクトの data Sub Folderに保存されます。外部記憶装置を使用するには、このフォルダを外部装置にコピーする必要があります。(下図は私のSampleプロジェクトのDirectoryで、DataというSub Folderにレシピの設定Fileが保存されています)

Element name

各Elementにわかりやすい名前を定義しましょう。

Add Recipe Set

Name of set

レシピのPropertiesからNumber of setという項目があり、つまりこのレシピは何個あるかを設定できます。

今回の記事では3つを設定します。

Recipeの設定画面にSet0,Set1,Set2という項目が増えました。

Rename the set

Nunber of setのSub menuにはセット数にあるFieldが表示されます。

アプリケーションに合わせてRecipe Set名を設定しましょう。

Configure screen

次はレシピ画面を作成します。Widget GalleryからRecipes Folderを開くとRecipe setとRecipe menu Objectがあります。

  • Recipe set:
    • レシピをアップロードまたはダウンロードするレシピセットを選択できます。
  • Recipe menu
    • プロジェクトに多くのレシピが作成された場合、このウィジェットを使用してすべてのレシピを管理し、それぞれのレシピに必要なセットを選択します。

Add Recipe set

今回はRecipe set1つしかありませんので、Recipe setを選び、画面に追加しましょう。

Done!Recipe set Objectが追加されました。

Configure Recipe set

次はRecipe setのObjectと繋がるRecipe setを設定するため、Recipe set ObjectのProperties画面を開きます。

Recipe NameのDrop listからRecipesを設定しましょう。

Recipe Name/Recipe Status

数字ラベルと文字らbるを追加し、Recipe Set名と状態を表示します。

Status

Recipe Setの状態を取得できる変数がEXOR用意されています。SourceのところからRecipe>表示したいRecipe>Statusを設定しましょう。

Name

Recipe set名と文字列ラベルの接続も同じ操作です。

Recipe Element

次はRecipe set#0の要素を表示できるようにします。

文字列ラベルとR/W(Read/Writeできる)の数字ラベルを追加します。

Name

Recipesにある各要素の名前はCurrentSelectedSet >#0(つまりいま選択中のRecipe Set)のName変数を参照すればよいです。

Value

同じく、Recipesにある各要素の現在値はCurrentSelectedSet >#0(つまりいま選択中のRecipe Set)のValue変数を参照すればよいです。

Beckhoff tags

次は画面にBeckhoff PLC のtagsを追加します。

Recipeの要素と繋がってるPLC Tagsを設定しましょう。

Done!

Add Status Message

今度はRecipeのStatus Messageを追加します。先程のStatus数字表示と同じですが、Messageで表示させたほうがわかりやすいと思います。

Done!

#0のStatus変数と接続しましょう。

こちらはStatus値に相当する意味になります。

CodeFunctionDescripion
0Set modified選択してるRecipe setが変更された
1Download triggeredRecipe Donwload操作がトリガーされた
2Download DoneRecipe Donwload動作が完了
3Download ErrorRecipe Donwload動作がエラーあり
4Upload triggeredRecipe Upload動作がトリガーされた
5Upload doneRecipe Upload動作が完了
6Upload ErrorRecipe Upload動作がエラーあり
7General Errorエラー

Current Recipe 

最後は現在選択されているRecipe setを表示するため、文字列ラベルを追加します。

CurrentSelectSet>Nameを設定します。

Download

初めてRecipe機能を使用する、もしくはRecipe機能が変更ある場合、Downloadするとき”Delete runtime dynamic files”のCheckboxを入れてからDownloadしましょう。

Result

RecipeのDownload Upload機能はBeckhoff PLC Tagsと連動していますね。

Status Messageにも動作に合わせて適切に表示されています。

いま選択してるReciple Setに沿って表示も変わってくれます。

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

シェアする

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

フォローする