Beckhoff#Recipe Managerを使ってみよう

Recipes機能を使用することにより 、コントローラー上の特定の変数の一連の値(Recipes定義)を同時に変更または読み出すことができます。

Recipesの基本設定(保存場所やフォーマットなど)は、Recipe Managerで定義されます。このオブジェクトの下に、複数のレシピ定義ができます。さらに、Recipes定義には、それに含まれる変数の1つ以上のRecipesが含まれます。Recipesは、特定の変数の値から構成されます。Recipesはファイルに保存したり、ファイルから直接コントローラーに書き込んだりすることができます。

Recipesは、TwinCATプログラミングインターフェース、可視化要素、またはアプリケーションプログラムを介してロードすることができますが、TwinCATのHPによると、

アプリケーションプログラムでRecipesを使用する場合は、低い優先度を持つ独自のタスクを介してこのプログラムセクションを呼び出すことを勧めます。

Implementation

Add Recipe Manager

TwinCATプロジェクトからRecipe Manager を追加します。プロジェクト右クリック>Add>Recipe ManagerでRecipe Managerをクリックします。

Openで進みます。

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

Configure The Recipe Manager

次はRecipe Managerを設定します。

Storage Type

Recipe はどんな形で保存するかを設定します。

  • text-based: TwinCATは、設定されたFormatを使用して、人間が読みやすい形式でレシピを保存します。
  • binary: TwinCATは、読み取り不可能なバイナリ形式でレシピを保存します。この形式では、メモリ容量が少なくて済みます。

File Path

こちらはRuntime system上の相対パスを設定します。

このパスは、ターゲットシステム上のランタイムファイルのディレクトリに作成されます。TwinCATは、コントローラへのダウンロード時に、このディレクトリに各レシピのファイルを作成します。ファイルは、PLCプロジェクトが再起動するたびに、レシピマネージャにロードされます。

File Pathを設定するためにFile Pathの隣りにある…ボタンをクリックしましょう。

保存先を設定してください。

Done!今回はDesktopのMyData というFolderに設定しました。

File Extension

レシピファイルのファイル拡張子になります。

下記の設定では、レシピファイルの標準的な名前は <Recipe>.<Recipe definition>.<File extension>のようなFormatです。

次はRecipe内に必要な項目を設定していきましょう。

>、<のボタンから必要なColumnsを移動できます。

今回はVariables・Current Value・Type・Nameその4つのColumnsをRecipeの中に格納するようにしましょう。

General

次はGeneralのTabを開いてみましょう。

ここでレシピの自動保存や書き込むの与えがレシピのRangeより越えたときの操作などを設定できます。

Save

最後はSave as defaultで設定を保存しましょう。

Add Recipe Definition

Recipe Managerを追加したら次はRecipe Definitionを挿入します。そのRecipe Definitionはあなたのレシビにどんな要素があるかを定義するんです。

例えば、ビールでは水・麦・ホップ3つの原材料ですが、ビールAなら水・麦・ホップこの量で、期間限定のビールはまた別の量などだとイメージしやすいと思います。

Recipe Manager右クリック>Recipe Definitionを作成します。

レシピ名を設定しましょう。

Done!これはあなたの初めてのRecipe です。

Define GVL

TwinCATプロジェクトにレシピ用の変数を追加します。

Add Variables

次はRecipe に変数を追加するため…のボタンをクリックします。

先程GVLで定義した変数を選びましょう。

Done!

同じの操作でGVL内の変数を全部追加していきましょう。

Add Some Complex

TwinCATのRecipe Managerに追加できるRecipe 変数は標準のデータタイプだけですか?違います!構造体と配列も可能です。

まずプロジェクト内に構造体を追加してみます。

GVL内に構造体の配列を定義します。

先程のRecipe DefinitionからmySTDataの変数だけを選び、Okで確定しましょう。

Done!すべての変数も自動的に追加されました。

Library

実際は手動でライブラリをImportする必要がありませんが、Recipe Definitionをプロジェクトに追加するときにReferencesから自動的RecipeManagementライブラリが追加されます。今回の記事ではプログラムに実際使用した3つmethodを紹介します。

