IOSetAccessName() 関数
- Last UpdatedAug 16, 2021
- 1 minute read
スクリプトに IOSetAccessName() 関数を使用して、ダイナミック リファレンス アドレスを使用できます。IOSetAccessName() は、アプリケーションまたは I/O タグ変数のアクセス名のトピック名の特性をランタイム中に修正します。
注記: IOSetAccessName() 関数が処理されると、既存の通信を終了してから新しい通信を開始するまでの時間遅れが生じます。この間に新しいトピックに対して実行された POKE や書き込みは無効になります。
カテゴリ
その他
構文
IOSetAccessName("AccessName", "NodeName", "AppName", "TopicName");
引数
AccessName
新しい AppName と Topic Name の値を割り当てる既存のアクセス名。実際の文字列またはメッセージ型タグ変数です。
NodeName
割り当てる新しいノード名。実際の文字列またはメッセージ型タグ変数です。
AppName
割り当てる新しいアプリケーション名。実際の文字列またはメッセージ型タグ変数です。
TopicName
割り当てる新しいトピック名。実際の文字列またはメッセージ型タグ変数です。
備考
AccessName、AppName、および TopicName の引数に指定する値は、リテラル文字列として指定するか、その他の InTouch タグ変数または関数が返す文字列の値を指定できます。
[アクセス名の追加] ダイアログ ボックスを使用してアクセス名のフェイルオーバーのセカンダリ ソースを設定した場合、IOSetAccessName() 関数を使用してランタイム時のセカンダリ ソースの設定を変更することはできません。
注記: WindowMaker でアクセス名を作成するとき、このアクセス名が SuiteLink タイプを使用している場合は、InTouch HMI は作成するアクセス名による同じノード、アプリケーションとトピックへのアクセスができないようにします。IOSetAccessName 関数がランタイム中にアクセス名をリダイレクトしてアクセス名を複製することがないようにしてください。ランタイム中に IOSetAccessName() 関数を使用すると、SuiteLink タイプのアクセス名がリダイレクトされてトピックが複製されます。ただし、リダイレクトしたアクセス名は作動しません。
例
以下のスクリプト関数の使用により、アクセス名 MyAccess1 はアプリケーション Excel とトピック [Book1]Sheet1 をポイントするように変更されますが、現在のノード名は変更されません。
IOSetAccessName("MyAccess1", "", "EXCEL", "[Book1]Sheet1");
トピックに空の文字列が指定されると、アクセス名の現在のアプリケーションの値は更新され、トピックの値は保持されます。
たとえば、以下のスクリプトではアクセス名 MyAccess2 のアプリケーション名を EXCEL に変更しますが、現在のトピックの値は変更されません。
IOSetAccessName("MyAccess2", "", "EXCEL", "");
アプリケーション名のみに空の文字列が指定されると、タグ変数の現在のトピックの値は更新され、アプリケーションの値は保持されます。たとえば、以下のスクリプトではタグ変数 MyAccess3 のトピックを [Book2]Sheet1 に変更しますが、現在のアプリケーション名の値は変更されません。
IOSetAccessName("MyAccess3", "", "", "[Book2]Sheet1");
この例は、PLC の冗長性が必要な場合に使用できます。