- ターゲットの起動時のパラメータはどのように指定するか?また、どのような意味があるのか?
ISaGRAF Ver.4/5ターゲットの各アプリケーション(ISaVM,ISaCMG,ISaISX...)とISaIXLライブラリ(他のクライアントの窓口)は、原則として起動時に構成を指定する必要があります。例えばコンフィグレーションマネージャには起動可能なリソースの最大数を指定します。
通常これらのパラメータは起動時にのみ参照されます。パラメータを指定しないと、デフォルト値が適用されます。
また、起動パラメータの設定方法はターゲットにより異なります。NTターゲットの場合、拡張子が"ini"のファイルで指定することもできます。
ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9/QNXターゲット | IXLクライアント
一般的な規則
パラメータ名の規則
パラメータ名には次のものの組み合わせになります。
パラメータを使うアプリケーション名コンポーネント名。これは、パラメータ名がアプリケーションそのものを表わさないが、内部のコンポーネント(I/O、バインディング、IXLなど)に由来するような場合です。これはこれらのコンポーネントでパラメータ名の競合を防ぐためのものです。
【例】TCP/IPバインディングドライバの "KVBETCP"バーチャルマシンのスレーブ番号(必要な場合のみ)パラメータ名そのもの
値の指定方法
一般的には、起動時にC言語のmain関数に渡される引数を使います。ターゲットアプリケーションの場合はシステムレイヤのdsys0arg.cファイルをリンクすることで、下記のようなコマンドライン管理機能を利用できます。
パラメータ名の前に '-' をつけます。コンポーネント名がある場合はパラメータ名の後ろに\とともに付記します。'='記号でパラメータ名と渡す値を区切ります。複数の値を渡す場合は、カンマ(,)で区切ります。パラメータ値に空白を含まる場合は、OSにも依存しますが、"パラメータ=値"のように全体をダブルクォーテーション(")で囲みます。
【例】
-ResNbr=20
-s=2,5,6
-HSD\RcvMaxMsg=10
ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9/QNXターゲット | IXLクライアント
|
▲先頭に戻る
ワークベンチ
ワークベンチはターゲットの1リソースあたり2個、1コンフィグレーションあたり1個のIXL接続を使用します。
ワークベンチの binディレクトリで、下記の各INIファイルを修正します。
(1)DTA.INI ファイル
[IXL]
CnxNbr = (リソース数 + 1) ...
- ターゲットの起動時のパラメータはどのように指定するか?また、どのような意味があるのか?
ISaGRAF Ver.4/5ターゲットの各アプリケーション(ISaVM,ISaCMG,ISaISX...)とISaIXLライブラリ(他のクライアントの窓口)は、原則として起動時に構成を指定する必要があります。例えばコンフィグレーションマネージャには起動可能なリソースの最大数を指定します。
通常これらのパラメータは起動時にのみ参照されます。パラメータを指定しないと、デフォルト値が適用されます。
また、起動パラメータの設定方法はターゲットにより異なります。NTターゲットの場合、拡張子が"ini"のファイルで指定することもできます。
一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9/QNXターゲット | IXLクライアント
一般的な規則
パラメータ名の規則
パラメータ名には次のものの組み合わせになります。
パラメータを使うアプリケーション名コンポーネント名。これは、パラメータ名がアプリケーションそのものを表わさないが、内部のコンポーネント(I/O、バインディング、IXLなど)に由来するような場合です。これはこれらのコンポーネントでパラメータ名の競合を防ぐためのものです。
【例】TCP/IPバインディングドライバの "KVBETCP"バーチャルマシンのスレーブ番号(必要な場合のみ)パラメータ名そのもの
値の指定方法
一般的には、起動時にC言語のmain関数に渡される引数を使います。ターゲットアプリケーションの場合はシステムレイヤのdsys0arg.cファイルをリンクすることで、下記のようなコマンドライン管理機能を利用できます。
パラメータ名の前に '-' をつけます。コンポーネント名がある場合はパラメータ名の後ろに\とともに付記します。'='記号でパラメータ名と渡す値を区切ります。複数の値を渡す場合は、カンマ(,)で区切ります。パラメータ値に空白を含まる場合は、OSにも依存しますが、"パラメータ=値"のように全体をダブルクォーテーション(")で囲みます。
【例】
-ResNbr=20
-s=2,5,6
-HSD\RcvMaxMsg=10
一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9ターゲット | IXLクライアント | ▲先頭に戻る
ワークベンチ
ワークベンチはターゲットの1リソースあたり2個、1コンフィグレーションあたり1個のIXL接続を使用します。
ワークベンチのbinディレクトリで、下記の各INIファイルを修正します。
(1)DTA.INI ファイル
[IXL]
CnxNbr = (リソース数 + 1) × 3
[IXL] セクションでは、ワークベンチのデバッガから全コンフィギュレーションへのIXL経由での接続数を指定します。
Ver4.03でのデフォルト値は16です。つまり、リソース数は7個に制限されます。
Ver4.03以降では、デフォルト値は102です。つまり、リソース数は33個に制限されます。
制限を越えると、下記のエラーが発生することがあります。
ワークベンチの表示
「リソースへの接続中にエラーが発生しました。DTAサーバシステムエラー 20000539」
DTA_SRVの画面
-16 20000539
エラーの意味
-16:DTA サーバシステムエラー。
539: ...
- ターゲットが動作している時に、ターゲットを停止させないでサイクルタイムを変更することは可能か?
ワークベンチとISaRAFターゲット間のI/Fに標準で用意されている為シミュレーション機能、デバッグ機能を使用することで動作中でも容易に変更可能です。
但し、最短のサイクルタイムは1msとなります。
...
- ターゲットの起動時のパラメータはどのように指定するか?また、どのような意味があるのか?
ISaGRAF Ver.4/5ターゲットの各アプリケーション(ISaVM,ISaCMG,ISaISX...)とISaIXLライブラリ(他のクライアントの窓口)は、原則として起動時に構成を指定する必要があります。例えばコンフィグレーションマネージャには起動可能なリソースの最大数を指定します。
通常これらのパラメータは起動時にのみ参照されます。パラメータを指定しないと、デフォルト値が適用されます。
また、起動パラメータの設定方法はターゲットにより異なります。NTターゲットの場合、拡張子が"ini"のファイルで指定することもできます。
一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9/QNXターゲット | IXLクライアント
一般的な規則
パラメータ名の規則
パラメータ名には次のものの組み合わせになります。
パラメータを使うアプリケーション名コンポーネント名。これは、パラメータ名がアプリケーションそのものを表わさないが、内部のコンポーネント(I/O、バインディング、IXLなど)に由来するような場合です。これはこれらのコンポーネントでパラメータ名の競合を防ぐためのものです。
【例】TCP/IPバインディングドライバの "KVBETCP"バーチャルマシンのスレーブ番号(必要な場合のみパラメータ名そのもの
値の指定方法
一般的には、起動時にC言語のmain関数に渡される引数を使います。ターゲットアプリケーションの場合はシステムレイヤのdsys0arg.cファイルをリンクすることで、下記のようなコマンドライン管理機能を利用できます。
パラメータ名の前に '-' をつけます。コンポーネント名がある場合はパラメータ名の後ろに\とともに付記します。'='記号でパラメータ名と渡す値を区切ります。複数の値を渡す場合は、カンマ(,)で区切ります。パラメータ値に空白を含まる場合は、OSにも依存しますが、"パラメータ=値"のように全体をダブルクォーテーション(")で囲みます。
【例】
-ResNbr=20
-s=2,5,6
-HSD\RcvMaxMsg=10
一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9ターゲット | IXLクライアント | ▲先頭に戻る
ワークベンチ
ワークベンチはターゲットの1リソースあたり2個、1コンフィグレーションあたり1個のIXL接続を使用します。
ワークベンチのbinディレクトリで、下記の各INIファイルを修正します。
(1)DTA.INI ファイル
[IXL]
CnxNbr = (リソース数 + 1) ...
- ターゲットを稼働させながらプログラムの更新(オンライン修正)は可能か?
可能ですが、下記の制約があります。
制限事項
1. コンパイラ型アプリケーションで動作している場合。
2. 変数名、プログラム(関数)名、SFCプログラムの構造に変更がある場合。
ISaGRAFのターゲットは、内部に変数データベースを持っています。デバッガなどからこれらの変数の値を変更することはできますが、オンラインで変数そのものを追加・名前の変更・削除することはできません。
なお、ISaGRAF Ver.4.10以降では、ある程度の変数の追加が可能になっています。
以下はISaGRAFターゲットの変数とみなされるものの一覧です。これらがオンライン修正の制約を受けます。
変数
ISaGRAFワークベンチの辞書で宣言するものです。変数名を変更したり、追加・削除するとオンライン修正はできなくなります。
対策として、あらかじめ余分な未使用の変数を予約しておき,今後変更があるときにそれらを利用する方法があります。
ファンクションブロックのインスタンス
C言語またはIEC言語で書かれているファンクションブロックのインスタンスも変数と同様です。インスタンスが追加・削除されると、オンライン修正はできなくなります。
FBD言語やLD言語では,ファンクションブロックを配置すると自動的に宣言されたインスタンスになってしまいます。対策として、辞書で宣言したFBインスタンスを使うほうがオンライン修正しやすくなります。
ファンクションブロックインスタンスのパラメータ名
ST言語、IL言語、SFC要素のアクションで記述しているパラメータ名も、変数と同様の扱いになります。プログラム中のパラメータの記述を削除したり、追加すると、オンライン修正ができなくなります。
対策としては、コードを変更する場合、削除するのではなく、条件判断でそのコードが実行されないようにします。
【例】ファンクションブロック"TON"のインスタンス"TON1"を実行しないように修正する場合
修正前
ACTION (N) :
ton1(true,t#5s);
t_cnt := ton1.et;
b2:=ton1.q;
END_ACTION;
修正後:if構文の内容は実行されなくなります。
ACTION (N) :
if FALSE then
ton1(true,t#5s);
t_cnt := ton1.et;
b2:=ton1.q;
END_IF;
END_ACTION;
SFCのステップ
SFCステップは1つ1つが活性状態時間とフラグを保持しています。SFCステップの追加・削除により変数データベースが変化するため、オンライン修正ができなくなります。
コード生成時に自動的に作られる変数
ISaGRAF コンパイラは,複雑な記述を解決するために「隠された」一時的な変数を生成します。
【例】
上記の"+"と"-"命令の間に、仮の変数が生成されます。
プログラム内容によっては,記述の変更は,この「隠された」変数の構成の変更につながり,オンライン修正を不可能にしてしまいます。
ISaGRAF V3.30以降での回避方法
ISaGRAF V3.30以降では、一時的な変数の数が変わっても対応できるようになっています。
ISA.INIファイルで以下のエントリを追加してください。一時的な変数の最小数が固定されます。この範囲内での増減は、オンライン修正に影響しなくなります。また、コード生成時に一時的な変数の数がこれらの数を超える場合,警告メッセージを出力するようになります。
【例】
[DEBUG]
MNTVboo=8 ; ブール型変数
MNTVana=4 ; 整数&文字列型
MNTVtmr=4 ; ...
- ターゲットでのエラー表示は可能か?
エラーコード(アプリケーションの異常、通信関係,サイクルタイムオーバ等々)が設定されており、ワークベンチやターゲットで検出することが出来ます。
ワークベンチではデバッガの実行時にターゲット側のエラー内容の表示ができます。
ターゲットで表示できるかどうかはターゲットのハード構成やOSに依存します。
ISaGRAF Ver.4/5の場合
NTターゲット...エラーコードをコンソールに出力します。
...
- ターゲットを使った製品をエンドユーザに客先に出荷している。もし、マシンのハードディスクが壊れるなど原因で、ターゲットを再度インストールする必要がある。このような場合に備えて、ターゲットのマスターディスクディスクをコピーしてエンドユーザに渡しておきたいが可能か?
エンドユーザでのライセンス管理が御社で可能であれば、つまり、エンドユーザが無断で別のマシンにコピーして使用することがないのであれば御社の責任で行ってもらってかまいません。
材質
印刷面
↑
FLEXmarkフィルム
糊
印刷
COMPUcalフィルム
糊
シリコンの台紙
FLEXmarkフィルム(FLEXcon社の商標です)
光沢あり、透明、厚さ25μm、アクリル樹脂の層に固着、シリコンの台紙つき。
COMPUcalフィルム(FLEXcon社の商標です)
光沢無し、銀色、厚さ50μm、ポリエステル
UL認定について
UL認定 AM8955のステッカーです。
使用しているフィルムは屋内及び屋外での使用についてUL認定されています(Film MH10170,section PGGU2,Marketing and labelling Systems Materials)。
PGDQ2 1995年2月22日
Component-Marketing and Labelling Systems
RHONDET-MALBERT MH15451(M)
...
- ターゲットに必要なメモリサイズは?
ターゲットのバージョンによって異なります。
ISaGRAF Ver.4/5の場合
ISaGRAF Ver.4/5のターゲットサイズは以下の通りです。 (単位:KB)
各タイトルは実行されるプログラム/タスク名です。
マルチタスク実装の場合
ターゲットタイプ
ISaGRAF
ETCP
ISaRSI
ISaVM
ISaIXD
NT Target M
54
62
57
149
74
NT Target L
54
62
57
146
74
OS-9 Target M
30
52.4
48.1
143
94.6
OS-9 Target L
30
52.4
48.1
141
94.6
注:M...ミディアムモデル
L...ラージモデル
ターゲットタイプ
ISaGRAF.o
USaSOB.o
VxWorks Target M
269
1.41
VxWorks Target L
269
1.41
注:VxWorksターゲットでは、ISaGRAF.o には下記のものが含まれています。
ETCP.o
ISaRSI.o
CMG.o
ISaIXD.o
各タスクの目的
ISaVM-ワークベンチからダウンロードされたTICコードを実行するバーチャルマシン
ISaRSI-シリアルリンク(ワークベンチとハードウェアプラットフォーム間の通信)の管理
ETCP-イーサネットリンクの管理
IXD(ISaGRAF Exchange Dispatcher)-リモートワークベンチとの通信用
ISaGRAF-他の全タスクの管理(スタート、ストップ、情報の取得等)を管理するコンフィギュレーションマネージャ
マルチタスク実装のハードウェアプラットフォーム上では、以下のタスクが開始します:
"ISaGRAF"
"RSI"か"ETCP" のどちらか
"IXD"
1つ以上の"ISaVM"
シングルタスク実装の場合 (V4.10 以降)
(単位:KB)
ターゲットタイプ
ISaGRAF ...
- ターゲット実行時のサイクルタイム(プログラム実行時間)は表示できるか?
ISaGRAF Ver.4/5の場合
1. デバッガを起動し、サイクルタイムを表示させたいリソースを選択します。
2. メニューの「デバッグ」-「診断」メニューを実行します。下記のものが表示されます。
サイクルタイムの設定値現在のサイクルタイム最大値設定値を超えた回数の表示
また、ターゲット側でもシステム変数を参照することでこれらの値をプログラム上で検出できます。
...
- ターゲットを実行するプラットフォームがセグメント形式のメモリの場合、VA(変数アドレス)やアプリケーションコードに影響を与えるか?
あるいはターゲット開発の際に特殊な実装が必要か?
いいえ。特別な計算やセグメントにあわせるようなアプリケーションコードの差異はありません。
ターゲットのメモリがセグメント化されている場合、ワークベンチもターゲットのカーネルも、セグメントのサイズの情報を持っています(ターゲットの場合、ITGTDEF_SEGMENT の値)。
ターゲットをコンパイルするときは、セグメントの有無を吸収するようなマクロが利用されます。これは、メモリのポインタが次のセグメントを指すようにすべきかどうかをチェックするものです。このため、ターゲットを移植する場合、セグメント化されていてもメモリを連続したものとして(透過的に)扱うことができます。
ただし、セグメントが存在する場合、境界チェックのための演算が必ず行われますので実行速度は低下します。
...
- ターゲットのメモリ配置(アライメント)の注意すべき点
ISaGRAF Ver.4/5カーネルを新しいOSに移植する場合、ワークベンチデータベースで設定したメモリ配置の設定オプションは、ターゲットのCコンパイラやCPUのメモリ配置(構造体内のバイトデータのアライメント)の仕様を一致させる必要があります。
ISaGRAF Ver.4/5の場合
ターゲット側のメモリ配置の仕様は、以下のような簡単なプログラムで確認できます。
2つの構造体を作り、そのサイズを調べます。
typedef unsigned char uchar;
typedef unsigned long uint32;
typedef struct typStruct2Types{
uchar u1;
uint32 u2;
} structA;
typedef struct typStruct3Char{
uchar u1;
uchar u2;
uchar u3;
} structB;
main(){
int n1=0;
int n2=0;
n1=sizeof(structA);
n2=sizeof(structB);
}
実行結果のn1,n2の値でアライメントがわかります。以下の通りになります。
n1 = ...
- ターゲットに必要なメモリサイズは?
ターゲットのバージョンによって異なります。
ISaGRAF Ver.4/5の場合
Ver.4/5のターゲットサイズは以下の通りです。 (単位:KB)
各タイトルは実行されるプログラム/タスク名です。
マルチタスク実装の場合
ターゲットタイプ
ISaGRAF
ETCP
ISaRSI
ISaVM
ISaIXD
NT Target M
54
62
57
149
74
NT Target L
54
62
57
146
74
OS-9 Target M
30
52.4
48.1
143
94.6
OS-9 Target L
30
52.4
48.1
141
94.6
注:M...ミディアムモデル
L...ラージモデル
ターゲットタイプ
ISaGRAF.o
USaSOB.o
VxWorks Target M
269
1.41
VxWorks Target L
269
1.41
注:VxWorksターゲットでは、ISaGRAF.o には下記のものが含まれています。
ETCP.o
ISaRSI.o
CMG.o
ISaIXD.o
各タスクの目的
ISaVM-ワークベンチからダウンロードされたTICコードを実行するバーチャルマシン
ISaRSI-シリアルリンク(ワークベンチとハードウェアプラットフォーム間の通信)の管理
ETCP-イーサネットリンクの管理
IXD(ISaGRAF Exchange Dispatcher)-リモートワークベンチとの通信用
ISaGRAF-他の全タスクの管理(スタート、ストップ、情報の取得等)を管理するコンフィギュレーションマネージャ
マルチタスク実装のハードウェアプラットフォーム上では、以下のタスクが開始します:
"ISaGRAF"
"RSI" か "ETCP" のどちらか
"IXD"
1つ以上の "ISaVM"
シングルタスク実装の場合 (Ver4.10 ...
- ターゲットが動作している時に、ターゲットを停止させないでサイクルタイムを変更することは可能か?
ワークベンチとISaRAFターゲット間のI/Fに標準で用意されている為シミュレーション機能、デバッグ機能を使用することで動作中でも容易に変更可能です。
但し、最短のサイクルタイムは1msとなります。
...
- ターゲットを稼働させながらプログラムの更新(オンライン修正)は可能か?
可能ですが、下記の制約があります。
制限事項
1. コンパイラ型アプリケーションで動作している場合。
2. 変数名、プログラム(関数)名、SFCプログラムの構造に変更がある場合。
ISaGRAFのターゲットは、内部に変数データベースを持っています。デバッガなどからこれらの変数の値を変更することはできますが、オンラインで変数そのものを追加・名前の変更・削除することはできません。
なお、ISaGRAF Ver.4.10以降では、ある程度の変数の追加が可能になっています。
以下はISaGRAFターゲットの変数とみなされるものの一覧です。これらがオンライン修正の制約を受けます。
変数
ISaGRAFワークベンチの辞書で宣言するものです。変数名を変更したり、追加・削除するとオンライン修正はできなくなります。
対策として、あらかじめ余分な未使用の変数を予約しておき,今後変更があるときにそれらを利用する方法があります。
ファンクションブロックのインスタンス
C言語またはIEC言語で書かれているファンクションブロックのインスタンスも変数と同様です。インスタンスが追加・削除されると、オンライン修正はできなくなります。
FBD言語やLD言語では,ファンクションブロックを配置すると自動的に宣言されたインスタンスになってしまいます。対策として、辞書で宣言したFBインスタンスを使うほうがオンライン修正しやすくなります。
ファンクションブロックインスタンスのパラメータ名
ST言語、IL言語、SFC要素のアクションで記述しているパラメータ名も、変数と同様の扱いになります。プログラム中のパラメータの記述を削除したり、追加すると、オンライン修正ができなくなります。
対策としては、コードを変更する場合、削除するのではなく、条件判断でそのコードが実行されないようにします。
【例】ファンクションブロック"TON"のインスタンス"TON1"を実行しないように修正する場合
修正前
ACTION (N) :
ton1(true,t#5s);
t_cnt := ton1.et;
b2:=ton1.q;
END_ACTION;
修正後:if構文の内容は実行されなくなります。
ACTION (N) :
if FALSE then
ton1(true,t#5s);
t_cnt := ton1.et;
b2:=ton1.q;
END_IF;
END_ACTION;
SFCのステップ
SFCステップは1つ1つが活性状態時間とフラグを保持しています。SFCステップの追加・削除により変数データベースが変化するため、オンライン修正ができなくなります。
コード生成時に自動的に作られる変数
ISaGRAF コンパイラは,複雑な記述を解決するために「隠された」一時的な変数を生成します。
【例】
上記の"+"と"-"命令の間に、仮の変数が生成されます。
プログラム内容によっては,記述の変更は,この「隠された」変数の構成の変更につながり,オンライン修正を不可能にしてしまいます。
ISaGRAF V3.30以降での回避方法
ISaGRAF V3.30以降では、一時的な変数の数が変わっても対応できるようになっています。
ISA.INIファイルで以下のエントリを追加してください。一時的な変数の最小数が固定されます。この範囲内での増減は、オンライン修正に影響しなくなります。また、コード生成時に一時的な変数の数がこれらの数を超える場合,警告メッセージを出力するようになります。
【例】
[DEBUG]
MNTVboo=8 ; ブール型変数
MNTVana=4 ; 整数&文字列型
MNTVtmr=4 ; ...
- ターゲット実行時のサイクルタイム(プログラム実行時間)は表示できるか?
ISaGRAF Ver.4/5の場合
1. デバッガを起動し、サイクルタイムを表示させたいリソースを選択します。
2. メニューの「デバッグ」-「診断」メニューを実行します。下記のものが表示されます。
サイクルタイムの設定値現在のサイクルタイム最大値設定値を超えた回数の表示
また、ターゲット側でもシステム変数を参照することでこれらの値をプログラム上で検出できます。
...
- タイマー変数はどのような場合に使うか?
下記の場合などです。
タイマーを起動し、ある時間がたつまでステップの内容を実行し続ける。
タイマー関連のファンクションブロック(ディレイ「TON」など)を使う場合の現在時間の記憶用。
...
- ターゲットの起動時のパラメータはどのように指定するか?また、どのような意味があるのか?
ISaGRAF Ver.4ターゲットの各アプリケーション(ISaVM,ISaCMG,ISaISX...)とISaIXLライブラリ(他のクライアントの窓口)は、原則として起動時に構成を指定する必要があります。例えばコンフィグレーションマネージャには起動可能なリソースの最大数を指定します。
通常これらのパラメータは起動時にのみ参照されます。パラメータを指定しないと、デフォルト値が適用されます。
また、起動パラメータの設定方法はターゲットにより異なります。NTターゲットの場合、拡張子が"ini"のファイルで指定することもできます。
ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9/QNXターゲット | IXLクライアント
一般的な規則
パラメータ名の規則
パラメータ名には次のものの組み合わせになります。
パラメータを使うアプリケーション名コンポーネント名。これは、パラメータ名がアプリケーションそのものを表わさないが、内部のコンポーネント(I/O、バインディング、IXLなど)に由来するような場合です。これはこれらのコンポーネントでパラメータ名の競合を防ぐためのものです。
【例】TCP/IPバインディングドライバの "KVBETCP"バーチャルマシンのスレーブ番号(必要な場合のみ)パラメータ名そのもの
値の指定方法
一般的には、起動時にC言語のmain関数に渡される引数を使います。ターゲットアプリケーションの場合はシステムレイヤのdsys0arg.cファイルをリンクすることで、下記のようなコマンドライン管理機能を利用できます。
パラメータ名の前に '-' をつけます。コンポーネント名がある場合はパラメータ名の後ろに\とともに付記します。'='記号でパラメータ名と渡す値を区切ります。複数の値を渡す場合は、カンマ(,)で区切ります。パラメータ値に空白を含まる場合は、OSにも依存しますが、"パラメータ=値"のように全体をダブルクォーテーション(")で囲みます。
【例】
-ResNbr=20
-s=2,5,6
-HSD\RcvMaxMsg=10
ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9/QNXターゲット | IXLクライアントbr> |
▲先頭に戻る
ワークベンチ
ワークベンチはターゲットの1リソースあたり2個、1コンフィグレーションあたり1個のIXL接続を使用します。
ワークベンチの binディレクトリで、下記の各INIファイルを修正します。
(1)DTA.INI ファイル
[IXL]
CnxNbr ...
- ターゲットの起動時のパラメータはどのように指定するか?また、どのような意味があるのか?
ISaGRAF Ver.4/5ターゲットの各アプリケーション(ISaVM,ISaCMG,ISaISX...)とISaIXLライブラリ(他のクライアントの窓口)は、原則として起動時に構成を指定する必要があります。例えばコンフィグレーションマネージャには起動可能なリソースの最大数を指定します。
通常これらのパラメータは起動時にのみ参照されます。パラメータを指定しないと、デフォルト値が適用されます。
また、起動パラメータの設定方法はターゲットにより異なります。NTターゲットの場合、拡張子が"ini"のファイルで指定することもできます。
一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9/QNXターゲット | IXLクライアント
一般的な規則
パラメータ名の規則
パラメータ名には次のものの組み合わせになります。
パラメータを使うアプリケーション名コンポーネント名。これは、パラメータ名がアプリケーションそのものを表わさないが、内部のコンポーネント(I/O、バインディング、IXLなど)に由来するような場合です。これはこれらのコンポーネントでパラメータ名の競合を防ぐためのものです。
【例】TCP/IPバインディングドライバの "KVBETCP"バーチャルマシンのスレーブ番号(必要な場合のみ)パラメータ名そのもの
値の指定方法
一般的には、起動時にC言語のmain関数に渡される引数を使います。ターゲットアプリケーションの場合はシステムレイヤのdsys0arg.cファイルをリンクすることで、下記のようなコマンドライン管理機能を利用できます。
パラメータ名の前に '-' をつけます。コンポーネント名がある場合はパラメータ名の後ろに\とともに付記します。'='記号でパラメータ名と渡す値を区切ります。複数の値を渡す場合は、カンマ(,)で区切ります。パラメータ値に空白を含まる場合は、OSにも依存しますが、"パラメータ=値"のように全体をダブルクォーテーション(")で囲みます。
【例】
-ResNbr=20
-s=2,5,6
-HSD\RcvMaxMsg=10
一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9ターゲット | IXLクライアント | ▲先頭に戻る
ワークベンチ
ワークベンチはターゲットの1リソースあたり2個、1コンフィグレーションあたり1個のIXL接続を使用します。
ワークベンチのbinディレクトリで、下記の各INIファイルを修正します。
(1)DTA.INI ファイル
[IXL]
CnxNbr = (リソース数 + 1) × 3
[IXL] セクションでは、ワークベンチのデバッガから全コンフィギュレーションへのIXL経由での接続数を指定します。
Ver4.03でのデフォルト値は16です。つまり、リソース数は7個に制限されます。
Ver4.03以降では、デフォルト値は102です。つまり、リソース数は33個に制限されます。
制限を越えると、下記のエラーが発生することがあります。
ワークベンチの表示
「リソースへの接続中にエラーが発生しました。DTAサーバシステムエラー 20000539」
DTA_SRVの画面
-16 ...
- ターゲットが動作している時に、ターゲットを停止させないでサイクルタイムを変更することは可能か?
ワークベンチとISaRAFターゲット間のI/Fに標準で用意されている為シミュレーション機能、デバッグ機能を使用することで動作中でも容易に変更可能です。
但し、最短のサイクルタイムは1msとなります。
...
- ターゲットの起動時のパラメータはどのように指定するか?また、どのような意味があるのか?
ISaGRAF Ver.4ターゲットの各アプリケーション(ISaVM,ISaCMG,ISaISX...)とISaIXLライブラリ(他のクライアントの窓口)は、原則として起動時に構成を指定する必要があります。例えばコンフィグレーションマネージャには起動可能なリソースの最大数を指定します。
通常これらのパラメータは起動時にのみ参照されます。パラメータを指定しないと、デフォルト値が適用されます。
また、起動パラメータの設定方法はターゲットにより異なります。NTターゲットの場合、拡張子が"ini"のファイルで指定することもできます。
一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9/QNXターゲット | IXLクライアント
一般的な規則
パラメータ名の規則
パラメータ名には次のものの組み合わせになります。
パラメータを使うアプリケーション名コンポーネント名。これは、パラメータ名がアプリケーションそのものを表わさないが、内部のコンポーネント(I/O、バインディング、IXLなど)に由来するような場合です。これはこれらのコンポーネントでパラメータ名の競合を防ぐためのものです。
【例】TCP/IPバインディングドライバの "KVBETCP"バーチャルマシンのスレーブ番号(必要な場合のみパラメータ名そのもの
値の指定方法
一般的には、起動時にC言語のmain関数に渡される引数を使います。ターゲットアプリケーションの場合はシステムレイヤのdsys0arg.cファイルをリンクすることで、下記のようなコマンドライン管理機能を利用できます。
パラメータ名の前に '-' をつけます。コンポーネント名がある場合はパラメータ名の後ろに\とともに付記します。'='記号でパラメータ名と渡す値を区切ります。複数の値を渡す場合は、カンマ(,)で区切ります。パラメータ値に空白を含まる場合は、OSにも依存しますが、"パラメータ=値"のように全体をダブルクォーテーション(")で囲みます。
【例】
-ResNbr=20
-s=2,5,6
-HSD\RcvMaxMsg=10
一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9ターゲット | IXLクライアント | ▲先頭に戻る
ワークベンチ
ワークベンチはターゲットの1リソースあたり2個、1コンフィグレーションあたり1個のIXL接続を使用します。
ワークベンチのbinディレクトリで、下記の各INIファイルを修正します。
(1)DTA.INI ファイル
[IXL]
CnxNbr = (リソース数 ...
- ターゲットを稼働させながらプログラムの更新(オンライン修正)は可能か?
可能ですが、下記の制約があります。
制限事項
1. コンパイラ型アプリケーションで動作している場合。
2. 変数名、プログラム(関数)名、SFCプログラムの構造に変更がある場合。
ISaGRAFのターゲットは、内部に変数データベースを持っています。デバッガなどからこれらの変数の値を変更することはできますが、オンラインで変数そのものを追加・名前の変更・削除することはできません。
なお、ISaGRAF Ver.4.10以降では、ある程度の変数の追加が可能になっています。
以下はISaGRAFターゲットの変数とみなされるものの一覧です。これらがオンライン修正の制約を受けます。
変数
ISaGRAFワークベンチの辞書で宣言するものです。変数名を変更したり、追加・削除するとオンライン修正はできなくなります。
対策として、あらかじめ余分な未使用の変数を予約しておき,今後変更があるときにそれらを利用する方法があります。
ファンクションブロックのインスタンス
C言語またはIEC言語で書かれているファンクションブロックのインスタンスも変数と同様です。インスタンスが追加・削除されると、オンライン修正はできなくなります。
FBD言語やLD言語では,ファンクションブロックを配置すると自動的に宣言されたインスタンスになってしまいます。対策として、辞書で宣言したFBインスタンスを使うほうがオンライン修正しやすくなります。
ファンクションブロックインスタンスのパラメータ名
ST言語、IL言語、SFC要素のアクションで記述しているパラメータ名も、変数と同様の扱いになります。プログラム中のパラメータの記述を削除したり、追加すると、オンライン修正ができなくなります。
対策としては、コードを変更する場合、削除するのではなく、条件判断でそのコードが実行されないようにします。
【例】ファンクションブロック"TON"のインスタンス"TON1"を実行しないように修正する場合
修正前
ACTION (N) :
ton1(true,t#5s);
t_cnt := ton1.et;
b2:=ton1.q;
END_ACTION;
修正後:if構文の内容は実行されなくなります。
ACTION (N) :
if FALSE then
ton1(true,t#5s);
t_cnt := ton1.et;
b2:=ton1.q;
END_IF;
END_ACTION;
SFCのステップ
SFCステップは1つ1つが活性状態時間とフラグを保持しています。SFCステップの追加・削除により変数データベースが変化するため、オンライン修正ができなくなります。
コード生成時に自動的に作られる変数
ISaGRAF コンパイラは,複雑な記述を解決するために「隠された」一時的な変数を生成します。
【例】
上記の"+"と"-"命令の間に、仮の変数が生成されます。
プログラム内容によっては,記述の変更は,この「隠された」変数の構成の変更につながり,オンライン修正を不可能にしてしまいます。
ISaGRAF Ver3.30以降での回避方法
ISaGRAF Ver3.30以降では、一時的な変数の数が変わっても対応できるようになっています。
ISA.INIファイルで以下のエントリを追加してください。一時的な変数の最小数が固定されます。この範囲内での増減は、オンライン修正に影響しなくなります。また、コード生成時に一時的な変数の数がこれらの数を超える場合,警告メッセージを出力するようになります。
【例】
[DEBUG]
MNTVboo=8 ; ブール型変数
MNTVana=4 ; 整数&文字列型
MNTVtmr=4 ; ...
- ターゲットでのエラー表示は可能か?
エラーコード(アプリケーションの異常、通信関係,サイクルタイムオーバ等々)が設定されており、ワークベンチやターゲットで検出することが出来ます。
ワークベンチではデバッガの実行時にターゲット側のエラー内容の表示ができます。
ターゲットで表示できるかどうかはターゲットのハード構成やOSに依存します。
ISaGRAF Ver.4の場合
NTターゲット...エラーコードをコンソールに出力します。
...
- ターゲットを使った製品をエンドユーザに客先に出荷している。もし、マシンのハードディスクが壊れるなど原因で、ターゲットを再度インストールする必要がある。このような場合に備えて、ターゲットのマスターディスクディスクをコピーしてエンドユーザに渡しておきたいが可能か?
エンドユーザでのライセンス管理が御社で可能であれば、つまり、エンドユーザが無断で別のマシンにコピーして使用することがないのであれば御社の責任で行ってもらってかまいません。
材質
印刷面
↑
FLEXmarkフィルム
糊
印刷
COMPUcalフィルム
糊
シリコンの台紙
FLEXmarkフィルム(FLEXcon社の商標です)
光沢あり、透明、厚さ25μm、アクリル樹脂の層に固着、シリコンの台紙つき。
COMPUcalフィルム(FLEXcon社の商標です)
光沢無し、銀色、厚さ50μm、ポリエステル
UL認定について
UL認定 AM8955のステッカーです。
使用しているフィルムは屋内及び屋外での使用についてUL認定されています(Film MH10170,section PGGU2,Marketing and labelling Systems Materials)。
PGDQ2 1995年2月22日
Component-Marketing and Labelling Systems
RHONDET-MALBERT MH15451(M)
...
- ターゲットに必要なメモリサイズは?
ターゲットのバージョンによって異なります。
ISaGRAF Ver.4の場合
ISaGRAF Ver.4のターゲットサイズは以下の通りです。 (単位:KB)
各タイトルは実行されるプログラム/タスク名です。
マルチタスク実装の場合
ターゲットタイプ
ISaGRAF
ETCP
ISaRSI
ISaVM
ISaIXD
NT Target M
54
62
57
149
74
NT Target L
54
62
57
146
74
OS-9 Target M
30
52.4
48.1
143
94.6
OS-9 Target L
30
52.4
48.1
141
94.6
注:M...ミディアムモデル
L...ラージモデル
ターゲットタイプ
ISaGRAF.o
USaSOB.o
VxWorks Target M
269
1.41
VxWorks Target L
269
1.41
注:VxWorksターゲットでは、ISaGRAF.o には下記のものが含まれています。
ETCP.o
ISaRSI.o
CMG.o
ISaIXD.o
各タスクの目的
ISaVM-ワークベンチからダウンロードされたTICコードを実行するバーチャルマシン
ISaRSI-シリアルリンク(ワークベンチとハードウェアプラットフォーム間の通信)の管理
ETCP-イーサネットリンクの管理
IXD(ISaGRAF Exchange Dispatcher)-リモートワークベンチとの通信用
ISaGRAF-他の全タスクの管理(スタート、ストップ、情報の取得等)を管理するコンフィギュレーションマネージャ
マルチタスク実装のハードウェアプラットフォーム上では、以下のタスクが開始します:
"ISaGRAF"
"RSI"か"ETCP" のどちらか
"IXD"
1つ以上の"ISaVM"
シングルタスク実装の場合 (V4.10 以降)
(単位:KB) ...
- ターゲット実行時のサイクルタイム(プログラム実行時間)は表示できるか?
ISaGRAF Ver.4の場合
1. デバッガを起動し、サイクルタイムを表示させたいリソースを選択します。
2. メニューの「デバッグ」-「診断」メニューを実行します。下記のものが表示されます。
サイクルタイムの設定値現在のサイクルタイム最大値設定値を超えた回数の表示
また、ターゲット側でもシステム変数を参照することでこれらの値をプログラム上で検出できます。
...
- ターゲットを実行するプラットフォームがセグメント形式のメモリの場合、VA(変数アドレス)やアプリケーションコードに影響を与えるか?あるいはターゲット開発の際に特殊な実装が必要か?
いいえ。特別な計算やセグメントにあわせるようなアプリケーションコードの差異はありません。
ターゲットのメモリがセグメント化されている場合、ワークベンチもターゲットのカーネルも、セグメントのサイズの情報を持っています(ターゲットの場合、ITGTDEF_SEGMENT の値)。
ターゲットをコンパイルするときは、セグメントの有無を吸収するようなマクロが利用されます。これは、メモリのポインタが次のセグメントを指すようにすべきかどうかをチェックするものです。このため、ターゲットを移植する場合、セグメント化されていてもメモリを連続したものとして(透過的に)扱うことができます。
ただし、セグメントが存在する場合、境界チェックのための演算が必ず行われますので実行速度は低下します。
...
- ターゲットのメモリ配置(アライメント)の注意すべき点
ISaGRAF Ver.4カーネルを新しいOSに移植する場合、ワークベンチデータベースで設定したメモリ配置の設定オプションは、ターゲットのCコンパイラやCPUのメモリ配置(構造体内のバイトデータのアライメント)の仕様を一致させる必要があります。
ISaGRAF Ver.4の場合
ターゲット側のメモリ配置の仕様は、以下のような簡単なプログラムで確認できます。
2つの構造体を作り、そのサイズを調べます。
typedef unsigned char uchar;
typedef unsigned long uint32;
typedef struct typStruct2Types{
uchar u1;
uint32 u2;
} structA;
typedef struct typStruct3Char{
uchar u1;
uchar u2;
uchar u3;
} structB;
main(){
int n1=0;
int n2=0;
n1=sizeof(structA);
n2=sizeof(structB);
}
実行結果のn1,n2の値でアライメントがわかります。以下の通りになります。
n1 = ...
- ターゲットに必要なメモリサイズは?
ターゲットのバージョンによって異なります。
ISaGRAF Ver.4の場合
Ver.4のターゲットサイズは以下の通りです。 (単位:KB)
各タイトルは実行されるプログラム/タスク名です。
マルチタスク実装の場合
ターゲットタイプ
ISaGRAF
ETCP
ISaRSI
ISaVM
ISaIXD
NT Target M
54
62
57
149
74
NT Target L
54
62
57
146
74
OS-9 Target M
30
52.4
48.1
143
94.6
OS-9 Target L
30
52.4
48.1
141
94.6
注:M...ミディアムモデル
L...ラージモデル
ターゲットタイプ
ISaGRAF.o
USaSOB.o
VxWorks Target M
269
1.41
VxWorks Target L
269
1.41
注:VxWorksターゲットでは、ISaGRAF.o には下記のものが含まれています。
ETCP.o
ISaRSI.o
CMG.o
ISaIXD.o
各タスクの目的
ISaVM-ワークベンチからダウンロードされたTICコードを実行するバーチャルマシン
ISaRSI-シリアルリンク(ワークベンチとハードウェアプラットフォーム間の通信)の管理
ETCP-イーサネットリンクの管理
IXD(ISaGRAF Exchange Dispatcher)-リモートワークベンチとの通信用
ISaGRAF-他の全タスクの管理(スタート、ストップ、情報の取得等)を管理するコンフィギュレーションマネージャ
マルチタスク実装のハードウェアプラットフォーム上では、以下のタスクが開始します:
"ISaGRAF"
"RSI" か "ETCP" のどちらか
"IXD"
1つ以上の "ISaVM"
シングルタスク実装の場合 (Ver4.10 ...
- ターゲットが動作している時に、ターゲットを停止させないでサイクルタイムを変更することは可能か?
ワークベンチとISaRAFターゲット間のI/Fに標準で用意されている為シミュレーション機能、デバッグ機能を使用することで動作中でも容易に変更可能です。
但し、最短のサイクルタイムは1msとなります。
...
- ターゲットを稼働させながらプログラムの更新(オンライン修正)は可能か?
可能ですが、下記の制約があります。
制限事項
1. コンパイラ型アプリケーションで動作している場合。
2. 変数名、プログラム(関数)名、SFCプログラムの構造に変更がある場合。
ISaGRAFのターゲットは、内部に変数データベースを持っています。デバッガなどからこれらの変数の値を変更することはできますが、オンラインで変数そのものを追加・名前の変更・削除することはできません。
なお、ISaGRAF Ver.4.10以降では、ある程度の変数の追加が可能になっています。
以下はISaGRAFターゲットの変数とみなされるものの一覧です。これらがオンライン修正の制約を受けます。
変数
ISaGRAFワークベンチの辞書で宣言するものです。変数名を変更したり、追加・削除するとオンライン修正はできなくなります。
対策として、あらかじめ余分な未使用の変数を予約しておき,今後変更があるときにそれらを利用する方法があります。
ファンクションブロックのインスタンス
C言語またはIEC言語で書かれているファンクションブロックのインスタンスも変数と同様です。インスタンスが追加・削除されると、オンライン修正はできなくなります。
FBD言語やLD言語では,ファンクションブロックを配置すると自動的に宣言されたインスタンスになってしまいます。対策として、辞書で宣言したFBインスタンスを使うほうがオンライン修正しやすくなります。
ファンクションブロックインスタンスのパラメータ名
ST言語、IL言語、SFC要素のアクションで記述しているパラメータ名も、変数と同様の扱いになります。プログラム中のパラメータの記述を削除したり、追加すると、オンライン修正ができなくなります。
対策としては、コードを変更する場合、削除するのではなく、条件判断でそのコードが実行されないようにします。
【例】ファンクションブロック"TON"のインスタンス"TON1"を実行しないように修正する場合
修正前
ACTION (N) :
ton1(true,t#5s);
t_cnt := ton1.et;
b2:=ton1.q;
END_ACTION;
修正後:if構文の内容は実行されなくなります。
ACTION (N) :
if FALSE then
ton1(true,t#5s);
t_cnt := ton1.et;
b2:=ton1.q;
END_IF;
END_ACTION;
SFCのステップ
SFCステップは1つ1つが活性状態時間とフラグを保持しています。SFCステップの追加・削除により変数データベースが変化するため、オンライン修正ができなくなります。
コード生成時に自動的に作られる変数
ISaGRAF コンパイラは,複雑な記述を解決するために「隠された」一時的な変数を生成します。
【例】
上記の"+"と"-"命令の間に、仮の変数が生成されます。
プログラム内容によっては,記述の変更は,この「隠された」変数の構成の変更につながり,オンライン修正を不可能にしてしまいます。
ISaGRAF Ver3.30以降での回避方法
ISaGRAF Ver3.30以降では、一時的な変数の数が変わっても対応できるようになっています。
ISA.INIファイルで以下のエントリを追加してください。一時的な変数の最小数が固定されます。この範囲内での増減は、オンライン修正に影響しなくなります。また、コード生成時に一時的な変数の数がこれらの数を超える場合,警告メッセージを出力するようになります。
【例】
[DEBUG]
MNTVboo=8 ; ブール型変数
MNTVana=4 ; 整数&文字列型
MNTVtmr=4 ; ...
- ターゲット実行時のサイクルタイム(プログラム実行時間)は表示できるか?
ISaGRAF Ver.4の場合
1. デバッガを起動し、サイクルタイムを表示させたいリソースを選択します。
2. メニューの「デバッグ」-「診断」メニューを実行します。下記のものが表示されます。
サイクルタイムの設定値現在のサイクルタイム最大値設定値を超えた回数の表示
また、ターゲット側でもシステム変数を参照することでこれらの値をプログラム上で検出できます。
...