« 20歳のときに知っておきたかったこと スタンフォード大学集中講義 | トップページ | パナソニック社Realtime Express のDIO(リモートIO)開発中です。 »

2010年5月 3日

Windowsリアルタイム拡張「RTX」のHAL timerを変更しつつ、PIO-16/16L(PCI)Hを制御する。

手軽にWindowsリアルタイム制御環境「MOS Bench(モスベンチ)」で

CONTEC社の16IN/16OUTのIOカード「PIO-16/16L(PCI)H」を

「ササッ」と制御してみる。

1ms毎、ある出力ポートをオンオフした。

書いたコードは以下だけ。

void main()
{
   int  b;
   b=0;

   while(1){
       if ( (b % 2) == 0 ) {
       WritePort( 2126, 0 );
       }
       else {
       WritePort( 2126, 1 );
       }
    b = b + 1;
    Sleep(1);
    }
}

波形は、10秒間の重ね書き。ジッターは100us以下。

Windows XP Professionalをリアルタイム化している。

この波形は、RTXのHAL timerはデフォルトの500usの状態。

High区間が900us、Low区間が1600usになっている。

リアルタイムと言っても、マイコン制御のような波形は、期待しないでほしい。

上記の10行くらいでプログラミングで、これだけのきれいな波形が出力できる。

ちなみにPCは、Epson Direct。CPUは、Celeron D。

WindowsリアルタイムIO制御環境「MOS Bench」のバージョンは、今開発中の「モータ制御なし版」を使用している。

Toggle_1ms_hal500us

横軸は500us/div。

RTXのHAL timerを100usに変更してみる。

Toggle_1ms_hal100us_2

横軸は、500us/div。

High区間が900us、Low区間が1200usになっている。

High区間とLow区間のバランスが少し良くなった。

参考)

Windows環境で動作させると以下の波形になる。

横軸は5ms/div。(ちなみに上の波形は、500us/div)。

High区間は、9msから18msとなる。約10倍に広がる。

ジッタは9ms。約100倍に広がる。

Windows_1ms_tgl

Link: 

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

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

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

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

|

« 20歳のときに知っておきたかったこと スタンフォード大学集中講義 | トップページ | パナソニック社Realtime Express のDIO(リモートIO)開発中です。 »

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

コメント

コメントを書く



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


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



« 20歳のときに知っておきたかったこと スタンフォード大学集中講義 | トップページ | パナソニック社Realtime Express のDIO(リモートIO)開発中です。 »