- リソースの実行モードを外部から切り替える方法
外部アプリケーションからISaGRAF Ver.4/5のターゲット実行モード(リアルタイムモード/サイクルモード)を切りかえることができます。この場合、外部のアプリケーションは、IXLクライアントである必要があります。
クライアントからixlWrite関数で実行モードに対応するシステム変数へ値を書きこみます。
このシステム変数のVA(バーチャルアドレス)は"ISA_SYSVA_RESMODE"マクロにより取得することができます。
この変数の値を下記(sint 型)のいずれかに書き換えます。
ISA_IXL_RESMODE_RT (=3) リアルタイムモードで実行
ISA_IXL_RESMODE_CC (=4) サイクルモードで実行
また、同じく"ISA_SYSVA_CCEXEC" (ブール型)の値を true にすると、ターゲットを1サイクル実行させることができます。
※この操作はプロジェクトプログラム上から実行することも可能です。
...
- リソースを起動せずにコンフィギュレーションマネージャを立ち上げる方法
コンフィグレーションマネージャの起動時に"stgMode" パラメータを設定すると、リソースの起動をスキップできます。
例:
ISaGRAF -stgMode=0
→コンフィギュレーションマネージャ起動時にリソースを起動させません。すなわち、補助記憶装置(ハードディスク、フラッシュメモリ等)にリソースコードが存在しても、バーチャルマシンを起動しません。
ISaGRAF -stgMode=1
→自動的にリソースを起動します。(ディフォルトの設定)
注意:上記のコマンドラインはWindows NT ターゲットの場合の記述です。
他のターゲットの場合や起動パラメータの一般的な設定については、関連項目をご覧ください。
...
- リソースが停止したとき、IXLクライアントでなにをすべきか
IXLクライアントがSMA(単一メモリアクセス)メソッドでカーネル(バーチャルマシン)にアクセスする場合、クライアントはカーネルの変数データベースに直接、接続していることになります。このとき、カーネルが停止した場合でも、IXLクライアント側がカーネルとの対話を停止しない限り、変数データベースはメモリ上に残ったままになります。
例えば、あるIXLクライアントがSMAでの接続を解除していないのに、リソースコードをダウンロードしたり補助記憶装置からのロードしようとしても、「Cannot create space」のエラーが発生します。これはクライアント用のメモリスペースがまだ削除されていないためです。
対策
IXLクライアントがメモリ上のリソースの状態を常に監視し、リソースがストップしたら必ずSMAの接続も解除するようにします。
注意
カーネルデータベースがセグメントメモリで構成されている場合はSMAメソッドは利用できません。
...
- リソースには拡張パラメータを付加できますが、この内容をターゲット側で取得することができますか?
ISaGRAF Ver.4/5 ではリソースにOEM固有の拡張パラメータを添付することができます。
これはワークベンチのリソースのプロパティの「拡張」タブで参照することができます。
このパラメータの値をターゲット側で取得するには、以下の関数をコールします:
void* resDefResXParam(void)
この関数はターゲットソース "dker0res.c" にあります。これはカーネルライブラリにあり、バーチャルマシンの実行コードの一部です。
この関数が返す値を、拡張パラメータ構造体のポインタとしてキャストして下さい。なお構造体のメンバはワークベンチデータべースでターゲットの 'extended parameters’(拡張パラメータ)として定義した構造体と完全に一致していなければなりません。
...
- リソースコードの生成中、「エラー"POUのコードの制限(64K)を越えています。"が表示される」というメッセージが出るが、なぜか?
POU1個当たりの中間コードコードのサイズは64KBに制限されています。これはターゲットのメモリモデルがラージでもミディアムでも同じです。
対策としては、プログラムを複数に分割することになります。
...
- リソースが停止したとき、IXLクライアントでなにをすべきか
IXLクライアントがSMA(単一メモリアクセス)メソッドでカーネル(バーチャルマシン)にアクセスする場合、クライアントはカーネルの変数データベースに直接、接続していることになります。このとき、カーネルが停止した場合でも、IXLクライアント側がカーネルとの対話を停止しない限り、変数データベースはメモリ上に残ったままになります。
例えば、あるIXLクライアントがSMAでの接続を解除していないのに、リソースコードをダウンロードしたり補助記憶装置からのロードしようとしても、「Cannot create space」のエラーが発生します。これはクライアント用のメモリスペースがまだ削除されていないためです。
対策
IXLクライアントがメモリ上のリソースの状態を常に監視し、リソースがストップしたら必ずSMAの接続も解除するようにします。
注意
カーネルデータベースがセグメントメモリで構成されている場合はSMAメソッドは利用できません。
...
- リソースが停止したとき、IXLクライアントでなにをすべきか
IXLクライアントがSMA(単一メモリアクセス)メソッドでカーネル(バーチャルマシン)にアクセスする場合、クライアントはカーネルの変数データベースに直接、接続していることになります。このとき、カーネルが停止した場合でも、IXLクライアント側がカーネルとの対話を停止しない限り、変数データベースはメモリ上に残ったままになります。
例えば、あるIXLクライアントがSMAでの接続を解除していないのに、リソースコードをダウンロードしたり補助記憶装置からのロードしようとしても、「Cannot create space」のエラーが発生します。これはクライアント用のメモリスペースがまだ削除されていないためです。
対策
IXLクライアントがメモリ上のリソースの状態を常に監視し、リソースがストップしたら必ずSMAの接続も解除するようにします。
注意
カーネルデータベースがセグメントメモリで構成されている場合はSMAメソッドは利用できません。
...
- リソースを起動せずにコンフィギュレーションマネージャを立ち上げる方法
コンフィグレーションマネージャの起動時に "stgMode" パラメータを設定すると、リソースの起動をスキップできます。
例:
ISaGRAF -stgMode=0
→コンフィギュレーションマネージャ起動時にリソースを起動させません。すなわち、補助記憶装置(ハードディスク、フラッシュメモリ等)にリソースコードが存在しても、バーチャルマシンを起動しません。
ISaGRAF -stgMode=1
→自動的にリソースを起動します。(ディフォルトの設定)
注意:上記のコマンドラインはWindows NT ターゲットの場合の記述です。
他のターゲットの場合や起動パラメータの一般的な設定については、関連項目をご覧ください。
...
- リソースコードの生成中、「エラー"POUのコードの制限(64K)を越えています。"が表示される」というメッセージが出るが、なぜか?
POU1個当たりの中間コードコードのサイズは64KBに制限されています。これはターゲットのメモリモデルがラージでもミディアムでも同じです。
対策としては、プログラムを複数に分割することになります。
...
- リソースの実行モードを外部から切り替える方法
外部アプリケーションからISaGRAF Ver.4のターゲット実行モード(リアルタイムモード/サイクルモード)を切りかえることができます。この場合、外部のアプリケーションは、IXLクライアントである必要があります。
クライアントからixlWrite関数で実行モードに対応するシステム変数へ値を書きこみます。
このシステム変数のVA(バーチャルアドレス)は"ISA_SYSVA_RESMODE"マクロにより取得することができます。
この変数の値を下記(sint 型)のいずれかに書き換えます。
ISA_IXL_RESMODE_RT (=3) リアルタイムモードで実行
ISA_IXL_RESMODE_CC (=4) サイクルモードで実行
また、同じく"ISA_SYSVA_CCEXEC" (ブール型)の値を true にすると、ターゲットを1サイクル実行させることができます。
※この操作はプロジェクトプログラム上から実行することも可能です。
...
- リソースを起動せずにコンフィギュレーションマネージャを立ち上げる方法
コンフィグレーションマネージャの起動時に"stgMode" パラメータを設定すると、リソースの起動をスキップできます。
例:
ISaGRAF -stgMode=0
→コンフィギュレーションマネージャ起動時にリソースを起動させません。すなわち、補助記憶装置(ハードディスク、フラッシュメモリ等)にリソースコードが存在しても、バーチャルマシンを起動しません。
ISaGRAF -stgMode=1
→自動的にリソースを起動します。(ディフォルトの設定)
注意:上記のコマンドラインはWindows NT ターゲットの場合の記述です。
他のターゲットの場合や起動パラメータの一般的な設定については、関連項目をご覧ください。
...
- リソースが停止したとき、IXLクライアントでなにをすべきか
IXLクライアントがSMA(単一メモリアクセス)メソッドでカーネル(バーチャルマシン)にアクセスする場合、クライアントはカーネルの変数データベースに直接、接続していることになります。このとき、カーネルが停止した場合でも、IXLクライアント側がカーネルとの対話を停止しない限り、変数データベースはメモリ上に残ったままになります。
例えば、あるIXLクライアントがSMAでの接続を解除していないのに、リソースコードをダウンロードしたり補助記憶装置からのロードしようとしても、「Cannot create space」のエラーが発生します。これはクライアント用のメモリスペースがまだ削除されていないためです。
対策
IXLクライアントがメモリ上のリソースの状態を常に監視し、リソースがストップしたら必ずSMAの接続も解除するようにします。
注意
カーネルデータベースがセグメントメモリで構成されている場合はSMAメソッドは利用できません。
...
- リソースには拡張パラメータを付加できますが、この内容をターゲット側で取得することができますか?
ISaGRAF Ver.4 ではリソースにOEM固有の拡張パラメータを添付することができます。
これはワークベンチのリソースのプロパティの「拡張」タブで参照することができます。
このパラメータの値をターゲット側で取得するには、以下の関数をコールします:
void* resDefResXParam(void)
この関数はターゲットソース "dker0res.c" にあります。これはカーネルライブラリにあり、バーチャルマシンの実行コードの一部です。
この関数が返す値を、拡張パラメータ構造体のポインタとしてキャストして下さい。なお構造体のメンバはワークベンチデータべースでターゲットの 'extended parameters’(拡張パラメータ)として定義した構造体と完全に一致していなければなりません。
...