CONTEC-DIOカードのWindowsリアルタイム制御波形

Dout_5ms12

プライムモーション社のWindowsで手軽にリアルタイム制御環境「MOS Bench(モスベンチ)」で、CONTECのDIOカードPIO-16/16L(PCI)Hを制御した波形。5ms毎、LowとHighを繰り返している。

上段: リアルタイム制御の「MOS Bench(モスベンチ)」使用。

下段: 普通のWindows上で制御。

大きな違いがわかります。

■使用したプログラムの主要部

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

■プログラムのしくみ

while(1){  }

このなかのプログラムが、ぐるぐる回って、実行されます。

うしろのほうに

Sleep(5);

と言う命令があります。

これは、5ms休むという命令です。したがって、ほぼ5msごと、

while(1){  }

の中のプログラムが実行されます。

うしろのほうの

b = b + 1;

は、変数bを1づつ、増やします。

つぎに、前のほうの

if ( (b % 2) == 0 ) {

と言う命令で、先ほどの変数bを2で割ったあまりが0かどうか判断しています。bが奇数か、偶数か、判断できます。あまりが0、つまり、bが偶数なら、次の命令

WritePort( 2126, 0 );

を実行します。すなわち、2126番のDOUTポートを0にします。

そうでないとき、すなわち、命令では

else {

のとき、

WritePort( 2126, 1 );

2126番のDOUTポートを1にします。

■使用したプログラムはこちら

「motion_oyaji_200Hz_2126.mos.c」をダウンロード