[戻る]
一括表示

エラーの原因 投稿者:PIC初心者 投稿日:2018/01/19(Fri) 10:55:16 No.1093

使用しているコンパイラは、C18です。


次のエラーの原因が分からず困っています。

エラー: [1130] pointer operand required for '*' operator


このエラーが発生している場所は、★印の3ヵ所です。

PID制御用の変数を#defineで定義しています。
Kp, Ki, Kdの所だけ、エラーが発生しますが、理由が分かりません。
DELTA_Tの所は、エラーとなりません。

#define DELTA_T 0.01; //10msec
#define Kp 2.0; //PID係数
#define Ki 0.0; //PID係数
#define Kd 0.0; //PID係数

また、次のように変数を定義するとエラーは発生しませんが、
DELTA_Tだけが「Out of scope」となってしまいます。
//static signed double DELTA_T=0.01; //処理周期 10msec
//static signed double Kp=2.0; //PID係数
//static signed double Ki=0.0; //PID係数
//static signed double Kd=0.0; //PID係数


void main(void){

省略

}



void pid(void)
{
diff[0]=diff[1];
diff[1]=sensor_val-target_val;
integral+=(diff[1]+diff[0])/2.0*DELTA_T; //○

p=Kp*diff[1]; //★
i=Ki*integral; //★
d=Kd *(diff[1]-diff[0])/DELTA_T; //★

mv=p+i+d;
PWM(mv);

}

Re: エラーの原因 投稿者:gokan 投稿日:2018/01/21(Sun) 21:28:56 No.1095

#define文には;は要りません。



> 使用しているコンパイラは、C18です。
>
>
> 次のエラーの原因が分からず困っています。
>
> エラー: [1130] pointer operand required for '*' operator
>
>
> このエラーが発生している場所は、★印の3ヵ所です。
>
> PID制御用の変数を#defineで定義しています。
> Kp, Ki, Kdの所だけ、エラーが発生しますが、理由が分かりません。
> DELTA_Tの所は、エラーとなりません。
>
> #define DELTA_T 0.01; //10msec
> #define Kp 2.0; //PID係数
> #define Ki 0.0; //PID係数
> #define Kd 0.0; //PID係数
>
> また、次のように変数を定義するとエラーは発生しませんが、
> DELTA_Tだけが「Out of scope」となってしまいます。
> //static signed double DELTA_T=0.01; //処理周期 10msec
> //static signed double Kp=2.0; //PID係数
> //static signed double Ki=0.0; //PID係数
> //static signed double Kd=0.0; //PID係数
>
>
> void main(void){
>
> 省略
>
> }
>
>
>
> void pid(void)
> {
> diff[0]=diff[1];
> diff[1]=sensor_val-target_val;
> integral+=(diff[1]+diff[0])/2.0*DELTA_T; //○
>
> p=Kp*diff[1]; //★
> i=Ki*integral; //★
> d=Kd *(diff[1]-diff[0])/DELTA_T; //★
>
> mv=p+i+d;
> PWM(mv);
>
> }

Re^2: エラーの原因 [解決] 投稿者:PIC初心者 投稿日:2018/01/25(Thu) 12:08:07 No.1104

解決しました。ありがとうございます。

- WebForum -