PLCプログラムによるレシピ制御#
RecipeManCommands
ファンクションブロックを使うことで、PLCプログラムによってレシピファイルの読み込み、値の展開、新しいレシピの作成、ファイル書き出しを行うことができます。
各メソッドの使い方詳細は、以下のサイトをご参照ください。
https://infosys.beckhoff.com/content/1033/tc3_plc_intro/2525821323.html?id=5426534269789408632
ここに記載されているレシピのファイルがLoad、Saveされる対象のファイルは、XAR(ターゲットIPC上)のレシピファイルを指します。XAEのプロジェクトのレシピマネージャ上のデータではありませんのでご注意ください。
たとえば、ターゲットIPC内の設定されたパスのレシピファイルを直接編集し、そのあとload_commandを実行すると、編集後のレシピファイルの値を実際の変数に展開させることができます。
警告
レシピファイル全てが変数の値として展開されます。外部からの変更値変更は予期しない動作不良につながる可能性がありますので全ての変数値が与える影響についてよく理解した上でこの操作を実施してください。
ターゲットIPCのレシピファイルを直接編集すると、その内容は次回XAEからActive configurationされた場合に上書きされてしまい、IPC上で編集した内容が失われる可能性があります。XAE上のRecipe Managerの編集値とIPC上で編集した内容との整合はお客様ご自身で管理いただきますよう、ご注意ください。
1PROGRAM RecipeManager
2VAR
3 recipe_manager :RecipeManCommands; // Function block instance
4 load_command :BOOL;
5 create_command :BOOL;
6 save_command :BOOL;
7END_VAR
8
9// load_command が Trueになると、Model2レシピのファイルに定義されたデータを変数へ展開する。
10IF load_command THEN
11 recipe_manager.LoadAndWriteRecipe(
12 'MachineConfiguration',
13 'Model2'
14 );
15
16 load_command := FALSE;
17END_IF
18
19// create_command が Trueになると、Incident1という名前のレシピのファイルが生成され、現在値が保存されます。
20IF create_command THEN
21 recipe_manager.CreateRecipe(
22 'MachineConfiguration',
23 'Incident1'
24 );
25 create_command := FALSE;
26END_IF
27
28// save_command が Trueになると、Incident1レシピ、およびそのファイルへ現在値が上書き保存されます。
29IF save_command THEN
30 recipe_manager.ReadAndSaveRecipe(
31 'MachineConfiguration',
32 'Incident1'
33 );
34 save_command := FALSE;
35END_IF