- VxWorksシステム上でリソースを多数起動すると、ワークベンチからすべてのダウンロードできない。32個程度しかダウンロードできない。
リソースの通信の接続数は、VxWorksの通信ソケットの数によって制限を受けます。
このソケットの数はさらにファイルディスクリプタと同様にシステムバッファの大きさに依存します。システムバッファのサイズを大きくして、ターゲットを構築しなおすようにします。すなわち、
NUM_SYS_64 (64 から 128へ)
NUM_SYS_128 (64 から 128へ)
NUM_SYS_256 (64 から 128へ)
NUM_SYS_512 (64 から 128へ)
同様に、VxWorks の NUM_FILES パラメータの値を大きくすると、ファイルディスクリプタの数を増やすこともできます。
...
- VxWorksターゲットにおける変数管理の留意点について
複数のISaGRAF Ver.4/5タスクが動作している時に、あるタスクに属しているC言語の変数を別のタスクから参照してはいけません。
これは、次のときに問題が発生します。
複数のタスクが同一のコードセクションを実行していて、かつOSが各タスクの変数のインスタンス化を管理していない場合
例えば、複数のISaGRAFのバーチャルマシンが実行中の場合や、システムレイヤのライブラリが複数のタスク(エクスチェンジディスパッチャ(IXD)、コンフィギュレーションマネージャ(CMG)等)から使用されている場合です。
このような場合、例えば、ISaGRAF Ver.4/5のバーチャルマシンどうしでは、同じ変数でも区別して使われるようにする必要があります。
共有すべきではない変数
以下の通りです。これらの変数はタスク毎に別途作成する必要があります。
1. カーネル変数
カーネル用変数はバーチャルマシン1つにつき1セット用意する必要があります。
2. システムレイヤ変数
システム関連の変数も、バーチャルマシン毎に1セット必要です。
また、このレイヤを使用するタスク(コンフィギュレーションマネージャ、エクスチェンジディスパッチャ等)毎にも1セットの変数が必要です。
解決方法
VxWorksターゲットの場合、このようなタスク間での変数の区別を下記のような方法で実現します。
各変数は1個の構造体の中のメンバとして宣言されています。カーネル用、システムレイヤ用それぞれがあります。
各タスクの初期化時に、これらの構造体のメモリを動的にアロケートします。全てのカーネル変数の構造体を1個のポインタ(pISa_KERGLOBINST)で指すように設定されています。全てのシステムレイヤ変数」も1個のポインタ(pISa_COMMONGLOBINST)で指すように設定されています。
OSがこれら2つの変数を保存できるようになっていれば良いことになります。タスクが待ち状態になったら自動的にタスクのコンテキストの一部として保存され、タスクが再度アクティブになった時にリストアされる、というようにです。具体的には下の図を参照してください。
VxWorks以外のOSで、同様の問題が発生する場合は、タスクの変数をコンテキストの一部として保存する機能をOSがサポートしているかどうかを確認してください。
...
- VxWorksシステム上でリソースを多数起動すると、ワークベンチからすべてのダウンロードできない。32個程度しかダウンロードできない。
リソースの通信の接続数は、VxWorksの通信ソケットの数によって制限を受けます。
このソケットの数はさらにファイルディスクリプタと同様にシステムバッファの大きさに依存します。
システムバッファのサイズを大きくして、ターゲットを構築しなおすようにします。すなわち、
NUM_SYS_64 (64 から 128へ)
NUM_SYS_128 (64 から 128へ)
NUM_SYS_256 (64 から 128へ)
NUM_SYS_512 (64 から 128へ)
同様に、VxWorks の NUM_FILES パラメータの値を大きくすると、ファイルディスクリプタの数を増やすこともできます。
...
- VxWorksシステム上でリソースを多数起動すると、ワークベンチからすべてのダウンロードできない。32個程度しかダウンロードできない。
リソースの通信の接続数は、VxWorksの通信ソケットの数によって制限を受けます。このソケットの数はさらにファイルディスクリプタと同様にシステムバッファの大きさに依存します。システムバッファのサイズを大きくして、ターゲットを構築しなおすようにします。すなわち、
NUM_SYS_64 (64 から 128へ)
NUM_SYS_128 (64 から 128へ)
NUM_SYS_256 (64 から 128へ)
NUM_SYS_512 (64 から 128へ)
同様に、VxWorks の NUM_FILES パラメータの値を大きくすると、ファイルディスクリプタの数を増やすこともできます。
...
- Ver.4/5のワークベンチをインストール中に-115番のエラーが出ます。どうしたらいいでしょうか?
ISaGRAF Ver.4/5をインストール中に、以下のようなエラーが表示される場合があります:
An error occured during the move data process : -115
(データ移動プロセス中に -115 エラーが発生しました)
このエラーの意味は、ISaGRAF Ver.4/5 を起動中に別の新しいバージョンをインストールしようとしたという意味です。または、ISaGRA Ver.4/5のアプリケーションのどれかが正しく終了されていなかった可能性もあります。
この場合、以下の手順で回避してください。
1. インストールを中止します。
2. このエラーの原因として "PLCI.exe" というアプリケーション(プロジェクト定義をインポートするプログラム)が終了していないために表示されている可能性があります。
Alt+Tabキーを押し、現在動作中のプログラムをアイコン表示してみてください。PLCI("M-F-C"のアイコン)が実行中の場合は、"The importation is finished."というメッセージが表示されています。
もしこの通りだったら、「OK」をクリックして、PLCIプログラムを終了してください。
3. 更に、ISaGRAF PROの他のアプリケーションが実行されていないかどうか、タスクマネージャから確認してください。
4. ...
- Ver.4/5のワークベンチをインストール中に-115番のエラーが出ます。どうしたらいいでしょうか?
ISaGRAF Ver.4/5をインストール中に、以下のようなエラーが表示される場合があります:
An error occured during the move data process : -115
(データ移動プロセス中に -115 エラーが発生しました)
このエラーの意味は、ISaGRAF Ver.4/5 を起動中に別の新しいバージョンをインストールしようとしたという意味です。または、ISaGRA Ver.4/5のアプリケーションのどれかが正しく終了されていなかった可能性もあります。
この場合、以下の手順で回避してください。
1. インストールを中止します。
2. このエラーの原因として "PLCI.exe" というアプリケーション(プロジェクト定義をインポートするプログラム)が終了していないために表示されている可能性があります。
Alt+Tabキーを押し、現在動作中のプログラムをアイコン表示してみてください。PLCI("M-F-C"のアイコン)が実行中の場合は、"The importation is finished."というメッセージが表示されています。
もしこの通りだったら、「OK」をクリックして、PLCIプログラムを終了してください。
3. 更に、ISaGRAF PROの他のアプリケーションが実行されていないかどうか、タスクマネージャから確認してください。
4. ...
- VxWorksシステム上でリソースを多数起動すると、ワークベンチからすべてのダウンロードできない。32個程度しかダウンロードできない。
リソースの通信の接続数は、VxWorksの通信ソケットの数によって制限を受けます。
このソケットの数はさらにファイルディスクリプタと同様にシステムバッファの大きさに依存します。システムバッファのサイズを大きくして、ターゲットを構築しなおすようにします。すなわち、
NUM_SYS_64 (64 から 128へ)
NUM_SYS_128 (64 から 128へ)
NUM_SYS_256 (64 から 128へ)
NUM_SYS_512 (64 から 128へ)
同様に、VxWorks の NUM_FILES パラメータの値を大きくすると、ファイルディスクリプタの数を増やすこともできます。
...
- VxWorksターゲットにおける変数管理の留意点について
複数のISaGRAF Ver.4タスクが動作している時に、あるタスクに属しているC言語の変数を別のタスクから参照してはいけません。
これは、次のときに問題が発生します。
複数のタスクが同一のコードセクションを実行していて、かつOSが各タスクの変数のインスタンス化を管理していない場合
例えば、複数のISaGRAFのバーチャルマシンが実行中の場合や、システムレイヤのライブラリが複数のタスク(エクスチェンジディスパッチャ(IXD)、コンフィギュレーションマネージャ(CMG)等)から使用されている場合です。
このような場合、例えば、ISaGRAF Ver.4のバーチャルマシンどうしでは、同じ変数でも区別して使われるようにする必要があります。
共有すべきではない変数
以下の通りです。これらの変数はタスク毎に別途作成する必要があります。
1. カーネル変数
カーネル用変数はバーチャルマシン1つにつき1セット用意する必要があります。
2. システムレイヤ変数
システム関連の変数も、バーチャルマシン毎に1セット必要です。
また、このレイヤを使用するタスク(コンフィギュレーションマネージャ、エクスチェンジディスパッチャ等)毎にも1セットの変数が必要です。
解決方法
VxWorksターゲットの場合、このようなタスク間での変数の区別を下記のような方法で実現します。
各変数は1個の構造体の中のメンバとして宣言されています。カーネル用、システムレイヤ用それぞれがあります。
各タスクの初期化時に、これらの構造体のメモリを動的にアロケートします。全てのカーネル変数の構造体を1個のポインタ(pISa_KERGLOBINST)で指すように設定されています。全てのシステムレイヤ変数」も1個のポインタ(pISa_COMMONGLOBINST)で指すように設定されています。
OSがこれら2つの変数を保存できるようになっていれば良いことになります。タスクが待ち状態になったら自動的にタスクのコンテキストの一部として保存され、タスクが再度アクティブになった時にリストアされる、というようにです。具体的には下の図を参照してください。
VxWorks以外のOSで、同様の問題が発生する場合は、タスクの変数をコンテキストの一部として保存する機能をOSがサポートしているかどうかを確認してください。
...
- VxWorksシステム上でリソースを多数起動すると、ワークベンチからすべてのダウンロードできない。32個程度しかダウンロードできない。
リソースの通信の接続数は、VxWorksの通信ソケットの数によって制限を受けます。
このソケットの数はさらにファイルディスクリプタと同様にシステムバッファの大きさに依存します。
システムバッファのサイズを大きくして、ターゲットを構築しなおすようにします。すなわち、
NUM_SYS_64 (64 から 128へ)
NUM_SYS_128 (64 から 128へ)
NUM_SYS_256 (64 から 128へ)
NUM_SYS_512 (64 から 128へ)
同様に、VxWorks の NUM_FILES パラメータの値を大きくすると、ファイルディスクリプタの数を増やすこともできます。
...