中にレシピ操作に必要なFunction Blockが含まれています。

Method CreateRecipe

このメソッドは指定されたレシピ定義で新しいレシピを作成します。その後、現在の PLC 値を新しいレシピに読み込み、標準的な名前のレシピファイルとして保存します。標準名は <Recipe>.<Recipe definition>.<Recipe extension>。

VAR_INPUT

NameData typeDescription
RecipeDefinitionNameSTRINGレシピ定義の名前
RecipeNameSTRINGレシピ名

Return value

NameData typeDescription
CreateRecipeDWORDERR_RECIPE_DEFINITION_NOT_FOUNDERR_RECIPE_ALREADY_EXISTERR_RECIPE_NOMEMORYERR_NO_RECIPE_MANAGER_SETERR_OK

Method ReadAndSaveRecipe

このメソッドは現在の PLC 値をレシピに読み込み、レシピを標準的な名前のレシピファイルに保存します。標準名は<Recipe>.<Recipe definition>.<Recipe extension> です。注意するのは既存のファイルの内容は上書きされます。

VAR_INPUT

NameData typeDescription
RecipeDefinitionNameSTRINGレシピ定義の名前
RecipeNameSTRINGレシピ名

Return value

NameData typeDescription
ReadAndSaveRecipeDWORDERR_RECIPE_DEFINITION_NOT_FOUNDERR_RECIPE_NOT_FOUNDERR_RECIPE_SAVE_ERRERR_NO_RECIPE_MANAGER_SETERR_OK

Program

PROGRAM MAIN
VAR
RecipeManCommands:RecipeManCommands;

MyRecipeName :STRING:=’MyRecipes’;
MyRecipeFile :STRING:=’MyRecipesFile’;

R_TRIG_CreateReciple :R_TRIG;
bCreateReciple :BOOL;
w32CreateRciple :DWORD;

R_TRIG_SaveReciple :R_TRIG;
bSaveReciple :BOOL;
w32SaveRciple :DWORD;

R_TRIG_ReadReciple :R_TRIG;
bReadReciple :BOOL;
w32ReadRciple :DWORD;

END_VAR



R_TRIG_CreateReciple(CLK:=bCreateReciple);
R_TRIG_SaveReciple(CLK:=bSaveReciple);
R_TRIG_ReadReciple(CLK:=bReadReciple);

IF R_TRIG_CreateReciple.Q THEN

RecipeManCommands.CreateRecipe(
RecipeDefinitionName:=MyRecipeName
,RecipeName:=MyRecipeFile
);
END_IF


IF R_TRIG_SaveReciple.Q THEN

RecipeManCommands.ReadAndSaveRecipe(
RecipeDefinitionName:=MyRecipeName
,RecipeName:=MyRecipeFile
);
END_IF

IF R_TRIG_ReadReciple.Q THEN

RecipeManCommands.LoadAndWriteRecipe(
RecipeDefinitionName:=MyRecipeName
,RecipeName:=MyRecipeFile
);
END_IF

Screen

こちらは操作画面になります。

Result

プログラムから直接bCreateRecipleをTrueにすると、MyDataのFolderも自動的にMyRecipesFileというFileが作成されます。

Nodepadを開いたらRecipe の要素も全部格納されています。

今度は画面から操作してみます。レシピ名をR123に設定し、CreateボタンをクリックしレシピFileを作成します。

Done!R123というRecipe Fileが生成されました。

画面にRecipe の要素をいくつかを変更し、SaveボタンをクリックしてRecipe を保存します。

Done!R123 レシピFileの要素の値も反映しました。

最後はレシピ名を別のFileに指定しLoadボタンをクリックし別のレシピを読み込んでみました。

Download

下記のLinkからサンプルプロジェクトをDownloadしてください。

https://github.com/soup01Threes/TwinCAT3/blob/main/TwinCAT3_RecipleManager.7z

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

シェアする

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

フォローする