• 締切済み

サーボモーターとスタッドガンスイッチの同期

私は研究でスタッド溶接をおこなっています。 そこでサーボモータを用いてスタッドの挙動を制御したいのですがプログラミングの段階でつまずいています。なのでプログラムのどこが間違っているのか教えてください。おねがいします。 #include <stdio.h> #include "Uio.h" #include "pci6205c.h" #include "pci3521.h" main() { int state=0, count=0; double vel=0.0, T,d; double Pos=0.0, tPos=0.0, dPos=0.0, p0Pos=0.0; UioEopen(); /* Uioの初期化 */ InitPci6205c(); /* ボードアドレス取得 */ InitPci3521(); /* ボードの初期化 */ InitDA(); /* D/A部分の初期化関数 */ InitCounter( 1 ); /* ボードの初期化関数 */ T=600; d=100/*引き上げ距離*/; state=0; while(state !=30){ Pos=0.00125*GetCounter(1); switch(state){ case 0: vel=-(Pos-tPos); count++; if(count>10*250){ state=1; count=0; } break; case 1: vel=0.5; if(GetAD5VB(3)>0.1||GetAD5VB(3)<-0.1){ dPos=Pos+d; state=10; } break; case 10: vel=2.5/*引き上げ速度*/; if(Pos>dPos){ p0Pos=dPos; state=20; } break; case 20: vel=-(Pos-p0Pos); count++; if(count>T*250){ state=30; count=0; } break; } if(GetAD5VB(1)>2.5){ vel=0.0; } if(GetAD5VB(2)>2.5){ vel=0.0; } PutDA5VB(1,vel); usleep(500); } Uio Close(); }

みんなの回答

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

スタッドの挙動をどう制御したいのか補足願います。 あと、stateを数値そのままで設定することはやめましょう。 enumや#defineを使って数値に意味のある名前をつけてください。

408163
質問者

補足

スタッドガンスイッチを押す。→電圧信号がでる→その信号を関知したらサーボモータが動くプログラムにしたいのですが、、 上記の引き上げ距離と押し込み速度を制御したいと考えています。その値を変更して様々な実験条件で実験したいと考えております。

関連するQ&A