« Windowsリアルタイム拡張IntervalZero社「RTX」のHAL timerを変更しつつ、DOUT-Portポート制御 | トップページ | Windowsリアルタイムインタープリタの最速動作 »

2010年5月 6日

Windowsリアルタイム性評価「MOS Bench(モスベンチ)」のタスクスイッチング時間

Windowsリアルタイム性評価「MOS Bench(モスベンチ)」のマルチタスク処理。

2つのタスク(プロセス)を実行する。

いずれもCONTEC社のPIOカード「PIO-16/16L(PCI)H」の出力ポート制御。

1つめは、ポート1_6(2127番)のON、OFF。プログラムは以下。

void main()
{
   while(1){
       WritePort( 2127, 0 ); //OUT1_6
       WritePort( 2127, 1 ); //OUT1_6
    }
}

2つめは、ポート1_7(2128番)のON、OFF。プログラムは以下。

void main()
{
   while(1){
       WritePort( 2128, 0 ); //OUT1_7
       WritePort( 2128, 1 ); //OUT1_7
    }
}

動作波形は、

Hal_100us_2_process

上半分が100us/div。

下半分がその拡大波形。5us/div。

IntervalZero社のHAL-Timer周期を100usに設定したので、100us毎バースト状にトグル波形が発生している。(以下の参考1を参照)

2127ポート、2128ポートでは、約5us毎、波形変化が現れる。

1つのプロセスのみを実行したとき、以下の波形のように、4us毎トグルした。

したがって、2プロセスに増やしたことにより、1us増えた。

タスクスイッチング時間は約1usとなる。

CPUは、Celeron D。

Hal_100us

上半分が200us/div。

下半分がその拡大波形。10us/div。

参考1)

HAL timerの周期で、バースト状パルスが発生する理由:

プライムモーション社のみんなでWindwosリアルタイムIO制御環境「MOS Bench(モスベンチ)」では、リアルタイムの処理が連続して、Windowsがフリーズしないように、MOS言語プログラム10行毎に、WindowsにCPUを解放しています。その周期がHAL timer設定周期に依存しています。そのため、HAL timer周期毎に、MOSプログラム処理が発生しています。

このMOS言語プログラム10行毎という設定は、MOS関数の

SetAutomaticSleep();

で変更できます。引数に「0」は、指定しないでください。

参考2)

フォトカプラの後では、フォトカプラの遅延時間にパルス波形が埋もれて観測できないので、PCIバスインターフェイスのFPGA側で測定した。

3

グランドとOUT1_6,OUT1_7の3本に観測用導線を半田付けしている。

Link: 

プライムモーション社(みんなで手軽にWindowsリアルタイムIO制御)

プライムモーション(Windowsで手軽にリアルタイムIO制御)

プライムモーション社(RTEXとパルスの16軸マルチタスクコントローラ)

プライムモーション(RTEXとパルス列のマルチプロセスコントローラ)

|

« Windowsリアルタイム拡張IntervalZero社「RTX」のHAL timerを変更しつつ、DOUT-Portポート制御 | トップページ | Windowsリアルタイムインタープリタの最速動作 »

技術Windowsでリアルタイム制御」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« Windowsリアルタイム拡張IntervalZero社「RTX」のHAL timerを変更しつつ、DOUT-Portポート制御 | トップページ | Windowsリアルタイムインタープリタの最速動作 »